Docker容器监控-CIG

目录

一、CIG说明

[1. CAdvisor](#1. CAdvisor)

[2. InfluxDB](#2. InfluxDB)

[3. Grafana](#3. Grafana)

二、环境搭建

[1. 创建目录](#1. 创建目录)

[2. 编写 docker-compose.yml](#2. 编写 docker-compose.yml)

[3. 检查并运行容器](#3. 检查并运行容器)

三、进行测试

[1. 查看 influxdb 存储服务 是否能正常访问](#1. 查看 influxdb 存储服务 是否能正常访问)

[2. 查看 cAdvisor 收集服务能否正常访问](#2. 查看 cAdvisor 收集服务能否正常访问)

[3. 查看 grafana 展现服务,并且配置展现模板](#3. 查看 grafana 展现服务,并且配置展现模板)

[1. 进行登录](#1. 进行登录)

[2 .配置数据源](#2 .配置数据源)

[3. 配置面板panel](#3. 配置面板panel)


一、CIG说明

C Advisor+I nfluxDB+Granfana 组成的CIG的监控。

1. CAdvisor

CAdvisor 是由 Google 开源的一个用于监控容器资源使用情况的工具。它能够实时收集 Docker 容器的 CPU 使用率内存使用量磁盘 I/O网络流量 等指标,并将这些数据暴露为 Prometheus 格式的监控端点 ,供 Prometheus 或其他监控系统使用。cAdvisor 还提供了一个简单的 Web 界面,可以用于实时查看容器的监控数据。

2. InfluxDB

InfluxDB 是一个开源的时序数据库 ,专门设计用于处理时间序列数据。在 CIG 监控系统中,InfluxDB 用于存储由 cAdvisor 收集的容器监控数据。用户可以通过查询 InfluxDB 数据库来获取 历史的容器监控指标,并利用其强大的时序查询语言进行数据分析和可视化。

3. Grafana

Grafana 是一个开源的数据可视化工具,用于创建、查看和共享监控仪表盘。在 CIG 监控系统中,Grafana 与 InfluxDB 集成,可以直接从 InfluxDB 中查询容器监控数据,并通过可视化方式展示在用户界面上。用户可以根据自己的需求定制仪表盘,选择合适的 图表类型 、添加 告警规则,并将仪表盘分享给其他用户。

通过将 cAdvisorInfluxDBGrafana 这三个组件结合在一起,用户可以构建一个强大而灵活的容器监控系统,实现对 Docker 容器的全面监控和管理。该系统具有 实时性可扩展性易用性 等特点,适用于各种规模的容器化环境。

二、环境搭建

1. 创建目录

bash 复制代码
mkdir /mydocker/cig
cd /mydocker/cig

2. 编写 docker-compose.yml

bash 复制代码
vim docker-compose.yml
XML 复制代码
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=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
 
 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

ps:配置注释

XML 复制代码
version: '3.1'

volumes:
  grafana_data: {}  # 定义 Grafana 数据卷,用于持久化数据

services:
  influxdb:
    image: tutum/influxdb:0.9  # 使用 InfluxDB 0.9 版本镜像
    restart: always  # 总是重启容器
    environment:
      - PRE_CREATE_DB=cadvisor  # 预创建名为 cadvisor 的数据库
    ports:
      - "8083:8083"  # InfluxDB Web 可视化页面端口
      - "8086:8086"  # InfluxDB API 端口
    volumes:
      - ./data/influxdb:/data  # 挂载 InfluxDB 数据到本地目录

  cadvisor:
    image: google/cadvisor  # 使用 Google/cAdvisor 镜像
    links:
      - influxdb:influxsrv  # 链接到 InfluxDB 服务
    command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086  # 定义 cadvisor 启动命令
    restart: always  # 总是重启容器
    ports:
      - "8080:8080"  # cAdvisor 端口
    volumes:
      - /:/rootfs:ro  # 挂载根目录为只读
      - /var/run:/var/run:rw  # 挂载/var/run目录为读写
      - /sys:/sys:ro  # 挂载/sys目录为只读
      - /var/lib/docker/:/var/lib/docker:ro  # 挂载/var/lib/docker目录为只读

  grafana:
    user: "104"  # 指定容器用户
    image: grafana/grafana  # 使用 Grafana 镜像
    restart: always  # 总是重启容器
    links:
      - influxdb:influxsrv  # 链接到 InfluxDB 服务
    ports:
      - "3000:3000"  # Grafana 端口
    volumes:
      - grafana_data:/var/lib/grafana  # 挂载 Grafana 数据到数据卷
    environment:
      - HTTP_USER=admin  # 设置 Grafana 登录用户名
      - HTTP_PASS=admin  # 设置 Grafana 登录密码
      - INFLUXDB_HOST=influxsrv  # 设置 InfluxDB 主机
      - INFLUXDB_PORT=8086  # 设置 InfluxDB 端口
      - INFLUXDB_NAME=cadvisor  # 设置 InfluxDB 数据库名称
      - INFLUXDB_USER=root  # 设置 InfluxDB 用户名
      - INFLUXDB_PASS=root  # 设置 InfluxDB 密码

ps:如果出错记得检查是否有空格没有删除

3. 检查并运行容器

bash 复制代码
# 检查配置,有问题才有输出
docker compose config -q
# -d 后台启动
docker compose up -d

检查容器是否正常启动

bash 复制代码
docker ps
# 如果运行出错别忘记了查看日志
docker logs 【容器名称/容器ID】

三、进行测试

1. 查看 influxdb 存储服务 是否能正常访问

bash 复制代码
http://192.168.xxx.xxx:8083/

进入之后查看我们在 docker-compose.yml 配置文件中默认创建的数据库是否已经创建

bash 复制代码
Show databases

2. 查看 cAdvisor 收集服务能否正常访问

bash 复制代码
http://192.168.xxx.xxx:8083/

3. 查看 grafana 展现服务,并且配置展现模板

1. 进行登录

grafana 默认帐户密码 (admin/admin),在登录之后需要设置一个新的密码

bash 复制代码
http://192.168.xxx.xxx:3000/

2 .配置数据源

找到 InfluxDB 数据库

填写数据源链接 http://influxdb:8086

然后向下滑动,配置数据库连接账号密码。

  • Database:cadvisor
  • User:root
  • Password:root

docker-compose.yml 配置文件中在创建 influxdb 时创建

3. 配置面板panel

FROM:cpu_usage_total(Grafana会自动获取InfluxDB数据库中的元数据,可以直接选择对应表名)

WHERE:添加一个条件,container_name=/

ALIAS:配置一个别名,CPU使用情况汇总

相关推荐
大母猴啃编程1 小时前
Linux权限
linux·运维·服务器
厦门辰迈智慧科技有限公司3 小时前
高速公路自动化安全监测主要内容
运维·物联网·安全·自动化
运维开发王义杰4 小时前
告别手动迁移:使用 PowerShell 一键导出 IIS 配置,让服务器迁移更轻松
运维·服务器·windows
阿巴~阿巴~4 小时前
深入理解Linux文件操作:stdin/stdout/stderr与C语言文件函数全解析
linux·运维·服务器
阿巴~阿巴~4 小时前
深度解析Linux文件I/O三级缓冲体系:用户缓冲区→标准I/O→内核页缓存
linux·运维·服务器
2301_785251414 小时前
上网行为管理-web认证服务
运维·服务器·网络
塑遂5 小时前
kubernetes pod深度理解
云原生·容器·kubernetes
楼田莉子5 小时前
Linux学习之认识Linux的基本指令
linux·运维·服务器·开发语言·学习
GIS数据转换器5 小时前
铁路基础设施无人机巡检技术及管理平台
运维·安全·microsoft·自动化·无人机
大母猴啃编程5 小时前
Linux基础开发工具
linux·运维·服务器