目录
一句命令:
docker stats
命令效果:

通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据,一般小公司够用了。但是,docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能。举个栗子,如果我有个容器在半夜里宕掉了,那我隔天想去看看具体信息,stats是看不到的,它不具备数据的存储功能。
CAdvisor监控收集+InfluxDB存储数据+Grafana展示图表
CAdvisor是一个容器资源监控工具,包括容器的内存CPU,网络IO,磁盘I0等监控,同时提供了一个WEB页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据, 而且只是针对单物理机。不过,CAdvisor提供了很多数据集成接口,支持InfluxDB,Redis,Kafka,Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
CAdvisor功能主要有两点:
●展示Host和容器两个层次的监控数据
●展示历史变化数据
InfluxDB是用Go语言编写的一个开源分布式时序、 事件和指标数据库,无需外部依赖。CAdvisor默认只在本机保存最近2分钟的数据,为了持久化存储数据和统-收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一 个时序数据库,专用于存储时序相关数据,很适合存储CAdvisor的数据。且 CAdvisor本身已经提供了InfluxDB的集成方法,在启动容器时指定配置即可。
InfluxDB主要功能:
●基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等)
●可度量性:你可以实时对大量数据进行计算
●基于事件:它支持任意的事件数据
Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源报错InfluxDB,MySQL,Elasticsearch,OpenTSDB,Graphite等)和丰富的插件及模板功能,支持图表权限控制和报警。
Grafana主要特性:
●灵活丰富的图形化选项
●可以混合多种风格
●支持白天和夜间模式
●多个数据源
这里的jardocker是之前做的微服务编排:Docker容器:compose容器编排(Java微服务项目实例)
mkdir cig

注意位置在刚刚新建的cig目录之下,内容:
- version: '3.1'
-
-
-
- volumes:
-
- grafana_data: {}
-
-
-
- services:
-
- influxdb:
-
- image: tutum/influxdb:0.9
-
- restart: always
-
- environment:
-
- - PRE_CREATE_DB=cadvisor
-
- ports:
-
- - "8083:8083"
-
- - "8086:8086"
-
- volumes:
-
- - ./data/influxdb:/data
-
-
-
- cadvisor:
-
- image: google/cadvisor
-
- links:
-
- - influxdb:influxsrv
-
- command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
-
- restart: always
-
- ports:
-
- - "8080:8080"
-
- volumes:
-
- - /:/rootfs:ro
-
- - /var/run:/var/run:rw
-
- - /sys:/sys:ro
-
- - /var/lib/docker/:/var/lib/docker:ro
-
-
-
- grafana:
-
- user: "104"
-
- image: grafana/grafana
-
- user: "104"
-
- restart: always
-
- links:
-
- - influxdb:influxsrv
-
- ports:
-
- - "3000:3000"
-
- volumes:
-
- - grafana_data:/var/lib/grafana
-
- environment:
-
- - HTTP_USER=admin
-
- - HTTP_PASS=admin
-
- - INFLUXDB_HOST=influxsrv
-
- - INFLUXDB_PORT=8086
-
- - INFLUXDB_NAME=cadvisor
-
- - INFLUXDB_USER=root
-
- - INFLUXDB_PASS=root
这里说白了其实就是把三个容器写进去。随便敲一句看看无语有没有报错:
docker-compose config -q
没有提示即代表语法没有问题。
在当前目录下:
docker-compose up

老规矩!ps看一眼启动是否正常:
docker ps

三个全部正常启动,还剩一个是portainer,这里无视即可。
访问页面,这里要注意自己的真实IP,还有要把tomcat关掉,避免占用8080端口:
- 192.168.150.30:8080
- xxx.xxx.xxx.xxx:8080
第一次启动可能会有点慢,效果如下:

注意IP(端口号8083):
- 192.168.150.30:8083
- xxx.xxx.xxx.xxx:8083
点击show databases,然后回车

这里可以看到一个叫做cadvisor的数据库,顾名思义 它的作用就是用来存储CAdvisor发送过来的数据:

再次注意真实IP(端口号3000):
- 192.168.150.30:3000
- xxx.xxx.xxx.xxx:3000
首次登录时,这的用户名和密码都是admin

然后重设密码以进行登录:

登录后的主界面如下,当然你也可以选择把一些不想看的删掉:

到此三个全部启动和登录成功。接下来进行更细一步的配置
说白了就是得告诉grafana我要展示的数据是从哪来的,你的去给我拉过来:

可以看到它真的支持很多很多的数据库啊,这里我们选择Influxdb:

名称和语句不用管,这里的URL我们要注意以服务地方式填写,尽量避免以IP的方式:
http://InfluxDB:8086

这里填写咱们的数据库名,上面在登录InfluxDB的时候也查看过了,用户名和密码都为root,然后点击保存测试:

测试正常

点击新建 Dashboard

点击右上角的 Time series

下面这些里面随便选一个你喜欢的:

这里随便写写:

然后点击右上角的save:

随便给个名字,然后save:

添加成功,然后咱们弄点东西进去看看效果

点击编辑:

咱们把目光移到下面,这里已经选好了InfluxDB:

随便选一个,这里选的是cpu的总耗损

where, 这里选容器名

这时候咱们回到服务器中docker stats看一眼:
docker stats

咱们之前说过了,CAdvisor才是用来收集数据的,所以名字得填这:

可以看到,这时候数据已经出来了,然后咱们点击右上角的save保存:

完成。
Docker到此告一段落,咱们后头见。