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

关于Prometheus staleness机制中带时间戳抓取序列的疑问

关于Prometheus Staleness规则中带时间戳样本的疑问解答

你之前理解的三点是准确的:

  • 目标实例中已不存在的时间序列会被标记为staled
  • 已移除目标实例的时间序列会被标记为staled
  • 若时间序列的最新样本超过5分钟,查询时不会返回该样本

核心概念解释

"time series that have timestamps included in their scrapes" 指的是采集到的样本自身携带自定义时间戳的时间序列——这类样本的时间戳不是Prometheus发起采集请求的时刻,而是由被采集的数据源主动指定的。

具体示例对比

场景1:默认采集(无自定义时间戳)

比如你用Prometheus采集Node Exporter的node_cpu_seconds_total指标,采集间隔15秒。每次拉取到的样本,Prometheus会自动把「拉取操作发生的当前时间」设为样本的时间戳。

  • 如果Node Exporter突然宕机,Prometheus连续3次(共45秒)拉取不到该指标的新样本,就会把这个时间序列标记为stale。后续查询时,在标记为stale的时间点之后,该序列的数据就不会再出现在结果里,直到Exporter恢复采集。

场景2:带自定义时间戳的采集

假设你有一个自定义监控脚本,专门采集应用前一天的订单统计数据,并且在返回的指标样本里,手动给每个样本指定了对应的业务时间戳(比如2024-05-20 18:00:00),而不是用Prometheus拉取时的当前时间。

  • 对于这种时间序列,Prometheus不会触发「stale标记」逻辑:哪怕后续再也拉取不到这个序列的新样本,也不会把它标记为stale。
  • 唯一生效的规则是5分钟阈值:当你查询时,如果这个序列的最新样本的时间戳距离当前时间超过5分钟,查询结果就不会返回这个样本。

官方原文翻译与解读

Staleness will not be marked for time series that have timestamps included in their scrapes. Only the 5 minute threshold will be applied in that case.
翻译:对于采集时自身携带时间戳的时间序列,不会被标记为stale。这种情况下只会应用5分钟的阈值规则。

内容的提问来源于stack exchange,提问作者Olivier Boissé

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:15:17