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

Prometheus中rate()与avg_over_time()的区别及场景选型咨询

Prometheus rate() 与 avg_over_time() 的区别及场景选型

一、两个函数的核心区别

1. 计算逻辑与处理对象

  • rate():仅针对Counter或Gauge类型指标,计算指定时间窗口内的每秒平均增长率。它会自动识别并处理Counter的重置(比如进程重启导致计数器归零),通过窗口内指标的总增量除以时间跨度得到速率值。
  • avg_over_time():适用于所有类型的时间序列,计算指定时间窗口内所有样本值的算术平均值。它不处理Counter的重置逻辑,只是简单对窗口内的每一个原始样本值取平均。

2. 适用场景

  • rate():用于监控Counter型指标的变化速率,比如QPS、请求成功率、错误发生频率等需要体现“变化快慢”的场景;也可用于Gauge型指标的速率计算(比如磁盘空间使用率的变化速率)。
  • avg_over_time():用于查看指标在一段时间内的平均水平,比如CPU使用率的1小时平均值、内存占用的平均数值,或者对已经是速率值的指标(比如rate()输出的结果)再做平均处理。

二、你的Counter指标场景选型

你的指标是统计调用次数的Counter类型,要计算过去1小时的平均调用情况并与历史同期对比,必须选用rate():

  • 直接对Counter使用avg_over_time()无业务意义:Counter是持续递增的累计值,avg_over_time()会计算窗口内所有累计值的平均,这并非你需要的“调用次数的平均速率”。
  • rate(my_counter[1h])会正确计算出这1小时内的每秒平均调用速率(总调用增量÷3600秒),同时自动处理Counter重置的情况,结果能真实反映该时段的调用强度。

如果要对比7天前、14天前同一时段的1小时平均调用速率,只需添加偏移量即可:

  • 当前1小时平均速率:rate(my_counter[1h])
  • 7天前同一时段:rate(my_counter[1h]) offset 7d
  • 14天前同一时段:rate(my_counter[1h]) offset 14d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:13:25