计算集群cpu平均使用率
通过计算cpu空闲使用率 用1-空闲率 则为cpu使用率
-
node_cpu_seconds
表示机器在非重启情况下开机到现在所使用的时间(s) -
由于cpu资源会不断的被机器利用,其中对应了很多模式,包括内核进程、用户进程、io等待、中断等使用模式
-
可以通过查询node_cpu_seconds 指标来看各种对应的模式
-
cpu空闲对应的模式:model=“idle”:空闲的cpu时间
查询cpu空闲使用率:
- 使用irate计算时间窗口 [5m] 内 cpu空闲(model=“idle”)的增长率
irate: 内置函数 求时间窗口内指标的增长率 ,它不同于rate的是,它不会造成长尾问题,敏感性更高。
irate(node_cpu_seconds_total{mode="idle"}[5m])
输出tag:instance 并使用avg求每个机器cpu空闲平均值
avg:聚合函数 求平均值
avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])
查询cpu平均使用率
通过1-cpu空闲率得出每个机器的平均使用率
1- (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])))
转换为 100%
100 - (avg by (instance) (irate(node_cpu{instance="xxx", mode="idle"}[5m])) * 100)
查询集群所有机器的cpu平均使用率
avg( 1 - (avg(irate(node_cpu_seconds_total{mode="idle"}[1m]))))
CPU各mode占比率
avg by (instance, mode) (irate(node_cpu{instance="xxx"}[5m])) * 100
机器平均负载
node_load1{instance="xxx"} // 1分钟负载
node_load5{instance="xxx"} // 5分钟负载
node_load15{instance="xxx"} // 15分钟负载
内存使用率
100-(node_memory_MemFree_bytes{instance="192.168.119.69:9796"}+node_memory_Cached_bytes{instance="192.168.119.69:9796"}+node_memory_Buffers_bytes{instance="192.168.119.69:9796"})/node_memory_MemTotal_bytes{instance="192.168.119.69:9796"}*100
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)/node_memory_MemTotal_bytes * 100
磁盘使用率
100 - node_filesystem_free_bytes{mountpoint = "/",instance="xxx",fstype!~"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|udev|none|devpts|sysfs|debugfs|fuse.*"} /
node_filesystem_size_bytes{mountpoint = "/",instance="xxx",fstype!~"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|udev|none|devpts|sysfs|debugfs|fuse.*"} * 100
或者你也可以直接使用 {fstype=“xxx”} 来指定想查看的磁盘信息
网络IO
// 上行带宽
sum by (instance) (irate(node_network_receive_bytes_total{instance="xxx",device!~"bond.*?|lo"}[5m])/128)
// 下行带宽
sum by (instance) (irate(node_network_transmit_bytes_total{instance="xxx",device!~"bond.*?|lo"}[5m])/128)
网卡出入包
// 入包量
sum by (instance) (rate(node_network_receive_bytes_total{instance="xxx",device!="lo"}[5m]))
// 出包量
sum by (instance) (rate(node_network_transmit_bytes_total{instance="xxx",device!="lo"}[5m]))
IOPS读写
写
irate(node_disk_writes_completed_total{instance=~"^192.168.119.68:9796",device=~"[a-z]*[a-z]"}[5m])
//IOPS读 查询条件
String IOPSRead = "sum without(device) (node_disk_reads_completed_total{instance=~\"^" + instance + "\"})";
node_disk_reads_completed_total/node_disk_read_time_seconds_total
读
irate(node_disk_reads_completed_total{instance=~"^192.168.119.68:9796",device=~"[a-z]*[a-z]"}[5m])
每秒api请求数
sum by(component) (irate(apiserver_request_total[5m]))
api平均延时
avg by(component)((sum by(component)(apiserver_request_duration_seconds_sum))/(sum by(component)(apiserver_request_duration_seconds_count)))
调度器调度次数
sum (scheduler_schedule_attempts_total)
调度失败的pod
sum (scheduler_schedule_attempts_total{result!="scheduled"})
集群CPU使用率
1- (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])))
集群内存使用率
100 * (1 - sum(node_memory_MemAvailable_bytes) / sum(node_memory_MemTotal_bytes))
集群磁盘使用率
(sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
- sum(node_filesystem_free_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
) / sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"}) * 100
集群总cpu
sum (machine_cpu_cores{node=~"^.*$"})
集群已经使用的cpu
(1 - (avg(irate(node_cpu_seconds_total{mode="idle",node=~"^.*$"}[5m])))) * sum(machine_cpu_cores{node=~"^.*$"})
集群总内存
sum (machine_memory_bytes{node=~"^.*$"})
集群已使用内存
sum(node_memory_MemTotal_bytes{device!~"rootfs|HarddiskVolume.+",node =~"^.*$"}) - sum(node_memory_MemAvailable_bytes{device!~"rootfs|HarddiskVolume.+",node =~"^.*$"})
集群总磁盘
sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
集群已使用磁盘
sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
- sum(node_filesystem_free_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
集群总pod
sum (kube_node_status_capacity_pods)
不用---> sum(kube_pod_status_phase{namespace=~".*", phase=~".*"})
集群运行pod
sum(kubelet_running_pod_count)
sum(kube_pod_status_phase{namespace=~".*", phase="Running"})