我正在尝试从我的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
有人可以告诉我是否有可能获得有关容器而不是主机的相同信息,如果是这样的话。怎么样 ?感谢
答案 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