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

Prometheus&Grafana使用increase查询时图例总数与实际值不符问题

问题根因分析

1. increase() 函数默认外推机制误差

你遇到的非整数结果是Prometheus increase() 函数的固有特性导致:该函数在计算计数器增量时,会根据采样点的时间分布做线性外推,匹配你指定的[1m]时间窗口长度。当计数器的跳变点刚好落在窗口边缘、或采样间隔和窗口长度不匹配时,就会出现实际增量为1但计算结果为1.2这类非整数误差。

2. 查询窗口重叠重复计数

你看到的3个值为1.2的点位,是Grafana根据你选定的总时间范围自动拆分的查询步长(step)生成的,相当于总时间范围被拆分为3个连续的1分钟查询窗口。你的那1次任务增量刚好落在这3个窗口的重叠覆盖区间,导致每个窗口的查询结果都计算到了这次增量,最终出现3个重复的1.2点位。

3. 图例统计逻辑偏差

Grafana图例的总数默认是对所有查询点位的数值直接求和,3个1.2累加后就得到了3.6的错误结果,本质是前两个问题叠加的表现。

修复方案
  • 若需要保留1分钟粒度的统计,可对increase()结果取整消除外推小数误差:
sum by (namespace) (round(increase(dbqueue_picked_tasks_total{service="$service", namespace="$environment"}[1m])))
  • 若需要统计选定时间范围内的总任务数,直接使用Grafana内置的$__range变量替换固定的1m窗口,避免窗口拆分导致的重复计数:
sum by (namespace) (increase(dbqueue_picked_tasks_total{service="$service", namespace="$environment"}[$__range]))
  • 若使用Prometheus 2.37及以上版本,可开启--enable-feature=promql-increase-rectangle启动参数,直接关闭increase()的外推逻辑,返回精确的整数增量结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:06:04