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

PromQL中sum(increase(my_metrics(...)[30m]))返回0的问题排查与解决

问题原因分析
  • 指标类型不匹配:increase()仅适用于Counter类型指标。如果my_metrics被定义为Gauge类型(可增可减),increase()无法识别有效增量,会直接返回0。
  • 标签过滤不准确:检查my_metrics(...)中的标签条件是否与代码上报指标的标签完全一致——标签名拼写错误、值不匹配等情况,会导致查询不到实际触发的时间序列。
  • 采样间隔与窗口不兼容:若Prometheus的scrape_interval(采集间隔)过长(比如超过30分钟),30分钟窗口内可能只有1个样本点。increase()需要至少两个样本点才能计算增量,因此会返回0。
  • 计数器重置未被捕捉:进程重启会导致Counter重置为0,如果30分钟内的采样点刚好落在重置前后,且重置后的少量增量(比如仅2次)未被采样覆盖,increase()也会返回0。
替代查询语句
  • 直接差值计算(适合无重置场景):

    sum(my_metrics(...)) - sum(my_metrics(...)) offset 30m
    

    用当前指标值减去30分钟前的值得到总增量,缺点是若中间有Counter重置,结果会出现负数,需额外处理。

  • 基于rate的增量计算:

    sum(rate(my_metrics(...)[30m])) * 1800
    

    rate()计算每秒平均增长率,乘以30分钟的秒数(1800)得到总增量,对稀疏样本的兼容性比increase()更好。

  • 强制步长采样(提升捕捉概率):

    sum(increase(my_metrics(...)[30m:1m]))
    

通过:1m指定步长,强制Prometheus按1分钟粒度采样,降低因采样间隔问题漏捕增量的概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:35:15