午夜范围内小时()的 PromQL 使用情况
Posted
技术标签:
【中文标题】午夜范围内小时()的 PromQL 使用情况【英文标题】:PromQL usage of hour() in a range over midnight 【发布时间】:2021-01-27 00:04:44 【问题描述】:我正在尝试专门返回某个时间段之间的指标。我正在尝试针对具有不同水印的特定指标发出警报,具体取决于晚上或白天。
当我查询白天指标时,它工作正常: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
。
【问题讨论】:
【参考方案1】:请注意,Prometheus 对数据向量进行操作。尝试negation(and
vs. unless
)排除您不想要的时间。
白天时间:
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...>)
)。
【讨论】:
这就像一个魅力。谢谢!看起来我把这个复杂化了。以上是关于午夜范围内小时()的 PromQL 使用情况的主要内容,如果未能解决你的问题,请参考以下文章
如何在 R 中为日期添加时间(午夜)并在没有 1 或 2 小时班次的情况下打印它?
PromQL 以图表形式每小时创建的 Kubernetes POD 数量
在 Prometheus PromQL 中获取最后一小时的平均费率
使用 Instant/ChronoUnit 获取今天午夜的 nanos-since-epoch 时间比使用 GregorianCalendar/Date 提前 24 小时