Алерты в 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 + Alertmanager | Grafana 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 — выберите один путь.