介绍 docker 可视化管理软件与容器监控

Portainer:

Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境

下载安装:

按照官方文档步骤进行安装即可,如果需要打开 HTTP 端口,必须添加 -p 9000:9000
—restart=always 的意思是如果 docker 重启,该容器也进行重新启动

  1. 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

image.png

软件介绍:

访问 9000 端口,第一次访问需要设置密码,密码长度为八位
image.png
image.png
image.png
image.png

创建Nginx:

演示在容器页中创建 nginx 容器
image.png
image.png
image.png


CAdvisor + InfluxDB+Granfana:

由于 CAdvisor 记录的数据保存的时间太短,且监控不够全面,因此需要配合 InfluxDB 与 Granfana 进行使用,该监控平台方案简称 CIG
原生命令是 docker stats、docker info
image.png

软件介绍:

cAdvisor:

CAdvisor 是一个容器资源监控工具包,同时提供了WEB页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据,而且只是针对单物理机。不过提供了很多数据集成接口,支持 InfluxDB、Redis、Kafka、Elasticsearch 等集成,可以加上对应配置将监控数据发往这些数据库存储起来
主要有两点:

  1. 1. 展示Host和容器两个层次的监控数据
  2. 2. 展示历史变化数据

InfluxDB:

InfluxDB 是用Go语言编写的一个开源分布式时序事件和指标数据库,无需外部依赖。CAdvisor 默认只在本机保存最近2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到 InfluxDB 中 InfluxDB 专门用于存储时序相关数据,很适给存储 CAdvisor 的数据。且 CAdvisor 本身已提供了 InfluxDB 的集成方法,在启动容器时指定配置即可
主要功能如下:

  1. 1. 基于时间序列,支持与时间有关的相关函数( 如最大、最小、求和等
  2. 2. 可度量性:可以实时对大量数据进行计算
  3. 3. 基于事件:它支持任意的事件数据

Granfana:

Grafana 是一个开源的数据监控分析可视化平台,支持多种数据源配置和丰富的插件及模板功能,支持图表权限控制和报警
主要功能如下:

  1. 1. 灵活丰富的图形化选项
  2. 2. 可以混合多种风格
  3. 3. 支持白天和夜间模式
  4. 4. 多个数据源

创建CIG:

编写 docker-compose.yml :

创建 CIG 所需 docker-compose.yml 文件

  1. version: '3.1'
  2. volumes:
  3. grafana_data: {}
  4. services:
  5. influxdb:
  6. image: tutum/influxdb:0.9
  7. restart: always
  8. environment:
  9. - PRE_CREATE_DB=cadvisor
  10. ports:
  11. - "8083:8083"
  12. - "8086:8086"
  13. volumes:
  14. - ./data/influxdb:/data
  15. cadvisor:
  16. image: google/cadvisor
  17. links:
  18. - influxdb:influxsrv
  19. command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
  20. restart: always
  21. ports:
  22. - "8080:8080"
  23. volumes:
  24. - /:/rootfs:ro
  25. - /var/run:/var/run:rw
  26. - /sys:/sys:ro
  27. - /var/lib/docker/:/var/lib/docker:ro
  28. grafana:
  29. user: "104"
  30. image: grafana/grafana
  31. user: "104"
  32. restart: always
  33. links:
  34. - influxdb:influxsrv
  35. ports:
  36. - "3000:3000"
  37. volumes:
  38. - grafana_data:/var/lib/grafana
  39. environment:
  40. - HTTP_USER=admin
  41. - HTTP_PASS=admin
  42. - INFLUXDB_HOST=influxsrv
  43. - INFLUXDB_PORT=8086
  44. - INFLUXDB_NAME=cadvisor
  45. - INFLUXDB_USER=root
  46. - INFLUXDB_PASS=root

image.png
image.png

创建完成后登录各自的 Web 页面进行测试,查看其是否都能正常使用

CAdvisor 测试:

访问宿主机的 8080 端口即可进行访问

  1. http://ip:8080/
  1. ![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 端口即可进行访问

  1. http://ip:8083/

image.png

Granfana 测试:

访问宿主机的 3000 端口即可进行访问,默认登录账号与密码均为 admin

  1. http://ip:3000/

image.png
image.png

配置数据源:

在 Granfana 中指定显示的数据源为 InfluxDB ,并配置数据库参数
image.png
image.png
image.png

配置首页:

演示如何创建一个新的监控模块
image.png
image.png
image.png

数据查询配置:

在刚才创建的模块中设置需要查询显示的数据,这里以显示指定容器的CPU占用情况为例进行演示
image.png
image.png