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

Prometheus非抓取间隔内的进程CPU等应用指标数据会丢失吗?

Prometheus 抓取间隔内CPU指标采集问题解答

首先明确Prometheus的采集逻辑:Prometheus本身是 pull 型采集模式,只有在触发抓取请求的时刻才会从被采集端拉取指标数据,非抓取时段不会主动向被采集端索要数据。

你提到的process_cpu_system_seconds_total属于 Counter 类型指标,这类指标的数值是由被采集端(集成了Prometheus SDK的业务进程/对应的exporter)自行持续维护统计的,和Prometheus是否发起抓取无关:进程会实时累加自启动以来消耗的系统态CPU总秒数,哪怕Prometheus十几分钟没抓取,这个数值也会在被采集端一直准确更新。

接下来回答你关心的峰值是否丢失的问题:

  • 首先不会出现「15s间隔内的CPU消耗完全不被统计」的情况:这15s内所有的CPU耗时都会被累计到process_cpu_system_seconds_total的数值里,下一次Prometheus抓取时会拿到更新后的累计值,整个区间的总CPU消耗是完整被记录的,没有数据丢失。
  • 你用rate(process_cpu_system_seconds_total[15s]) * 100算出来的是两个相邻抓取点之间的平均CPU使用率,如果15s内只有几秒CPU飙到90%,其余时段使用率很低,最终计算出来的平均值会远低于90%,你看不到这个瞬时峰值——这不是数据丢失,是rate函数的计算逻辑决定了它只能输出区间平均值,瞬时的细粒度波动会被抹平。

关于「n秒抓取间隔内的数据是否会丢失」的结论:

累计类的统计数据不会丢失,所有n秒内的指标变化都会被计入下一次抓取的数值中;仅会丢失该n秒区间内的细粒度瞬时采样点,无法还原区间内的指标波动细节。

如果需要捕捉更短周期的CPU峰值,只需调小scrape_interval的配置值即可,比如设置为5s就能拿到更细粒度的采样数据,降低峰值被抹平的概率。


内容的提问来源于stack exchange,提问作者Sana.91

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:36:07