Состояния 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

A screenshot of the configure no data and error handling section in the alert rule form.

В разделе Настройка обработки отсутствия данных и ошибок вы можете настроить поведение, когда вычисление не возвращает данных или все значения равны null:

Warning

[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

Вы также можете настроить поведение, когда вычисление возвращает ошибку или тайм-аут:

Warning

[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, попробуйте следующее.

  1. Используйте опцию Keep last state. Дополнительные сведения см. в разделе ниже. Эта опция позволяет оповещению сохранять последнее известное состояние, когда данные недоступны, вместо перехода в состояние No Data.

  2. Для оповещений No Data вы можете оптимизировать правило оповещения, расширив временной диапазон запроса. Однако если временной диапазон слишком велик, это влияет на производительность запроса и может приводить к ошибкам из-за тайм-аута.

    Чтобы минимизировать тайм-ауты, приводящие к состоянию Error, сократите временной диапазон, чтобы запрашивать меньше данных в каждом цикле вычисления.

  3. Рассмотрите увеличение периода ожидания. Поскольку состояния No Data и Error учитывают период ожидания, более длительный период может подавить уведомления DatasourceNoData и DatasourceError для кратковременных проблем.

  4. Чтобы сократить количество уведомлений от оповещений Error, определите политику уведомлений для обработки всех связанных оповещений с alertname=DatasourceError и фильтруйте и группируйте ошибки из одного источника данных с помощью метки datasource_uid.

  5. Измените тайм-аут вычисления (по умолчанию 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.