Мониторинг через Prometheus и Grafana
Prometheus собирает метрики каждого узла Клавдия, а Grafana отображает их на панели мониторинга. Используйте этот способ, если в вашей инфраструктуре уже работают Prometheus и Grafana.
Перед началом
- Подготовьте Prometheus и Grafana.
- Используйте сборку Клавдия с поддержкой Prometheus. Если её нет в установленном образе, получите подходящую сборку у поставщика.
- Разрешите доступ от Prometheus к порту метрик каждого узла.
- Выберите свободный порт. В примере используется
9100; он может быть уже занят другим средством мониторинга.
Включите метрики узла
-
В
.envкаждого опрашиваемого узла задайте:KLVD_METRICS_PORT=9100 -
Убедитесь, что переменная передаётся в контейнер
klvd-nodeчерез Docker Compose. Одной записи в.envнедостаточно, если compose-файл её не использует. -
Примените изменения:
cd /opt/klvd docker compose up -d --force-recreate klvd-node -
Проверьте маршруты с сервера 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
- Добавьте Prometheus как источник данных Grafana.
- Создайте панели по выражениям ниже.
- Используйте метку
instance, чтобы различать узлы.
| Панель | Выражение PromQL | Единицы |
|---|---|---|
| Загрузка CPU | klvd_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 |
| Очередь SMTP | klvd_smtp_queue_depth{job="klavdii"} |
сообщения |
| Активные сеансы SMTP | klvd_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.
Проверьте результат
- В Prometheus откройте [Status] (!) → [Targets] (!) и убедитесь, что каждый адрес задания
klavdiiимеет состояниеUP. - Выполните запрос
klvd_cpu_util{job="klavdii"}: должны быть отдельные серии для узлов. - В Grafana проверьте единицы измерения и сравните показатели с
{{ССЫЛКА:maintenance.dashboard|панелью состояния}}. - В окно обслуживания проверьте срабатывание оповещения при недоступном опросе, затем восстановите узел.
Если метрики не доступны
Проверьте поддержку Prometheus в сборке, передачу KLVD_METRICS_PORT в контейнер, конфликт порта и сетевые правила. При ошибке графика проверьте наличие нужной метрики в /metrics и её метки. Пустая серия не означает нулевую нагрузку.
Связанные материалы
{{ССЫЛКА:install.integration-zabbix|Мониторинг черезZabbix}}Zabbix{{ССЫЛКА:maintenance.cluster-status|Проверка состояния узлов}}{{ССЫЛКА:install.integration-haproxy|Балансировка нагрузки черезHAProxy}}HAProxy{{ССЫЛКА:reference.env|Переменные окружения и DockerCompose}}Compose- Документация Prometheus: конфигурация
Навигация по книге
- Следующая книга:
{{ССЫЛКА:user.getting-started|Эксплуатация → Вход и навигация}}