我想要特定时间范围内的汇总。例如。每小时,每天,但每小时从09:00-10:00(滚动窗口),而不是1小时前(跳跃窗口)。
如果我们可以减去因可变时间而偏移的计数器,则有可能,例如:
x_count offset (minutes()m) - x_count offset ((minutes()+60)m)
,但偏移量似乎无法评估函数。
有关如何完成此操作的建议?
答案 0 :(得分:0)
您可以结合使用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()
之类的技巧比较棘手,因为您可能需要在短距离(例如1分钟)内计算rate()
,然后将其平均化,因此您需要记录规则或{{3 }}。