常用的容器监控工具——Google的cAdvisor

题记

我们知道,容器相比较云主机最大的优势是可以共享资源,也就是可以较云主机创建更多的容器协同工作,当然,这么多容器如何统一管理,运维监控可能是我们需要关注的话题,接下来就介绍一下一个比较好的容器监控工具。

--------------------------------------------------------------------------------------

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等相关工具。

时间: 2024-11-06 09:39:43

常用的容器监控工具——Google的cAdvisor的相关文章

20个常用Linux性能监控工具/命令

20个常用Linux性能监控工具/命令 对于 Linux/Unix 系统管理员非常有用的并且最常用的20个命令行系统监视工具.这些命令可以在所有版本的 Linux 下使用去监控和查找系统性能的实际原因.这些监控命令足够你选择适合你的监控场景. 1.top — Linux 系统进程监控 top 命令是性能监控程序,它可以在很多 Linux/Unix 版本下使用,并且它也是 Linux 系统管理员经常使用的监控系统性能的工具.Top 命令可以定期显示所有正在运行和实际运行并且更新到列表中,它显示出

超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享

原创不易,转载请注明出处:超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享 代码下载地址:http://www.zuidaima.com/share/1759689106541568.htm 依赖注入,DI(Dependency Injection),它的作用自然不必多说,提及DI容器,例如spring,picoContainer,EJB容器等等,近日,google诞生了更轻巧的DI容器--Guice! 废话不多讲了,先看看Guice是如何实现

[转帖]8个优秀Docker容器监控工具,收藏了

8个优秀Docker容器监控工具,收藏了 Docker是目前使用最广泛的容器之一,但它并不总是像物理硬件一样可见.而使用docker容器监控工具有助于消除这种透明度的缺失.以下介绍8种优秀Docker容器监控工具. 作者:佚名来源:数码狂人|2019-09-16 14:18 收藏 分享 http://developer.51cto.com/art/201909/602978.htm Docker是目前使用最广泛的容器之一,但它并不总是像物理硬件一样可见.而使用docker容器监控工具有助于消除这

[k8s]容器化node-expolore(9100)+cadvisor(8080)+prometheus(9090) metric搜集,grafana展示

Prometheus 的核心,多维数据模型 传统监控工具统计数据方式 指标多 - 需求1,统计app1-3,的(总)内存,则定义3个指标 container.memory_usage_bytes.webapp* - 获取值 container.memory_usage_bytes.webapp1 - 定义指标,搜集app1 container.memory_usage_bytes.webapp2 - 定义指标,搜集app2 container.memory_usage_bytes.webapp3

docker stack 部署容器监控方案(cAdvisor、Prometheus、Grafana)

=============================================== 2018/7/8_第1次修改                       ccb_warlock =============================================== 最近正式业务终于开始上容器,虽然前期通过swarm解决了服务部署和扩展等问题,但是针对容器监控方面缺乏经验甚至是无从入手,因为没有监控数据我根本不知道目前给的资源限制是否合理,业务量激增的时候资源是否可以支撑负

常用Web容器

Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问.开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器,比较常用的有Tomcat.Resin.JBoss.WebSphere 和 WebLogic 等,下面将分别进行介绍. Tomcat 服务器 目前最为流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型.轻量级的支持JSP和Servlet 技术的Web服

STL常用的容器

vector:相当于一个不定长数组. vector的扩充机制是按照现在容量的一倍进行增长,每次增长是重新申请一块更大的心内存,并把现在容器中的元素逐个复制过去,然后销毁旧的内攒 1.头文件: #include<vector> 2.定义vector对象: vector<int> a; //创建一个空的容器 vector<int> b(10,1);//创建一个初始10个元素,每个元素为1的数组 vector<int> c(b.begin()+5,b.end())

常用STL容器及算法举例

一 常用容器举例 1 vector: vector类似于动态数组,直接访问元素,从后面快速插入或者删除,示例代码如下: [cpp] view plaincopyprint? #include <iostream> #include <vector>//包含vector using namespace std;//指定命名空间 int main() { cout<<"----------vector test-----------"<<en

Java学习---6.常用的容器,流

1.java提供的容器的API位于java.util包内. set:不可以重复,无序.List:可以重复,有顺序.map:键值对的映射方法. Collection c=new ArrayList(): 2.泛型:用到集合时使用泛型,在定义集合的时候定义集合的类型,.可以增强程序的可读性和稳定性. 3.流:Java流式输入/输出原理: