计算普罗米修斯发出的警报

she*_*obi 3 prometheus

我有 Prometheus 定义了一些警报规则,我想统计有关 Prometheus 发出的警报数量。

我试图计算用 grafana 发出警报的次数,但它不起作用:

SUM(ALERTS{alertname="XXX", alertstate="firing"})
Run Code Online (Sandbox Code Playgroud)

有没有办法计算一个警报被触发了多少次?

Ali*_*ean 6

您的查询返回现在触发的警报数量,而不是每个警报被触发的次数。

我发现这个查询(主要)适用于 Prometheus 2.4.0 及更高版本:

changes(ALERTS_FOR_STATE[24h])
Run Code Online (Sandbox Code Playgroud)

它将返回每个警报在过去 24 小时内从“待处理”变为“触发”的次数,这意味着它仅适用于首先具有待处理状态的警报(即for: <some_duration>指定的警报)。

ALERTS_FOR_STATE是新添加的 Prometheus 内部指标,用于在 Prometheus 重启后恢复警报。它的文档记录并不完整(实际上根本没有),但它似乎有效。

哦,如果您想要按警报(或环境、工作或其他)分组的结果,您可以按该标签或标签集对结果求和:

sum by(alertname) (changes(ALERTS_FOR_STATE[24h]))
Run Code Online (Sandbox Code Playgroud)

将为您提供跨作业、环境等触发的每个警报的次数。