Docker CIG是什么
CIG为:CAdvisor监控收集、InfluxDB存储数据、Granfana图表展示
这个组合是一个常见的监控 Docker 容器的解决方案,它包括以下三个组件:
-
cAdvisor (Container Advisor):
- cAdvisor 是一个开源的容器资源监控和性能分析工具。
- 它能够收集有关正在运行的容器的资源使用和性能特征的实时数据。
- cAdvisor 提供了一个 Web 界面,可以直观地查看容器的监控数据。
- cAdvisor默认存储2分钟的数据,而且只是针对单物理机。不过,cAdvisor提供了很多数据集成接口,支持InfluxDB,Redis, kafka, Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
CAdvisor功能主要有两点:一是展示Host和容器两个层次的监控数据。二是展示历史变化数据。
-
InfluxDB:
- InfluxDB 是GO语言编写的一个开源的时间序列数据库,非常适合存储 cAdvisor 收集的监控数据。
- InfluxDB 可以高效地存储和管理大量的时间序列数据。
- 它支持对数据进行查询、分析、计算和可视化。
-
Grafana:
- Grafana 是一个开源的数据可视化和仪表盘工具。
- 支持多数据源,它可以连接到各种数据源,包括 InfluxDB,并提供丰富的可视化功能。
- Grafana 可以帮助您创建漂亮的仪表盘,以直观地展示 Docker 容器的监控数据。
这三个组件结合起来,可以构建一个强大的 Docker 监控解决方案:
- cAdvisor 收集容器的监控数据
- InfluxDB 存储这些数据
- Grafana 连接 InfluxDB 并创建漂亮的仪表盘
这种方案可以让你深入了解 Docker 容器的资源使用情况、性能指标和健康状况,从而更好地管理和优化您的 Docker 环境。许多 Docker 用户都采用这种方式来监控和分析他们的 Docker 基础设施。
传统监控docker stats
通过docker stats
命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据,但是,docker stats
统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能
docker stats执行效果:
CIG安装使用
新建目录
在linux中新建一个文件夹,我这里叫cig:
[root@localhost ~]# cd /wzy/cig
[root@localhost cig]#
编排文件
新建docker-compose.yml,放到/wzy/cig目录,或者直接在里面vim,yml内容如下:
(注意:新版compose可以不用写version
了)
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
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
运行编排
先检查yml文件,在从cig目录下运行编排
[root@localhost cig]# docker-compose config -q
[root@localhost cig]# docker-compose up -d
[+] Running 27/16
✔ cadvisor Pulled 23.6s
✔ grafana Pulled 27.9s
✔ influxdb Pulled 57.1s
[+] Running 5/5
✔ Network cig_default Created 0.6s
✔ Volume "cig_grafana_data" Created 0.0s
✔ Container cig-influxdb-1 Started 1.5s
✔ Container cig-cadvisor-1 Started 2.7s
✔ Container cig-grafana-1 Started 2.9s
如上即为成功,然后ps查看:
[root@localhost cig]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab99652a9817 google/cadvisor "/usr/bin/cadvisor -…" 3 minutes ago Up 3 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cig-cadvisor-1
5788adf2741d grafana/grafana "/run.sh" 3 minutes ago Up 3 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp cig-grafana-1
7fed5cd78a92 tutum/influxdb:0.9 "/run.sh" 3 minutes ago Up 3 minutes 0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp cig-influxdb-1
CIG登录验证
cAdvisor
ip:8080访问,可能会慢一些,请稍等,出来后是下面这样:
InfluxDB
ip:8083访问,出来后是下面这样:
点击Query Templates
,下拉选择Show Databases
:
Show Databases
会显示到查询框,按下回车
出现数据库信息,cadvisor
对应编排文件中influxdb
配置下的:
environment:
- PRE_CREATE_DB=cadvisor
即influxdb
存储cadvisor
收集的信息
Grafana
访问ip:3000,会到如下页面:
用户名密码默认均为admin
,然后登录,会再让你更改密码,我这里还是用admin:
点击submit
提交,进入如下界面:
可以删除多余显示,如果你想要的话:
弹框点Remove
按钮即可
配置Grafana
1.配置数据源
点右侧齿轮图标,然后点Data sources
点击添加数据源:
选择InfluxDB
,点击Select
:
进入如下页面,请按照图片内容填写:
name:InfluxDB
Query Language:InfluxQL
url:http://InfluxDB:8086
Access:默认就是图片里这个
Database:cadvisor
user:root
password:root
点击Save&test
后,出现下面两个绿色对勾即为配置成功:
2.配置面板
在右侧加号点Dashboard
:
选择添加面板:
然后选择一种你喜欢的风格:
然后自定义标题及描述,点击右上角Save
:
自定义一个面板名称然后保存:
然后如下生成cig01监控面板:
3.配置监控业务规则
点击cig01下拉点击Edit
编辑:
出现如下界面:
先在
select measurement
处选择要监控的信息,我这里选择cpu总占用
然后点加号增加条件,这里选容器名,即按照容器名监控
最后选择监控哪个容器,这里选cadvisor
然后写一个名字
点击右上角保存:
回到首页
即可展示想要的监控信息:
如果想要监控多种信息,可以在Dashborad
处添加更多规则,照上面配置即可: