Docker Container CPU使用情况监控 [英] Docker Container CPU usage Monitoring

查看:15
本文介绍了Docker Container CPU使用情况监控的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据DOCKER的文件。 可以通过docker stats命令获取docker容器的CPU使用率。 CPU%列将给出容器正在使用的主机CPU的百分比。

假设我将容器限制为使用50%的主机单CPU。我可以根据https://docs.docker.com/config/containers/resource_constraints/

通过--cpus=0.5选项指定50%的单CPU核心限制

如何通过任何docker命令获取允许的CPU核心之外的容器的CPU%使用率? 例如,在50%的单CPU核心中,99%被使用。

有没有办法用CAdvisor或Prometheus得到它?

推荐答案

如何通过任何docker命令获取允许的CPU核心之外的容器的CPU%使用率?例如,在50%的单CPU核心中,99%被使用。

Docker有docker stats命令,该命令显示CPU/内存使用情况和其他一些统计信息:

CONTAINER ID   NAME                                   CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O         PIDS
c43f085dea8c   foo_test.1.l5haec5oyr36qdjkv82w9q32r   0.00%     11.15MiB / 100MiB     11.15%    7.45kB / 0B      3.29MB / 8.19kB   9

虽然它确实显示了有关开箱即用限制的内存使用情况,但CPU还没有这样的功能。可以使用脚本来解决这个问题,该脚本将实时计算值,但我宁愿选择第二个选项。

有没有办法用CAdvisor或Prometheus得到它?

有,有:

irate(container_cpu_usage_seconds_total[2m]) / ignoring(cpu) (container_spec_cpu_quota/container_spec_cpu_period)
左侧是一个常见的irate函数,它计算容器已使用的所有机器CPU核心的秒数。它附带一个标签cpu="total",而右侧没有,这就是为什么会有ignoring(cpu)

右边的部分计算容器可以使用多少个CPU核心。有两个指标:

container_spec_cpu_quota-实际配额值。该值由您设置为限制的一小部分CPU核心计算得出,然后乘以container_spec_cpu_period

container_spec_cpu_period-来自CFS Scheduler,它类似于配额值的单位。

我知道一开始可能很难理解,请允许我举一个例子来解释:

假设您将container_spec_cpu_period设置为默认值,即100,000微秒,容器CPU限制设置为半核(0.5)。在本例中:

container_spec_cpu_period 100,000
container_spec_cpu_quota  50,000  # =container_spec_cpu_period*0.5

将CPU限制设置为两核时,您将得到以下结果:

container_spec_cpu_quota  200,000

因此,通过一个一个除以另一个,我们得到了CPU内核的分数,然后在另一个除法中使用该分数来计算使用了多少限制。

这篇关于Docker Container CPU使用情况监控的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆