Состояния No Data и Error
Grafana Alerting реализует состояния No Data и Error для обработки распространённых сценариев при вычислении правил оповещений, и вы можете изменить их поведение.
Экземпляр оповещения может переходить в эти особые состояния:
- Состояние No Data возникает, когда запрос правила оповещения выполняется успешно, но не возвращает точек данных.
- Состояние Error возникает, когда правилу оповещения не удаётся успешно вычислить свой запрос или запросы.
Note
Состояния No Data и Error поддерживаются только для Grafana-managed правил оповещений.
Tip
Типичные примеры и практические рекомендации по обработке сценариев Error, No Data и stale см. в руководствах Обработка ошибок подключения и Обработка отсутствующих данных.
Состояние Error
Состояние Error запускается, когда правилу оповещения не удаётся успешно вычислить свой запрос или запросы.
Это может происходить из-за тайм-аутов вычисления (по умолчанию 30s) или повторных сбоев (по умолчанию 3) при запросе к источнику данных. Эти параметры управляются опциями
evaluation_timeout и
max_attempts.
Состояние Error учитывает
период ожидания: экземпляр оповещения переходит Normal → Pending → Error. Задайте период ожидания 0, чтобы пропустить состояние Pending и сразу перейти в Error.
Когда экземпляр оповещения переходит в состояние Error, Grafana по умолчанию запускает новое оповещение DatasourceError. Вы можете управлять этим поведением в зависимости от желаемого результата вашего правила оповещения в разделе Изменение состояния No Data или Error.
Состояние No Data
Состояние No Data возникает, когда запрос правила оповещения выполняется успешно, но вообще не возвращает точек данных.
Состояние No Data учитывает
период ожидания: экземпляр оповещения переходит Normal → Pending → No Data. Задайте период ожидания 0, чтобы пропустить состояние Pending и сразу перейти в No Data.
Когда экземпляр оповещения переходит в состояние No Data, Grafana по умолчанию запускает новое оповещение DatasourceNoData. Вы можете управлять этим поведением в зависимости от желаемого результата вашего правила оповещения в разделе Изменение состояния No Data или Error.
Изменение состояния No Data или Error
В разделе Настройка обработки отсутствия данных и ошибок вы можете настроить поведение, когда вычисление не возвращает данных или все значения равны null:
[ru] DOCS_SHARED: "docs/grafana/latest/alerting/fundamentals/alert-rule-evaluation/nodata-and-error-states.ru.md" ("/hugo/content/docs/grafana/latest/alerting/fundamentals/alert-rule-evaluation/nodata-and-error-states.ru.md:114:1") shared directory "docs/grafana/latest/shared" not found
Вы также можете настроить поведение, когда вычисление возвращает ошибку или тайм-аут:
[ru] DOCS_SHARED: "docs/grafana/latest/alerting/fundamentals/alert-rule-evaluation/nodata-and-error-states.ru.md" ("/hugo/content/docs/grafana/latest/alerting/fundamentals/alert-rule-evaluation/nodata-and-error-states.ru.md:118:1") shared directory "docs/grafana/latest/shared" not found
Обратите внимание, что когда вы настраиваете поведение No Data или Error на установку состояния Alerting или Normal, Grafana пытается сохранить стабильный набор полей в Values уведомления. Если ваш запрос не возвращает данных или возвращает ошибку, Grafana повторно использует последний известный набор полей в Values, но подставляет -1 вместо измеренного значения.
Keep last state
Опция “Keep Last State” помогает смягчить временные проблемы источника данных, предотвращая нежелательное срабатывание, разрешение и повторное срабатывание оповещений.
Однако в ситуациях, когда критически важен строгий мониторинг, полагаться только на опцию “Keep Last State” может быть неуместно. Вместо этого рассмотрите использование альтернативы или добавление дополнительных правил оповещений, чтобы гарантировать обнаружение проблем при длительных сбоях источника данных.
Оповещения No Data и Error
Когда вычисление правила оповещения даёт состояние No Data или Error, Grafana Alerting создаёт новый экземпляр оповещения со следующими дополнительными метками:
alertname: либоDatasourceNoData, либоDatasourceErrorв зависимости от состояния.datasource_uid: UID источника данных, вызвавшего состояние.rulename: имя правила оповещения, породившего оповещение.
Обратите внимание, что экземпляры оповещений DatasourceNoData и DatasourceError не зависят от исходного экземпляра оповещения. У них другие метки, а значит существующие silences, mute timings и политики уведомлений, применённые к исходному оповещению, могут к ним не применяться.
Вы можете управлять этими оповещениями как обычными, используя их метки для таких действий, как добавление silence, маршрутизация через политики уведомлений и другое.
Если правило оповещения настроено на отправку уведомлений напрямую в выбранную точку контакта (вместо использования политик уведомлений), оповещения DatasourceNoData и DatasourceError также отправляются в эту точку контакта. Любые дополнительные настройки уведомлений, определённые в правиле оповещения, такие как отключение или группировка, сохраняются.
Сокращение оповещений No Data или Error
Чтобы свести к минимуму количество оповещений в состоянии No Data или Error, попробуйте следующее.
-
Используйте опцию Keep last state. Дополнительные сведения см. в разделе ниже. Эта опция позволяет оповещению сохранять последнее известное состояние, когда данные недоступны, вместо перехода в состояние No Data.
-
Для оповещений No Data вы можете оптимизировать правило оповещения, расширив временной диапазон запроса. Однако если временной диапазон слишком велик, это влияет на производительность запроса и может приводить к ошибкам из-за тайм-аута.
Чтобы минимизировать тайм-ауты, приводящие к состоянию Error, сократите временной диапазон, чтобы запрашивать меньше данных в каждом цикле вычисления.
-
Рассмотрите увеличение периода ожидания. Поскольку состояния No Data и Error учитывают период ожидания, более длительный период может подавить уведомления
DatasourceNoDataиDatasourceErrorдля кратковременных проблем. -
Чтобы сократить количество уведомлений от оповещений Error, определите политику уведомлений для обработки всех связанных оповещений с
alertname=DatasourceErrorи фильтруйте и группируйте ошибки из одного источника данных с помощью меткиdatasource_uid. -
Измените тайм-аут вычисления (по умолчанию
30s) или настройки механизма повторных попыток (max_attempts). Это следует использовать в крайнем случае, так как это может повлиять на производительность всех правил оповещений и привести к пропущенным вычислениям, если тайм-аут слишком велик. Для Grafana Cloud откройте обращение в службу поддержки из Cloud Portal.Tip
Типичные примеры и практические рекомендации по обработке сценариев Error, No Data и stale см. в руководствах Обработка ошибок подключения и Обработка отсутствующих данных.
grafana_state_reason для устранения неполадок
Иногда экземпляр оповещения может находиться в состоянии, которое не сразу всем понятно. Например:
- Если обработка “no data” настроена на переход в состояние, отличное от
No Data. - Если обработка “error” настроена на переход в состояние, отличное от
Error. - Если правило оповещения удалено, приостановлено или в некоторых случаях обновлено, экземпляр оповещения также переходит в состояние
Normal. -
Устаревшие экземпляры оповещений в состоянии
Alertingпереходят в состояниеNormal, когда серии исчезают.
В этих ситуациях состояние вычисления может отличаться от состояния оповещения, и при получении уведомления может потребоваться понять причину нахождения в этом состоянии.
В таких ситуациях включается аннотация grafana_state_reason, указывающая причину, по которой экземпляр оповещения перешёл в текущее состояние. Например:
- Если обработка “no data” или “error” переводит в состояние
Normal, аннотацияgrafana_state_reasonвключается со значением No Data или Error соответственно. - Если правило оповещения удалено или приостановлено,
grafana_state_reasonустанавливается в Paused или RuleDeleted. Для некоторых обновлений она устанавливается в Updated. -
Устаревшие экземпляры оповещений в состоянии
Normalвключают аннотациюgrafana_state_reasonсо значением MissingSeries.