若有不對,歡迎批評指正
目錄
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