如何使用 linux top 命令获取 pod 内的 cpu 使用情况指标

如何使用 linux top 命令获取 pod 内的 cpu 使用情况指标

我目前正在寻找使用 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

相关内容