一、简介
通过docker stats命令可以查看当前宿主机上所有容器的CPU,内存以及网络流量数据。
但是docker stats统计结果是实时的且只能是当前宿主机的全部容器,没有地方存储、没有健康预警等 。
InfluxDB用于存储CAdvisor监控到的容器CPU、内存、网络流量信息等数据
InfluxDB是一个由InfluxData开发的开源时序型数据库,专注于海量时序数据的高性能读、高性能写、高效存储与实时分析等,在DB-Engines Ranking时序型数据库排行榜上排名第一,广泛应用于DevOps监控、IoT监控、实时分析等场景。
CAdvisor用于实时监控容器的CPU、内存、网络流量信息等
CAdvisor是一个开源的容器监控工具,它提供良好的 Web 界面,方便查询。 它可以轻松地获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。
Grafana用于展示容器的实时运行状态
Grafana是一个开源的,拥有丰富的图表编辑的指标分析平台,Grafana专注于时序类图表分析,而且支持多种数据源,如Graphite、InfluxDB、Elasticsearch、Mysql、K8s、Zabbix等。
二、系统部署
使用docker-compose容器编排,实现一键部署监控平台
新建一个文件夹,在里面创建docker-compose.yml文件,将如下内容粘贴进去保存
version: '3.1'
volumes:
grafana_data: {}
services:
influxdb:
image: tutum/influxdb
restart: always
environment:
- PRE_CREATE_DB=monitor
ports:
- "8083:8083"
- "8086:8086"
volumes:
- ./data/influxdb:/data
cadvisor:
image: google/cadvisor
links:
- influxdb:influxsrv
command:
-storage_driver=influxdb
-storage_driver_db=monitor
-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=root
- HTTP_PASS=root
- INFLUXDB_HOST=influxsrv
- INFLUXDB_PORT=8086</pre>
docker-compose.yml文件命令解释
version: '3.1' - 指定文件使用的Docker Compose版本为3.1。
services: - 定义了多个服务(service),每个服务代表一个容器。
influxdb: - 定义了一个名为influxdb的服务,使用了tutum/influxdb镜像,并配置了一些环境变量和端口映射。
image: tutum/influxdb - 指定了服务使用的镜像为tutum/influxdb。
environment: - 定义服务的环境变量。
ports: - 定义服务的端口映射。
cadvisor: - 定义一个名为cadvisor的服务,使用了google/cadvisor镜像,并配置了一些环境变量和端口映射。
image: google/cadvisor - 指定了服务使用的镜像为google/cadvisor。
links: - 定义了服务与influxdb服务之间的链接关系。
command: - 定义服务启动时执行的命令。
ports: - 定义服务的端口映射。
grafana: - 定义一个名为grafana的服务,使用了grafana/grafana镜像,并配置了一些环境变量、端口映射和卷。
user: "104" - 指定服务运行的用户ID为104。
image: grafana/grafana - 指定服务使用的镜像为grafana/grafana。
restart: always - 容器跟随docker进程重启。
links: - 定义服务与influxdb服务之间的链接关系。
ports: - 定义服务的端口映射。
•
environment: - 定义服务的环境变量。</pre>
一键启动容器
docker compose up -d #-d表示后台运行
#查看容器是否启动成功
docker ps
使用宿主机IP+映射的端口号在浏览器中访问
10.10.10.12:8080 #CAdvisor
10.10.10.12:8083 #InluxDB
10.10.10.12:3000 #Granfana</pre>
此时在数据库中查询cpu、内存的信息是否被正确写入
#进入 InfluxDB容器内部查询
docker exec -it keshihua-influxdb-1 bash #容器名称根据自己的本机生成的来修改
#进入后输入influx进入数据库交互页面</pre>
查询数据库内的表,有如下内容则表示数据被正确写入了
SHOW MEASUREMENTS
配置Granfana页面
配置数据来源
选择InfluxDB数据库作为数据来源
设置数据库地址
配置数据库库名与管理用户和密码(账号密码默认为root),最后点击save弹出绿色对勾表示数据库连接成功
接下来创建一个新的监控页面
选择你喜欢的图表样式
在这里选择你想要展示的信息,点击下方的Query可以添加多个
保存当前图表,点击右上角的save输入一个名称即可保存成功