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

为何Prometheus查询分辨率会影响increase()函数的返回结果?

问题分析与解决方法

原因解析

  1. increase()函数的限制:increase()必须在指定时间范围内获取到至少两个样本点才能计算counter的增量。如果范围内只有单个样本或无样本,函数会直接返回0。
  2. 查询分辨率(step)的影响:当你把step设为1天时,Prometheus会将90天的时间轴拆分成90个独立的1天窗口,每个窗口单独执行increase()计算。由于你的指标90天仅从1增长到3,中间没有其他采样点,绝大多数1天窗口里只有一个样本点,自然无法算出增量,最终全显示为0。
  3. 默认分辨率的逻辑:默认的小step(比如分钟级)会让每个窗口更大概率覆盖到指标的更新时刻,因此能正确捕捉到增量并呈现出整体增长趋势。

解决方法

  • 直接获取总增幅:如果只需要查看90天的总增长,直接执行increase(your_metric[90d]),这个查询会返回一个单点数值(即总增幅2),不需要调整step。
  • 更可靠的增量计算方式:使用首尾样本值相减的方式替代increase(),完全不受样本密度和step的影响:
    last_over_time(your_metric[90d]) - first_over_time(your_metric[90d])
    
  • 匹配窗口与更新频率:如果需要按天查看增幅,调整range窗口大小以覆盖指标的更新周期。比如指标每3天左右更新一次,可将查询改为increase(your_metric[3d]),同时保持step为1天,这样每个窗口更大概率包含至少两个样本点,从而正确计算日度增量。

内容的提问来源于stack exchange,提问作者Keith Palmer Jr.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:33:22