Алерты в Grafana

Урок про алерты на стороне Grafana и про то, чем они отличаются от правил Prometheus.

Алерт в Grafana — это правило, которое периодически выполняет запрос, сравнивает результат с условием и при срабатывании отправляет уведомление через настроенный канал.

В Prometheus алерты описываются в YAML и привязаны к конкретному источнику. Grafana предлагает альтернативу: визуальный конструктор алертов, который умеет работать с несколькими источниками данных и удобен, когда команда живёт в Grafana.

Из чего состоит правило

Алерт-правило в Grafana собирают из нескольких частей:

  • Query — запрос (например, PromQL), возвращающий числа.
  • Reduce/condition — как свернуть ряд в одно число и с каким порогом сравнить.
  • Evaluation — как часто проверять и сколько держаться условию (аналог for).
  • Labels и notifications — куда и с какими метками слать уведомление.
# пример выражения условия
WHEN last() OF query(A) IS ABOVE 0.05

Каналы уведомлений

Contact point описывает, куда доставлять уведомление: Slack, Email, Telegram, webhook. Notification policy — дерево маршрутизации, концептуально похожее на route в Alertmanager.

# provisioning: contact point
apiVersion: 1
contactPoints:
  - name: team-slack
    receivers:
      - type: slack
        settings:
          recipient: "#alerts"

Grafana или Prometheus для алертов

КритерийPrometheus + AlertmanagerGrafana alerting
ОписаниеYAML-правилавизуальный редактор
Источникиодин Prometheusнесколько источников
Версионированиеудобно в gitчерез provisioning

Как работает под капотом

Grafana периодически (по evaluation interval) выполняет запрос правила, сворачивает ряды в число функцией reduce и сравнивает с порогом. Если условие истинно дольше заданного срока, правило переходит в Alerting и уходит в notification policy, которая по меткам подбирает contact point. Состояния (Normal, Pending, Alerting) аналогичны inactive/pending/firing в Prometheus.

Частые ошибки

  • Дублировать одни и те же алерты в Prometheus и Grafana. Выберите один источник правды, иначе получите двойные уведомления.
  • Reduce без понимания. Если запрос вернул много точек, важно, чем их свернуть: last(), avg() или max() дадут разный результат.
  • Не настроить notification policy. Тогда алерт сработает, но никто его не получит.

Итог

  • Алерт Grafana — это query + условие + маршрутизация в contact point.
  • Подходит, когда нужны несколько источников и визуальный редактор.
  • Не дублируйте алерты между Grafana и Prometheus — выберите один путь.
Проверьте себя
1. Чем алерты Grafana отличаются от alerting в Prometheus?
AGrafana не умеет алертить
BGrafana даёт визуальный редактор и может работать с несколькими источниками данных
CPrometheus не поддерживает пороги
DЭто одно и то же
2. Что описывает contact point в Grafana?
AЗапрос PromQL
BКуда доставлять уведомление (Slack, Email, webhook)
CСрок хранения метрик
DТип визуализации
3. Почему не стоит дублировать алерты в Prometheus и Grafana?
AЭто запрещено лицензией
BПоявятся двойные уведомления и путаница с источником правды
CGrafana сломает Prometheus
DМетрики удвоятся