参考文档: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) ()