Вычисление правил оповещений

Критерии, определяющие, когда срабатывает правило оповещения, основаны на трёх настройках:

Эти настройки влияют на то, как экземпляры оповещений проходят свой жизненный цикл.

Жизненный цикл оповещения

Каждое правило оповещения может порождать один или несколько экземпляров оповещений.

Экземпляр оповещения может находиться в любом из следующих состояний в зависимости от результата вычисления правила оповещения:

Состояние Описание
Normal Состояние оповещения, когда ни одно из условий оповещения (нарушение порога, отсутствие данных или ошибка) не выполнено.
Pending Состояние оповещения, когда условие (нарушение порога, отсутствие данных или ошибка) выполнено, но период ожидания ещё не истёк.
Alerting Состояние оповещения, когда порог нарушен после истечения периода ожидания.
Recovering Состояние сработавшего оповещения, когда порог больше не нарушен, но период продолжать срабатывание в течение ещё не истёк.
No Data* Состояние оповещения, когда запрос не возвращает данных или все значения равны null после истечения периода ожидания. Вы можете настроить поведение состояния No Data, которое по умолчанию запускает отдельное оповещение.
Error* Состояние оповещения, когда во время вычисления правила оповещения после истечения периода ожидания возникает ошибка или тайм-аут. Вы можете настроить поведение состояния Error, которое по умолчанию запускает отдельное оповещение.
A diagram of the distinct alert instance states and transitions.
The lifecycle diagram of alert instances

Если правило оповещения изменяется (кроме обновлений аннотаций, интервала вычисления или других внутренних полей), его экземпляры оповещений сбрасываются в состояние Normal и соответствующим образом обновляются при следующем вычислении.

Note

Состояния No Data и Error поддерживаются только для Grafana-managed правил оповещений. Обратитесь к разделу Состояния No Data и Error, чтобы настроить их поведение по умолчанию для запуска отдельного оповещения.

Маршрутизация уведомлений

Экземпляры оповещений маршрутизируются для уведомлений в двух случаях:

  1. Когда они переходят в состояние Alerting.
  2. Когда они переходят в состояние Normal и помечаются как Resolved — либо из состояния Alerting, либо из состояния Recovering.

Группа вычисления

Каждому правилу оповещения и recording-правилу назначается группа вычисления. Каждая группа вычисления содержит интервал вычисления, определяющий, как часто проверяется правило. Например, вычисление может происходить каждые 10s, 30s, 1m, 10m и т. д.

Правила могут вычисляться параллельно или последовательно. Подробнее см. в разделе Как вычисляются правила внутри группы.

Период ожидания

Вы можете задать период ожидания (Pending period), чтобы предотвратить ненужные уведомления, вызванные временными проблемами.

Когда условие оповещения выполнено, экземпляр оповещения переходит в состояние Pending. Он остаётся в этом состоянии, пока в течение настроенного периода ожидания выполняется любое условие оповещения. После истечения периода ожидания оповещение переходит в состояние, соответствующее последнему вычислению.

Это гарантирует, что нарушение условия стабильно, прежде чем оповещение перейдёт в состояние Alerting и будет маршрутизировано для уведомления.

  • Normal -> Pending -> Alerting*

Вы также можете задать период ожидания равным нулю, чтобы полностью пропустить состояние Pending и сразу перейти в состояние Alerting, No Data или Error.

Продолжать срабатывание в течение

Вы можете задать период Продолжать срабатывание в течение (Keep firing for), чтобы избежать повторяющихся уведомлений firing-resolving-firing, вызванных колеблющимися условиями.

Когда условие оповещения перестаёт выполняться в состоянии Alerting, экземпляр оповещения переходит в состояние Recovering.

  • Alerting → Recovering → Normal (Resolved)*
  • После истечения периода Продолжать срабатывание в течение оповещение переходит в состояние Normal и помечается как Resolved.
  • Если условие оповещения снова выполняется, оповещение возвращается в состояние Alerting, и новые уведомления не отправляются.

Вы также можете задать период Продолжать срабатывание в течение равным нулю, чтобы полностью пропустить состояние Recovering.

Пример вычисления

Имейте в виду:

  • Одно правило оповещения может порождать несколько экземпляров оповещений — по одному для каждой серии или измерения, создаваемого запросом правила. Экземпляры оповещений из одного правила оповещения могут находиться в разных состояниях.
  • Только экземпляры оповещений в состоянии Alerting и Normal (Resolved) маршрутизируются для уведомлений.

Рассмотрим правило оповещения с интервалом вычисления каждые 30 секунд и периодом ожидания 90 секунд. Вычисление происходит следующим образом:

Время Условие Состояние экземпляра оповещения Счётчик ожидания
00:30 (первое вычисление) Не выполн. Normal -
01:00 (второе вычисление) Нарушено Pending 0s
01:30 (третье вычисление) Нарушено Pending 30s
02:00 (четвёртое вычисление) Нарушено Pending 60s
02:30 (пятое вычисление) Нарушено Alerting 📩 90s

При периоде продолжать срабатывание в течение 0 секунд экземпляр оповещения немедленно переходит из Alerting в Normal и помечается как Resolved:

Время Условие Состояние экземпляра оповещения Счётчик ожидания
03:00 (шестое вычисление) Не выполн. Normal Resolved 📩 120s
03:30 (седьмое вычисление) Не выполн. Normal 150s
A diagram of alert state transitions of an alert example.