Meta monitoring
Отслеживайте метрики оповещений, чтобы выявлять потенциальные проблемы до того, как они станут критическими.
Мета-мониторинг — это процесс мониторинга вашей системы мониторинга и оповещения о случаях, когда мониторинг работает не так, как должен.
Чтобы дать вам возможность заниматься мета-мониторингом, Grafana предоставляет предопределённые метрики.
Определите, какие метрики критичны для вашей системы мониторинга (то есть для Grafana), и затем настройте, как вы хотите их отслеживать.
Вы можете использовать метрики мета-мониторинга, чтобы понять состояние вашей системы оповещений следующими способами:
- Необязательно: создайте дашборд в Grafana, использующий эту метрику на панели (точно так же, как для любого другого типа метрик).
- Необязательно: создайте правило оповещения в Grafana, которое регулярно проверяет эту метрику (точно так же, как для любого другого типа правил оповещения).
- Необязательно: используйте модуль Explore в Grafana.
Metrics for Grafana-managed alerts
Для мета-мониторинга Grafana-managed оповещений вы можете собирать два типа метрик в экземпляре Prometheus:
-
Метрика истории состояний (
GRAFANA_ALERTS) — экспортируется Grafana Alerting как часть истории состояний оповещений. -
Собираемые метрики (scraped metrics) — экспортируются конечной точкой
/metricsв Grafana для мониторинга активности и производительности системы оповещений.
Вам нужен сервер, совместимый с Prometheus, для сбора и хранения этих метрик.
GRAFANA_ALERTS metric
Если вы настроили
Prometheus для истории состояний оповещений, Grafana записывает изменения состояния оповещений в метрику ALERTS:
GRAFANA_ALERTS{alertname="", alertstate="", grafana_alertstate="", grafana_rule_uid="", <additional alert labels>}
Эта метрика GRAFANA_ALERTS совместима с метрикой ALERTS, используемой Prometheus Alerting, и включает две дополнительные метки:
- Новую метку
grafana_rule_uidдля UID правила Grafana. - Новую метку
grafana_alertstateдля состояния оповещения Grafana, которое немного отличается от эквивалентного состояния Prometheus, включённого в меткуalertstate.
Метки оповещений автоматически преобразуются перед записью в Prometheus для обеспечения совместимости. Prometheus требует, чтобы имена меток начинались с буквы или подчёркивания (_) и содержали только буквы, цифры или дополнительные подчёркивания. Недопустимые символы заменяются при преобразовании. Например, 1my-label становится _my_label.
Затем вы можете запрашивать эту метрику как любую другую метрику Prometheus:
GRAFANA_ALERTS{grafana_alertstate="alerting"}
GRAFANA_ALERTS{grafana_alertstate="recovering"}
GRAFANA_ALERTS{grafana_alertstate="pending", severity="critical"}
Scraped metrics
Чтобы собирать метрики Alerting через scraping, настройте Prometheus на сбор метрик из Grafana.
- job_name: grafana
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- grafana:3000
Правитель Grafana (ruler), отвечающий за оценку правил оповещения, и Grafana Alertmanager, отвечающий за отправку уведомлений о сработавших и разрешившихся оповещениях, предоставляют ряд метрик, позволяющих наблюдать за ними.
grafana_alerting_alerts
Эта метрика — счётчик, показывающий количество оповещений в состояниях normal, pending, alerting, nodata и error. Например, вы можете создать оповещение, которое срабатывает, когда grafana_alerting_alerts{state="error"} больше 0.
grafana_alerting_schedule_alert_rules
Эта метрика — gauge, показывающая количество запланированных правил оповещения. Правило оповещения считается запланированным, если оно не приостановлено, и значение этой метрики должно соответствовать общему количеству неприостановленных правил оповещения в Grafana.
grafana_alerting_schedule_periodic_duration_seconds_bucket
Эта метрика — гистограмма, показывающая время обработки отдельного тика в планировщике, который оценивает правила оповещения. Если планировщик обрабатывает тик дольше 10 секунд, начинают накапливаться ожидающие оценки, так что правила оповещения могут срабатывать позже ожидаемого.
grafana_alerting_schedule_query_alert_rules_duration_seconds_bucket
Эта метрика — гистограмма, показывающая, сколько времени планировщику требуется, чтобы получить последние правила из базы данных. Если эта метрика повышена, также оценивается schedule_periodic_duration_seconds.
grafana_alerting_scheduler_behind_seconds
Эта метрика — gauge, показывающая количество секунд, на которое планировщик отстаёт от того, где он должен быть. Это число увеличивается, если schedule_periodic_duration_seconds больше 10 секунд, и уменьшается, когда оно меньше 10 секунд. Наименьшее возможное значение этой метрики — 0.
grafana_alerting_notification_latency_seconds_bucket
Эта метрика — гистограмма, показывающая количество секунд, затрачиваемых на отправку уведомлений о сработавших и разрешившихся оповещениях. Эта метрика позволяет наблюдать за медленными или перегруженными интеграциями, например SMTP-сервером, которому отправляют письма быстрее, чем он может их отправить.
grafana_alerting_state_history_writes_failed_total
Эта метрика — счётчик, показывающий количество неудачных записей в настроенный бэкенд истории состояний оповещений. Она включает метку backend для различения разных бэкендов (например, loki или prometheus).
Например, вы можете создать оповещение, которое срабатывает, когда grafana_alerting_state_history_writes_failed_total{backend="prometheus"} больше 0, чтобы обнаруживать сбои удалённой записи Prometheus.
Logs for Grafana-managed alerts
Если вы настроили Loki для истории состояний оповещений, логи, связанные с изменениями состояний Grafana-managed оповещений, хранятся в источнике данных Loki.
Вы можете использовать Grafana Explore и редактор запросов Loki для поиска изменений состояний оповещений.
{from="state-history"} | json
{from="state-history"} | json | previous=~"Normal.*" | current=~"Alerting.*"
{from="state-history"} | json | current=~"Error.*"
В представлении Logs вы можете просматривать детали отдельных оповещений, выбирая такие поля, как:
previous: предыдущее состояние экземпляра оповещения.current: текущее состояние экземпляра оповещения.ruleTitle: заголовок правила оповещения.ruleIDиruleUID.labels_alertname,labels_new_labelиlabels_grafana_folder.- Другие доступные поля.
Либо вы можете открыть страницу History в Grafana, чтобы визуализировать и фильтровать изменения состояний отдельных оповещений или всех оповещений.
Если вы включили историю уведомлений, вы также можете обратиться к разделу Просмотр истории уведомлений, чтобы просмотреть отправленные уведомления и результаты доставки на вкладке Notifications страницы History.
Metrics for Mimir-managed alerts
Для мета-мониторинга Grafana Mimir-managed оповещений пользователям open source и on-premise нужен сервер Prometheus/Mimir или другая база данных метрик для сбора и хранения метрик, экспортируемых правителем Mimir.
rule_evaluation_failures_total
Эта метрика — счётчик, показывающий общее количество сбоев оценки правил.
Metrics for Alertmanager
Для мета-мониторинга Alertmanager вам нужен сервер Prometheus/Mimir или другая база данных метрик для сбора и хранения метрик, экспортируемых Alertmanager.
Например, если вы используете Prometheus, вам следует добавить scrape_config в Prometheus для сбора метрик из вашего Alertmanager.
- job_name: alertmanager
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- alertmanager:9093
Ниже приведён список доступных метрик для Alertmanager.
alertmanager_alerts
Эта метрика — счётчик, показывающий количество активных, подавленных и необработанных оповещений в Alertmanager. Подавленные оповещения — это оповещения, для которых действует silence, а необработанные — это оповещения, которые были отправлены в Alertmanager, но ещё не обработаны.
alertmanager_alerts_invalid_total
Эта метрика — счётчик, показывающий количество недопустимых оповещений, отправленных в Alertmanager. Этот счётчик не должен превышать 0, поэтому в большинстве случаев создайте оповещение, которое срабатывает всякий раз, когда эта метрика увеличивается.
alertmanager_notifications_total
Эта метрика — счётчик, показывающий, сколько уведомлений отправлено Alertmanager. Метрика использует метку «integration», чтобы показать количество уведомлений, отправленных по интеграции, например email.
alertmanager_notifications_failed_total
Эта метрика — счётчик, показывающий, сколько уведомлений в сумме не удалось доставить. Эта метрика также использует метку «integration», чтобы показать количество неудачных уведомлений по интеграции, например неудачных писем. В большинстве случаев используйте функцию rate, чтобы понять, как часто уведомления не удаётся отправить.
alertmanager_notification_latency_seconds_bucket
Эта метрика — гистограмма, показывающая, сколько времени требуется Alertmanager, чтобы отправить уведомления и чтобы они были приняты принимающим сервисом. Эта метрика использует метку «integration», чтобы показать время по интеграции. Например, вы можете использовать эту метрику, чтобы показать 95-й процентиль задержки отправки писем.
Metrics for Alertmanager in high availability mode
Если вы используете Alertmanager в режиме высокой доступности, есть ряд дополнительных метрик, для которых вы можете захотеть создать оповещения.
alertmanager_cluster_members
Эта метрика — gauge, показывающая текущее количество участников в кластере. Значение этого gauge должно быть одинаковым для всех Alertmanager. Если разные Alertmanager показывают разное количество участников, это указывает на проблему в вашем кластере Alertmanager. Вам следует изучить метрики и логи ваших Alertmanager, чтобы лучше понять, что может идти не так.
alertmanager_cluster_failed_peers
Эта метрика — gauge, показывающая текущее количество отказавших узлов.
alertmanager_cluster_health_score
Эта метрика — gauge, показывающая оценку работоспособности Alertmanager. Меньшие значения лучше, а ноль означает, что Alertmanager работоспособен.
alertmanager_cluster_peer_info
Эта метрика — gauge. Она имеет постоянное значение 1 и содержит метку под названием «peer» с Peer ID каждого известного узла.
alertmanager_cluster_reconnections_failed_total
Эта метрика — счётчик, показывающий количество неудачных попыток подключения к узлам. В большинстве случаев следует использовать функцию rate, чтобы понять, как часто повторные подключения терпят неудачу, так как это может указывать на проблему или нестабильность в вашей сети.