对于容器监控的方案可谓是多种多样,本身自带命令docker stats命令,Scout,Data Dog,Sysdog Cloud ,Sensu Monitoring Framework,CAdivisor等。
通过docker stats命令可以很方便的看到宿主机上所有的容器的CPU,内存以及网络流量等数据,但是docker stats命令的缺点就是统计的只是当前宿主机的所有容器,而获取的监控数据是实时的,没有地方存储,也咩有报警功能。
CAdvisor谷歌出品,有点事开源产品,监控指标齐全,部署方便,而且有官方docker镜像,缺点是集成度不高,默认只在本地保存2分钟数据,不顾可以加上InfluxDB存储数据,对接Grafana展示图标,比较便利的搭建好了容器监控系统,数据收集和图标展示效果良好,对系统性能也几乎没有什么影响。
CAdvisor是一个容器资源监控工具,包括容器的内存,CPU,网络IO,磁盘IO等监控,同事提供了一个WEB页面用于查看容器的实时运行状态,CAdvisor默认存储2分钟的数据,而且只是针对但物理机,不过,CAdvisor提供很多数据集成接口,支持influxDB,Redis,Kafka,Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
CAdvisor功能主要有两点:
展示Host和容器两个层次的监控数据。
展示历史变化数据
InfluxDB是用Go语言编写的一个开源分布式时序,时间和指标数据库,无需外部依赖。
前面说到,CAdvisor默认只在本机保存最近2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到InfluxDB中,InfluxDB是一个时序数据库吗,专门用于存储时序相关数据,很适合存储CAdvisor的数据,而且,CAdvisor本身已经提供了InfluxDB集成方法,在启动容器的时候指定配置即可。
InfluxDB主要功能:
基于时序序列,支持与实践有关的相关函数(如最大,最小求和等);
可度量性:你可以试试对大量数据进行计算;
基于实践:他支持任意的事件数据;
InfluxDB主要特点:
无结构(无模式);
可以是任意数量的列;
可扩展的;
支持min,max,sum,count,mean,median等一系列函数,方便统计;
原生的HTTP支持,内置HTTP API;
强大的类SQL语法;
自带管理界面,方便使用;
注: Granfana服务以来Cadvisor.
通过使用 ip+3000端口来访问grafana的web服务,第一次访问需要修改admin用户密码,默认用户名/密码 : 为admin/admin