警报的状态和健康状况
有三个关键组件可帮助您了解警报在评估期间的行为:警报实例状态、警报规则状态和警报规则健康状况。虽然相关,但每个组件传达的信息略有不同。
警报实例状态
警报实例可以处于以下任一状态
状态 | 描述 |
---|---|
正常 | 当条件(阈值)未满足时,警报的状态。 |
Pending (待处理) | 警报已超过阈值但尚未达到 pending 周期时的状态。 |
警报 | 警报超过阈值且已超过 pending 周期时的状态。 |
Recovering (恢复中) | 警报触发后配置为在一定时间内继续触发时的状态。 |
错误* | 评估警报规则时发生错误或超时时的警报状态。 您可以自定义错误状态的行为,默认情况下,错误状态会触发另一个警报。 |
无数据* | 查询返回无数据或所有值为空时的警报状态。 您可以自定义无数据状态的行为,默认情况下,无数据状态会触发另一个警报。 |
如果警报规则发生更改(注解、评估间隔或其他内部字段的更新除外),其警报实例将重置为正常
状态。然后,警报实例状态会在下一次评估期间相应更新。

注意
无数据
和错误
状态仅支持 Grafana 管理的警报规则。
通知路由
当警报实例处于触发
状态或已解决
(从触发
状态转换为正常
状态)时,将路由通知。

错误状态
当警报规则无法成功评估其查询时,会触发错误状态。
这可能是由于评估超时(默认值:30s
)或查询数据源时三次重复失败导致的。evaluation_timeout
和 max_attempts
选项控制这些设置。
当警报实例进入错误状态时,Grafana 默认会触发新的DatasourceError
警报。您可以在修改无数据
或错误
状态中根据警报规则的预期结果控制此行为。
无数据状态
当警报规则查询成功运行但未返回任何数据点时,会发生无数据状态。
当警报实例进入无数据状态时,Grafana 默认会触发新的DatasourceNoData
警报。您可以在修改无数据
或错误
状态中根据警报规则的预期结果控制此行为。
过期的警报实例 (MissingSeries)
如果查询返回数据但其维度(或系列)已消失两个评估间隔,则认为警报实例已过期。
在这种情况下,警报实例作为已解决的状态转换为正常 (MissingSeries) 状态,然后被逐出。处理过期警报实例的过程如下:
警报规则运行并返回某些标签集的数据。
之前存在的警报实例现在缺失。
Grafana 会将警报实例的先前状态保留两个评估间隔。
如果在此后两个间隔后仍然缺失,它会转换到正常状态,并在
grafana_state_reason
注解中设置 MissingSeries。处于触发、无数据或错误状态的过期警报实例会转换为正常状态,并标记为已解决,像其他已解决的警报一样路由通知。
警报实例将从 UI 中移除。
无数据和错误警报
当警报规则评估结果为无数据
或错误
状态时,Grafana Alerting 会立即创建一个新的警报实例(跳过 pending 周期),并添加以下额外标签:
alertname
:根据状态,可以是DatasourceNoData
或DatasourceError
。datasource_uid
:导致该状态的数据源 UID。rulename
:触发该警报的警报规则名称。
请注意,DatasourceNoData
和DatasourceError
警报实例独立于原始警报实例。它们具有不同的标签,这意味着应用于原始警报的现有静默、静音时间和通知策略可能不适用于它们。
您可以使用这些警报的标签来像管理常规警报一样进行管理,例如添加静默、通过通知策略路由等。
如果警报规则配置为直接发送通知到选定的联系点(而不是使用通知策略),则DatasourceNoData
和DatasourceError
警报也会发送到该联系点。警报规则中定义的任何其他通知设置,例如静音或分组,都将保留。
修改无数据或错误状态
这些状态仅支持 Grafana 管理的警报规则。
在配置无数据和错误处理中,您可以更改评估返回无数据或错误时的默认行为。您可以将警报实例状态设置为触发
、正常
、错误
或保持上次状态
。

配置 | 设置警报状态 | 描述 |
---|---|---|
无数据 | 无数据 | 无数据事件的默认选项。 将警报实例状态设置为 无数据 。警报规则在评估后立即创建一个新的 DatasourceNoData 警报实例,使用警报规则的名称、UID 和数据源 UID 作为标签。 |
错误 | 错误 | 错误事件的默认选项。 将警报实例状态设置为 错误 。警报规则在评估后立即创建一个新的 DatasourceError 警报实例,使用警报规则的名称、UID 和数据源 UID 作为标签。 |
无数据或错误 | 警报 | 将警报实例状态设置为 Pending,然后在 pending 周期结束时转换为触发 状态。如果将 pending 周期设置为 0,警报实例状态会立即设置为触发 状态。 |
无数据或错误 | 正常 | 将警报实例状态设置为正常 。 |
无数据或错误 | 保持上次状态 | 将警报实例保持在其上次状态。对于缓解临时问题很有用。 |
请注意,当您将无数据或错误行为配置为触发或正常时,Grafana 会尝试在通知值
中保持一组稳定的字段。如果您的查询返回无数据或错误,Grafana 会重用值
中已知的最新字段集,但会使用 -1 代替测量值。
减少无数据或错误警报
为了最大程度地减少收到的无数据或错误状态警报数量,请尝试以下操作。
使用保持上次状态选项。有关更多信息,请参阅以下部分。此选项允许警报在没有可用数据时保留其上次已知状态,而不是切换到无数据状态。
对于无数据警报,您可以通过扩大查询的时间范围来优化警报规则。但是,如果时间范围过大,会影响查询性能并可能导致超时错误。
为了最大程度地减少导致错误状态的超时,请减少时间范围,以便在每个评估周期请求更少的数据。
更改默认评估超时。默认设置为 30 秒。要增加默认评估超时,请从Cloud Portal打开支持工单。请注意,这应该是最后的办法,因为它可能会影响所有警报规则的性能,并且如果超时时间过长,可能导致评估遗漏。
为了减少错误警报产生的重复通知,请定义通知策略来处理所有相关警报(
alertname=DatasourceError
),并使用datasource_uid
标签过滤和分组来自同一数据源的错误。
保持上次状态
“保持上次状态”选项有助于缓解临时数据源问题,防止警报意外触发、解决和重新触发。
但是,在严格监控至关重要的情况下,仅依赖“保持上次状态”选项可能不合适。相反,请考虑使用替代方法或实施其他警报规则,以确保检测到由长时间数据源中断引起的问题。
用于故障排除的 grafana_state_reason
有时,警报实例可能处于一种状态,但不是每个人都能立即明白。例如:
- 处于触发状态的过期警报实例,当系列消失时会转换为
正常
状态。 - 如果“无数据”处理配置为转换为非无数据状态。
- 如果“错误”处理配置为转换为非错误状态。
- 在某些情况下,如果警报规则被删除、暂停或更新,警报实例也会转换为
正常
状态。
在这些情况下,评估状态可能与警报状态不同,并且在收到通知时,可能需要了解处于该状态的原因。
在这些情况下,会包含grafana_state_reason
注解,提供解释警报实例转换为当前状态的原因。例如:
- 处于
正常
状态的过期警报实例包含grafana_state_reason
注解,值为MissingSeries。 - 如果“无数据”或“错误”处理转换为
正常
状态,则grafana_state_reason
注解会包含值No Data或Error。 - 如果警报规则被删除或暂停,则
grafana_state_reason
设置为了Paused或RuleDeleted。对于某些更新,它设置为了Updated。
警报规则状态
警报规则状态由生成的警报实例中的“最差”状态决定。例如,如果一个警报实例处于触发
状态,则警报规则状态为触发中。
警报规则可以处于以下任一状态
状态 | 描述 |
---|---|
正常 | 评估引擎返回的警报实例均未处于Pending 或触发 状态。 |
Pending (待处理) | 评估引擎返回的至少一个警报实例处于Pending 状态。 |
触发中 | 评估引擎返回的至少一个警报实例处于触发 状态。 |
警报规则健康状况
警报规则可以具有以下健康状态之一
状态 | 描述 |
---|---|
正常 | 评估警报规则时无错误。 |
错误 | 评估警报规则时发生错误。 |
无数据 | 规则评估期间返回的至少一个时间序列中缺少数据。 |
{status}, 保持上次 | 规则本应获得另一个状态,但被配置为保持警报规则的上次状态。 |