在午夜范围内使用 hour() 的 PromQL

PromQL usage of hour() in a range over midnight

我正在尝试特定 return 特定时间段之间的指标。我正在尝试针对具有不同水印的特定指标发出警报,具体取决于是在晚上还是在白天。

当我查询日间指标时,它工作正常:sum(increase(some_counter_total[5m])) and hour() >4 <20 这当然有效,因为 bigger than 4 but smaller than 23 是一个有效范围。

然而,当人们想在夜间这样做时,这会变得更有趣,因为反向时隙:sum(increase(some_counter_total[5m])) and hour() >20 <4 第一个条件 bigger then 20 已经消除了下面的 smaller then 4。颠倒顺序也是如此。

我尝试了一些使用 or 的不同组合,但我一定是做错了,因为我从来没有让查询正常工作。理想情况下,我想我会寻找一种方法来进行反向查询 sum(increase(some_counter_total[5m])) and WHEN NOT hour() >4 <20.

请注意,Prometheus 对数据向量进行操作。尝试 negationandunless)排除您不想要的时间。

白天时间:

sum(increase(some_counter_total[5m])) and hour() >=9 <21

晚上时间:

sum(increase(some_counter_total[5m])) unless hour() >=9 <21

这可能不是最有效的解决方案,但我找不到其他方法,例如您的直截了当的建议或类似 WHERE value IN (4, 5, 6, <...night time hours...>)) 的方法。