0

我想有来自特定时间范围的聚合。例如每小时,每天,但每小时从例如 09:00-10:00(翻滚窗口),而不是 1 小时前(跳跃窗口)。

如果我们可以减去由可变时间偏移的计数器,那将是可能的,例如:

x_count offset (minutes()m) - x_count offset ((minutes()+60)m)但 offset 似乎没有评估函数。

关于如何做到这一点的建议?

4

1 回答 1

2

您可以将该timestamp()功能与 和 结合使用hour()day_of_month()以过滤给定小时/天内的样本;或结合time()过滤当前小时/天内的样本。

这是一个让您入门的脑筋急转弯:

up{job="prometheus"} + ignoring(year, month, day_of_month) group_right
  count_values without() ("year", year(timestamp(
    count_values without() ("month", month(timestamp(
      count_values without() ("day_of_month", day_of_month(
        timestamp(up{job="prometheus"}
      )))
    )))
  ))) * 0

这将为每个 和标签组合创建单独year的指标monthday_of_month然后你可以avg_over_time(或任何东西_over_time)超过这些指标;或按年、月、日汇总。类似的事情rate()会更棘手,因为您可能需要rate()在短距离(例如 1 分钟)内进行计算,然后随着时间的推移对其进行平均,因此您需要为此记录规则或子查询

于 2019-06-21T12:10:13.187 回答