题记
我们知道,容器相比较云主机最大的优势是可以共享资源,也就是可以较云主机创建更多的容器协同工作,当然,这么多容器如何统一管理,运维监控可能是我们需要关注的话题,接下来就介绍一下一个比较好的容器监控工具。
--------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/chinagissoft
QQ群:16403743
宗旨:专注于"GIS+"前沿技术的研究与交流,将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合,探讨"GIS+"技术和行业解决方案
转载说明:文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
--------------------------------------------------------------------------------------
当然,Docker自带了容器监控功能,可以对容器进行相关的性能监控,指标查看
主要包括:
- 主机的CPU情况和使用量
- 主机的内存情况和使用量
- 主机的本地镜像情况
- 主机的容器运行情况
前面我们反复使用docker ps -a ,docker images命令查看后两者,当然docker stats命令就是监控相关容器实例情况
[email protected]:~# docker stats master test1 test2 CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS master 0.00% 10.35 MB / 33.61 GB 0.03% 1.338 kB / 648 B 9.122 MB / 12.29 kB 0 test1 0.00% 8.192 kB / 33.61 GB 0.00% 2.634 kB / 648 B 0 B / 0 B 0 test2 0.00% 282.6 kB / 33.61 GB 0.00% 1.986 kB / 648 B 0 B / 0 B 0
也可以使用类似top命令查看进程情况
[email protected]:~# docker top master UID PID PPID C STIME TTY TIME CMD root 11502 11487 0 09:48 pts/26 00:00:00 /bin/bash /root/run.sh root 11519 11502 0 09:48 pts/26 00:00:00 /bin/sh /etc/init.d/ssh start -D root 11534 11519 0 09:48 pts/26 00:00:00 /usr/sbin/sshd -D
如果想要看到更为详细的容器属性,还可以通过netcat,使用Docker远程API来查看(见下文)。发送一个HTTP
GET请求/containers/[CONTAINER_NAME]
,其中CONTAINER_NAME
是你想要统计的容器名称。你可以从这里看到一个容器stats请求的完整响应信息。在上述的例子中你会得到缓存、交换空间以及内存的详细信息。
当然这种方式并不会令人接受,大家还是希望能够看到非常直观,详细的可视化界面,讲究用户体验嘛。
CAdvisor是一个易于设置并且非常有用的工具,我们不用非要SSH到服务器才能查看资源消耗,而且它还给我们生成了图表。此外,当集群需要额外的资源时,压力表(pressure
gauges )提供了快速预览。而且,与本文中的其他的工具不一样的是CAdvisor是免费的,并且还开源。另外,它的资源消耗也比较低。但是,它有它的局限性,它只能监控一个Docker主机。因此,如果你是多节点的话,那就比较麻烦了,你得在所有的主机上都安装一个CAdvisor,者肯定特别不方便。值得注意的是,如果你使用的是Kubernetes,你可以使用heapster来监控多节点集群。另外,在图表中的数据仅仅是时长一分钟的移动窗口,并没有方法来查看长期趋势。如果资源使用率在危险水平,它却没有生成警告的机制。如果在Docker节点的资源消耗方面,你没有任何可视化界面,那么CAdvisor是一个不错的开端来带你步入容器监控,然而如果你打算在你的容器中运行任何关键任务,那你就需要一个更强大的工具或者方法。
CAdvisor最大的好处就是配置简单、免费试用。
1、下载相关镜像
[email protected]:~# docker pull google/cadvisor:latest latest: Pulling from google/cadvisor 552b69c7399e: Pull complete a3ed95caeb02: Pull complete fd2c5cdc47b1: Pull complete e1d2af7223fb: Pull complete Digest: sha256:23da68ea2fd51d990e5b68c5886a9de43f1d030aa9c3fb36e9c50d2784a6a21a Status: Downloaded newer image for google/cadvisor:latest
2、启用镜像容器实例,映射端口
[email protected]:~# 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 953fa954d08fb22903ac3df29d5f9e3dcf22f0e53cfd29195166de656cd6ba15 [email protected]:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 953fa954d08f google/cadvisor:latest "/usr/bin/cadvisor -l" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp cadvisor
3、打开链接查看
容器宿主机IP:8080
同时,查看具体的docker容器的监控信息
查看单个容器(由于容器并无任何操作,所以曲线没有起伏)
当然,该容器对于我们来说已经足够使用了,不过相比较更加专业的公司,该工具显示的docker信息详细程度不够,集成度也不太强,而且无生成警报的能力,也只能监控容器资源,不支持非docker资源监控。
比较,免费的东西,你还想怎么样呢?
如果有上述需求,大家可以使用收费的dockerdog等相关工具。