docker资源的监控方案
如何监控docker容器整体的资源利用率呢?如何监控独立docker容器的资源利用率呢?
先说结论:前者用kubesphere或者rancher(大厂都是自己搞的监控系统);后者使用命令docker stats 容器id
有一个坑需要大家了解! 如果使用命令 docker exec 容器id /bin/bash 在容器中执行命令,并使用top进行监控,监控的是整个宿主机的资源!
详解docker stats
接下来我重点介绍一下docker stats命令的使用
默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容,输出结果如下:ctrl + c 终止命令输出。
输出参数含义如下:
[CONTAINER ID]:显示容器的 ID。
[Name]:显示容器名称。
[CPU %]:CPU 的使用情况。
[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。
[MEM %]:以百分比的形式显示内存使用情况。
[NET I/O]:网络 I/O 数据。
[BLOCK I/O]:磁盘 I/O 数据。
[PIDS]:PID 号。
如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态:
docker stats --no-stream 容器id
我们还可以格式化docker stats 的输出结果,例如只显示容器id和cpu的信息,可以执行如下命令
docker stats --format "{{.ID}}: {{.CPUPerc}}"
docker stats --format 详细参数介绍如下:
.Container Container name or ID
.Name Container name
.ID Container ID
.CPUPerc CPU 利用率
.MemUsage Memory 使用情况
.NetIO Network IO
.BlockIO Block IO
.MemPerc Memory percentage (Windows不可用)
.PIDs Number of PIDs (Windows不可用)
docker资源日志图像生成思路
如果我们想生成漂亮的图形界面,实现思路如下,
1.执行命令 docker stats --format "{{.Container}}: {{.CPUPerc}}">file , 生成cpu数据(同理生成内存、磁盘以及网络等数据)
2.然后解析file中的数据,生成图形界面(可以考虑python的 matplotlib库)