目录
原生监控命令
一、操作
一句命令:
docker stats
命令效果:
二、问题所在
通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据,一般小公司够用了。但是,docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能。举个栗子,如果我有个容器在半夜里宕掉了,那我隔天想去看看具体信息,stats是看不到的,它不具备数据的存储功能。
是什么
CAdvisor监控收集+InfluxDB存储数据+Grafana展示图表
一、CAdvisor
CAdvisor是一个容器资源监控工具,包括容器的内存CPU,网络IO,磁盘I0等监控,同时提供了一个WEB页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据, 而且只是针对单物理机。不过,CAdvisor提供了很多数据集成接口,支持InfluxDB,Redis,Kafka,Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
CAdvisor功能主要有两点:
●展示Host和容器两个层次的监控数据
●展示历史变化数据
二、InfluxDB
InfluxDB是用Go语言编写的一个开源分布式时序、 事件和指标数据库,无需外部依赖。CAdvisor默认只在本机保存最近2分钟的数据,为了持久化存储数据和统-收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一 个时序数据库,专用于存储时序相关数据,很适合存储CAdvisor的数据。且 CAdvisor本身已经提供了InfluxDB的集成方法,在启动容器时指定配置即可。
InfluxDB主要功能:
●基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等)
●可度量性:你可以实时对大量数据进行计算
●基于事件:它支持任意的事件数据
三、Grafana
Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源报错InfluxDB,MySQL,Elasticsearch,OpenTSDB,Graphite等)和丰富的插件及模板功能,支持图表权限控制和报警。
Grafana主要特性:
●灵活丰富的图形化选项
●可以混合多种风格
●支持白天和夜间模式
●多个数据源
compose编排
一、新建目录
这里的jardocker是之前做的微服务编排:Docker容器:compose容器编排(Java微服务项目实例)
mkdir cig
二、新建docker-compose.yml
注意位置在刚刚新建的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.yml
在当前目录下:
docker-compose up
老规矩!ps看一眼启动是否正常:
docker ps
三个全部正常启动,还剩一个是portainer,这里无视即可。
四、登录测试
1.CAdvisor
访问页面,这里要注意自己的真实IP,还有要把tomcat关掉,避免占用8080端口:
192.168.150.30:8080
xxx.xxx.xxx.xxx:8080
第一次启动可能会有点慢,效果如下:
2.Influxdb
注意IP(端口号8083):
192.168.150.30:8083
xxx.xxx.xxx.xxx:8083
点击show databases,然后回车
这里可以看到一个叫做cadvisor的数据库,顾名思义 它的作用就是用来存储CAdvisor发送过来的数据:
3.Grafana
再次注意真实IP(端口号3000):
192.168.150.30:3000
xxx.xxx.xxx.xxx:3000
首次登录时,这的用户名和密码都是admin
然后重设密码以进行登录:
登录后的主界面如下,当然你也可以选择把一些不想看的删掉:
到此三个全部启动和登录成功。接下来进行更细一步的配置
五、配置
1.配置数据源
说白了就是得告诉grafana我要展示的数据是从哪来的,你的去给我拉过来:
2.选择Influxdb数据库
可以看到它真的支持很多很多的数据库啊,这里我们选择Influxdb:
3.配置细节
名称和语句不用管,这里的URL我们要注意以服务地方式填写,尽量避免以IP的方式:
http://InfluxDB:8086
这里填写咱们的数据库名,上面在登录InfluxDB的时候也查看过了,用户名和密码都为root,然后点击保存测试:
测试正常
4.配置面板
点击新建 Dashboard
点击右上角的 Time series
下面这些里面随便选一个你喜欢的:
这里随便写写:
然后点击右上角的save:
随便给个名字,然后save:
添加成功,然后咱们弄点东西进去看看效果
点击编辑:
咱们把目光移到下面,这里已经选好了InfluxDB:
随便选一个,这里选的是cpu的总耗损
where, 这里选容器名
这时候咱们回到服务器中docker stats看一眼:
docker stats
咱们之前说过了,CAdvisor才是用来收集数据的,所以名字得填这:
可以看到,这时候数据已经出来了,然后咱们点击右上角的save保存:
完成。
一切在云端,服务就是容器。
Docker到此告一段落,咱们后头见。