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

Мы предоставляем услуги удаленного администрирования серверов

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

Опубликовано:

Используемые термины: Prometheus.

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

Предполагается, что у нас уже установлен сервер Prometheus. Установку Pushgateway можно выполнить на тот же сервер, что и Prometheus, либо на выделенный (мы установим на тот же). Также, приложение может быть установлено на сервер под управлением Windows или Linux. В нашем примере используется последняя.

Пошагово, выполним следующее:

Установка 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.

Читайте также

Вас, возможно, смогут заинтересовать следующие инструкции:

1. Установка Prometheus + Alertmanager + node_exporter на Linux

2.  Создание графиков в Grafana на основе данных из Prometheus

3. Установка и начальная настройка сервера мониторинга Zabbix на Ubuntu Server