目录
1. docker stats原生命令
2. CIG
CAdvisor
InfluxDB
Granfana
3. 安装部署
4. Grafana配置
4.1. 添加数据源
4.2. 添加工作台
grafana官网文档参考:Grafana documentation | Grafana documentation
influxdb官网文档参考:https://docs.influxdata.com/influxdb/v2/install/
cadvisor官网文档参考:https://github.com/google/cadvisor/blob/master/docs/running.md
1. docker stats原生命令
通过docker stats
命令可以很方便的查看当前宿主机上所有容器的CPU、内存、网络流量等数据,可以满足一些小型应用。
但是 docker stats
统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能。
2. CIG
CAdvisor(监控收集) + InfluxDB(存储数据) + Granfana(展示图表),合称 CIG
- CAdvisor 运行在每个 Docker 主机上,监控所有容器并收集资源使用数据。
- CAdvisor 将收集到的数据推送到 InfluxDB,作为时间序列数据进行存储和管理。
- Grafana 从 InfluxDB 中读取时间序列数据,并以可视化图表的形式展示在自定义的仪表盘上,供用户进行监控和分析
CAdvisor
CAdvisor (Container Advisor) 是一个容器资源监控工具
作用:
- 容器监控:CAdvisor 是一个用于收集、处理、聚合和导出运行中的容器资源使用和性能信息的工具。它能够自动发现容器,并收集 CPU、内存、网络和文件系统使用数据。
- 实时监控:提供实时监控功能,能够详细展示每个容器的资源消耗情况,帮助识别性能瓶颈和资源利用情况。
- 数据导出:能够将收集的数据导出到多种存储后端,如 InfluxDB、Prometheus 等,便于进一步分析和可视化。
工作原理:
- CAdvisor 运行在每个主机上,监控所有在该主机上运行的容器,通过 Docker API 获取容器的资源使用数据。
- 它能够以 JSON 格式导出这些数据,或者将数据直接推送到指定的存储后端。
CAdvisor默认存储2分钟的数据,而且只是针对单物理机。不过CAdvisor提供了很多数据集成接口,支持 InfluxDB、Redis、Kafka、Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
CAdvisor主要功能:
- 展示Host和容器两个层次的监控数据
- 展示历史变化数据
InfluxDB
InfluxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。
CAdvisor默认只在本机保存2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一个时序数据库,专门用于存储时序相关数据,很适合存储 CAdvisor 的数据。而且 CAdvisor本身已经提供了InfluxDB的集成方法,在启动容器时指定配置即可。
InfluxDB主要功能:
- 基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等)
- 可度量性,可以实时对大量数据进行计算
- 基于事件,支持任意的事件数据
Granfana
官网:Grafana: The open observability platform | Grafana Labs
grafana + influxdb使用:InfluxDB data source | Grafana documentation
Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源包括InfluxDB、MySQL、Elasticsearch、OpenTSDB、Graphite等)和丰富的插件及模板功能,支持图表权限控制和报警。
- 数据可视化:Grafana 是一个开源的分析和监控平台,能够将 InfluxDB 等数据库中的时间序列数据进行可视化。它支持多种图表类型,如折线图、柱状图、热力图等。
- 仪表盘管理:用户可以创建和管理自定义的仪表盘,展示关键的性能指标和监控数据,便于实时监控和分析系统状态。
- 告警系统:Grafana 支持配置告警规则,当监控指标超出设定的阈值时,会自动触发告警通知用户。
Granfana主要功能:
- 灵活丰富的图形化选项
- 可以混合多种风格
- 支持白天和夜间模式
- 多个数据源
3. 安装部署
参考:How to setup Docker Monitoring
📎如何设置 CIG重量级 Docker 监控 .html
- 编写
docker-compose.yml
服务编排文件
ps:使用的tutum/influxdb 相比influxdb多了web可视化视图。但是该镜像已被标记为已过时
新版的1.X 2.X版本的需要查看官网链接编写对应的yml文件(部分不能照搬,某些初始化变量已经失效)
volumes:
grafana_data: {} #{}使用默认设置创建卷
networks:
CIG_net: {}
services:
influxdb:
image: tutum/influxdb
container_name: influxdb
restart: always
environment:
- PRE_CREATE_DB=cadvisor
ports:
- "8083:8083"
- "8086:8086"
volumes:
- ./data/influxdb:/data
networks:
- CIG_net
#-------------------------------------------------------------------------------------------------------
cadvisor:
image: gcr.io/cadvisor/cadvisor
container_name: cadvisor
command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
restart: always
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /sys/fs/cgroup:/sys/fs/cgroup:ro
networks:
- CIG_net
#--------------------------------------------------------------------------------------------------------
grafana:
image: grafana/grafana:latest
container_name: grafana
user: "104"
restart: always
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
environment:
- HTTP_USER=admin
- HTTP_PASS=admin
- INFLUXDB_HOST=influxdb
- INFLUXDB_PORT=8086
- INFLUXDB_NAME=cadvisor
- INFLUXDB_USER=root
- INFLUXDB_PASS=root
networks:
- CIG_net
2.检查语法:docker-compose config -q
3.创建并启动容器 docker-compose up -d
安装过程中遇见的问题及解决过程:
无法找到 CPU 的挂载点
换最新的镜像,gcr.io/cadvisor/cadvisor
重新启动 docker-compose up -d
浏览浏览cAdvisor收集服务,http://ip:8080
cadvisor也有基础的图形展现功能,这里主要用它来作数据采集
浏览influxdb存储服务,http://ip:8083/ ,检查我们初始化的数据库cadvisor
浏览grafana,默认账户密码 admin admin
4. Grafana配置
4.1. 添加数据源
关于如何添加源,grafana给出不同influxdb的参考教程InfluxDB data source | Grafana documentation
在Configuration
(小齿轮)选项卡中,选择Data Sources
,添加一个InfluxDB数据源:
- name:自定义一个数据源名称,例如
InfluxDB
- Query Language:查询语言,默认
InfluxQL
即可 - URL:根据compose中的容器服务名连接,
http://influxdb:8086
- database:我们在InfluxDB中创建的数据库实例,
cadvisor
- User:InfluxDB的默认用户,
root
- Password:
root
保存并测试
4.2. 添加工作台
- 在
Create
(加号)选项卡中,选择创建Dash Board
工作台。右上角配置中可以配置创建出来的工作台的标题、文件夹等信息。 - 在创建出来的工作台中,选择
Add panel
中的Add a new panel
添加一个新的面板。
-
- 在右上角
Time series
(时序图)位置可以切换展示的图表样式(柱状图、仪表盘、表格、饼图等等) - 右侧边栏为该图表配置相关信息:标题、描述
- 图表下方可以配置该图表展示的数据的查询语句,例如:
- 在右上角
-
-
- FROM:
cpu_usage_total
(Grafana会自动获取InfluxDB数据库中的元数据,可以直接选择对应表名) - WHERE:添加一个条件,
container_name=cadvisor_v1
- ALIAS:配置一个别名,
CPU使用情况汇总
- FROM:
-