我试图在Prometheus的alert.rules文件中设置一个仅在特定时间段内触发的警报。
我已经在expr-tag中测试了下面的代码块,没有时间限制,并且可以正常工作。
如PromQL Documentation: hour()所述,hour()
根据当前UTC返回0到23之间的值。
- alert: test_down
expr: absent(container_memory_usage_bytes{name="test_ap"}) and hour() > 5 and hour() < 22
for: 30s
labels:
severity: critical
annotations:
summary: "test_ap down"
description: "test_ap is down for more than 30 seconds."
但是在这里,不会触发警报通知。有人知道吗,为什么什么也没炒,我该如何解决?
编辑:我已经解决了。我不明白为什么我必须像这样做一样去做,但是以下工作有效:
将and hour() > 5 and hour() < 22
替换为and ON() hour() > 5 < 22
答案 0 :(得分:1)
在这种情况下,ON()是联接操作,它将忽略左侧的匹配标签。否则,Prometheus将在左侧和右侧使用相同的标签集。您可以阅读更多in this blogpost。