当前位置: 首页 > news >正文

Docker容器监控-CIG

目录

一、CIG说明

1. CAdvisor

2. InfluxDB

3. Grafana

二、环境搭建

1. 创建目录

2. 编写 docker-compose.yml

3. 检查并运行容器

三、进行测试

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

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

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

1. 进行登录

2 .配置数据源

3. 配置面板panel


一、CIG说明

CAdvisor+InfluxDB+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. 创建目录

mkdir /mydocker/cig
cd /mydocker/cig

2. 编写 docker-compose.yml

vim docker-compose.yml
version: '3.1'volumes:grafana_data: {}services:influxdb:image: tutum/influxdb:0.9restart: alwaysenvironment:- PRE_CREATE_DB=cadvisorports:- "8083:8083"- "8086:8086"volumes:- ./data/influxdb:/datacadvisor:image: google/cadvisorlinks:- influxdb:influxsrvcommand: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086restart: alwaysports:- "8080:8080"volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rografana:user: "104"image: grafana/grafanauser: "104"restart: alwayslinks:- influxdb:influxsrvports:- "3000:3000"volumes:- grafana_data:/var/lib/grafanaenvironment:- HTTP_USER=admin- HTTP_PASS=admin- INFLUXDB_HOST=influxsrv- INFLUXDB_PORT=8086- INFLUXDB_NAME=cadvisor- INFLUXDB_USER=root- INFLUXDB_PASS=root

ps:配置注释

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. 检查并运行容器

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

检查容器是否正常启动

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

三、进行测试

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

http://192.168.xxx.xxx:8083/

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

Show databases

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

http://192.168.xxx.xxx:8083/

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

1. 进行登录

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

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使用情况汇总

相关文章:

  • YOLOv5改进 | 一文汇总:如何在网络结构中添加注意力机制、C3、卷积、Neck、SPPF、检测头
  • 论文阅读-Pegasus:通过网络内一致性目录容忍分布式存储中的偏斜工作负载
  • 【云原生进阶之PaaS中间件】第三章Kafka-4.2-生产者工作原理剖析
  • PCIE Order Set
  • 中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第一套(完善程序题)
  • uni-app 经验分享,从入门到离职(年度实战总结:经验篇)——上传图片以及小程序隐私保护指引设置
  • django中查询优化
  • docker 2:安装
  • 数据分析基础之《pandas(7)—高级处理2》
  • 详解结构体内存对齐及结构体如何实现位段~
  • OSDI 2023: Conveyor One-Tool-Fits-All Continuous Software Deployment at Meta
  • Spring Boot 笔记 005 环境搭建
  • 三星4621NS加粉后清零方法
  • C#系列-C#EF框架返回单个值(23)
  • 单例模式 C++
  • echarts的各种常用效果展示
  • ES6简单总结(搭配简单的讲解和小案例)
  • es的写入过程
  • github从入门到放弃(1)
  • React Native移动开发实战-3-实现页面间的数据传递
  • Vue学习第二天
  • 关于for循环的简单归纳
  • 排序(1):冒泡排序
  • 以太坊客户端Geth命令参数详解
  • postgresql行列转换函数
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (0)Nginx 功能特性
  • (2)STL算法之元素计数
  • (52)只出现一次的数字III
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)丶RabbitMQ的六大核心
  • (转)甲方乙方——赵民谈找工作
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .Net core 6.0 升8.0
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .net连接oracle数据库
  • @GlobalLock注解作用与原理解析
  • [20190113]四校联考
  • [30期] 我的学习方法
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [BT]BUUCTF刷题第4天(3.22)
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [bzoj1038][ZJOI2008]瞭望塔
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [docker]docker网络-直接路由模式
  • [Hive] INSERT OVERWRITE DIRECTORY要注意的问题
  • [ios-必看] IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS