【问题标题】:PromQL usage of hour() in a range over midnight午夜范围内小时()的 PromQL 使用情况
【发布时间】: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

【问题讨论】:

    标签: metrics promql


    【解决方案1】:

    请注意,Prometheus 对数据向量进行操作。尝试negationand 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, &lt;...night time hours...&gt;))。

    【讨论】:

    • 这就像一个魅力。谢谢!看起来我把这个复杂化了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多