Автор: Senior Devops. Ведущий специалист по инфраструктуре Hostkey Никита Зубарев
В прошлой статье мы рассказывали, как для мониторинга сервисов с помощью Prometheus настроить сбор метрик и отображение тревог. Однако в процессе эксплуатации возник вопрос, как мониторить отдельные службы на серверах Linux. Например, в одной из прошлых статей мы описывали кейс использования веб-консолей Ovirt c помощью Apache Guacamole. Теперь рассмотрим, как организовать мониторинг работы сервисов на Linux-машинах.
Guacamole — кроссплатформенный шлюз удаленного рабочего стола, для его работы необходимы Apache Tomcat и Guacd.
Открываем сервис, созданный для node_exporter:
/usr/lib/systemd/system/node_exporter.service
[Unit]
Description=Prometheus exporter for machine metrics, written in Go with pluggable metric collectors.
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
EnvironmentFile=-/etc/default/node_exporter
User=root
ExecStart=/usr/bin/node_exporter $NODE_EXPORTER_OPTS
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
по дефолту $NODE_EXPORTER_OPTS подгружается из файла :
# /etc/default/node_exporter
При необходимости мы можем либо мониторить отдельные службы, добавив опцию collector.systemd.unit-whitelist:
#NODE_EXPORTER_OPTS="--collector.systemd --collector.systemd.unit-whitelist="(tomcat|guacd).service""
После перезапуска сервиса получаем метрику на node_exporter:
Остается описать правило для алерта:
- alert: guacd_service
expr: node_systemd_unit_state{name="guacd.service",state="active"} == 0
for: 1s
annotations:
summary: "Instance {{ $labels.instance }} is down"
description: "{{ $labels.instance }} of job {{ $labels.job }} is down."
- alert: tomcat_service
expr: node_systemd_unit_state{name="tomcat.service",state="active"} == 0
for: 1s
annotations:
summary: "Instance {{ $labels.instance }} is down"
description: "{{ $labels.instance }} of job {{ $labels.job }} is down."
Пример алерта на дашборде Alertmanager в Grafana:
Выводы
В этой небольшой статье мы рассмотрели, как выполняется мониторинг работы сервисов на Linux-машинах. Это решение позволяет отслеживать работы любого systemd-сервера и значительно упрощает администрирование серверного оборудования. В следующей статье мы расскажем, как можно не отображать базовые параметры, которые отдает exporter.
AlexGluck
Уже по этой строке было всё понятно, но дочитав понял что материал авторам лучше доработать.
Пояснение, по указанному выше пути лежит юнит файл системный, а править надо по другому пути:
/etc/systemd/system/node_exporter.service