介绍 docker 可视化管理软件与容器监控
Portainer:
Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境
下载安装:
按照官方文档步骤进行安装即可,如果需要打开 HTTP 端口,必须添加 -p 9000:9000
—restart=always 的意思是如果 docker 重启,该容器也进行重新启动
docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
软件介绍:
访问 9000 端口,第一次访问需要设置密码,密码长度为八位
创建Nginx:
演示在容器页中创建 nginx 容器
CAdvisor + InfluxDB+Granfana:
由于 CAdvisor 记录的数据保存的时间太短,且监控不够全面,因此需要配合 InfluxDB 与 Granfana 进行使用,该监控平台方案简称 CIG
原生命令是 docker stats、docker info 等
软件介绍:
cAdvisor:
CAdvisor 是一个容器资源监控工具包,同时提供了WEB页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据,而且只是针对单物理机。不过提供了很多数据集成接口,支持 InfluxDB、Redis、Kafka、Elasticsearch 等集成,可以加上对应配置将监控数据发往这些数据库存储起来
主要有两点:
1. 展示Host和容器两个层次的监控数据
2. 展示历史变化数据
InfluxDB:
InfluxDB 是用Go语言编写的一个开源分布式时序事件和指标数据库,无需外部依赖。CAdvisor 默认只在本机保存最近2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到 InfluxDB 中 InfluxDB 专门用于存储时序相关数据,很适给存储 CAdvisor 的数据。且 CAdvisor 本身已提供了 InfluxDB 的集成方法,在启动容器时指定配置即可
主要功能如下:
1. 基于时间序列,支持与时间有关的相关函数( 如最大、最小、求和等 )
2. 可度量性:可以实时对大量数据进行计算
3. 基于事件:它支持任意的事件数据
Granfana:
Grafana 是一个开源的数据监控分析可视化平台,支持多种数据源配置和丰富的插件及模板功能,支持图表权限控制和报警
主要功能如下:
1. 灵活丰富的图形化选项
2. 可以混合多种风格
3. 支持白天和夜间模式
4. 多个数据源
创建CIG:
编写 docker-compose.yml :
创建 CIG 所需 docker-compose.yml 文件
version: '3.1'
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
user: "104"
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
创建完成后登录各自的 Web 页面进行测试,查看其是否都能正常使用
CAdvisor 测试:
访问宿主机的 8080 端口即可进行访问
http://ip:8080/
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21405095/1660404225095-8fbe1f0f-392e-46a4-adf8-a4d0b8806176.png#clientId=u5ee6b053-e066-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=319&id=u17a10d82&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1379&originWidth=2560&originalType=binary&ratio=1&rotation=0&showTitle=true&size=199005&status=done&style=stroke&taskId=u1ecba962-47fc-4b55-933d-38a3a3bd8df&title=CAdvisor%20%E7%9A%84%20Web%20%E9%A1%B5&width=593 "CAdvisor 的 Web 页")<br />
InfluxDB 测试:
访问宿主机的 8083 端口即可进行访问
http://ip:8083/
Granfana 测试:
访问宿主机的 3000 端口即可进行访问,默认登录账号与密码均为 admin
http://ip:3000/
配置数据源:
在 Granfana 中指定显示的数据源为 InfluxDB ,并配置数据库参数
配置首页:
演示如何创建一个新的监控模块
数据查询配置:
在刚才创建的模块中设置需要查询显示的数据,这里以显示指定容器的CPU占用情况为例进行演示