4.3 容器监控

系列 - 容器与守护进程运维
目录
摘要
本实验将介绍三种不同的Docker容器监控方法,从基础的Docker自带监控命令到更高级的监控工具。
准备工作
在开始本实验前,请确保完成以下准备工作:
- 检查 SELinux 是否已关闭:执行
getenforce
命令,结果应该显示 Disabled 或 Permissive - 检查防火墙是否已关闭:执行
systemctl status firewalld
命令 - 下载所需镜像
harbor.seahi.me/stu/task-supervisor
google/cadvisor
实验过程
任务一:Docker自带监控命令
Docker提供了多种内置命令来监控容器状态,包括 docker ps
、docker top
、docker stats
等。
1. docker ps
查看容器
docker ps
这条命令显示当前正在运行的容器。如果想要查看所有容器(包括已停止的),需要增加 -a
参数:
docker ps -a
2. docker top
查看容器内进程
首先,让我们启动一个用于测试的容器:
docker run -d \
--restart always \
--name supervisor \
harbor.seahi.me/stu/task-supervisor
然后,查看该容器内运行的进程:
docker top supervisor
top命令
docker top
命令类似于Linux中的 top
命令,但它专门用于查看容器内的进程。
3. docker stats
查看容器资源使用状况
docker stats
退出方法
按
Ctrl+C
可以退出 docker stats
命令。该命令默认会持续输出最新状态。任务二:使用 cAdvisor 监控容器
cAdvisor
cAdvisor (Container Advisor) 是谷歌开发的容器资源监控工具,提供了更详细的容器性能指标和资源使用情况分析。
cAdvisor 可以运行在宿主机上,也可以作为容器运行(推荐方式)。它能够收集、聚合、处理和导出容器的信息。
1. 运行测试容器
首先,让我们启动两个用于测试监控的容器:
docker run --rm -d \
--name redis \
redis
Redis
Redis 是一个开源的内存数据库,常用于缓存、会话存储、消息队列等场景。
docker run --rm -d \
--name web-server \
httpd
httpd
Apache HTTP Server (httpd) 是一个广泛使用的Web服务器软件。
2. 运行 cAdvisor 容器
docker run --privileged \
-v /:/rootfs:ro \
-v /var/run:/var/run:rw \
-v /sys:/sys:ro \
-v /var/lib/docker:/var/lib/docker:ro \
-p 8080:8080 \
--detach \
--name cadvisor \
google/cadvisor:latest
警告
--privileged
参数让容器以特权模式运行,拥有访问宿主机上所有设备的权限。在生产环境中应谨慎使用此参数,以避免潜在的安全风险。
问题
--detach
的缩写是 -d
,用于在后台运行容器。3. 访问 cAdvisor 界面
打开浏览器,输入 http://服务器IP:8080
访问cAdvisor的Web界面:
点击 “Docker Containers” 查看容器列表:
单击某个容器,可以查看该容器的详细资源使用情况和性能指标。
任务三:使用 Weave Scope 监控容器
Weave Scope
Weave Scope 是一个可视化和监控工具,提供了容器和服务之间的关系图,以及详细的容器资源使用情况。它支持Docker和Kubernetes环境。
1. 下载并安装 Weave Scope
wget https://github.com/weaveworks/scope/releases/download/v1.13.2/scope -O /usr/local/bin/scope
给脚本增加执行权限:
chmod +x /usr/local/bin/scope
2. 启动 Weave Scope
scope launch
3. 访问 Weave Scope 界面
打开浏览器,访问 http://服务器IP:4040
:
4. 查看容器详情
点击其中一个容器图标,可以查看该容器的详细状态和指标:
技巧
Weave Scope不仅可以监控容器资源使用情况,还能可视化展示容器之间的网络连接关系,帮助理解复杂的容器应用架构。
补充内容:其他监控命令
除了上述工具外,Docker还提供了一些其他有用的命令来帮助监控和管理容器。
1. 查看容器日志
使用 docker logs
命令可以查看容器的日志输出:
docker logs <容器名/ID>
技巧
可以添加
-f
参数实时查看日志(类似 tail -f
),添加 --tail <行数>
参数查看最后几行日志。2. 清理Docker资源
随着使用Docker的时间增长,系统中可能会积累大量不再使用的容器、镜像、网络和缓存。使用 docker system prune
命令可以一键清理这些资源:
docker system prune
确认后,Docker会清理未使用的资源:
如果还想要删除未使用的数据卷,可以添加 --volumes
参数:
docker system prune --volumes
谨慎操作
使用
docker system prune
命令会删除所有未使用的Docker资源。在生产环境中使用前,请确保你了解这个命令的影响范围。