3

我正在尝试在 Prometheus 的 alert.rules 文件中设置一个仅在特定时间段内触发的警报。我已经在 expr-tag 中测试了下面没有时间限制的代码块,它工作得非常好。
正如PromQL 文档: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() < 22and ON() hour() > 5 < 22

4

1 回答 1

4

在这种情况下, ON() 它是连接操作,它忽略来自左侧的匹配标签。否则,Prometheus 会期望左侧和右侧的标签集相同。您可以在这篇博文中阅读更多内容。

于 2019-06-03T15:37:53.843 回答