深色模式
rate/irate/increase 区别
都是基于 Counter 的函数,但语义不同。用错会让你的大盘和告警“看起来很怪”。
适用环境
- 已采集 Counter 类型指标(如
http_requests_total、node_network_receive_bytes_total) - 在 Graph 页面或 API 验证
bash
# 取一个 Counter 的原始最近两点,理解“增量”来源
curl -s 'http://localhost:9090/api/v1/query_range?query=up&start=now-10m&end=now&step=60'1
2
2
操作步骤
1. rate:时间窗口内的平均每秒速率
promql
# 过去 5 分钟平均每秒请求数(QPS)
rate(http_requests_total[5m])1
2
2
适合画趋势图、配告警,平滑、抗抖动。
2. irate:基于最后两个点的瞬时速率
promql
# 只看最近两个点,反应更快但更抖
irate(http_requests_total[5m])1
2
2
适合看瞬时尖刺,不适合平稳趋势图。
3. increase:窗口内的总量,不加“每秒”
promql
# 过去 5 分钟总请求数(不是速率)
increase(http_requests_total[5m])1
2
2
验证
promql
# 三者对比:趋势 vs 瞬时 vs 总量
rate(http_requests_total[5m])
irate(http_requests_total[5m])
increase(http_requests_total[5m])1
2
3
4
2
3
4
常见坑
窗口必须 >= scrape 间隔两倍
[5m] 窗口至少要覆盖两个采样点;间隔 15s 时 5m 很稳,间隔 1m 时 5m 也够。
别对 Gauge 用 rate
rate 只对 Counter 有意义,对 Gauge 用会得到毫无意义的“假速率”。