如何在docker容器中运行psutil?

时间:2017-06-08 11:43:46

标签: python docker

我正在尝试从我的python应用程序中监视docker容器的CPU和内存。我打算用psutil来完成这项工作。我在其他论坛上看到可以在psutil中更改/proc

import psutil
psutil.PROCFS_PATH = 'proc/self'
psutil.cpu_percent()

这给了我以下错误:

 File "app.py", line 22, in <module>
 web-vote-app_1  |     r = psutil.cpu_percent()
 web-vote-app_1  |   File "/usr/local/lib/python2.7/site-packages/psutil       /__init__.py", line 1773, in cpu_percent
 web-vote-app_1  |     _last_cpu_times = cpu_times()
 web-vote-app_1  |   File "/usr/local/lib/python2.7/site-packages/psutil/__init__.py", line 1645, in cpu_times
 web-vote-app_1  |     return _psplatform.cpu_times() 
 web-vote-app_1  |   File "/usr/local/lib/python2.7/site-packages/psutil/_pslinux.py", line 544, in cpu_times
 web-vote-app_1  |     fields = [float(x) / CLOCK_TICKS for x in fields]
 web-vote-app_1  | ValueError: could not convert string to float: (python)
 web-result_1    |  * Running on http://0.0.0.0:5002/ (Press CTRL+C to quit)
 swarmmicroservicedemov1_web-vote-app_1 exited with code 1

有人可以告诉我是否有可能获得有关容器而不是主机的相同信息,如果是这样的话。怎么样 ?感谢

1 个答案:

答案 0 :(得分:7)

为什么要更改默认的/proc/路径?

这只是有效:

import psutil
psutil.cpu_percent(interval=1)

每个容器都已正确安装了它/ proc信息。所以psutil可以在不增加任何额外功能的情况下工作。

编辑:看到它正常工作

Dockerfile:

FROM python:2

RUN pip install psutil

CMD sh -c 'while true; do python -c "import psutil; print psutil.cpu_percent()"; sleep 0.5; done'

构建并运行:

docker build . -t psutil-test && docker run -it psutil-test
Sending build context to Docker daemon 2.048 kB
Step 1/3 : FROM python:2
 ---> 2e9467da064d
Step 2/3 : RUN pip install psutil
 ---> Using cache
 ---> bdb07a51b12b
Step 3/3 : CMD sh -c 'while true; do python -c "import psutil; print psutil.cpu_percent()"; sleep 0.5; done'
 ---> Using cache
 ---> 028f88f8844c
Successfully built 028f88f8844c
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0