我目前正在寻找使用 linux 获取 cpu 使用指标的解决方案”顶部“命令。使用 top 命令我发现它只提供瞬时 cpu 统计信息。我怎样才能获得来自 Pod 内部的指标?任何指示将不胜感激。
答案1
阅读docker官方文档:https://docs.docker.com/config/containers/runmetrics/
一个在 Linux 系统上运行容器的简单示例:
检查系统上的 cgroup 版本:
[root@me ~]# stat /sys/fs/cgroup -f | grep Type:
ID: 231088ed884bbbd7 Namelen: 255 Type: tmpfs
tmpfs eq cgroup v1
通过 ps 实用程序搜索容器 pid:
[root@me ~]# ps -e -o pid,ppid,pidns,comm | sort -k3,3 -u -r
PID PPID PIDNS COMMAN
581250 581246 4026532638 bash
1 0 4026531836 system
接下来,在 systemd 切片中搜索该 pid:
[root@me ~]# systemd-cgls -l --no-pager | grep -E '|581250'
└─machine.slice
├─libpod-b8f9a94888b51533c7179cd10781b5a72181e965e09075577e60c5b76ccde2bd.scope …
│ └─581250 /bin/bash
之后转到 cgroup fs 并检查你想要什么:
[root@me ~]# ls /sys/fs/cgroup/cpu/machine.slice/libpod-b8f9a94888b51533c7179cd10781b5a72181e965e09075577e60c5b76ccde2bd.scope/
cgroup.clone_children cpuacct.stat cpuacct.usage_all cpuacct.usage_percpu_sys cpuacct.usage_sys cpu.cfs_burst_us cpu.cfs_quota_us cpu.stat tasks
cgroup.procs cpuacct.usage cpuacct.usage_percpu cpuacct.usage_percpu_user cpuacct.usage_user cpu.cfs_period_us cpu.shares notify_on_release
[root@me ~]# cat /sys/fs/cgroup/cpu/machine.slice/libpod-b8f9a94888b51533c7179cd10781b5a72181e965e09075577e60c5b76ccde2bd.scope/cpuacct.stat
user 126
system 18