Docker 容器监控-CIG

news2024/9/27 9:23:17

目录

一、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.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:配置注释

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.coloradmin.cn/o/1438651.html

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

相关文章

服装设计公司,如何用钉钉实现企业数字化成功转型?

钉钉作为数字化工作平台,为某服装设计公司实现了组织管理的数字化转型,构建了一站式的工作平台。通过钉钉赋能,有利于企业推进组织架构、员工沟通、产品运营和客户服务等方面的数字化、智能化转型。 借助钉钉平台,该服设公司轻松实…

澳福实例说明真实交易中止损单和限价单的区别

很多投资者不明白止损单和限价单的区别,今天澳福就举一个例子来说明真实交易中止损单和限价单的区别。 紫色椭圆显示了在欧元兑美元图表上的位置,在不稳定的增长之后,澳福 外汇看到了另一波修正,没有看涨的迹象。同时也发现从历史…

MOS管防反接电路设计

电子元件大都是使用直流工作,电源线反接就有可能就会烧坏,那电路如何防反接?首当其冲我们想到的就是二极管了,运用其单向导通特性可有效防止电源反接而损坏电路,但是随之而来的问题是二极管存在PN节电压,通…

协同算法的无人机集群控制理论技术分析,无人机集群飞行技术详解

随着无人机技术的普及和发展,无人机集群控制也逐渐成为了研究热点之一。而协同算法是实现无人机集群控制的重要手段之一。 在无人机集群控制中,协同算法确实是非常关键的部分。这些算法帮助无人机在复杂的飞行环境中保持队形,同时避免碰撞&a…

Python调用matlab程序

matlab官网:https://ww2.mathworks.cn/?s_tidgn_logo matlab外部语言和库接口,包括 Python、Java、C、C、.NET 和 Web 服务。 matlab和python的版本 安装依赖配置 安装matlab的engine 找到matlab的安装目录:“xxx\ extern\engines\python…

提示由于找不到msvcp120dll无法继续执行此代码怎么办

在计算机系统中,MSVCP120.dll是一个至关重要的动态链接库文件,它是Microsoft Visual C Redistributable Package的一部分,对于许多基于Windows的应用程序运行至关重要。当系统提示“msvcp120dll丢失”时,意味着该文件可能由于误删…

收到微信发的年终奖。。。

大家好,我是小悟 还剩一天就过除夕了,很多单位都已经放假了,街上的人越来越少,门店关着的很多,说明大家都陆陆续续回自己的家乡过年了。 或许你还在搬砖,坚守节前最后一波工作,或许你正在回家的…

必收藏!第六版CCF推荐会议C类国际学术会议!(中国计算机学会)

中国计算机学会 中国计算机学会(CCF)是全国性、学术性、非营利的学术团体,由从事计算机及相关科学技术领域的个人和单位自愿组成。作为独立社团法人,CCF是中国科学技术协会的成员之一,是全国一级学会! CCF的…

算法——前缀和算法

1. 什么是前缀和算法 前缀和算法(Prefix Sum)是一种用于快速计算数组元素之和的技术。它通过预先计算数组中每个位置前所有元素的累加和,将这些部分和存储在一个新的数组中,从而在需要计算某个区间的和时,可以通过简单…

电脑没有声音是怎么回事?几招快速解决

当电脑突然失去声音,这可能成为一种令人烦恼的体验,尤其是在你期望享受音乐、观看视频或进行在线会议的时候。幸运的是,大多数时候,电脑没有声音的问题是可以迅速解决的。电脑没有声音是怎么回事?本文将为你介绍一些常…

2024.2.7日总结(小程序开发4)

页面导航 页面导航是页面之间的相互跳转&#xff1a; <a>链接location.href 小程序中实现页面导航的两种方式&#xff1a; 声明式导航 在页面上声明一个<navigator>导航组件通过点击<navigator>组件实现页面跳转 编程式导航 调用小程序的导航API&…

【数据结构与算法】二叉树(Binary Tree)

相关推荐&#xff1a;堆&#xff08;Heap&#xff09; / 堆排序&#xff08;HeapSort&#xff09; / TopK 文章目录 1.树1.1 树相关概念1.2 举例树的应用 2. 二叉树2.1 二叉树分类2.2 特殊的二叉树2.3 二叉树的存储结构 3. 二叉树实现与热门问题 1.树 树是一种非线性的数据结构…

详解C++类和对象(下)完结篇

文章目录 写在前面1. 进一步认识构造函数1.1 初始化列表1.2 初始化列表的特性1.3 explicit关键字 2. static成员变量和static成员函数2.1 static成员的概念2.2 static成员的特性 3. 友元3.1 友元函数3.1 友元类 4. 内部类5.匿名对象 写在前面 本篇文章详细介绍了C类和对象中几…

基于SpringBoot+Vue的校园博客管理系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

计算机网络-华为无线网络配置

前面已经大致了解了无线通信的原理和无线组网的概念&#xff0c;今天来学习无线的配置过程与步骤。 一、无线组网配置流程 在开始配置前复习下前面讲过无线组网有涉及几个设备&#xff0c;AC无线控制器、AP无线接入点、POE交换机。无线组网与有线组网是相对独立的&#xff0c;不…

SpringBoot配置文总结

官网配置手册 官网&#xff1a;https://spring.io/ 选择SpringBoot 选择LEARN 选择 Application Properties 配置MySQL数据库连接 针对Maven而言&#xff0c;会搜索出两个MySQL的连接驱动。 com.mysql mysql-connector-j 比较新&#xff0c;是在mysql mysql-connect…

RK3568平台 设备模型sysfs文件系统

一.什么是 sysfs 文件系统 sysfs 文件系统是 Linux 内核提供的一种虚拟文件系统&#xff0c;用于向用户空间提供内核中设备&#xff0c;驱动程序和其他内核对象的信息。它以一种层次结构的方式组织数据&#xff0c;并将这些数据表示为文件和目录&#xff0c;使得用户空间可以通…

仰暮计划|“​爷爷说这些话的时候眼睛都红着,他那变形的脊柱和瘸拐的双腿都证明他曾为这个家付出了血汗拼尽了全力”

赴一场拾光之旅&#xff0c;集往年回忆碎片 爷爷生于1952年&#xff0c;今年已有七十一了&#xff0c;是河南焦作沁阳北金村的一位地道农民&#xff0c;劳苦一生&#xff0c;如今终于得以颐养天年。许是早年经历过于难忘&#xff0c;爷爷如今与我讲起仍是记忆犹新&#xff0c;…

【机器学习】机器学习流程之收集数据

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

Leetcode刷题笔记题解(C++):590. N 叉树的后序遍历

思路&#xff1a;类似于二叉树的排序&#xff0c;这里需要将子树进行依次递归遍历&#xff0c;前序遍历也与之类似 /* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node() {}Node(int _val) {val _val;}Node(int _val, vector<N…