Prometheus 查询语言 PromQL 的 CPU 使用率计算方法

参考文档:https://blog.csdn.net/qq_35753140/article/details/105121525

--------------
cpu使用率
--------------

100 * (1 - sum by (instance)(increase(node_cpu_seconds_total{mode="idle"}[5m])) / sum by (instance)(increase(node_cpu_seconds_total[5m])))

会将所有主机的CPU使用率显示在一个panel中

 

以下是对参考文档的一些备注说明:

increase(node_cpu_seconds_total{cpu="0",mode="idle"}[5m])

首先 node_cpu_seconds_total 表示的是 系统自开机以来,cpu的总时间 单位 秒
{cpu="0"} 表示的是第一颗CPU
{mode="idle"} 表示的是CPU处于idle状态
[5m] 表示的是5分钟前的数值

increase 表示增量

13:00 13:45 13:50
启动 13000 此刻13567

[5m] 就表示 13:45

increase 就表示 13:45 ~ 13:50 之间的增量 即 567

cpu0 5分钟内处于空闲状态的时间占比
increase(node_cpu_seconds_total{cpu="0",mode="idle"}[5m]) / increase(node_cpu_seconds_total{cpu="0"}[5m])

首先限定 CPU0
然后限定 5分钟

针对CPU0
在这5分钟内,处于idle状态的增量为 20
在这5分钟内,总增量(user + sys + idle + ...) 500

则这5分钟内,百分比为 20 / 500 = 4%

一个服务器可能有4颗CPU
上面计算了1个CPU的

sum (increase(node_cpu_seconds_total{mode="idle"}[5m])) / sum (increase(node_cpu_seconds_total[5m]))

increase(cpu0 idle [5m]) 5分钟的增量 20
increase(cpu1 idle [5m]) 5分钟的增量 30
increase(cpu2 idle [5m]) 5分钟的增量 40
increase(cpu3 idle [5m]) 5分钟的增量 70

sum() 计算总和 20 + 30 + 40 + 70 = 160

increase(cpu0 [5m]) 5分钟的增量 1000
increase(cpu1 [5m]) 5分钟的增量 1200
increase(cpu2 [5m]) 5分钟的增量 1300
increase(cpu3 [5m]) 5分钟的增量 1500

sum() 计算总和 1000 + 1200 + 1300 + 1500 = 5000

一台服务器 5分钟内 处于idle状态的时间 占 总CPU时间的百分比

160 / 5000 = 3.2% (0.032)

如果要监控多台主机

如果我们写 node_cpu_seconds_total 则显示以下所有信息

increase(cpu0 instance="localhost:8080" [5m]) 5分钟的增量 1000\
increase(cpu1 instance="localhost:8080" [5m]) 5分钟的增量 1200 |
increase(cpu2 instance="localhost:8080" [5m]) 5分钟的增量 1300 | 这些分为一组
increase(cpu3 instance="localhost:8080" [5m]) 5分钟的增量 1500/

increase(cpu0 instance="localhost:8081" [5m]) 5分钟的增量 1000\
increase(cpu1 instance="localhost:8081" [5m]) 5分钟的增量 1200 |
increase(cpu2 instance="localhost:8081" [5m]) 5分钟的增量 1300 | 这些分为一组
increase(cpu3 instance="localhost:8081" [5m]) 5分钟的增量 1500/

按主机分组 进行求和

sum by (instance) ()

上一篇:2022-2023年英语周报七年级第3期答案汇总


下一篇:2022-2023年英语周报八年级第11期答案汇总