若有不对,欢迎批评指正
目录
container
cpu
cat /sys/fs/cgroup/cpu,cpuacct/cpuacct.stat
mem
cat /sys/fs/cgroup/memory/memory.usage_in_bytes
如果存在memory.total_inactive_file,并且usage memory.total_inactive_file ,那么usage=0,否则usage= usage - memory.total_inactive_file
net io
1. 容器所有网卡设备:ls /sys/class/net
2. 每个网卡的网络io统计数据:
网络接收: cat /sys/class/net/<网卡名称>/statistics/rx_bytes
网络发送: cat /sys/class/net/<网卡名称>/statistics/tx_bytes
1. 会忽略以下前缀开头的网卡:"lo", "veth", "docker"
2. 忽略后默认只有【第一个】网卡有网络io数据
3. 例子: 某容器内总共有如下网卡设备:docker0, eth0, gre0, gretap0, lo
忽略掉以lo, veth, docker开头的网卡设备后,剩余:eth0, gre0, gretap0
忽略后剩下的网卡中"eth0"排第一个,因此查询出来的网络io中只有"eth0"的网络io才有值
disk io
cat /proc/diskstats
disk(filesystem)
1. 根据/proc/self/mountinfo得到挂载的文件类型,设备信息
只支持以下fs type: "btrfs", "overlay","tmpfs","xfs","zfs"
cat /proc/self/mountinfo
2. 根据"mount"和"fs type"通过系统调用计算得出
node
cpu
cat /proc/stat
mem
cat /proc/meminfo
disk(filesystem)
根据/proc/mounts里面的内容,再通过系统调用的方式,得到磁盘统计信息
cat /proc/mounts
net io
每个设备的recv|send
cat /proc/net/dev
disk io
cat /proc/diskstats