Используемые термины: Prometheus .
По умолчанию, метрики в Prometheus попадают методом pull — система обращается к агентам (exporter) и забирает данные. Это рекомендованный способ, но мы можем настроить получение метрик методом push с помощью Pushgateway. Схема работы следующая: метрика отправляется скриптом на сервер Pushgateway, а Prometheus забирает данные уже с него.
Предполагается, что у нас уже установлен сервер Prometheus . Установку Pushgateway можно выполнить на тот же сервер, что и Prometheus, либо на выделенный (мы установим на тот же). Также, приложение может быть установлено на сервер под управлением Windows или Linux. В нашем примере используется последняя.
Пошагово, выполним следующее:
Установку Pushgateway
Настройку Prometheus
Тестовую отправку метрики в 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 .
Читайте также
Вас, возможно, смогут заинтересовать следующие инструкции:
1. Установка Prometheus + Alertmanager + node_exporter на Linux
2. Создание графиков в Grafana на основе данных из Prometheus
3. Установка и начальная настройка сервера мониторинга Zabbix на Ubuntu Server