Docker Container CPU使用情况监控 [英] Docker Container CPU usage Monitoring
问题描述
根据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屋!