如何获取Prometheus中Gauge指标过去7天的每小时平均值?
解决Prometheus过去7天每小时平均值的查询方法
要获取queue_length指标过去7天内的每小时平均值列表,你可以把avg_over_time和时间范围后缀结合起来用,具体PromQL语句如下:
avg_over_time(queue_length[1h])[7d:1h]
语句拆解:
avg_over_time(queue_length[1h]):这部分会计算每个1小时时间窗口内queue_length的平均值,得到单个小时的平均队列长度。[7d:1h]:这个后缀指定了查询的时间范围是过去7天,同时设置步长为1小时——意思是Prometheus会从7天前开始,每隔1小时输出一个对应的小时平均值,最终生成完整的每小时数据列表。
为什么不用queue_length[7d:1h]?
你提到的queue_length[7d:1h]只是按1小时间隔采样原始的queue_length数据点,得到的是每个采样点的瞬时值,而非该小时内的整体平均值。而我们需要的是先对每个小时窗口内的所有数据求平均,再获取过去7天的所有小时结果,所以必须先执行avg_over_time计算窗口平均,再通过时间范围后缀拉取全周期的结果。
注意事项
确保你的Prometheus存储了足够的原始数据——比如如果queue_length的采样间隔是15秒,那1小时窗口内有1440个数据点,计算出的平均值会比较准确;如果采样间隔太大,可能会影响平均值的代表性。
内容的提问来源于stack exchange,提问作者Berry Langerak
相关产品推荐
相关产品推荐

