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

Prometheus Range Query起始时间变更致全时段数值异常的问题排查

问题原因解析

这一现象的核心是Prometheus的时间范围对齐规则和increase函数的计算逻辑共同作用的结果,具体拆解如下:

1. Range Query的样本点生成规则

当你使用步长1d执行Range Query时,Prometheus会按公式生成一系列样本点时间:

t_n = 起始时间 + n * 步长 (n为非负整数,且t_n ≤ 结束时间)
  • 若起始时间为2022-12-23 00:00:00(恰好是1d步长的整数倍),样本点会严格对齐自然日的00:00:00,比如2022-12-23 00:00:00、2022-12-24 00:00:00等。
  • 若起始时间为2022-12-23 00:00:01或00:06:40(非步长整数倍),样本点会带有固定偏移,比如2022-12-23 00:00:01、2022-12-24 00:00:01,或2022-12-23 00:06:40、2022-12-24 00:06:40。

2. 嵌套查询的时间范围偏移交互

你的查询sum_over_time(increase(pve_network_receive_bytes{id="000"}[1d] offset-24h )[1d:1d])逻辑为:

  1. 对pve_network_receive_bytes的[1d]范围整体偏移24小时,得到一个过去1天的时间窗口。
  2. 用increase计算该窗口内gauge指标的增量(本质是窗口首尾样本的差值)。
  3. 通过[1d:1d]子查询按天提取上述增量,最后用sum_over_time汇总(此处等价于直接取子查询的单样本值)。

样本点时间不同时,对应的偏移后窗口会同步变化:

  • 对齐00:00:00的样本点,偏移后的窗口是X日00:00:00到X+1日00:00:00(左闭右开区间)。
  • 带偏移的样本点,偏移后的窗口是X日HH:MM:SS到X+1日HH:MM:SS,和前者的窗口差了固定时长(1秒或6分40秒)。

3. increase函数的样本依赖

increase对gauge指标的增量计算完全依赖窗口内的第一个和最后一个样本:

  • 对齐00:00:00的窗口会包含X日00:00:00的样本,但不包含X+1日00:00:00的样本。
  • 带偏移的窗口会跳过X日00:00:00的样本,反而可能包含X+1日HH:MM:SS的样本(若存在)。

这种样本集合的差异会导致每个窗口的增量计算结果变化;由于所有带偏移的样本点偏移量一致,它们的窗口样本集合模式完全相同,因此结果保持一致;但对齐00:00:00的窗口样本模式完全不同,所以所有时段的数值都会变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:05:25