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

PromQL的increase函数返回结果不符预期,请求技术解析

PromQL increase函数计算结果与预期不符的问题解析

问题背景

我有一条PromQL查询语句:

process_resident_memory_bytes{job="integrations/kubernetes/kube-apiserver", cluster=~"my-cluster"}

该查询在Grafana中返回了一系列时间戳对应的内存数据。当我应用increase函数查询:

increase(process_resident_memory_bytes{job="integrations/kubernetes/kube-apiserver", cluster=~"my-cluster"}[10m])

得到的结果与我理解的计算逻辑(当前值减去10分钟前的值)不符,例如2023-09-23 18:00:00的计算结果与实际返回值差异显著。

核心原因与修正方案

你的理解偏差点

  • increase的真实逻辑:它并非简单的「当前值 - 10分钟前的值」,而是统计指定时间窗口内所有样本的增量总和。该函数专为*计数器类型(counter)*设计,会自动处理计数器重置(如进程重启导致指标归零),累加每个重置区间的增量,而非直接取首尾值相减。
  • 指标类型不匹配:process_resident_memory_bytes属于仪表盘类型(gauge),值可上下波动。用increase处理gauge时,只会累加上升的增量,忽略下降部分,结果自然和「当前-过去」的差值不符。
  • 样本插值与步长影响:Grafana的查询步长(step)若大于10分钟,或窗口内无精确的起始样本,Prometheus会通过插值估算首尾值,而非直接取10分钟前的原始样本,这也会导致结果偏差。

正确查询方式

若需求是计算当前值与10分钟前的差值,针对gauge类型指标应使用delta函数:

delta(process_resident_memory_bytes{job="integrations/kubernetes/kube-apiserver", cluster=~"my-cluster"}[10m])

delta函数直接计算时间窗口首尾样本的差值,完全符合你最初的预期逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:03:20