指标分析
- 下面的表格对比了prometheus和夜莺k8s-mon 的指标
cpu指标
夜莺指标名 |
含义 |
prometheus metrics或计算方式 |
说明 |
cpu.util |
容器cpu使用占其申请的百分比 |
sum (rate (container_cpu_usage_seconds_total[1m])) by( container) /( sum (container_spec_cpu_quota) by(container) /100000) * 100 |
0-100的范围 |
cpu.idle |
容器cpu空闲占其申请的百分比 |
100 - cpu.util |
0-100的范围 |
cpu.user |
容器cpu用户态使用占其申请的百分比 |
sum (rate (container_cpu_user_seconds_total[1m])) by( container) /( sum (container_spec_cpu_quota) by(container) /100000) * 100 |
0-100的范围 |
cpu.sys |
容器cpu内核态使用占其申请的百分比 |
sum (rate (container_cpu_sys_seconds_total[1m])) by( container) /( sum (container_spec_cpu_quota) by(container) /100000) * 100 |
0-100的范围 |
cpu.cores.occupy |
容器cpu使用占用机器几个核 |
rate(container_cpu_usage_seconds_total[1m]) |
0到机器核数上限,结果为1就是占用1个核 |
cpu.spec.quota |
容器的CPU配额 |
container_spec_cpu_quota |
为容器指定的CPU个数*100000 |
cpu.throttled.util |
容器CPU执行周期受到限制的百分比 |
sum by(container_name, pod_name, namespace) (increase(container_cpu_cfs_throttled_periods_total{container_name!=“”}[5m])) / |
0-100的范围 |
cpu.periods |
容器生命周期中度过的cpu周期总数 |
counter型无需计算 |
使用rate/increase 查看 |
cpu.throttled.periods |
容器生命周期中度过的受限的cpu周期总数 |
counter型无需计算 |
使用rate/increase 查看 |
cpu.throttled.time |
容器被节流的总时间 ) |
counter型无需计算 |
单位(纳秒 |
mem指标
夜莺指标名 |
含义 |
prometheus metrics或计算方式 |
说明 |
mem.bytes.total |
容器的内存限制 |
无需计算 |
单位byte 对应pod yaml中resources.limits.memory |
mem.bytes.used |
当前内存使用情况,包括所有内存,无论何时访问 |
container_memory_rss + container_memory_cache + kernel memory |
单位byte |
mem.bytes.used.percent |
容器内存使用率 |
container_memory_usage_bytes/container_spec_memory_limit_bytes *100 |
范围0-100 |
mem.bytes.workingset |
容器真实使用的内存量,也是limit限制时的 oom 判断依据 |
container_memory_max_usage_bytes > container_memory_usage_bytes >= container_memory_working_set_bytes > container_memory_rss |
单位byte |
mem.bytes.workingset.percent |
容器真实使用的内存量百分比 |
container_memory_working_set_bytes/container_spec_memory_limit_bytes *100 |
范围0-100 |
mem.bytes.cached |
容器cache内存量 |
container_memory_cache |
单位byte |
mem.bytes.rss |
容器rss内存量 |
container_memory_rss |
单位byte |
mem.bytes.swap |
容器cache内存量 |
container_memory_swap |
单位byte |
filesystem && disk.io指标
夜莺指标名 |
含义 |
prometheus metrics或计算方式 |
说明 |
disk.bytes.total |
容器可以使用的文件系统总量 |
container_fs_limit_bytes |
(单位:字节) |
disk.bytes.used |
容器已经使用的文件系统总量 |
container_fs_usage_bytes |
(单位:字节) |
disk.bytes.used.percent |
容器文件系统使用百分比 |
container_fs_usage_bytes/container_fs_limit_bytes *100 |
范围0-100 |
disk.io.read.bytes |
容器io.read qps |
rate(container_fs_reads_bytes_total)[1m] |
(单位:bps) |
disk.io.write.bytes |
容器io.write qps |
rate(container_fs_write_bytes_total)[1m] |
(单位:bps) |
network指标
网卡指标都应该求所有interface的和计算
夜莺指标名 |
含义 |
prometheus metrics或计算方式 |
说明 |
net.in.bytes |
容器网络接收数据总数 |
rate(container_network_receive_bytes_total)[1m] |
(单位:bytes/s) |
net.out.bytes |
容器网络积传输数据总数) |
rate(container_network_transmit_bytes_total)[1m] |
(单位:bytes/s) |
net.in.pps |
容器网络接收数据包pps |
rate(container_network_receive_packets_total)[1m] |
(单位:p/s) |
net.out.pps |
容器网络发送数据包pps |
rate(container_network_transmit_packets_total)[1m] |
(单位:p/s) |
net.in.errs |
容器网络接收数据错误数 |
rate(container_network_receive_errors_total)[1m] |
(单位:bytes/s) |
net.out.errs |
容器网络发送数据错误数 |
rate(container_network_transmit_errors_total)[1m] |
(单位:bytes/s) |
net.in.dropped |
容器网络接收数据包drop pps |
rate(container_network_receive_packets_dropped_total)[1m] |
(单位:p/s) |
net.out.dropped |
容器网络发送数据包drop pps |
rate(container_network_transmit_packets_dropped_total)[1m] |
(单位:p/s) |
container_network_{tcp,udp}_usage_total 默认不采集是因为 --disable_metrics=tcp, udp ,因为开启cpu压力大 |
看这里 |
system指标
夜莺指标名 |
含义 |
prometheus metrics或计算方式 |
说明 |
sys.ps.process.count |
容器中running进程个数 |
container_processes |
(单位:个) |
sys.ps.thread.count |
容器中进程running线程个数 |
container_threads |
(单位:个) |
sys.fd.count.used |
容器中打开文件描述符个数 |
container_file_descriptors |
(单位:个) |
sys.fd.soft.ulimits |
容器中root process Soft ulimit |
container_ulimits_soft |
(单位:个) |
sys.socket.count.used |
容器中打开套接字个数 |
container_sockets |
(单位:个) |
sys.task.state |
容器中task 状态分布 |
container_tasks_state |
(单位:个) |
本节重点总结:
- 指标分析
- cpu指标
- mem指标
- filesystem && disk.io指标
- network指标
- system指标
- container_network_{tcp,udp}_usage_total 默认不采集是因为 --disable_metrics=tcp, udp ,因为开启cpu压力大看这里