- 文档首页
托管 Prometheus
常见问题
托管 Prometheus 中 increase 查询结果为什么和预期不一样?
常见问题
托管 Prometheus 中 increase 查询结果为什么和预期不一样?
托管 Prometheus 中 increase 查询结果为什么和预期不一样?
使用 increase 函数查询请求数、错误数、重启次数、发送字节数等 Counter 类型指标在指定时间范围内的总增量时,查询结果与预期存在差异。查询示例如下:
increase(http_requests_total[5m])
sum(increase(http_requests_total{service="api"}[5m])) by (cluster)
托管 Prometheus 中,查询 Counter 类型指标在指定时间范围内的总增量时,结果不符合预期,大部分情况并非故障,而是函数选用不适合导致的结果。查询 Counter 类型指标在指定时间范围内的总增量时,可能用到以下 3 个函数:increase、increase_pure、increase_prometheus。
针对每个查询 step,查询引擎只会结合该 step 对应的回看窗口进行计算,因此,首个 step 有时为 0 有时不为 0。例如,对 increase(x[5m]) 而言,在 10:05 这个 step 上,系统主要分析 10:00 至 10:05 附近的样本。若窗口前存在可用样本,默认 increase() 会优先使用该样本作为比较基准;若窗口前不存在样本,则不会机械地将窗口内第一个样本统一视为“本窗口新增”,也不会统一视为“历史旧值”,而是结合第一个样本与后续样本之间的变化关系进行判断。
当缺少窗口前样本时,默认 increase() 会结合首个点与后续增量关系,判断该首值更像是当前窗口内新增,还是窗口开始前已经存在的存量值。
三种 increase 函数的差异,核心看两点:缺少窗口前样本时如何假设第一个点、是否按 Prometheus 口径对外。因此,日常查询优先使用 increase();明确要求首值按 0 起算时使用 increase_pure();需要与 Prometheus 原生结果保持一致时使用 increase_prometheus()。
更多详细说明如下:
当查询结果与预期不一致时,建议参考以下步骤进行排查,定位问题并选择最适合当前使用场景的函数。
- 确认指标类型是否为 Counter。Gauge 类型的指标,不适合使用 increase 解释增量。
- 检查原始样本分布,重点确认窗口前是否存在上一个样本,若不存在,再观察首个点与后续点之间的增量变化关系。
- 同时查询 increase() 和 increase_prometheus(),判断差异是否来自 Prometheus 外推口径。
- 保证 range window 不小于采集间隔的 2 倍,避免由于窗口内样本过少导致结果不稳定。
increase(my_counter_total[5m])
increase_prometheus(my_counter_total[5m])
increase_pure(my_counter_total[5m])
最近更新时间:2026.06.09 20:52:56