Docker CIG是什么
这个组合是一个常见的监控 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命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据,但是,docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能
docker stats执行效果:

CIG安装使用
新建目录
在linux中新建一个文件夹,我这里叫cig:

[root@localhost ~]# cd /wzy/cig
[root@localhost cig]#
编排文件
(注意:新版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
运行编排
[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编辑:

出现如下界面:








点击右上角保存:


即可展示想要的监控信息:

如果想要监控多种信息,可以在Dashborad处添加更多规则,照上面配置即可:











