Docker 容器监控全攻略:原生命令与 cAdvisor 实操详解
第7章 容器监控
摘要:本章详细介绍了Docker容器监控的两种主要方式。首先讲解了Docker自带的监控子命令,包括ps(查看运行容器)、top(查看容器进程)和stats(实时监控容器资源使用率)的使用方法和示例。然后介绍了Google开发的容器监控工具cAdvisor,包括其部署方式、Web界面访问方法以及优缺点分析。cAdvisor虽然界面相对简陋且只能监控单个主机,但可以作为监控数据收集器,将数据导出给第三方工具进行进一步处理。
续上篇博客 容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
Docker自带的监控子命令
当Docker部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要。
ps
docker ps 是我们早已熟悉的命令了,方便我们查看当前运行的容器。前面已经有大量示例,这里就不赘述了。
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f8bc2c3a5c7 nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 80/tcp sad_faraday
1e0b0631cf70 httpd:centos "/bin/sh -c '/usr/sb…" 23 minutes ago Up 23 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp myweb
4b78f371fc06 centos:ssh "/usr/sbin/sshd -D" 32 minutes ago Up 32 minutes 0.0.0.0:2022->22/tcp, :::2022->22/tcp sshtest
top
查看容器的进程
[root@docker ~]# docker top --help
Usage: docker top CONTAINER [ps OPTIONS]
Display the running processes of a container
Aliases:
docker container top, docker top
示例:
[root@docker ~]# docker top sshtest #sshtest是容器名
UID PID PPID C
STIME TTY TIME CMD
root 5220 5198 0
21:31 ? 00:00:00 /usr/sbin/sshd -D
命令后面还可以跟上 Linux 操作系统 ps 命令的参数显示特定的信息,比如 -au。
[root@docker ~]# docker top 595 -au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 5220 0.0 0.0 76532 7080 ? Ss 21:31 0:00 /usr/sbin/sshd -D
stats
列出容器资源使用率
[root@docker ~]# docker stats --help
Usage: docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Aliases:
docker container stats, docker stats
Options:
-a, --all Show all containers (default shows just running)
--format string Format output using a custom template:
'table': Print output in table format with column headers (default)
'table TEMPLATE': Print output in table format using the given Go template
'json': Print in JSON format
'TEMPLATE': Print output using the given Go template.
Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate outpu
示例:
[root@docker ~]# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O
BLOCK I/O PIDS
9f8bc2c3a5c7 sad_faraday 0.00% 5.141MiB / 15.36GiB 0.03% 866B / 0B
8.19kB / 26.6kB 5
1e0b0631cf70 myweb 0.06% 38.39MiB / 15.36GiB 0.24% 1.64kB / 609B 0B / 0B 213
4b78f371fc06 sshtest 0.00% 2.258MiB / 15.36GiB 0.01% 9.7kB / 7.99kB 8.19kB / 23.6kB 1
默认会显示一个实时变化的列表,展示每个容器的 CPU 使用率,内存使用量和可用量,网络和磁盘的 IO 数据。
注意:容器启动时如果没有特别指定内存 limit,stats 命令会显示 host 的内存总量,但这并不意味着每 个 container 都能使用到这么多的内存。
cAdvisor
cAdvisor 是 google 开发的容器监控工具。
[root@docker ~]# docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
也可以使用镜像hub.c.163.com/xbingo/cadvisor:latest。
通过 http://[Host_IP]:8080 访问 cAdvisor。首次打开比较慢,系统需要收集数据并绘制图表。
点击Docker Containers进去看容器具体信息



总结:
- 缺点:操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 host。
- 优点:可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。
结论:我们把 cAdvisor 定位为一个监控数据收集器,并导出数据给第三方工具,而非展示数据。
更多推荐
所有评论(0)