Перейти к содержанию

Правила алертинга

До Grafana 13 правила алертинга были простыми: порог, триггер. Теперь многомерный движок поддерживает выражения — не просто точки с запятыми.

Устройство правила

Правило состоит из запроса (A) и выражений (B, C, D, E). Порядок: A запрашивает временной ряд из источника данных, B → C → D → E его обрабатывают.

Reduce

Каждое выражение применяет агрегатную функцию к векторам:

  • avg, min, max — среднее, минимум, максимум.
  • last — только последнее значение (самое полезное для алертов).
  • sum, count — сумма или количество элементов.

Результат — вектор. Дальше одно или несколько значений.

Классическое условие

# A: временной ряд
avg by (host) (rate(cpu_seconds_total[5m]))

# B: Reduce Last — последнее значение
# C: Threshold > 0.8

Условие: «Если последнее значение временного ряда А больше 0.8 — алерт».

Multidimensional alerting

Когда правило использует avg by (host), Grafana создаёт отдельный алерт для каждого хоста. Если хост server-01 перегреется, алерт сработает только на него. Остальные хосты затронуты не будут.

Это фундаментально отличается от старого подхода, где правило «среднее по всем > 80» не замечало, что у 90% серверов CPU 10%, а у одного — 95%.

Folder и Evaluation Group

Правила принадлежат папке. Папка включает Evaluation Group — группа правил, которые оцениваются одновременно с одним интервалом. Правила высокого приоритета (инфраструктура) — интервал 1 минута. Низкого (бизнес-метрики) — 15 минут.

Советы

  • Не лепите всё в одну группу. Скорость оценки группы пропорциональна количеству запросов в группе. Если в одной группе 20 правил, каждое из которых выполняется 5 секунд, интервал не должен быть меньше 100 секунд.
  • Используйте Reduce Last, а не Max или Avg, для алертов с состоянием. Max при спайке CPU даст ложный алерт и тут же сбросит его. Last — стабилен.
  • Preview — тестируйте перед запуском.