时间聚合函数族是什么
_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 得到窗口内的总量,是容量与计费类统计的常用组合。