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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/673836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金融行业专题|证券超融合架构转型与场景探索合集(2023版)

更新内容 更新 SmartX 超融合在证券行业的覆盖范围、部署规模与应用场景。新增操作系统信创转型、Nutanix 国产化替代、网络与安全等场景实践。更多超融合金融核心生产业务场景实践,欢迎阅读文末电子书。 在金融行业如火如荼的数字化转型大潮中,传统架…

路由器如何映射端口映射?

在现代互联网中,随着网络应用的不断发展,很多用户需要进行远程访问或搭建服务器来满足自己的需求。由于网络安全的原因,直接将内网设备暴露在公网中是非常危险的。为了解决这个问题,路由器映射端口映射技术应运而生。本文将介绍什…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Span组件 鸿蒙(HarmonyOS)作为Text组件的子组件&#xff0…

C#基础-线程暂停方案之重置事件

默认情况下,一个线程的特定指令相对于另一个线程中的指令的执行时机是不确定的,如果想要对这种不确定性进行控制,其中一种办法就是使用重置事件(虽然称为事件,但是跟C#的委托跟事件没关系)。 重置事件用于…

uniapp 开发App 权限授权 js-sdk

从官网的插件市场下载的: 直接上代码: /*** 本模块封装了Android、iOS的应用权限判断、打开应用权限设置界面、以及位置系统服务是否开启*/var isIos // #ifdef APP-PLUS isIos (plus.os.name "iOS") // #endif// 判断推送权限是否开启 fu…

Excel VBA exit退出循环

Excel VBA exit退出循环 exit for退出for循环,exit do用于退出do 或 do while循环: 获取非空行 Function GetNotNullRow(ByVal iStartRow, ByRef iRow) Dim Rng As Range For Each Rng In Range(“B” & iStartRow & “:” & “P” & …

【开源】JAVA+Vue+SpringBoot实现公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

微信小程序新手入门教程四:样式设计

WXSS (WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式,决定了 WXML 的组件会怎么显示。 WXSS 具有 CSS 大部分特性,同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。与 CSS 相比,WXSS …

Tkinter教程21:Listbox列表框+OptionMenu选项菜单+Combobox下拉列表框控件的使用+绑定事件

------------★Tkinter系列教程★------------ Tkinter教程21:Listbox列表框OptionMenu选项菜单Combobox下拉列表框控件的使用绑定事件 Tkinter教程20:treeview树视图组件,表格数据的插入与表头排序 Python教程57:tkinter中如何…

Flink Format系列(2)-CSV

Flink的csv格式支持读和写csv格式的数据,只需要指定 format csv,下面以kafka为例。 CREATE TABLE user_behavior (user_id BIGINT,item_id BIGINT,category_id BIGINT,behavior STRING,ts TIMESTAMP(3) ) WITH (connector kafka,topic user_behavior…

Python中的权限控制

面向对象的三大特征: 1.封装:隐藏内部细节,对外提供操作方式。 权限控制:是通过对属性或方法添加单下划线、双下划线以及首尾下划线来实现 单下划线开头:以单下划线开头的属性或方法表示protected受保护的成员&…

GPT4_VS_ChatGPT(from_nytimes)

GPT4 VS ChatGPT(from nytimes ) 正如文章官网博文:https://openai.com/research/gpt-4所述,GPT4仍有很多不足之处,还不及人类水平。纽约时报报道了一些人体验GPT4的效果和一些评价: Cade Metz 要求专家使…

什么是制动电阻器?工作及其应用

电梯、风力涡轮机、起重机、升降机和电力机车的速度控制是非常必要的。因此,制动电阻器是这些应用不可或缺的一部分,因为它们是电动机驱动器中最常用的高功率电阻器,用于控制其速度,在运输、海事和建筑等行业中。 电动火车主要比柴…

navigator.mediaDevices.getUserMedia获取本地音频/麦克权限并提示用户

navigator.mediaDevices.getUserMedia获取本地音频/麦克权限并提示用户 效果获取权限NotFoundErrorNotAllowedError 代码 效果 获取权限 NotFoundError NotAllowedError 代码 // 调用 captureLocalMedia()// 方法 function captureLocalMedia() {console.warn(Requesting lo…

redis特点

一、redis线程模型有哪些,单线程为什么快? 1、IO模型维度的特征 IO模型使用了多路复用器,在linux系统中使用的是EPOLL 类似netty的BOSS,WORKER使用一个EventLoopGroup(threads1) 单线程的Reactor模型,每次循环取socket中的命令…

oracle 启动命令以及ORA-01033问题处理、删除归档日志

1 启动数据库:startup 2 关闭数据库:Shutdown immediate 3 查看监听状态:lsnrctl status 4 启动监听:lsnrctl start 5 停止监听:lsnrctl stop 常见问题 1、在服务器重启后会出现,Oracle ORA-01033: ORAC…

Java线程是怎么实现run方法的执行的呢?【 多线程在JVM中的实现原理剖析】

Java线程是怎么实现run方法的执行的呢?【 多线程在JVM中的实现原理剖析】 查看naive state0 方法JVM_StartThread 方法创建操作系统线程操作系统线程执行 本文转载-极客时间 我们知道Java线程是通过行start()方法来启动的,线程启动后会执行run方法内的代…

数据可视化教程!我将全程出镜解说

你好,我是郭震 数据和算力是助推AI成功的关键二要素,洞察数据背后奥秘的重要手段之一便是数据可视化。 数据可视化无论在论文发表,还是商业数据分析中都扮演着举足轻重的作用。 一句话:一图胜千言。 从今天开始,我会逐…

FATFS学习笔记——FATFS写文件的两种方式

1.以hex文件直接写: 适用于需要保存比较大的数据时,无需进行格式化处理,直接保存文件 FIL file;FRESULT res;UINT bytes_written;// 创建文件res f_open(&file, "0:/FATFS/TestData.txt", FA_CREATE_ALWAYS | FA_WRITE);if (res ! FR_OK…

【Script】使用pyOpenAnnotate搭建半自动标注工具(附python源码)

文章目录 0. Background1. Method2. Code3. Example: 雄鹿红外图像标注3.1 选择色彩空间3.2 执行阈值3.3 执行形态学操作3.4 轮廓分析以找到边界框3.5 过滤不需要的轮廓3.6 绘制边界框3.7 以需要的格式保存Reference本文将手把手教你用Python和OpenCV搭建一个半自动标注工具(包…