序列过期是什么
Prometheus 的即时查询有回看窗口机制:默认只看最近 5 分钟内的样本,取窗口内最接近评估时刻的一个作为结果。当目标被移除或序列不再上报时,系统会写入 stale 标记,让查询立即停止返回旧值,避免用陈旧数据做判断。理解这两点,才能解释「目标已经下线但图还在」与「曲线断了一段」这类常见现象。
基本信息
| 回看窗口 | 默认 5 分钟,由 --query.lookback-delta 控制 |
|---|---|
| stale 标记 | 目标消失、序列不再上报、配置变更删除序列时写入 |
| 影响范围 | 即时查询取样本的方式,与存储保留期无关 |
| 相关参数 | --query.lookback-delta |
| 适用版本 | Prometheus 2.x |
典型使用场景
- 解释曲线断档:目标短时不可达后曲线中断,属回看窗口内查不到更早样本的正常表现
- 数据新鲜度检查:用当前时间减去样本时间戳,判断指标是否还在更新
- 告警防抖:目标短暂抖动时不要用瞬时值为 0 直接告警
- 参数调优:抓取间隔放大后同步评估回看窗口,避免取到过期样本
- 排查区分:分清「序列消失」与「数值归零」,两者处理方向完全不同
使用要点
- 回看窗口只影响查询取哪个样本,不等同于数据保留期
- 目标被移除后看到的断点属于预期行为,不是采集故障
- 序列结束会立刻生效,而不再上报需要等抓取判定,两者时间尺度不同
- 用数据新鲜度做成看板,可以直接暴露停止上报的数据源
- 调整抓取间隔与回看窗口要成对进行,并同步检查告警的 for 时长
查看数据新鲜度
查看数据新鲜度
# 距离上次采样已经过去了多少秒
time() - timestamp(node_load1)
# 接近抓取间隔属正常,持续变大说明该序列已停止上报
# 断点恢复后的曲线中断属正常:回看窗口内查不到更早样本就不再返回概念对照
| 概念 | 含义 | 常见误解 |
|---|---|---|
| 回看窗口 | 即时查询回溯取样本的时间 | 误当成数据保留期 |
| stale 标记 | 序列结束的标识 | 误当成故障信号 |
| 保留期 | TSDB 实际保存时长 | 与回看窗口混为一谈 |
| 数据新鲜度 | 当前时间减样本时间戳 | 忽略不加以监控 |
| 抓取间隔 | 多久采集一次 | 认为与回看窗口无关 |
把抓取间隔放大后要同步评估回看窗口,否则即时查询容易取到已过期的样本值,让人误以为服务仍在正常上报。