菜单
文档breadcrumb arrow Grafana 文档breadcrumb arrow 警报breadcrumb arrow 介绍breadcrumb arrow 警报规则评估breadcrumb arrow 警报的状态和健康状况
Grafana Cloud Enterprise 开源

警报的状态和健康状况

有三个关键组件可帮助您了解警报在评估期间的行为:警报实例状态警报规则状态警报规则健康状况。虽然相关,但每个组件传达的信息略有不同。

警报实例状态

警报实例可以处于以下任一状态

状态描述
正常当条件(阈值)未满足时,警报的状态。
Pending (待处理)警报已超过阈值但尚未达到 pending 周期时的状态。
警报警报超过阈值且已超过 pending 周期时的状态。
Recovering (恢复中)警报触发后配置为在一定时间内继续触发时的状态。
错误*评估警报规则时发生错误或超时时的警报状态。
您可以自定义错误状态的行为,默认情况下,错误状态会触发另一个警报。
无数据*查询返回无数据或所有值为空时的警报状态。
您可以自定义无数据状态的行为,默认情况下,无数据状态会触发另一个警报。

如果警报规则发生更改(注解、评估间隔或其他内部字段的更新除外),其警报实例将重置为正常状态。然后,警报实例状态会在下一次评估期间相应更新。

A diagram of the distinct alert instance states and transitions.
警报实例状态图

注意

无数据错误状态仅支持 Grafana 管理的警报规则。

通知路由

当警报实例处于触发状态或已解决(从触发状态转换为正常状态)时,将路由通知

A diagram of the alert instance states and when to route their notifications.

错误状态

当警报规则无法成功评估其查询时,会触发错误状态。

这可能是由于评估超时(默认值:30s)或查询数据源时三次重复失败导致的。evaluation_timeoutmax_attempts 选项控制这些设置。

当警报实例进入错误状态时,Grafana 默认会触发新的DatasourceError 警报。您可以在修改无数据错误状态中根据警报规则的预期结果控制此行为。

无数据状态

当警报规则查询成功运行但未返回任何数据点时,会发生无数据状态。

当警报实例进入无数据状态时,Grafana 默认会触发新的DatasourceNoData 警报。您可以在修改无数据错误状态中根据警报规则的预期结果控制此行为。

过期的警报实例 (MissingSeries)

如果查询返回数据但其维度(或系列)已消失两个评估间隔,则认为警报实例已过期

在这种情况下,警报实例作为已解决的状态转换为正常 (MissingSeries) 状态,然后被逐出。处理过期警报实例的过程如下:

  1. 警报规则运行并返回某些标签集的数据。

  2. 之前存在的警报实例现在缺失。

  3. Grafana 会将警报实例的先前状态保留两个评估间隔。

  4. 如果在此后两个间隔后仍然缺失,它会转换到正常状态,并在 grafana_state_reason 注解中设置 MissingSeries

  5. 处于触发无数据错误状态的过期警报实例会转换为正常状态,并标记为已解决,像其他已解决的警报一样路由通知。

  6. 警报实例将从 UI 中移除。

提示

有关处理错误无数据过期警报场景的常见示例和实用指南,请参阅以下相关指南:

无数据和错误警报

当警报规则评估结果为无数据错误状态时,Grafana Alerting 会立即创建一个新的警报实例(跳过 pending 周期),并添加以下额外标签:

  • alertname:根据状态,可以是DatasourceNoDataDatasourceError
  • datasource_uid:导致该状态的数据源 UID。
  • rulename:触发该警报的警报规则名称。

请注意,DatasourceNoDataDatasourceError警报实例独立于原始警报实例。它们具有不同的标签,这意味着应用于原始警报的现有静默、静音时间和通知策略可能不适用于它们。

您可以使用这些警报的标签来像管理常规警报一样进行管理,例如添加静默、通过通知策略路由等。

如果警报规则配置为直接发送通知到选定的联系点(而不是使用通知策略),则DatasourceNoDataDatasourceError警报也会发送到该联系点。警报规则中定义的任何其他通知设置,例如静音或分组,都将保留。

修改无数据或错误状态

这些状态仅支持 Grafana 管理的警报规则。

配置无数据和错误处理中,您可以更改评估返回无数据或错误时的默认行为。您可以将警报实例状态设置为触发正常错误保持上次状态

A screenshot of the `Configure no data and error handling` option in Grafana Alerting.
配置设置警报状态描述
无数据无数据无数据事件的默认选项。
将警报实例状态设置为无数据
警报规则在评估后立即创建一个新的DatasourceNoData警报实例,使用警报规则的名称、UID 和数据源 UID 作为标签。
错误错误错误事件的默认选项。
将警报实例状态设置为错误
警报规则在评估后立即创建一个新的DatasourceError警报实例,使用警报规则的名称、UID 和数据源 UID 作为标签。
无数据或错误警报将警报实例状态设置为 Pending,然后在 pending 周期结束时转换为触发状态。如果将 pending 周期设置为 0,警报实例状态会立即设置为触发状态。
无数据或错误正常将警报实例状态设置为正常
无数据或错误保持上次状态将警报实例保持在其上次状态。对于缓解临时问题很有用。

请注意,当您将无数据或错误行为配置为触发或正常时,Grafana 会尝试在通知中保持一组稳定的字段。如果您的查询返回无数据或错误,Grafana 会重用中已知的最新字段集,但会使用 -1 代替测量值。

减少无数据或错误警报

为了最大程度地减少收到的无数据或错误状态警报数量,请尝试以下操作。

  1. 使用保持上次状态选项。有关更多信息,请参阅以下部分。此选项允许警报在没有可用数据时保留其上次已知状态,而不是切换到无数据状态。

  2. 对于无数据警报,您可以通过扩大查询的时间范围来优化警报规则。但是,如果时间范围过大,会影响查询性能并可能导致超时错误。

    为了最大程度地减少导致错误状态的超时,请减少时间范围,以便在每个评估周期请求更少的数据。

  3. 更改默认评估超时。默认设置为 30 秒。要增加默认评估超时,请从Cloud Portal打开支持工单。请注意,这应该是最后的办法,因为它可能会影响所有警报规则的性能,并且如果超时时间过长,可能导致评估遗漏。

  4. 为了减少错误警报产生的重复通知,请定义通知策略来处理所有相关警报(alertname=DatasourceError),并使用datasource_uid标签过滤和分组来自同一数据源的错误。

保持上次状态

“保持上次状态”选项有助于缓解临时数据源问题,防止警报意外触发、解决和重新触发。

但是,在严格监控至关重要的情况下,仅依赖“保持上次状态”选项可能不合适。相反,请考虑使用替代方法或实施其他警报规则,以确保检测到由长时间数据源中断引起的问题。

用于故障排除的 grafana_state_reason

有时,警报实例可能处于一种状态,但不是每个人都能立即明白。例如:

  • 处于触发状态的过期警报实例,当系列消失时会转换为正常状态。
  • 如果“无数据”处理配置为转换为非无数据状态。
  • 如果“错误”处理配置为转换为非错误状态。
  • 在某些情况下,如果警报规则被删除、暂停或更新,警报实例也会转换为正常状态。

在这些情况下,评估状态可能与警报状态不同,并且在收到通知时,可能需要了解处于该状态的原因。

在这些情况下,会包含grafana_state_reason注解,提供解释警报实例转换为当前状态的原因。例如:

  • 处于正常状态的过期警报实例包含grafana_state_reason注解,值为MissingSeries
  • 如果“无数据”或“错误”处理转换为正常状态,则grafana_state_reason注解会包含值No DataError
  • 如果警报规则被删除或暂停,则grafana_state_reason设置为了PausedRuleDeleted。对于某些更新,它设置为了Updated

警报规则状态

警报规则状态由生成的警报实例中的“最差”状态决定。例如,如果一个警报实例处于触发状态,则警报规则状态为触发中。

警报规则可以处于以下任一状态

状态描述
正常评估引擎返回的警报实例均未处于Pending触发状态。
Pending (待处理)评估引擎返回的至少一个警报实例处于Pending状态。
触发中评估引擎返回的至少一个警报实例处于触发状态。

警报规则健康状况

警报规则可以具有以下健康状态之一

状态描述
正常评估警报规则时无错误。
错误评估警报规则时发生错误。
无数据规则评估期间返回的至少一个时间序列中缺少数据。
{status}, 保持上次规则本应获得另一个状态,但被配置为保持警报规则的上次状态。