如何使用PromQL的hour()函数?

时间:2019-06-03 12:53:16

标签: prometheus prometheus-alertmanager promql

我试图在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

1 个答案:

答案 0 :(得分:1)

在这种情况下,ON()是联接操作,它将忽略左侧的匹配标签。否则,Prometheus将在左侧和右侧使用相同的标签集。您可以阅读更多in this blogpost