CIG简介
CIG监控平台是基于CAdvisor、InfluxDB和Granfana构建的一个容器重量级监控系统,用于监控容器的各项性能指标。其中,CAdvisor是一个容器资源监控工具,用于监控容器的内存、CPU、网络IO和磁盘IO等。InfluxDB是一个开源的分布式时序、时间和指标数据库,用于存储CAdvisor收集的数据。Granfana则是一个开源的数据监控分析可视化平台,用于展示图表。通过这三者的结合,CIG监控平台可以实现对容器性能的全面监控和可视化展示。
此外,CIG监控平台还提供了灵活的图形化选项,可以混合多种风格,支持白天和黑夜模式,以及多个数据源的配置。用户可以通过这个平台方便地查看和理解容器的运行状态和性能数据。
CIG监控平台为容器的性能和运行状态提供了一个全面的视图,有助于及时发现和解决问题,优化容器的运行效率。
CAdvisor
CAdvisor,全称为Container Advisor,是Google开源的一款用于展示和分析容器运行状态的可视化工具。它提供了对容器内资源使用情况和性能数据的实时监控和采集,包括CPU使用情况、内存使用情况、网络吞吐量和文件系统使用情况等。这些数据可以通过CAdvisor提供的基础查询界面和HTTP接口进行访问,方便其他组件如Grafana、Prometheus等进行数据抓取和可视化展示。CAdvisor使用Go语言开发,利用Linux的Cgroups获取容器的资源使用信息。在Google的Kubernetes中,CAdvisor也被默认地作为单节点的资源监控工具,各个节点默认会安装上CAdvisor组件。
InfluxDB
InfluxDB是一个由InfluxData开发的开源时序型数据库。使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
主要特色功能如下:
- 基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等)。
- 可度量性:你可以实时对大量数据进行计算。
- 基于事件:它支持任意的事件数据。
此外,InfluxDB无结构(无模式),可以是任意数量的列;可拓展的;支持min、max、sum、count、mean、median等一系列函数,方便统计;原生的HTTP支持,内置HTTP API;强大的类SQL语法;自带管理界面,方便使用。
Granfana
Grafana是一个开源的度量分析和可视化套件,常用于对大量数据进行实时分析和呈现。它是由Grafana Labs公司开发并维护的。用户只需要提供需要监控的数据,Grafana就可以帮助生成各种可视化仪表,如折线图、直方图、热力图等。同时,Grafana还有强大的报警功能,可以在系统出现问题时发出通知。此外,Grafana支持许多不同的数据源,每个数据源都有一个特定的查询编辑器,用户可以把来自多个数据源的数据组合到一个仪表板进行统一监控。
搭建CIG监控平台
新建目录
[root@localhost /]# cd mydocker
[root@localhost mydocker]# mkdir cig
[root@localhost mydocker]# cd cig
[root@localhost cig]# pwd
/mydocker/cig
新建docker-compose.yml文件
[root@localhost cig]# vim docker-compose.yml
编辑docker-compose.yml文件
version: '3.1'volumes:grafana_data: {}services:influxdb:image: tutum/influxdb:0.9restart: alwaysenvironment:- PRE_CREATE_DB=cadvisorports:- "8083:8083"- "8086:8086"volumes:- ./data/influxdb:/datacadvisor:image: google/cadvisorlinks:- influxdb:influxsrvcommand: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086restart: alwaysports:- "8080:8080"volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rografana:user: "104"image: grafana/grafanarestart: alwayslinks:- influxdb:influxsrvports:- "3000:3000"volumes:- grafana_data:/var/lib/grafanaenvironment:- HTTP_USER=admin- HTTP_PASS=admin- INFLUXDB_HOST=influxsrv- INFLUXDB_PORT=8086- INFLUXDB_NAME=cadvisor- INFLUXDB_USER=root- INFLUXDB_PASS=root
检查docker-compose.yml文件是否有语法错误
[root@localhost cig]# docker-compose config -q
启动!
[root@localhost cig]# docker-compose up -d
启动成功效果如下
查看三个容器的启动实例
访问CIG服务
通过ip+8080端口访问cAdvisor收集服务
通过ip+8083端口访问InfluxDB存储服务
通过ip+3000端口访问Granfana展现服务
默认账号密码都为admin,登录后进入主页
要通过Granfana展现数据首先需要配置数据源
选中数据源DataSource,然后我们添加数据源
选择InfluxDB数据源
点击select
完成如下配置
接下来配置数据库名称以及用户名和密码
点击Save & test
如下效果说明无误
接下来配置面板
添加一个面板
我们选择数据展示格式,是折线图,还是柱状图展示
选择经典展示规则(old)
保存设置
命名并保存
保存之后效果如下
对面板进行编辑
完成如下配置
容器的名称可以在这里查看
docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
4d8f09bdd732 cig-grafana-1 0.03% 43.5MiB / 1.88GiB 2.26% 424kB / 9.02MB 10.8MB / 1.97MB 8
b05a48a12a33 cig-cadvisor-1 1.07% 66.83MiB / 1.88GiB 3.47% 1.13MB / 292MB 7.72MB / 0B 10
8748271b6a43 cig-influxdb-1 0.06% 43.2MiB / 1.88GiB 2.24% 59.7MB / 594kB 5.55MB / 647MB 7
e2592a496c60 portainer 0.00% 20.38MiB / 1.88GiB 1.06% 6.67kB / 1.89kB 61.7MB / 3.94MB 6
2984b012f3be rocketmq-console 0.08% 179.3MiB / 1.88GiB 9.31% 123kB / 88.8kB 248MB / 29.7MB 33
799a4159b6cf rocketmq-broker 0.00% 0B / 0B 0.00% 0B / 0B 0B / 0B 0
e7cc34338422 redis6 0.10% 9.293MiB / 1.88GiB 0.48% 1.33kB / 0B 48MB / 0B 5
12b28b13b6cd mysql8 0.46% 115.5MiB / 1.88GiB 6.00% 1.51kB / 0B 251MB / 28.7MB 38
最后的监控效果如下