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

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

时间:2024-09-07 17:53:54浏览次数:13  
标签:容器 InfluxDB grafana 华为 828 Docker Grafana root 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刚好有活动,如果此服务器和业务也满足你的需求,那赶紧购买部署起来吧!

在这里插入图片描述

标签:容器,InfluxDB,grafana,华为,828,Docker,Grafana,root,docker
From: https://blog.csdn.net/weixin_62782025/article/details/141825072

相关文章

  • 华为鸿蒙手机安装好谷歌商店,GMS服务,谷歌三件套,谷歌框架后,下载的一些应用无法正常定位,
    最近有有小伙伴问为什么他下载好一些定位的软件,能正常的进入,定位权限也是开启的,但是就是定不了位,,给我们小伙伴带来了烦恼,那我们怎么解决呢?我这里给大家讲解一下,避免大家以后遇见后不知道怎么去解决解决方法1.首先我们需要在我们的手机设置里面找到我们的应用和服务,进去后点......
  • 华为OD 数大雁
    题目描述一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。具体的:1.大雁发出的完整叫声为”quack“,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能会混合多个”quack”。2.大雁会依次完整发出”quack”,即字符串中’q’,‘u’......
  • 828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群
    828华为云征文|华为云FlexusX实例docker部署rancher并构建k8s集群华为云最近正在举办828B2B企业节,FlexusX实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧!什么是华为云Fl......
  • Windows与linux中docker的安装与使用
    windos中安装使用docker下载Docker_Desktop安装包进入docker官网下载Docker_Desktop:https://www.docker.com/启用wsl我们搜索“启用或关闭Windows功能”,打开后勾选适用于Linux的Windows子系统Docker_Desktop设置出现DockerEnginestopped的解决办法示例:问......
  • Docker 教程简介
    教程名:Docker与微服务实战B站地址:尚硅谷Docker实战教程(docker教程天花板)-哔哩哔哩讲师:周阳‍前提了解SpringBoot,SpringCloud了解一些中间件:Redis,Nginx,MySQL了解Linux的基本使用知道Git‍课程大纲基础篇(零基小白)Docker简介Docker安装Docker常用命令Do......
  • Docker 配置国内镜像源
    由于GFW的原因,在下载镜像的时候,经常会出现下载失败的情况,此时就可以使用国内的镜像源。什么是镜像源:简单来说就是某个组织(学校、公司、甚至是个人)先通过某种手段将国外的镜像下载下来,然后上传到国内的网站,这样我们在国内就可以通过这个网站下载到镜像源‍起因笔者有......
  • 828华为云征文|华为云Flexus X实例部署安装Jupyter Notebook,学习AI,机器学习算法
    前言由于本人最近在学习一些机器算法,AI算法的知识,需要搭建一个学习环境,所以就在最近购买的华为云FlexusX实例上安装了学习环境,JupyterNotebook。没想到效果格外的,由于华为云FlexusX实例做了很多底层的性能优化,依托创新的大模型支持和智能全域调度,X-Turbo加速技术让常见......
  • Docker 镜像的分层概念
    40.镜像的分层概念来更深入地理解镜像的概念‍镜像的分层镜像,是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜......
  • 使用docker-compose部署wordpress
    前期工作请参考我写的这篇文章docker-compose轻松部署jenkins1、创建项目目录[root@docker~]#mkdir-p/compose/wordpress2、yaml文件内容version:'3'services:mysql:image:mysql:5.7ports:-"3306:3306"environment:-"MYSQL_ROOT_......
  • docker开发环境迅速搭建
    官网下载dockerWindows上安装需要开启cpu的虚拟化,windows程序中开启多项功能1.进入bios开启cpu虚拟化1.2开启windows的服务1.3由于伟大祖国的政策,我们无法直接获取docker源镜像,需要配置阿里的镜像加速二.安装mysqldockerpullmysql:8.02.dockerrun-p3306:3306--......