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

如何通过Prometheus的process_cpu_seconds_total指标计算主机CPU利用率?

如何用process_cpu_seconds_total计算主机CPU利用率百分比

当然可以!其实用process_cpu_seconds_total指标完全能算出主机的CPU利用率百分比,我给你拆解清楚逻辑和具体操作:

首先得搞懂这个指标的本质:process_cpu_seconds_total是进程累计消耗的CPU时间(单位是秒),属于单调递增的计数器。用irate或者rate计算后,得到的是进程每秒消耗的CPU时间——这个数值其实就对应着进程使用的CPU核心数(比如结果是1.5,就表示进程当前用了1.5个核心的算力)。

要转换成百分比,只需要把这个值除以主机的总CPU核心数,再乘以100就行。这里推荐用动态方式获取总核心数(比手动写固定值灵活),可以借助node_cpu_seconds_total指标来计算:

具体查询语句

如果用irate(适合查看瞬时CPU波动):

100 * (irate(process_cpu_seconds_total[1m]) / count(count(node_cpu_seconds_total{mode="idle"}) by (cpu)))

如果想看长期趋势,把irate换成rate就行:

100 * (rate(process_cpu_seconds_total[5m]) / count(count(node_cpu_seconds_total{mode="idle"}) by (cpu)))

语句拆解

  • irate(process_cpu_seconds_total[1m]):计算目标进程在最近1分钟内每秒消耗的CPU时间,反应瞬时的CPU使用强度
  • count(count(node_cpu_seconds_total{mode="idle"}) by (cpu)):先按cpu标签分组统计每个核心的空闲记录,再统计总数量,得到主机的总CPU核心数
  • 乘以100是把核心数占比转换成百分比形式

注意事项

  • 要确保你的Prometheus能获取到目标主机的node_exporter指标(也就是能拿到node_cpu_seconds_total),如果没有的话,也可以直接把分母换成主机的固定核心数(比如4核就写4)
  • 如果要监控特定进程,记得给process_cpu_seconds_total加上标签过滤,比如process_cpu_seconds_total{job="your-app-job"},避免统计错进程
  • irate对短时间内的CPU突变更敏感,rate会平滑掉波动,根据你的监控场景选就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:19:24