You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prometheus的aggregate_over_time类函数中指定历史时间范围?

解决Prometheus在Grafana历史时间范围下的聚合统计问题

你遇到的问题核心是:$__range只代表时间范围的长度(比如1h),但sum_over_time(data_source[$__range])这种写法是从当前时间往前推对应时长取数据,而不是锁定你选中的那个历史时段。要实现精准统计指定历史窗口的需求,有两种可靠方法:

  • 用Grafana内置的$__timeFrom和$__timeTo变量替代$__range,直接指定时间范围的起止点。
    把原查询改成:

    sum_over_time(data_source[$__timeFrom:$__timeTo])
    

    和

    count_over_time(data_source[$__timeFrom:$__timeTo])
    

    这两个变量会自动替换成你在Grafana中选中的时间范围的起始、结束Unix时间戳,不管是过去的固定时段还是相对范围,都能精准锁定目标区间的数据。

  • 如果你需要手动写PromQL(不依赖Grafana变量),可以用offset偏移量来调整时间窗口。比如要统计now-3h到now-2h的数据,直接写:

    sum_over_time(data_source[1h] offset 2h)
    

    这里的offset 2h表示把1小时的统计窗口往前偏移2小时,刚好对应你需要的历史时段。不过这种写法不够灵活,适合固定时段的场景,用Grafana变量的方式更适配动态选时间的需求。

内容的提问来源于stack exchange,提问作者DreamingFighter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:47:36