Перейти к основному контенту

Мониторинг через Prometheus и Grafana

Prometheus собирает метрики каждого узла Клавдия, а Grafana отображает их на панели мониторинга. Используйте этот способ, если в вашей инфраструктуре уже работают Prometheus и Grafana.

Перед началом

  • Подготовьте Prometheus и Grafana.
  • Используйте сборку Клавдия с поддержкой Prometheus. Если её нет в установленном образе, получите подходящую сборку у поставщика.
  • Разрешите доступ от Prometheus к порту метрик каждого узла.
  • Выберите свободный порт. В примере используется 9100; он может быть уже занят другим средством мониторинга.

Включите метрики узла

  1. В .env каждого опрашиваемого узла задайте:

    KLVD_METRICS_PORT=9100
    
  2. Убедитесь, что переменная передаётся в контейнер klvd-node через Docker Compose. Одной записи в .env недостаточно, если compose-файл её не использует.

  3. Примените изменения:

    cd /opt/klvd
    docker compose up -d --force-recreate klvd-node
    
  4. Проверьте маршруты с сервера Prometheus:

    curl --fail --show-error http://10.0.0.1:9100/metrics
    curl --fail --show-error http://10.0.0.1:9100/livez
    curl --fail --show-error http://10.0.0.1:9100/readyz
    
МаршрутНазначение
/metricsметрики в текстовом формате Prometheus
/livezпроверка работоспособности процесса узла
/readyzпроверка готовности узла

Ограничьте доступ к порту метрик средствами сети. Доступность /metrics сама по себе не подтверждает готовность всех компонентов архива.

Настройте Prometheus

Добавьте задание в существующий раздел scrape_configs файла prometheus.yml:

scrape_configs:
  - job_name: klavdii
    scrape_interval: 15s
    static_configs:
      - targets:
          - '10.0.0.1:9100'
          - '10.0.0.2:9100'

Опрашивайте узлы напрямую. Если собирать метрики через балансировщик, один адрес будет возвращать показатели разных узлов и история станет неоднозначной.

Проверьте конфигурацию и примените её принятым в вашей установке способом:

promtool check config /etc/prometheus/prometheus.yml

Создайте панель Grafana

  1. Добавьте Prometheus как источник данных Grafana.
  2. Создайте панели по выражениям ниже.
  3. Используйте метку instance, чтобы различать узлы.
ПанельВыражение PromQLЕдиницы
Загрузка CPUklvd_cpu_util{job="klavdii"}%
Используемая памятьklvd_mem_used_kb{job="klavdii"} * 1024байты
Доля используемой памяти100 * klvd_mem_used_kb{job="klavdii"} / klvd_mem_limit_kb{job="klavdii"}%; требуется ненулевой лимит
Средняя нагрузкаklvd_loadavg{job="klavdii"} / 100нагрузка; отдельная линия для каждой метки window
Очередь SMTPklvd_smtp_queue_depth{job="klavdii"}сообщения
Активные сеансы SMTPklvd_smtp_active_sessions{job="klavdii"}сеансы
Успешность сбора метрикup{job="klavdii"}1 — опрос успешен, 0 — ошибка

Все перечисленные метрики Клавдия — показатели текущего состояния (gauge (!)). klvd_loadavg отдаётся в масштабе ×100; средняя нагрузка не является процентом загрузки CPU.

up формируется Prometheus. Значение 1 означает успешный опрос /metrics, а не полную готовность архива. Для проверки /readyz настройте отдельную HTTP-проверку средствами вашей системы мониторинга.

{{СКРИНШОТ}}

Настройте оповещения

Создайте правила для недоступного опроса (up == 0), длительной высокой загрузки CPU и растущей очереди SMTP. Для начала используйте выдержку 5m, затем уточните пороги по обычной нагрузке. Настройте доставку оповещений через используемый в вашей инфраструктуре Alertmanager или Grafana.

Проверьте результат

  1. В Prometheus откройте [Status] (!) → [Targets] (!) и убедитесь, что каждый адрес задания klavdii имеет состояние UP.
  2. Выполните запрос klvd_cpu_util{job="klavdii"}: должны быть отдельные серии для узлов.
  3. В Grafana проверьте единицы измерения и сравните показатели с {{ССЫЛКА:maintenance.dashboard|панелью состояния}}.
  4. В окно обслуживания проверьте срабатывание оповещения при недоступном опросе, затем восстановите узел.

Если метрики не доступны

Проверьте поддержку Prometheus в сборке, передачу KLVD_METRICS_PORT в контейнер, конфликт порта и сетевые правила. При ошибке графика проверьте наличие нужной метрики в /metrics и её метки. Пустая серия не означает нулевую нагрузку.

Связанные материалы

  • {{ССЫЛКА:install.integration-zabbix|Мониторинг через Zabbix}}
  • {{ССЫЛКА:maintenance.cluster-status|Проверка состояния узлов}}
  • {{ССЫЛКА:install.integration-haproxy|Балансировка нагрузки через HAProxy}}
  • {{ССЫЛКА:reference.env|Переменные окружения и Docker Compose}}
  • Документация Prometheus: конфигурация

Навигация по книге

  • Следующая книга: {{ССЫЛКА:user.getting-started|Эксплуатация → Вход и навигация}}