使用Docker SDK for Python以Docker容器的百分比计算CPU使用率

2024-10-03 09:15:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算Python脚本中运行的Docker容器的CPU使用率百分比。为了获得docker统计数据,我使用了docker SDK for Python 5.0.0版。使用以下代码,我检索Docker容器的统计数据作为dict:

import docker

client = docker.from_env()
container_list = client.containers.list()

for container in container_list:
    container_stats = container.stats(decode=True).__next__()
    print(container_stats)

我找到了以百分比(https://forums.docker.com/t/how-to-calculate-the-cpu-usage-in-percent/27509/2)计算CPU使用率的公式。然而,当检索如上所示的容器统计信息时,我缺少一个变量。它不包含precpu_stats.system_cpu_usage

我的cpu_统计数据和precpu_统计数据如下:

"cpu_stats":{
  "cpu_usage":{
     "total_usage":131226143110,
     "percpu_usage":[
        96196570,
        2133871570,
        349858200,
        32568251630,
        2009016800,
        13927275650,
        39496203460,
        40645469230
     ],
     "usage_in_kernelmode":5959000000,
     "usage_in_usermode":125246000000
  },
  "system_cpu_usage":16738784000000,
  "online_cpus":8,
  "throttling_data":{
     "periods":0,
     "throttled_periods":0,
     "throttled_time":0
  }
},
"precpu_stats":{
  "cpu_usage":{
     "total_usage":0,
     "usage_in_kernelmode":0,
     "usage_in_usermode":0
  },
  "throttling_data":{
     "periods":0,
     "throttled_periods":0,
     "throttled_time":0
  }
}

但是,我需要precpu_stats.system_cpu_usage来计算system_cpu_usage delta,以便能够以百分比的形式计算cpu使用率

有人知道为什么它不显示precpu_stats.system_cpu_使用情况吗?也许我做错了什么


Tags: dockerincontainerstatsusagecpusystem容器