计算普罗米修斯发出的警报
Count alerts fired by prometheus
我有定义了一些警报规则的 Prometheus,我想获得有关 Prometheus 发出的警报数量的统计信息。
我试图计算使用 grafana 触发警报的次数,但它不起作用:
SUM(ALERTS{alertname="XXX", alertstate="firing"})
有一种方法可以计算触发警报的次数吗?
您的 PromQL 是正确的。请记住,尽管标签(包括警报名称)区分大小写:也许这就是问题所在?
您的查询 return 现在触发了多少警报,而不是每个警报被触发了多少次。
我发现此查询(大部分)适用于 Prometheus 2.4.0 及更高版本:
changes(ALERTS_FOR_STATE[24h])
它将 return 每个警报在过去 24 小时内从 "pending" 变为 "firing" 的次数,这意味着它仅适用于处于挂起状态的警报第一名(即指定 for: <some_duration>
的警报)。
ALERTS_FOR_STATE
是新添加的 Prometheus 内部指标,用于在 Prometheus 重启后恢复警报。它并没有得到很好的记录(实际上根本没有),但它似乎有效。
哦,如果您希望结果按警报(或环境、工作或其他)分组,您可以按该标签或标签集对结果求和:
sum by(alertname) (changes(ALERTS_FOR_STATE[24h]))
将为您提供每个警报在作业、环境等中触发的次数。
受“Alin Sînpălean”的启发,我计算了 firing
状态的警报并忽略了 pending
状态。
计数当前警报:
count(ALERTS{alertstate="firing"}) by(alertname)
计算每个警报被触发的次数:
# Add a rule
groups:
- name: recording_rules
rules:
- record: ALERTS_FOR_STATE:firing
expr: ALERTS_FOR_STATE and ignoring(alertstate) ALERTS{alertstate="firing"}
sum(changes(ALERTS_FOR_STATE:firing[1w]) + 1) by(alertname)
我有定义了一些警报规则的 Prometheus,我想获得有关 Prometheus 发出的警报数量的统计信息。
我试图计算使用 grafana 触发警报的次数,但它不起作用:
SUM(ALERTS{alertname="XXX", alertstate="firing"})
有一种方法可以计算触发警报的次数吗?
您的 PromQL 是正确的。请记住,尽管标签(包括警报名称)区分大小写:也许这就是问题所在?
您的查询 return 现在触发了多少警报,而不是每个警报被触发了多少次。
我发现此查询(大部分)适用于 Prometheus 2.4.0 及更高版本:
changes(ALERTS_FOR_STATE[24h])
它将 return 每个警报在过去 24 小时内从 "pending" 变为 "firing" 的次数,这意味着它仅适用于处于挂起状态的警报第一名(即指定 for: <some_duration>
的警报)。
ALERTS_FOR_STATE
是新添加的 Prometheus 内部指标,用于在 Prometheus 重启后恢复警报。它并没有得到很好的记录(实际上根本没有),但它似乎有效。
哦,如果您希望结果按警报(或环境、工作或其他)分组,您可以按该标签或标签集对结果求和:
sum by(alertname) (changes(ALERTS_FOR_STATE[24h]))
将为您提供每个警报在作业、环境等中触发的次数。
受“Alin Sînpălean”的启发,我计算了 firing
状态的警报并忽略了 pending
状态。
计数当前警报:
count(ALERTS{alertstate="firing"}) by(alertname)
计算每个警报被触发的次数:
# Add a rule groups: - name: recording_rules rules: - record: ALERTS_FOR_STATE:firing expr: ALERTS_FOR_STATE and ignoring(alertstate) ALERTS{alertstate="firing"}
sum(changes(ALERTS_FOR_STATE:firing[1w]) + 1) by(alertname)