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

如何用Prometheus v2.1.0获取K8s v1.9.2中Pod的毫核CPU使用率?

从Prometheus指标计算Pod/容器实际CPU毫核使用量

嘿,刚好我维护K8s集群时也碰到过这个需求——得把Prometheus采集的CPU时长指标转换成实际毫核使用率,用来对比部署配置里的CPU请求和限额。给你一步步梳理下怎么做:

核心原理

container_cpu_usage_seconds_total是一个累计计数器,记录容器从启动到当前总共消耗的CPU秒数。它的每秒变化率,就等于当前实际使用的CPU核数(因为1核CPU每秒会产生1秒的使用时长)。把这个数值乘以1000,就能转换成你需要的**毫核(m)**单位。

关键指标与PromQL查询

1. 单容器的实际CPU毫核使用量

用rate函数计算1分钟内的时长变化率(你可以根据监控粒度调整窗口,比如5m),再转成毫核:

rate(container_cpu_usage_seconds_total{container!="POD"}[1m]) * 1000
  • 过滤container!="POD"是为了排除K8s的pause基础设施容器,它的资源使用一般不需要统计。
  • 结果单位是毫核/秒,也就是当前容器实际占用的CPU毫核数。

2. 整个Pod的总CPU毫核使用量

把同一个Pod下所有业务容器的使用量求和:

sum by (pod, namespace) (rate(container_cpu_usage_seconds_total{container!="POD"}[1m]) * 1000)

这样得到的是每个Pod整体的实际CPU毫核使用量,方便和Pod级的资源请求/限额做对比。

3. 对比实际使用与配置的请求/限额

如果你想直接看实际使用占请求或限额的比例,可以结合K8s资源指标:

  • CPU请求指标:kube_pod_container_resource_requests_cpu_cores
  • CPU限额指标:kube_pod_container_resource_limits_cpu_cores

比如,计算实际使用占CPU请求的百分比:

(
  sum by (pod, namespace) (rate(container_cpu_usage_seconds_total{container!="POD"}[1m]) * 1000)
  /
  sum by (pod, namespace) (kube_pod_container_resource_requests_cpu_cores * 1000)
) * 100

如果结果大于100%,说明Pod实际使用的CPU超过了配置的请求值;如果接近或超过1000%(对应1核限额),说明触达了CPU限额。

注意事项

  • 窗口选择:rate函数的时间窗口不要太小(比如10s),否则会因为指标采集波动导致结果不稳定;一般1m或5m是比较合适的。
  • 指标来源:确保Prometheus已正确采集cAdvisor的container_*开头指标,以及kube-state-metrics提供的kube_pod_container_resource_*指标。
  • 验证结果:可以用kubectl top pod <pod-name>的输出和Prometheus查询结果对比,确认计算逻辑正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:11:22