05-监控CPU
监控CPU的使用情况案例
1 统计各个节点CPU的使用率
1.1 我们需要先找到CPU相关的KEY
1 | node_cpu_seconds_total |
1.2 过滤出CPU的空闲时间({mode=‘idle’})和全部CPU的时间(‘{}’)
1 | node_cpu_seconds_total{mode='idle'} |
过滤CPU的空闲时间。
1 | node_cpu_seconds_total{} |
1.3 统计1分钟内CPU的增量时间
1 | increase(node_cpu_seconds_total{mode='idle'}[1m]) |
统计1分钟内CPU空闲状态的增量。
1 | increase(node_cpu_seconds_total[1m]) |
统计1分钟内CPU所有状态的增量。
1.4 将结果进行加和统计
将1分钟内所有CPU空闲时间的增量进行加和计算。
1 | sum(increase(node_cpu_seconds_total{mode='idle'}[1m])) |
将1分钟内所有CPU空闲时间的增量进行加和计算。
1 | sum(increase(node_cpu_seconds_total[1m])) |
1.5 按照不同节点进行分组
将1分钟内所有CPU空闲时间的增量进行加和计算,并按照机器实例进行分组。
1 | sum(increase(node_cpu_seconds_total{mode='idle'}[1m])) by (instance) |
将1分钟内所有CPU空闲时间的增量进行加和计算,并按照机器实例进行分组。
1 | sum(increase(node_cpu_seconds_total[1m])) by (instance) |
1.6 计算1分钟内CPU空闲时间的百分比
1 | sum(increase(node_cpu_seconds_total{mode='idle'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance) |
1.7 统计1小时内CPU的使用率,计算公式: (1 - CPU空闲时间的百分比) * 100%。
1 | (1 - sum(increase(node_cpu_seconds_total{mode='idle'}[1h])) by (instance) / sum(increase(node_cpu_seconds_total[1h])) by (instance)) * 100 |
1.8 统计1分钟内CPU的使用率,计算公式: (1 - CPU空闲时间的百分比) * 100%。
1 | (1 - sum(increase(node_cpu_seconds_total{mode='idle'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 100 |
2 计算CPU用户态的1分钟内百分比
sum(increase(node_cpu_seconds_total{mode='user'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance) * 100
3 计算CPU内核态的1分钟内百分比
(sum(increase(node_cpu_seconds_total{mode='system'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 100
4 计算CPU IO等待时间的1分钟内百分比
(sum(increase(node_cpu_seconds_total{mode='iowait'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 100
以此添加以上2,3,4语法效果如下
保存dashboard
如何实现类似这样选择效果?
grafana的变量定义
应用保存后再次查看这个dashboard
==不过此时我们点击是没有效果的,因为我们之前写的promQL是直接写死的没有使用变量==
替换如下变量
1 | (sum(increase(node_cpu_seconds_total{mode='iowait',instance="$myhost"}[1m])) by (instance) / sum(increase(node_cpu_seconds_total{instance="$myhost"}[1m])) by (instance)) * 100 |
再次回到dashboard验证点击是否有变化(只验证了一个)
==很明显变化了==
自定义变量类型
dashboard备份
点击到模板的设置,选择json model
评论