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

如何计算Prometheus中CPU使用率高于x%的时间占比

PromQL统计CPU使用率超阈值时间占比实现方法

核心逻辑和你举例的计数求占比逻辑一致:对统计窗口内的每个CPU使用率采样点做布尔判断,使用率超过阈值记为1、未超过记为0,再对窗口内所有0/1值求平均值,得到的结果就是超阈值的时间占比。

可直接使用的查询语句

以阈值80%、统计最近1小时的占比为例,查询语句如下:

avg_over_time(
  (
    avg without (mode,cpu) (
      1 - rate(node_cpu_seconds_total{mode="idle", job="openwrt"}[1m])
    ) * 100 > 80
  )[1h:1m]
) * 100

返回结果就是百分比形式的超阈值时间占比,和你举例的10个样本3个超标返回30的计算结果完全匹配。

语句各部分说明

  • 内层avg without (mode,cpu) (1 - rate(node_cpu_seconds_total{mode="idle", job="openwrt"}[1m])) * 100是你原本获取百分比CPU使用率的逻辑,末尾追加的> 80是PromQL布尔判断逻辑:CPU使用率大于80的采样点返回1,否则返回0
  • [1h:1m]是子查询配置:表示统计最近1小时的时间范围,按照1分钟步长采样,步长和你rate函数使用的1分钟计算窗口对齐,能保证采样准确性,避免统计偏差
  • 最外层avg_over_time()会对时间窗口内所有采样得到的0/1值求平均,末尾乘100是把0~1的平均结果转成常用的百分比数值

参数调整说明

  • 要修改统计的时间范围,直接调整子查询里的第一个时间参数即可,比如统计最近24小时的占比就改成[24h:1m]
  • 要修改判定阈值,直接调整布尔判断后的数值即可,比如统计CPU超过90%的时间占比就把> 80改成> 90
  • 如果你修改了rate的计算窗口,记得同步调整子查询的步长,保持两者一致即可保证统计结果准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:21:36