基于Docker容器构建的监控系统

一、简介

通过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输入一个名称即可保存成功


image-20230819180816834.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值