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

为何Prometheus Counter的increase函数显示数值不准确?

Prometheus Counter increase()结果与实际累加值不符问题解析

问题场景

测试Prometheus Counter时,手动给计数器累加10,数值从14变为24,但使用increase()函数查询时,返回结果为12,和预期的10不符。

核心原因

increase()函数并非直接计算计数器的端点差值,而是通过时间序列样本点的线性插值估算指定时间窗口内的增长值。如果查询的时间窗口包含了额外的采样点,或者采样点的时间戳与计数器实际变化的时间不匹配,就会导致插值后的结果和手动累加的精确值出现偏差。

比如查询窗口比计数器实际变化的时间段更宽时,increase()会基于窗口内的所有样本点做线性拟合,最终得到的估算值就会和实际手动累加的10产生差异。

解决方法

  • 精准控制查询时间窗口:将查询窗口缩小到刚好包含计数器变化前后的两个样本点,避免包含多余的采样数据,减少插值带来的误差。
  • 使用delta()函数替代:delta()函数会直接计算指定时间窗口内首尾两个样本点的差值,适合短时间范围内的精确差值计算,示例查询:
    delta(my_counter[1m])
    
    注意:delta()仅适用于Counter或Gauge类型指标,且窗口长度要匹配Prometheus的scrape_interval,确保窗口内恰好有两个样本点。
  • 检查采样间隔配置:确认Prometheus的scrape_interval设置符合测试需求,避免因采样过疏导致样本点无法准确捕捉计数器的变化节点。

内容的提问来源于stack exchange,提问作者Liangde Chen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:37:05