我想有来自特定时间范围的聚合。例如每小时,每天,但每小时从例如 09:00-10:00(翻滚窗口),而不是 1 小时前(跳跃窗口)。
如果我们可以减去由可变时间偏移的计数器,那将是可能的,例如:
x_count offset (minutes()m) - x_count offset ((minutes()+60)m)
但 offset 似乎没有评估函数。
关于如何做到这一点的建议?
我想有来自特定时间范围的聚合。例如每小时,每天,但每小时从例如 09:00-10:00(翻滚窗口),而不是 1 小时前(跳跃窗口)。
如果我们可以减去由可变时间偏移的计数器,那将是可能的,例如:
x_count offset (minutes()m) - x_count offset ((minutes()+60)m)
但 offset 似乎没有评估函数。
关于如何做到这一点的建议?
您可以将该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
的指标month
。day_of_month
然后你可以avg_over_time
(或任何东西_over_time
)超过这些指标;或按年、月、日汇总。类似的事情rate()
会更棘手,因为您可能需要rate()
在短距离(例如 1 分钟)内进行计算,然后随着时间的推移对其进行平均,因此您需要为此记录规则或子查询。