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

Grafana中获取Pod过去1小时CPU平均用量单值制作直方图

解决Grafana中Pod过去1小时CPU平均用量的直方图问题

要获取每个Pod过去1小时的单一平均CPU使用率(而非多时间点序列),核心是正确处理Prometheus的Counter类型指标,并将范围向量转换为即时向量,以下是具体操作:

1. 正确的PromQL查询

CPU用量指标container_cpu_usage_seconds_total是持续递增的Counter类型,必须先转成每秒使用率再做时间范围平均,最后按Pod聚合得到单一数值:

avg by (pod) (avg_over_time(rate(container_cpu_usage_seconds_total{pod!=""}[5m])[1h:]))
  • rate(container_cpu_usage_seconds_total{pod!=""}[5m]):计算每个Pod的CPU每秒使用率,5m是适配Counter指标的合理窗口,避免短时间波动干扰
  • avg_over_time(...[1h:]):统计过去1小时内每秒使用率的平均值
  • avg by (pod):按Pod分组聚合,确保每个Pod只返回一个最终平均值(即时向量)

如果你的环境中用其他标签标识Pod(比如kubernetes_pod_name),替换对应的标签即可。

2. 解决范围向量返回多时间点的问题

直接用avg_over_time返回多时间点,是因为Grafana面板的**步长(Step)**设置过小,导致查询按时间切片返回多个结果。可以通过两种方式解决:

  • 调整PromQL:在查询末尾加上last by (pod),直接取每个Pod的最终计算值:
    last by (pod) (avg_over_time(rate(container_cpu_usage_seconds_total{pod!=""}[5m])[1h:]))
    
  • 调整面板设置:进入Grafana面板的「查询选项」,将步长设置为3600s(1小时),这样每个Pod只会返回1个数据点。

3. 直方图面板配置

将查询结果的「Format as」设置为「Time series」,选择直方图面板类型,即可基于每个Pod的1小时平均CPU用量生成直方图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:02:32