Установка и настройка Pushgateway для Prometheus

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

По умол­ча­нию, мет­ри­ки в Prometheus попа­да­ют мето­дом pull — систе­ма обра­ща­ет­ся к аген­там (exporter) и заби­ра­ет дан­ные. Это реко­мен­до­ван­ный спо­соб, но мы можем настро­ить полу­че­ние мет­рик мето­дом push с помо­щью Pushgateway. Схе­ма рабо­ты сле­ду­ю­щая: мет­ри­ка отправ­ля­ет­ся скрип­том на сер­вер Pushgateway, а Prometheus заби­ра­ет дан­ные уже с него.

Установка Pushgateway

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

Пере­хо­дим на офи­ци­аль­ную стра­ни­цу загруз­ки Pushgateway. Копи­ру­ем ссыл­ку для ска­чи­ва­ния бинар­ни­ка под Linux:

Исполь­зу­ем ско­пи­ро­ван­ную ссыл­ку, что­бы загру­зить бинарник:

wget https://github.com/prometheus/pushgateway/releases/download/v1.3.1/pushgateway-1.3.1.linux-amd64.tar.gz

Рас­па­ко­вы­ва­ем архив:

tar zxvf pushgateway-*.tar.gz

Копи­ру­ем бинар­ник в ката­лог /usr/local/bin:

cp pushgateway-*/pushgateway /usr/local/bin/

Созда­ем поль­зо­ва­те­ля pushgateway:

useradd --no-create-home --shell /bin/false pushgateway

Зада­ем вла­дель­ца для наше­го бинарника:

chown pushgateway:pushgateway /usr/local/bin/pushgateway

Для воз­мож­но­сти запус­ка Pushgateway в каче­стве сер­ви­са, созда­ем юнит-файл:

vi /etc/systemd/system/pushgateway.service

 

 

* в дан­ном при­ме­те мы запу­стим pushgateway на пор­ту 9091. Так­же мы ука­за­ли уро­вень и фор­мат логов — сами логи мож­но будет уви­деть в фай­лах /var/log/syslog (Ubuntu) или /var/log/messages (CentOS).

Пере­чи­ты­ва­ем кон­фи­гу­ра­цию systemd:

systemctl daemon-reload

Раз­ре­ша­ем авто­за­пуск сер­ви­са и стар­ту­ем его:

systemctl enable pushgateway --now

Про­ве­ря­ем состояние:

systemctl status pushgateway

Откры­ва­ем бра­у­зер и вво­дим адрес http://<IP-адрес сер­ве­ра pushgateway>:9091 — мы долж­ны уви­деть меню портала:

Pushgateway готов к рабо­те. Пере­хо­дим к настрой­ке Prometheus.

Настройка Prometheus

Необ­хо­ди­мо доба­вить зада­ние в Prometheus для под­клю­че­ния к сер­ве­ру Pushgateway и полу­че­ния с него мет­рик. Это дела­ет­ся по тако­му же прин­ци­пу, что и полу­че­ние мет­рик с экспортеров.

Откры­ва­ем кон­фи­гу­ра­ци­он­ный файл:

vi /etc/prometheus/prometheus.yml

В сек­цию scrape_configs доба­вим задание:

 

 

* в дан­ном зада­нии мы гово­рим сер­ве­ру Prometheus заби­рать мет­ри­ки с сер­ве­ра localhost (локаль­ный сер­вер) на пор­ту 9091.

Для при­ме­не­ния настро­ек пере­за­пус­ка­ем сер­вис прометея:

systemctl restart prometheus

Про­ве­ря­ем, что сер­вис рабо­та­ет корректно:

systemctl status prometheus

Мож­но попро­бо­вать отпра­вить мет­ри­ки в Pushgateway.

Отправка метрик методом push в Pushgateway

Отправ­ку дан­ных мож­но выпол­нить http-запро­сом из bash, напри­мер, с помо­щью паке­та curl. Син­так­сис следующий:

echo "<Назва­ние для мет­ри­ки> <Зна­че­ние мет­ри­ки>" | curl --data-binary @- http://<IP-адрес сер­ве­ра pushgateway>:9091/metrics/job/<Тег для job>/instance/<Тег для instance>

Напри­мер:

echo "Temperature +15" | curl --data-binary @- http://localhost:9091/metrics/job/temperature_metrics/instance/localhost

* в дан­ном при­ме­ре мы пере­да­дим на локаль­ный сер­вер pushgateway (localhost:9091) мет­ри­ку Temperature со зна­че­ни­ем +15.

Теперь мы можем перей­ти в бра­у­зе­ре по адре­су http://<IP-адрес сер­ве­ра pushgateway>:9091/metrics и уви­деть отправ­лен­ную ранее метрику:

Для уда­ле­ния мет­ри­ки мож­но исполь­зо­вать так­же curl с типом запро­са delete, например:

curl -X DELETE http://localhost:9091/metrics/job/temperature_metrics/instance/localhost

Так­же, уда­лить груп­пу мет­рик мож­но в веб-интер­фей­се Pushgateway.

Скрипт на Python

В каче­стве при­ме­ра, рас­смот­рим скрипт, напи­сан­ный на Python. Для нача­ла, необ­хо­ди­мо уста­но­вить модуль prometheus_client:

pip3 install prometheus_client

Сам скрипт будет выгля­деть таким образом:

 

 

в дан­ном при­ме­ре мы отпра­вим в Prometheus через Pushgateway мет­ри­ку temperature_metrics со зна­че­ни­ем 22 и job-тегом temperature_lobby.