Ansible. Role 14 Prometheus

Thank you for reading this post, don't forget to subscribe!

Созда­ем фай­лы для роли, кото­рую назо­вем Prometheus:

ansible-galaxy init prometheus

mv prometheus/ /etc/ansible/roles/

cd /etc/ansible/roles/

Откры­ва­ем на редак­ти­ро­ва­ние файл с заданиями:

vi prometheus/tasks/main.yml

Логи­че­ски, мы поде­лим зада­чи на 3 файла:

 

 

* в пер­вом фай­ле будут опи­са­ны зада­чи для под­го­тов­ки систе­мы к уста­нов­ке Prometheus; во вто­ром фай­ле мы выпол­ним уста­нов­ку систе­мы мони­то­рин­га; в тре­тьем фай­ле опи­са­ние для уста­нов­ки alertmanager.

Если мы исполь­зу­ем firewalld то остав­ля­ем как есть, я же исполь­зую iptables и настра­и­ваю всё сам, поэто­му этот таск мне не нужен и я его ком­мен­ти­рую  в prometheus/tasks/main.yml

Созда­ем пер­вый файл с задачами:

vim prometheus/tasks/prepare.yml

 

 

* в дан­ном при­ме­ре будут откры­ты в бранд­мау­э­ре пор­ты для кор­рект­ной рабо­ты prometheus и alertmanager, а так­же будет отклю­чен SELinux. Мы исполь­зу­ем усло­вие when, что­бы при­ме­нить нуж­ные коман­ды, раз­де­лен­ные бло­ка­ми (block), к нуж­но­му типу дис­три­бу­ти­ва Linux, одна­ко, если в вашей сре­де не исполь­зу­ет­ся бранд­мау­эр или на CentOS при­ме­ня­ет­ся iptables, необ­хо­ди­мо вне­сти коррекции.

Откры­ва­ем файл с переменными:

vim prometheus/vars/main.yml

Созда­ем две:

 

 

* дан­ным пере­мен­ным в каче­стве зна­че­ния при­сва­и­ва­ем вер­сии prometheus и alertmanager, кото­рые необ­хо­ди­мо уста­но­вить. В нашем при­ме­ре взя­ты послед­ние вер­сии на момент обнов­ле­ния инструк­ции. Акту­аль­ные вер­сии мож­но посмот­реть на стра­ни­це загруз­ки.

Созда­ем файл с опи­са­ни­ем задач по уста­нов­ке Prometheus:

vim prometheus/tasks/install_prometheus.yml

 

 

* в дан­ном при­ме­ре мы:

  1. Созда­ем поль­зо­ва­те­ля prometheus.
  2. Созда­ем ката­ло­ги, в кото­рые будут поме­ще­ны фай­лы сервиса.
  3. Ска­чи­ва­ем и рас­па­ко­вы­ва­ем архив про­ме­тея с офи­ци­аль­но­го сайта.
  4. Копи­ру­ем бинарники.
  5. Копи­ру­ем кон­фи­гу­ра­ци­он­ные файлы.
  6. Созда­ем юнит в systemd.
  7. Стар­ту­ем сервис.

Созда­ем yml-файл с зада­ча­ми по уста­нов­ке и запус­ку alertmanager:

vim prometheus/tasks/install_alertmanager.yml

 

 

* в дан­ном при­ме­ре мы:

  1. Созда­ем поль­зо­ва­те­ля alertmanager.
  2. Созда­ем ката­ло­ги, в кото­рые будут поме­ще­ны фай­лы сервиса.
  3. Ска­чи­ва­ем и рас­па­ко­вы­ва­ем архив alertmanager с офи­ци­аль­но­го сайта.
  4. Копи­ру­ем бинарники.
  5. Копи­ру­ем кон­фи­гу­ра­ци­он­ные файлы.
  6. Созда­ем юнит в systemd.
  7. Стар­ту­ем сервис.

Созда­ем файл в шаб­ло­нах с юни­том systemd для prometheus:

vim prometheus/templates/prometheus.service

 

 

Созда­ем файл в шаб­ло­нах с юни­том systemd для alertmanager:

vim prometheus/templates/alertmanager.service

 

 

Откры­ва­ем на редак­ти­ро­ва­ние файл с обработчиками:

vim prometheus/handlers/main.yml

При­во­дим его к виду:

 

 

* в дан­ном при­ме­ре мы будем пере­за­пус­кать firewalld и пере­чи­ты­вать юни­ты в systemd.

Созда­ем плейбук:

vim /etc/ansible/playbooks/roles_play/prometheus.yml

 

 

* дан­ный файл опи­сы­ва­ет плей­бук для запус­ка роли Prometheus. Обра­ти­те вни­ма­ние, что для при­ме­ра мы доба­ви­ли тег prom.

Запус­ка­ем наш плей­бук для уста­нов­ки Prometheus + Alertmanager:

ansible-playbook --tags prom start_role.yml -kK

* в дан­ном при­ме­ре запуск вло­жен­ной роли запус­ка­ет­ся с тегом prom. Это ни на что не вли­я­ет, но, если бы у нас в плей­бу­ке будет мно­го ролей, с помо­щью тега мы можем запус­кать кон­крет­ную в debian дела­ем так.

-k : ask pass -K : ask pass for become.
т.е. пер­вый k для того что­бы ука­зать пароль под­клю­че­ния а вто­рое K для того что­бы ука­зать пароль поль­зо­ва­те­ля от чье­го име­ни будет рабо­тать sudo.

у меня чело­ве­че­ский centos пото­му можем либо от рута либо от поль­зо­ва­те­ля ansible (c ssh ключом)

[root@ansible prometheus]# ansible-playbook --tags prom -u ansible /etc/ansible/playbooks/roles_play/prometheus.yml

ну и уда­ля­ем лишнее:

[root@ansible prometheus]# pwd
/etc/ansible/roles/prometheus
[root@ansible prometheus]# rm -rf defaults files meta README.md tests

после уста­нов­ки проверяем:
http://192.168.1.170:9090/

http://192.168.1.170:9093/

если влом копи­па­стить мож­но ска­чать с мое­го гита:

https://github.com/midnight47/ansible-playbook.git