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

如何让Grafana中Prometheus的increase增量值仅显示为整数?

如何确保Prometheus计数器增量始终为整数?

为什么会出现小数结果?

increase()函数本质是通过估算计数器在时间窗口内的变化率来计算增量,哪怕你配置了10秒采集周期和10秒Grafana刷新,也可能因为以下原因得到非整数:

  • 样本采集存在微小时间偏移,导致计算窗口和实际采集周期不完全对齐
  • $__rate_interval默认会取max($__interval, 4*scrape_interval),可能自动放大了时间窗口,引入估算误差
  • Prometheus内部对样本做插值处理,尤其是当采集间隔不稳定时

可行的解决办法

  • 用delta()替代increase():如果你的计数器不会重置(或能接受重置时的负数结果),直接用delta(<expr>[10s])。它计算的是时间窗口内计数器的绝对差值,只要窗口和采集周期严格匹配,就能得到整数增量。
  • 对increase()结果取整:用round(increase(<expr>[$__rate_interval]))、ceil(increase(<expr>[$__rate_interval]))或floor(increase(<expr>[$__rate_interval]))强制转为整数。注意:如果是估算误差导致的小数,取整可能会丢失少量精度,比如1.2取整为1,但多数场景下可以接受。
  • 固定__rate_interval为采集周期:把$__rate_interval替换成固定的[10s],避免Grafana自动调整窗口大小,确保计算窗口和采集周期完全对齐,减少估算带来的小数。
  • 校准采集时间:检查Prometheus的scrape配置,确保scrape_interval严格设为10秒,且scrape_timeout小于采集周期,避免采集延迟或漂移导致的时间偏移。

注意事项

如果你的计数器存在重置场景(比如服务重启后计数器归零),delta()会返回负数,这时候建议用increase()加取整的方式,因为increase()会自动处理计数器重置的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:52:17