Prometheus未收到更新的时间序列的默认留存时长是多少?
Prometheus 对无更新的时间序列的留存有明确的固定规则,分为查询层和存储层两个独立逻辑:
查询层的陈旧序列判定规则
这就是你看到趋势线中断、新老数据不衔接的直接原因:
- Prometheus 默认将 超过5分钟没有收到新样本的时间序列 标记为 stale(陈旧)
- 执行 PromQL 查询时,如果查询的时间点距离序列最后一个上报样本的时间戳超过5分钟,该序列就不会返回对应时间点的数值,视觉上就会表现为趋势线中断。就算后续重新上报同标签的指标,中间的空白期也不会自动补全,新旧数据看起来就是两条不衔接的趋势线。
- 这个5分钟的阈值可以通过 Prometheus 启动参数
--query.lookback-delta自定义调整。
存储层的持久化留存规则
已经写入磁盘的时间序列数据不会因为停止上报就提前删除:
- 所有写入成功的样本都会遵循 Prometheus 启动参数
--storage.tsdb.retention.time配置的全局留存周期(默认值为15天),到期后才会随旧数据块统一清理。 - 只要还在留存周期内,哪怕序列只上报过一次,你把查询时间范围调整到刚好覆盖该样本的上报时间点,依然可以查到对应数据。
内容的提问来源于stack exchange,提问作者HamoriZ
相关产品推荐
相关产品推荐

