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

如何让Cadvisor计算的CPU使用率与docker stats结果一致?

解决Cadvisor数据与docker stats CPU使用率一致的计算方法

核心逻辑说明

docker stats的CPU使用率是容器实际使用的CPU算力占节点总CPU算力的百分比,计算逻辑为:

(容器每秒使用的CPU核数 ÷ 节点总CPU核数) × 100

你之前用rate(container_cpu_usage_seconds_total{name="XXXX"}[1m])得到的是每秒使用的CPU核数(比如结果为2.5表示每秒用2.5核的算力),并非百分比,所以和docker stats结果不符。

针对12核机器的具体查询

方法1:硬编码核心数(适合固定12核的节点)

直接将rate结果除以12(总核数)再乘以100,转换成百分比:

rate(container_cpu_usage_seconds_total{name="XXXX"}[10s]) / 12 * 100

注:将窗口从[1m]改为[10s],因为docker stats默认基于最近10秒的CPU使用数据计算,这样结果会更匹配。

方法2:动态获取节点核数(通用型,适配不同核数机器)

通过node_cpu_seconds_total指标动态获取节点总核数(每个CPU核心对应一条mode="idle"的时间序列),避免硬编码:

rate(container_cpu_usage_seconds_total{name="XXXX"}[10s]) 
/ on(instance) (count(node_cpu_seconds_total{mode="idle"}) by (instance)) 
* 100

注:该查询要求你的Prometheus同时采集了node_exporter的指标,否则无法动态获取核数。

验证匹配度

调整后,查询结果的数值应该和docker stats <容器名>输出的CPU %列一致(误差在1%以内属于正常,因为统计窗口的细微差异)。

内容的提问来源于stack exchange,提问作者I Want Sleep Now

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 17:24:58