如何在docker容器中运行psutil?

我试图从我的
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

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

最佳答案 为什么要更改默认/ 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
点赞