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

OpenStack/KVM环境下如何用Prometheus Node-exporter测量CPU Steal Time

如何通过Prometheus Node-exporter测量CPU Steal Time(OpenStack/KVM环境)

核心指标说明

Node-exporter通过node_cpu_seconds_total暴露CPU时间的累计统计,其中mode="steal"标签对应CPU窃取时间——也就是在虚拟化环境中,宿主机的物理CPU被其他租户虚拟机或宿主机进程占用,导致当前虚拟机等待CPU的时间。在OpenStack/KVM场景下,这个指标直接反映计算节点(宿主机)层面的CPU窃取占比。

计算窃取时间占比的PromQL查询

因为node_cpu_seconds_total是累计值,必须用rate()函数计算一段时间内的速率,再换算为百分比:

  1. 单CPU核心的窃取时间占比

    100 * rate(node_cpu_seconds_total{mode="steal"}[5m]) / rate(node_cpu_seconds_total[5m])
    

    这个查询会返回每个CPU核心的steal时间占该核心总CPU时间的百分比。

  2. 整台宿主机的平均窃取时间占比
    如果需要计算整个计算节点的平均占比,用sum by聚合所有核心的数值:

    100 * sum by (instance) (rate(node_cpu_seconds_total{mode="steal"}[5m])) / sum by (instance) (rate(node_cpu_seconds_total[5m]))
    

    这里的instance对应你的计算节点(宿主机)标识,结果会返回每台宿主机的整体CPU窃取时间占比。

注意事项

  • 时间窗口[5m]是常用的统计区间,你可以根据监控需求调整(比如[1m]更敏感,[15m]更平滑)。
  • 如果你需要监控虚拟机内部的窃取时间,只需在虚拟机内部署Node-exporter,用同样的查询即可——但你问题中关注的宿主机/虚拟化管理程序层面,直接用宿主机的Node-exporter数据就足够。
  • 窃取时间占比过高通常意味着宿主机CPU资源不足,或者租户虚拟机的CPU配额设置不合理,需要结合OpenStack的资源调度策略排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:57:12