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

如何用Prometheus生成可配置时间窗口的Istio请求量尖峰图表?

解决Prometheus请求量尖峰图表的配置问题

核心思路:将累计计数器转为瞬时速率

istio_requests_total是累计计数器类型指标,直接sum只能得到总累计值,无法反映时间窗口内的请求量变化。要实现按时间窗口统计请求数并捕捉尖峰,需用irate()函数计算瞬时速率——它对短时间内的突发请求(尖峰)更敏感,完全匹配你的需求。


1. 基础查询(保留响应码维度)

如果需要区分不同response_code的请求尖峰,用以下查询:

irate(istio_requests_total{request_host="REDACTED_HOSTNAME", cluster="REDACTED_CLUSTER_ID", url_path="/"}[1m])
  • [1m]:代表统计前1分钟内的请求速率,可替换为你需要的时间窗口(如5m、10m)
  • 该查询会自动处理计数器重置(比如实例重启导致的计数归零)

2. 聚合总请求数(按响应码分组)

如果需要按响应码聚合总请求量,用sum by做维度聚合:

sum by (response_code) (irate(istio_requests_total{request_host="REDACTED_HOSTNAME", cluster="REDACTED_CLUSTER_ID", url_path="/"}[1m]))

3. 聚合所有请求的总尖峰

如果只需要整体请求量的尖峰,直接对所有维度求和:

sum(irate(istio_requests_total{request_host="REDACTED_HOSTNAME", cluster="REDACTED_CLUSTER_ID", url_path="/"}[1m]))

4. 实现可配置的时间窗口

在Grafana或其他可视化工具中,可通过变量实现时间窗口的动态配置:

  • 创建一个下拉变量(比如命名为$interval),可选值设为1m、5m、10m等
  • 将查询中的[1m]替换为[$interval],即可通过变量切换统计窗口

5. 配置图表时间范围

过去24小时/1h/1w/1y的时间范围,直接通过可视化工具的时间选择器配置即可(比如Prometheus UI的时间范围下拉、Grafana的时间面板),无需修改查询语句。


补充说明:irate vs rate

  • irate:计算窗口内最后两个数据点的速率,对短时间尖峰反应更灵敏,适合展示突发请求
  • rate:计算窗口内的平均速率,会平滑掉尖峰,适合看长期趋势

如果你的需求是捕捉尖峰,优先使用irate。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:23:22