Docker CPU百分比

时间:2015-07-21 11:39:35

标签: docker cpu-usage cgroups

有没有什么方法可以让我在docker容器中获得cpu百分比而不是在它之外?! docker stats DOCKER_ID显示的百分比正是我需要的,但我需要它作为变量。我需要在容器内部获取cpu百分比并使用它进行一些操作。 我已经研究过不同的东西,比如cgroup和docker rest API,但它们没有提供cpu百分比。如果有办法获得容器内的cpu百分比而不是在它之外它将是完美的。我找到了一个由下面的链接提供的解决方案,其余的api仍然在容器之外,但是我并没有真正得到它如何计算百分比。

Get Docker Container CPU Usage as Percentage

2 个答案:

答案 0 :(得分:0)

您可以使用Axibase时间序列数据库存储驱动程序安装Google cAdvisor。它将收集和存储以核心单位和百分比衡量的CPU利用率。

屏幕上显示CPU报告示例的屏幕截图位于页面底部:https://axibase.com/products/axibase-time-series-database/writing-data/docker-cadvisor/

在集中配置中,ATSD容器本身可以从多个docker主机上安装的多个cAdvisor实例中获取指标。

编辑1:一个内核,用于计算容器内运行的所有进程的总CPU使用率。调整-d参数以更改样本之间的间隔以平滑峰值:

top -b -d 5 -n 2 | awk '$1 == "PID" {block_num++; next} block_num == 2 {sum += $9;} END {print sum}'

答案 1 :(得分:0)

我使用了ctop,它提供了比 docker_stats 更加图形化的方式 但我发现它显示的CPU百分比高于Top为系统显示的百分比。基本上它显示相对于根进程。 Docker容器作为子进程运行

举例说明

首先找到运行所有容器的根进程

docker-containerd-shim - .. Docker架构分为四个组件:Docker引擎,containerd,containerd-shm和runC。二进制文件分别称为docker,docker-containerd,docker-containerd-shim和docker-runc。 - https://hackernoon.com/docker-containerd-standalone-runtimes-heres-what-you-should-know-b834ef155426

root 1843 1918 0 Aug31 ? 00:00:00 docker-containerd-shim 611bd9... /var/run/docker/libcontainerd/611bd92.... docker-runc

您可以使用命令

查看正在运行的所有容器

pstree -p 1918

现在说我们有兴趣看到fluentdb的CPU消耗。

让孩子了解这个的简单方法是

pstree -p 1918 |grep fluentd

其中21670

现在您可以运行top -p 21670来查看此子进程的CPU份额top -p 1918,以查看父进程的整体CPU。

随着主管收集到Promethus并在Grafana中查看,这是容器使用的实际CPU百分比的最接近和最准确的表示;与主机有关。该图说明了这一点。 cTop和docker统计数据占CPU百分比的23%。 Docker父进程的实际CPU百分比约为2%,Grafana的cAdvisor输出显示最准确的'与主机相关的容器CPU百分比的值。

graphana-cadvisor-top-ptree-docker