Nit*_*tul 3 performance monitoring docker prometheus cadvisor
根据 docker 的文档。\n我们可以使用docker stats命令获取 docker 容器的 CPU 使用情况。\nCPU % 列将给出容器正在使用的主机\xe2\x80\x99s CPU 的百分比。
\n假设我限制容器使用 50% 的主机单个 CPU。我可以根据https://docs.docker.com/config/containers/resource_constraints/通过 --cpus=0.5 选项指定 50% 单 CPU 核心限制
\n我们如何通过任何 docker 命令获取容器的 CPU% 使用率超出允许的 CPU 核心?\n例如 50% 的单 CPU 核心中,99% 已被使用。
\n有什么办法可以用cadvisor或prometheus来获取它吗?
\n我们如何通过任何 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
Run Code Online (Sandbox Code Playgroud)
虽然它确实显示了关于开箱即用限制的内存使用情况,但 CPU 还没有这样的功能。可以使用动态计算值的脚本来解决这个问题,但我宁愿选择第二个选项。
有什么办法可以用cadvisor或prometheus来获取它吗?
就在这里:
irate(container_cpu_usage_seconds_total{cpu="total"}[1m])
/ ignoring(cpu)
(container_spec_cpu_quota/container_spec_cpu_period)
Run Code Online (Sandbox Code Playgroud)
第一行是一个典型的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)。在这种情况下:Run Code Online (Sandbox Code Playgroud)container_spec_cpu_period 100,000 container_spec_cpu_quota 50,000 # =container_spec_cpu_period*0.5将 CPU 限制设置为两个核心后,您将得到以下结果:
Run Code Online (Sandbox Code Playgroud)container_spec_cpu_quota 200,000
因此,通过除以另一个,我们可以得到 CPU 核心的比例,然后在另一个除法中使用该比例来计算使用了多少限制。
| 归档时间: |
|
| 查看次数: |
11636 次 |
| 最近记录: |