我试图控制相同 expr 的普罗米修斯警报,如果它已经第一次触发,则仅在 4 小时后触发。我在配置中配置了应用程序名称和操作,以及生成警报的阈值。对于相同的应用程序名称和操作,我们可以控制警报仅在指定时间后触发吗? (第一次应该在5m后触发)
- alert: DummyAlert
expr: sum by (appname, operation)(increase(mycounter{appname="abc", operation="xyz"} [5m])) > 0
for: 5m
labels:
severity: critical
maintainedby: test
teamname: test
annotations:
summary: test alert
description: 'test alert'
警报正在被确认,并且不会重复出现相同的警报。有人可以建议对警报进行任何更改吗?
由于您希望超时即使在警报的两个不同触发器之间也能跨越时间,因此警报管理器的配置无法为您解决此问题,因为已解析警报的所有数据都将被删除,并且无法在警报管理器本身内引用。
但幸运的是,您可以进行一项检查,这将防止警报触发频率超过每四个小时一次。为此,您可以使用 Prometheus 的内置伪度量
ALERTS
。
sum by (appname, operation)(increase(mycounter{appname="abc", operation="xyz"} [5m])) > 0
unless on(appname, operation) last_over_time(ALERTS{alertname="DummyAlert", alertstate="firing"} [4h])
此处,
last_over_time(ALERTS{alertname="DummyAlert", alertstate="firing"} [4h])
将返回过去四个小时内触发的名称为 DummyAlert
的警报。
仅当初始查询返回一些结果时,整个查询才会产生结果,并且 DummyAlert
对于相同的 appname
和 operation
在过去四个小时内没有被触发。