首页/云/可观测性速查/时间聚合函数族:_over_time 系列
Prometheus 与采集64 条

时间聚合函数族:_over_time 系列

avg_over_time、max_over_time、sum_over_time 等把范围向量压缩成单点:用于平滑瞬时波动、计算窗口极值,或配合子查询做多层聚合。

可观测性速查云更新于 2026-10-13

时间聚合函数族是什么

_over_time 系列把区间向量压缩成一个瞬时值:avg_over_time 取窗口均值、max_over_time 取窗口峰值、sum_over_time 累加、count_over_time 计数。它们常用于平滑瞬时抖动、复核窗口极值,或配合子查询做多层聚合,是看板与告警里最常用的降噪手段。

基本信息

常用函数avg / max / min / sum / count / last / stddev_over_time
输入类型区间向量,如 metric[30m]
输出类型瞬时向量(每个序列一个值)
子查询写法expr[1d:1h](范围:步长)
常用窗口5m 到 1h,告警看业务周期
典型搭档bool 比较、predict_linear、rate

典型使用场景

  • 用 30 分钟均值平滑 CPU 或负载的瞬时尖刺
  • 用窗口峰值复核容量:过去一小时磁盘水位最高到过多少
  • 用 count_over_time 统计窗口内有数据的采样点数,识别采集缺口
  • 用子查询把小时级增量累加成一天总量
  • 告警里用 max_over_time 避免瞬时抖动造成的误报与漏报
  • 对比 avg 与 max 的差异,区分「常态高」与「偶发尖刺」

常用时间聚合

常用时间聚合
avg_over_time(node_load1[30m])             # 30 分钟平均负载
max_over_time(node_load1[1h])              # 过去 1 小时峰值
min_over_time(node_filesystem_avail_bytes[1h])
count_over_time(up{job="api"}[1h])        # 窗口内有效采样点数
# 子查询:过去一天每小时请求增量的合计
sum_over_time(increase(http_requests_total[1h])[1d:1h])

常用函数读法

函数含义典型用途
avg_over_time窗口均值平滑展示、降噪
max_over_time窗口峰值容量复核、抖动告警
min_over_time窗口谷值余量下限核查
count_over_time采样点数识别采集中断
sum_over_time窗口累加总量统计
极值类(max/min)适合容量复核,平均类(avg)适合平滑展示;告警阈值要按用途选择,两者混用会让判定标准不一致。
子查询 [1d:1h] 的冒号前后分别是总范围与步长,步长写得太小会让查询命中大量采样点,是常见的性能陷阱。
窗口长度应覆盖一个完整业务周期(如日、周):窗口短于周期时,周期性的高低谷会被当成趋势或异常。
last_over_time 取窗口末尾值,适合展示「当前状态」又不想被瞬时抖动影响的场景;它与直接取瞬时值在边界上会有细微差别。
多个 _over_time 可以串联表达更复杂的问题:先 rate 再 sum_over_time 得到窗口内的总量,是容量与计费类统计的常用组合。

易错点

  • 子查询 [1d:1h] 中冒号前后分别是范围和步长,步长写太小会让查询变重
  • 对 Counter 直接 sum_over_time 得到的是累计值叠加,先 rate 再聚合才符合直觉
  • avg_over_time 会掩盖短时尖刺:容量类判断要用 max_over_time 复核
  • 窗口短于业务周期时,周期性的正常回落会被误判为异常,窗口要覆盖完整周期
  • 对稀疏指标用 count_over_time 判断健康度要留足余量,否则采集抖动会被当成中断
  • 对已经聚合过的序列再套 _over_time 会丢掉原始维度,需要在聚合前想清楚后续还要不要下钻

数据来源与参考

  • Prometheus 文档 · Aggregation over time
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌