828华为云征文 | 华为云Flexus X实例上实现Docker容器的实时监控与可视化分析

Docker容器监控之 CAdvisor+InfluxDB+Granfana

需要了解

  • 本文章主要讲述在 华为云Flexus X 实例上搭建开源的容器管理平台,使用的Web UI界面来简化和优化容器及集群的管理和监控
  • 选择合适的云服务器: 本文采用的是 华为云服务器 Flexus X 实例(推荐使用)
  • 连接方式: 本文通过本地shell 方式,通过弹性IP 远程连接至服务器,进行部署搭建
  • 操作系统版本: Huawei Cloud EulerOS 2.0
  • Docekr版本: Docker v27.1.1
  • Docekr-compose版本: Docker Compose v2.29.1
  • 服务器购买链接:华为云服务器 Flexus X 实例
  • Docekr搭建可参考文章: 华为FlexusX与Docker+Nginx的高效整合之路
  • 详细购买配置实例可参考文章: 快速部署华为云Flexus X实例,开启您的云端之旅
  • 部署期间所需资料文件都可私信进行获取

原生命令

查看正在运行的容器

[root@flexusx-251f ~]# docker ps
CONTAINER ID   IMAGE                                                                      COMMAND                  CREATED        STATUS        PORTS                                                                                            NAMES
3a888d70efa6   swr.cn-north-4.myhuaweicloud.com/cloud-wzs/portainer/portainer-ce:latest   "/portainer"             3 hours ago    Up 3 hours    0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp, 9000/tcp   portainer

实时显示Docker容器的资源使用情况

[root@flexusx-251f ~]# docker stats
CONTAINER ID   NAME        CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O     PIDS
3a888d70efa6   portainer   0.00%     23.55MiB / 11.53GiB   0.20%     597kB / 937kB     0B / 1.27MB   7
e837cf780e7d   blog        0.01%     268.7MiB / 11.53GiB   2.28%     68.3MB / 22.4MB   0B / 76.3MB   13
b08207cf4067   Mysql-db    0.02%     205.8MiB / 11.53GiB   1.74%     3.63MB / 33.7MB   0B / 92.7MB   33

通过 docker stats 命令可以很方便的看到当前宿主机上的所有容器的cpu,内存以及网络流量等数据。一般适用于小公司

docker stats 统计结果只是当前宿主机的全部容器,数据资料是实时的 ,没有地方存储,没有健康指标、过线预警等功能

容器监控三剑客

在这里插入图片描述

CAdvisor

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

CAdvisor功能主要有两点:

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

在这里插入图片描述

InfluxDB

InfluxDB使用Go语言编写的一个开源分布式时序、时间和指标数据库,无需外部依赖。

CAdvisor默认只能在本机保存最近两分钟的数据,为了持久化数据存储和统一收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一个时序数据库,专门用于数据时序相关数据,很适合存储CAdvisor的数据。而且,CAdvisor本身已经提供了InfluxDB的集成方法,启动容器时指定配置即可。

InfluxDB主要功能:

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

在这里插入图片描述

Granfana

Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源包括InfluxDB、MySQL、Elasticsearch、OpenTSDB、Graphite等)和丰富的插件及模版功能,支持图表权限控制和报警。

Grafana主要特性:

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

在这里插入图片描述

搭建流程

拉取镜像(由于网络原因,我已经提前将镜像上传至华为云镜像仓库,可直接进行拉取)

[root@flexusx-251f ~]# docker pull swr.cn-north-4.myhuaweicloud.com/cloud-wzs/tutum/influxdb:latest

[root@flexusx-251f ~]# docker pull swr.cn-north-4.myhuaweicloud.com/cloud-wzs/google/cadvisor:latest

[root@flexusx-251f ~]# docker pull swr.cn-north-4.myhuaweicloud.com/cloud-wzs/grafana/grafana:latest

我们通过docker-compose容器编排一套带走

# 查看版本
[root@flexusx-251f ~]# docker-compose --version
Docker Compose version v2.29.1

创建文件夹,编写yaml文件,以下是yaml文件内容

[root@flexusx-251f ~]# mkdir cig
[root@flexusx-251f ~]# cd cig/

[root@flexusx-251f cig]# vim docker-compose.yml
[root@flexusx-251f cig]# cat docker-compose.yml
# 指定Compose文件的版本  
version: '2.29.1'   
  
# 定义要使用的卷  
volumes:  
  grafana_data: {}  # 创建一个名为grafana_data的卷,用于Grafana的数据持久化  
  
# 定义服务(容器)  
services:  
  # InfluxDB服务  
  influxdb:  
    image: swr.cn-north-4.myhuaweicloud.com/cloud-wzs/tutum/influxdb:latest  # 使用tutum提供的InfluxDB 0.9版本镜像  
    restart: always  # 容器总是重启,无论退出状态如何  
    environment:  
      - PRE_CREATE_DB=cadvisor  # 在InfluxDB启动时预创建名为cadvisor的数据库  
    ports:  
      - "8083:8083"  # 将容器的8083端口映射到宿主机的8083端口(InfluxDB的Web管理界面)  
      - "8086:8086"  # 将容器的8086端口映射到宿主机的8086端口(InfluxDB的HTTP API)  
    volumes:  
      - ./data/influxdb:/data  # 将宿主机的./data/influxdb目录挂载到容器的/data目录,用于数据持久化  
  
  # cAdvisor服务  
  cadvisor:  
    image: swr.cn-north-4.myhuaweicloud.com/cloud-wzs/google/cadvisor:latest  # 使用google提供的cAdvisor最新版本镜像  
    links:  
      - influxdb:influxsrv  # 将influxdb服务链接到cadvisor,并在cadvisor中设置别名influxsrv  
    command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086  # 设置cAdvisor的存储驱动为InfluxDB,并指定数据库和主机  
    restart: always  # 容器总是重启  
    ports:  
      - "8081:8080"  # 将容器的8080端口映射到宿主机的8081端口(cAdvisor的Web界面)  
    volumes:  
      - /:/rootfs:ro  # 将宿主机的根文件系统挂载为只读,供cAdvisor监控  
      - /var/run:/var/run:rw  # 挂载宿主机的/var/run目录为读写,供cAdvisor访问某些运行时数据  
      - /sys:/sys:ro  # 挂载宿主机的/sys目录为只读,供cAdvisor获取系统信息  
      - /var/lib/docker/:/var/lib/docker:ro  # 挂载宿主机的Docker数据目录为只读,供cAdvisor监控Docker容器  
  
  # Grafana服务  
  grafana:  
    user: "104"  # 设置容器内运行用户为UID 104(可能需要确保UID在宿主机上存在或配置正确)  
    image: swr.cn-north-4.myhuaweicloud.com/cloud-wzs/grafana/grafana:latest  # 使用grafana提供的Grafana最新版本镜像  
    restart: always  # 容器总是重启  
    links:  
      - influxdb:influxsrv  # 将influxdb服务链接到grafana,并在grafana中设置别名influxsrv  
    ports:  
      - "3000:3000"  # 将容器的3000端口映射到宿主机的3000端口(Grafana的Web界面)  
    volumes:  
      - grafana_data:/var/lib/grafana  # 将之前定义的grafana_data卷挂载到容器的/var/lib/grafana目录,用于Grafana的数据持久化  
    environment:  
      - GF_SECURITY_ADMIN_USER=admin  # 设置Grafana的管理员用户名为admin  
      - GF_SECURITY_ADMIN_PASSWORD=admin  # 设置Grafana的管理员密码为admin  
      - INFLUXDB_HOST=influxsrv  # 设置Grafana连接InfluxDB的主机名为influxsrv(通过links别名)  
      - INFLUXDB_PORT=8086  # 设置Grafana连接InfluxDB的端口为8086  
      - INFLUXDB_DB=cadvisor  # 设置Grafana要连接的InfluxDB数据库为cadvisor  
      - INFLUXDB_USER=root  # 设置Grafana连接InfluxDB的用户名为root(注意:实际部署时可能需要更改)  
      - INFLUXDB_PASS=root  # 设置Grafana连接InfluxDB的密码为root(注意:实际部署时强烈建议更改)

运行docker-compose

[root@flexusx-251f cig]# docker-compose up

[root@flexusx-251f ~]# docker ps
CONTAINER ID   IMAGE                                                                      COMMAND                  CREATED          STATUS          PORTS                                                                                            NAMES
504ad3c17d38   swr.cn-north-4.myhuaweicloud.com/cloud-wzs/grafana/grafana:latest          "/run.sh"                42 seconds ago   Up 42 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp                                                        cig-grafana-1
d46793983d47   swr.cn-north-4.myhuaweicloud.com/cloud-wzs/google/cadvisor:latest          "/usr/bin/cadvisor -…"   42 seconds ago   Up 42 seconds   0.0.0.0:8081->8080/tcp, :::8081->8080/tcp                                                        cig-cadvisor-1
c72b95d62bc4   swr.cn-north-4.myhuaweicloud.com/cloud-wzs/tutum/influxdb:latest           "/run.sh"                42 seconds ago   Up 42 seconds   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp             cig-influxdb-1

放行安全组

放行端口3000,8081,8083

在这里插入图片描述

测试访问

CAdvisor收集服务

浏览器访问:http://localhost:8081

在这里插入图片描述

可以看到CPU、网络IO、磁盘IO等监控的可视化

在这里插入图片描述

influxdb存储服务

浏览器访问:http://localhost:8083

在这里插入图片描述

grafana展现服务

浏览器访问:http://localhost:3000

我们在docker-compose中指定过账号密码

进去需要修改新密码,在这我们将密码修改为 Huawei12#$

在这里插入图片描述

配置步骤

配置数据源

添加数据库

在这里插入图片描述

选择influxdb数据源

在这里插入图片描述

配置数据库文件

http://InfluxDB:8086

在这里插入图片描述

在这里插入图片描述

配置面板panel

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

至此,容器监控三剑客搭建成功

关闭和开启一定要在对应yaml文件路径下

[root@flexusx-251f ~]# cd cig/
[root@flexusx-251f cig]# docker-compose stop
WARN[0000] /root/cig/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Stopping 3/3
 ✔ Container cig-grafana-1   Stopped                                           0.1s
 ✔ Container cig-cadvisor-1  Stopped                                           0.1s
 ✔ Container cig-influxdb-1  Stopped                                          10.1s
[root@flexusx-251f cig]# docker-compose ls
NAME                STATUS              CONFIG FILES

总结

在华为云Flexusx实例上搭建容器监控三剑客(CAdvisor+InfluxDB+Grafana),实现了容器环境的全面监控与可视化分析。CAdvisor提供容器资源使用详情,InfluxDB高效存储时间序列数据,Grafana则将这些数据转化为直观图表。Flexusx实例的强大性能保障了监控系统的稳定运行,提升了运维效率与故障响应速度。此方案助力用户轻松掌握容器状态,优化资源配置,确保应用持续稳定运行。
现在华为云828刚好有活动,如果此服务器和业务也满足你的需求,那赶紧购买部署起来吧!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Prefetch文件分析

目录 介绍步骤 介绍 Prefetch(预读取),从Windows XP开始引入,用来加速应用程序启动过程。Prefetch包含可执行文件的名称、文件时间戳、运行次数、上次执行时间、Hash等。Win7上记录最近128个可执行文件的信息,Win8-10…

正点原子STM32F103+ESP8266+DS18B20+DHT11连接阿里云

文章目录 MQTT协议1. 基础知识2. 报文形式3. 连接报文4. 心跳报文5. 订阅报文5.1. 订阅主题报文SUBSCRIBE5.2. 订阅确认SUBACK5.3. 取消订阅UNSUBSCRIBE5.4. 取消订阅确认UNSUBACK 6. 发布报文6.1. 发布消息PUBLISH6.2. 发布确认PUBACK 7. 阿里云账号创建8. 网络调试助手接入阿…

Java | Leetcode Java题解之第389题找不同

题目&#xff1a; 题解&#xff1a; class Solution {public char findTheDifference(String s, String t) {int ret 0;for (int i 0; i < s.length(); i) {ret ^ s.charAt(i);}for (int i 0; i < t.length(); i) {ret ^ t.charAt(i);}return (char) ret;} }

Matplotlib 颜色设置详解

在使用matplotlib进行颜色绘制的时候,如绘制图表、背景色或者对文字设置的时候都可以配置颜色, 以下说明主流的三种颜色使用方法 颜色名称 可以是直接使用颜色名称的字符串对color进行赋值,包括可以使用首字母缩写或者完整拼写的形式,以下为部分颜色的书写形式 缩写版 • …

Spring Boot 多数据源配置(JPA)

目录 前言 前置环境 pom yml Entity Dao Config Controller 演示 前言 一般一个系统至少有一个数据源&#xff0c;用来持久化业务数据以及查询。单个数据源的系统很常见&#xff0c;在 Spring Boot 框架下配置也很简单。在约定大于配置这个思想下&#xff0c;只需要在…

递推,CF 353D - Queue

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 353D - Queue 二、解题报告 1、思路分析 手玩一下&#xff0c;我们发现相…

[数据集][目标检测]人脸口罩佩戴目标检测数据集VOC+YOLO格式8068张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8068 标注数量(xml文件个数)&#xff1a;8068 标注数量(txt文件个数)&#xff1a;8068 标注…

uniapp写的一个年月日时分秒时间选择功能

代码: <template><view><picker mode"multiSelector" :value"multiIndex" :range"multiRange" change"onMultiChange"><view class"picker">当前选择&#xff1a;{{ formattedDateTime }}</vie…

VisualStudio环境搭建C++

Visual Studio环境搭建 说明 C程序编写中&#xff0c;经常需要链接头文件(.h/.hpp)和源文件(.c/.cpp)。这样的好处是&#xff1a;控制主文件的篇幅&#xff0c;让代码架构更加清晰。一般来说头文件里放的是类的申明&#xff0c;函数的申明&#xff0c;全局变量的定义等等。源…

大路灯护眼灯有必要吗安全吗?性价比高落地护眼灯推荐

大路灯护眼灯有必要吗安全吗&#xff1f;近几年来&#xff0c;随着生活节奏的加快&#xff0c;目前青少年的近视率呈现一个直线上升的趋势&#xff0c;其中占比达到了70%以上&#xff0c;并且最令人意外的是小学生竟然也占着比较大的比重&#xff0c;这一系列的数据不仅表明着近…

MySQL(CRUD)

MySQL mysql -u root -ply MySQL的三层结构 1.安装MySQL数据库本质就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库. 2.一个数据库中可以创建多个表,以保存数据 SQL语句分类 1.DDL:数据定义语句[create 表,库] 2.DML:数据操作语句[增加insert,修改…

【Java】基于JWT+Token实现完整登入功能(实操)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 认识依赖4.2 使用JWT4.3 登入实现4.4 配置拦截器4.5 获取数据 五、总结&…

EMC技术

目录 EMC 天线效应 公式 措施 EMC测试 展频技术 如何展频 OTA测试 EMC 三大要素&#xff1a;干扰源、传输介质、敏感设备。 EMI&#xff1a;Electromagnetic Interference&#xff0c;电磁干扰。 EMS&#xff1a;Electro Magnetic Susceptibility&#xff0c;电磁抗扰…

二百五十九、Java——采集Kafka数据,解析成一条条数据,写入另一Kafka中(一般JSON)

一、目的 由于部分数据类型频率为1s&#xff0c;从而数据规模特别大&#xff0c;因此完整的JSON放在Hive中解析起来&#xff0c;尤其是在单机环境下&#xff0c;效率特别慢&#xff0c;无法满足业务需求。 而Flume的拦截器并不能很好的转换数据&#xff0c;因为只能采用Java方…

JVM系列(十) -垃圾收集器介绍

一、摘要 在之前的几篇文章中,我们介绍了 JVM 内部布局、对象的创建过程、运行期的相关优化手段以及垃圾对象的回收算法等相关知识。 今天通过这篇文章,结合之前的知识,我们一起来了解一下 JVM 中的垃圾收集器。 二、垃圾收集器 如果说收集算法是内存回收的方法论,那么…

集成电路学习:什么是NOR Flash Memory非易失性闪存存储器

一、NOR Flash Memory&#xff1a;非易失性闪存存储器 NOR Flash Memory&#xff0c;即非易失性闪存存储器的一种&#xff0c;是Flash存储器的一个重要分支。Flash存储器&#xff0c;又称为闪存&#xff0c;结合了ROM&#xff08;只读存储器&#xff09;和RAM&#xff08;随机存…

Windows下Python和PyCharm的应用(三)__Numpy与矩阵

1、背景介绍 矩阵运算是Python语言的基石。 而支持矩阵运算的基础语言包就是Numpy。 参考链接&#xff1a; Python中Numpy的使用_numpy在python中的用法-CSDN博客 这篇博客介绍的numpy比我的这篇博客介绍的更加的详细。本博客只是根据本人 的实际应用&#xff0c;对最关键的…

Clean Minimalist GUI Pack (简约风格UI界面)

Unity 最简洁易用的 GUI 资源包。如果你在寻找资源商店上 UI 极简主义革命的发起者,你已经找到了。 这一极干净简约的 GUI 资源包是一款适合移动设备使用的游戏 UI 资源包,其中包含许多图标和元素,可用于创建具有简洁风格的完整游戏 UI。 功能: • 包括 3 种皮肤:深色、浅…

【数据结构】详细介绍各种排序算法,包含希尔排序,堆排序,快排,归并,计数排序

目录 1. 排序 1.1 概念 1.2 常见排序算法 2. 插入排序 2.1 直接插入排序 2.1.1 基本思想 2.1.2 代码实现 2.1.3 特性 2.2 希尔排序(缩小增量排序) 2.2.1 基本思想 2.2.2 单个gap组的比较 2.2.3 多个gap组比较(一次预排序) 2.2.4 多次预排序 2.2.5 特性 3. 选择排…

AFSim 仿真系统----性能工具

什么是 WPR/WPA&#xff1f; Windows 性能记录器 (WPR) 和 Windows 性能分析器 (WPA) 是 Windows 性能工具包中提供的性能监控工具。它们是免费的工具&#xff0c;可以通过下载和安装 Windows 评估和部署工具包 (ADK) 来获得。 WPR 是一个工具&#xff0c;允许用户动态部署事…