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

Posted

技术标签:

【中文标题】如何使用 PromQL 的 hour() 函数?【英文标题】:How do I use the hour() function of PromQL? 【发布时间】:2019-10-19 00:50:29 【问题描述】:

我正在尝试在 Prometheus 的 alert.rules 文件中设置一个仅在特定时间段内触发的警报。 我已经在 expr-tag 中测试了下面没有时间限制的代码块,它工作得非常好。 正如PromQL Documentation: hour() 所述,hour() 根据当前的 UTC 返回一个介于 0 和 23 之间的值。

- alert: test_down 
        expr: absent(container_memory_usage_bytesname="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() &gt; 5 and hour() &lt; 22 替换为and ON() hour() &gt; 5 &lt; 22

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于如何使用 PromQL 的 hour() 函数?的主要内容,如果未能解决你的问题,请参考以下文章

PromQL:rate() 函数的用途是啥?

如何在 PromQL 中获得两个指标中的最小值?

PromQL 中的 MetricQL 函数

第七篇Prometheus PromQL 简单用法

PromQL 内置函数

PromQL 内置函数