华为云 ECS 实战:基于 Docker Compose 搭建 Prometheus + Grafana 可视化监控大盘

举报
yd_273651526 发表于 2026/11/04 09:34:34 2026/11/04
【摘要】 本文详细介绍了在华为云弹性云服务器(ECS)Ubuntu 22.04 环境下,利用 Docker Compose 快速编排部署 Prometheus、Node Exporter 与 Grafana 开源监控体系的完整流程,包含宿主机硬件指标采集、数据保留周期优化以及中文可视化监控大盘配置。

前言

在华为云弹性云服务器(ECS)或 Flexus 应用服务器 L 实例上部署业务系统后,如何实时掌握服务器的 CPU 负载、内存使用率、磁盘 I/O 以及网络带宽波动,是保障服务高可用的关键。除了使用华为云控制台自带的云监控服务(CES)外,许多开发团队还会选择开源领域的黄金搭档 —— Prometheus + Node Exporter + Grafana,搭建一套支持自定义指标采集、历史趋势回溯与高颜值可视化大盘的监控体系。

本文将完整演示在华为云 Ubuntu 22.04 实例上,利用 Docker Compose 一键编排部署这套轻量级监控系统,并配置 Grafana 中文可视化面板。

一、 监控架构说明与目录规划

本方案包含三个核心组件:

  1. Node Exporter:负责采集宿主机 Linux 系统的各项硬件与内核指标(CPU、内存、磁盘、网络等),对外暴露标准 Metrics 接口。
  2. Prometheus:负责定时拉取(Pull)Node Exporter 的指标数据,并持久化存储在本地时序数据库中。
  3. Grafana:负责连接 Prometheus 数据源,通过可视化图表展示实时监控大盘。

首先,在宿主机 /opt/monitoring 目录下创建对应的配置与数据持久化目录:

# 创建监控工作目录及子目录
sudo mkdir -p /opt/monitoring/{prometheus,prometheus_data,grafana_data}
cd /opt/monitoring

# 赋予数据目录容器写入权限(Prometheus 与 Grafana 容器默认使用非 root 用户运行)
sudo chmod -R 777 /opt/monitoring/prometheus_data /opt/monitoring/grafana_data

二、 编写 Prometheus 采集配置文件

创建 /opt/monitoring/prometheus/prometheus.yml 配置文件,定义全局采集间隔(每 15 秒采集一次),并将 Prometheus 自身与宿主机 Node Exporter 纳入监控目标:

sudo tee /opt/monitoring/prometheus/prometheus.yml << 'EOF'
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  # 1. 监控 Prometheus 服务自身状态
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  # 2. 监控华为云 ECS 宿主机系统指标
  - job_name: 'huaweicloud-ecs-node'
    static_configs:
      - targets: ['node-exporter:9100']
        labels:
          instance: 'ecs-ubuntu-prod-01'
          env: 'production'
EOF

三、 编写 Docker Compose 编排文件并启动服务

接下来创建 /opt/monitoring/docker-compose.yml 文件。为了让 node-exporter 能够准确读取到宿主机的真实硬件信息,我们将宿主机的 /proc、/sys 和根目录 / 以只读方式挂载进容器:

sudo tee /opt/monitoring/docker-compose.yml << 'EOF'
version: '3.8'

services:
  node-exporter:
    image: prom/node-exporter:latest
    container_name: monitor-node-exporter
    restart: always
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--path.rootfs=/rootfs'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    expose:
      - 9100

  prometheus:
    image: prom/prometheus:latest
    container_name: monitor-prometheus
    restart: always
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention.time=15d'
      - '--web.enable-lifecycle'
    ports:
      - "127.0.0.1:9090:9090"
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - ./prometheus_data:/prometheus
    depends_on:
      - node-exporter

  grafana:
    image: grafana/grafana-oss:latest
    container_name: monitor-grafana
    restart: always
    ports:
      - "3000:3000"
    environment:
      - TZ=Asia/Shanghai
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=HuaweiCloud_Grafana_2026!
      - GF_DEFAULT_INSTANCE_NAME=HuaweiCloud-Monitor
    volumes:
      - ./grafana_data:/var/lib/grafana
    depends_on:
      - prometheus
EOF

参数说明:

  • --storage.tsdb.retention.time=15d:限制 Prometheus 历史数据仅保留最近 15 天,防止长期运行撑满云硬盘。
  • --web.enable-lifecycle:允许通过 HTTP 请求热重载配置文件,无需重启容器。

执行以下命令一键启动全部监控容器:

sudo docker-compose up -d

# 检查三个容器是否均处于 Up 状态
sudo docker-compose ps

四、 验证采集状态与导入 Grafana 中文监控大盘

1. 验证 Prometheus 数据采集

在终端通过 curl 检查 Prometheus 是否已成功连通 node-exporter:

curl -s http://127.0.0.1:9090/api/v1/targets | grep -o '"health":"up"'

若输出两行 "health":"up",说明宿主机各项性能指标已开始正常入库。

2. 配置华为云安全组并登录 Grafana

  1. 在华为云控制台 安全组 -> 入方向规则 中,放行 TCP: 3000 端口(或通过宿主机 Nginx 反向代理该端口)。
  2. 在浏览器访问 http://<你的华为云EIP>:3000。
  3. 输入预设的账号 admin 与密码 HuaweiCloud_Grafana_2026! 登录系统。

3. 添加数据源与一键导入中文面板

  1. 添加数据源:

    • 在左侧菜单点击 Connections (连接) -> Data sources (数据源) -> Add new data source。
    • 选择 Prometheus,在 Connection 的 URL 栏填入容器内部通信地址:http://prometheus:9090。
    • 滚动到底部点击 Save & test,提示绿色成功横幅即可。
  2. 导入 Node Exporter 中文大盘:

    • 在左侧菜单点击 Dashboards (仪表盘) -> New -> Import (导入)。
    • 在 Import via grafana.com 输入框中填入社区高分中文 Linux 监控模板 ID:8919(或英文经典模板 1860),点击 Load。
    • 在底部选择刚才创建的 Prometheus 数据源,点击 Import。

导入完成后,即可在浏览器中实时查看华为云 ECS 的 CPU 负载、内存占比、磁盘读写吞吐量以及网卡实时速率曲线。

五、 日常运维实用命令

当后续修改了 prometheus.yml 监控目标后,无需重启容器,直接在宿主机执行以下命令即可热更新配置:

curl -X POST http://127.0.0.1:9090/-/reload

若需查看监控组件占用的系统内存与 CPU 情况,可执行:

sudo docker stats --no-stream monitor-prometheus monitor-grafana monitor-node-exporter

总结

通过 Docker Compose 容器化编排,我们在短短几分钟内就在华为云 ECS 上搭建起了企业级的可视化监控平台。整套组件经过内存与数据保留周期限制后,日常仅占用约 200MB 物理内存,轻量高效,非常适合用于个人开发机与中小型生产服务器的日常可观测性建设。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。