电子说
前言
华为云 Flexus X,以顶尖算力与智能调度,引领 Docker 容器管理新风尚。828 企业上云节之际,Flexus X 携手前沿技术,实现容器运行的实时监控与数据可视化,让管理变得直观高效。无论是性能瓶颈的精准定位,还是资源利用的优化调整,Flexus X 都是您的得力助手。立即拥抱华为云 Flexus X,开启 Docker 容器管理新篇章,让云端之旅更加顺畅无忧!
链接直达:华为云Flexus云服务器X实例
原生命令
查看正在运行的容器
[root@flexusx-251f ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3a888d70efa6 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 statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS3a888d70efa6 portainer 0.00% 23.55MiB / 11.53GiB 0.20% 597kB / 937kB 0B / 1.27MB 7e837cf780e7d blog 0.01% 268.7MiB / 11.53GiB 2.28% 68.3MB / 22.4MB 0B / 76.3MB 13b08207cf4067 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 功能主要有两点:
展示 Host 和 容器 两个层次的监控数据
展示历史变化数据
InfluxDB
InfluxDB 使用 Go 语言编写的一个开源分布式时序、时间和指标数据库,无需外部依赖。
CAdvisor 默认只能在本机保存最近两分钟的数据,为了持久化数据存储和统一收集展示监控数据,需要将数据存储到 InfluxDB 中。InfluxDB 是一个时序数据库,专门用于数据时序相关数据,很适合存储 CAdvisor 的数据。而且,CAdvisor 本身已经提供了 InfluxDB 的集成方法,启动容器时指定配置即可。
InfluxDB 主要功能:
基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等)
可度量性:可以实时对大量数据进行计算
基于实践:支持任意的实践数据
Granfana
Grafana 是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源包括 InfluxDB、MySQL、Elasticsearch、OpenTSDB、Graphite 等)和丰富的插件及模版功能,支持图表权限控制和报警。
Grafana 主要特性:
灵活丰富的图像化选项
可以混合多种风格
支持白天和夜间模式
多个数据源
环境规划
搭建流程
需要了解:
• 采用 docker 方式进行部署容器监控三剑客
• 详细购买配置实例可参考文章: 快速部署华为云Flexus X实例,开启您的云端之旅
• 部署 docker 服务请参考文章:华为FlexusX与Docker+Nginx的高效整合之路
拉取镜像(由于网络原因,我已经提前将镜像上传至华为云镜像仓库,可直接进行拉取)
[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 --versionDocker 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 psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES504ad3c17d38 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-1d46793983d47 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-1c72b95d62bc4 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 stopWARN[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 lsNAME STATUS CONFIG FILES
体验和感受
在云计算的快速发展中,Docker 容器的广泛应用为企业带来了前所未有的灵活性和效率。然而,如何实时监控这些容器的性能并进行可视化分析,成为了企业运维团队面临的重要挑战。华为 Flexus X 服务器,凭借其卓越的性能和强大的扩展性,为企业用户提供了理想的云端平台。结合 CAdvisor、InfluxDB 与 Grafana,Flexus X 实例实现了 Docker 容器的实时监控与可视化分析新突破。
CAdvisor,作为 Google 开源的容器资源监控工具,能够收集 Docker 容器的资源使用情况和性能指标。InfluxDB,作为高性能的时序数据库,能够高效地存储和查询这些监控数据。而 Grafana,则以其强大的数据可视化能力,将复杂的监控数据转化为直观的图表和仪表盘,帮助运维人员快速洞察容器运行状态。
在 828 华为云企业上云节之际,在 Flexus X 实例上部署这一强大的监控与分析。通过 CAdvisor 的实时数据采集、InfluxDB 的高效存储以及 Grafana 的精美可视化,您将能够轻松掌握 Docker 容器的性能瓶颈,优化资源配置,提升业务运行效率。
选择 Flexus X 实例与 CAdvisor+InfluxDB+Grafana 的组合,就是选择了 Docker 容器管理的未来。点击下方链接,在 828 上云节的特惠期间,让我们携手共进,共同开启云端容器管理的新篇章。
产品链接:华为云Flexus云服务器X实例直播建站服务器-华为云
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !