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

По умолчанию, метрики в 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




[Unit]

Description=Pushgateway Service

After=network.target



[Service]

User=pushgateway

Group=pushgateway

Type=simple

ExecStart=/usr/local/bin/pushgateway 

    --web.listen-address=":9091" 

    --web.telemetry-path="/metrics" 

    --persistence.file="/tmp/metric.store" 

    --persistence.interval=5m 

    --log.level="info" 

    --log.format="json"

ExecReload=/bin/kill -HUP $MAINPID

Restart=on-failure



[Install]

WantedBy=multi-user.target




* в данном примете мы запустим 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 добавим задание:




...

scrape_configs:

  ...

  - job_name: 'pushgateway'

    honor_labels: true

    static_configs:

      - targets: ['localhost:9091']




* в данном задании мы говорим серверу 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




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




#!/usr/bin/env python3

# -*- encoding: utf-8 -*-



from prometheus_client import CollectorRegistry, Gauge, push_to_gateway



registry = CollectorRegistry()

g = Gauge('temperature_metrics', 'Description metric', registry=registry)

g.set(22)

push_to_gateway('localhost:9091', job='temperature_lobby', registry=registry)




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




Источник: https://sidmid.ru/установка-и-настройка-pushgateway-для-prometheus/



2023-01-02T05:42:02
DevOps