服务器GPU集群硬件资源监控完整部署指南

Grafana + Prometheus + DCGM:GPU监控完整部署指南

概述:

NVIDIA DCGM (Data Center GPU Manager) 提供了一套强大的工具来监控和管理数据中心的GPU。结合Prometheus采集数据和Grafana进行可视化,可以构建一个全面的GPU集群监控系统。本指南将从零开始,详细介绍如何部署这套监控方案。

前置条件:

  • 安装了NVIDIA驱动的Linux服务器
  • 具有root或sudo权限
  • Docker和Docker Compose (推荐使用容器化部署)
  • 基本的Linux命令行知识

第一步:安装NVIDIA驱动和DCGM

首先确保您的系统已正确安装NVIDIA驱动:

nvidia-smi

如果显示GPU信息,说明驱动已安装。接下来安装DCGM:

对于Ubuntu/Debian系统:

# 添加NVIDIA仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')
wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb

# 更新并安装DCGM
sudo apt-get update
sudo apt-get install -y datacenter-gpu-manager

对于CentOS/RHEL系统:

# 添加NVIDIA仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-$distribution.repo

# 安装DCGM
sudo dnf install -y datacenter-gpu-manager

启动DCGM服务:

sudo systemctl start nvidia-dcgm
sudo systemctl enable nvidia-dcgm

验证DCGM安装:

dcgmi discovery -l

第二步:部署DCGM Exporter

DCGM Exporter是连接DCGM和Prometheus的桥梁,它将DCGM收集的GPU指标转换为Prometheus可以抓取的格式。

使用Docker部署DCGM Exporter(推荐方式):

docker run -d --gpus all --restart always \
  -p 9400:9400 \
  --name dcgm-exporter \
  nvcr.io/nvidia/k8s/dcgm-exporter:2.4.6-2.6.10

验证DCGM Exporter是否正常工作:

curl localhost:9400/metrics

您应该能看到大量的GPU指标数据。

第三步:安装和配置Prometheus

创建Prometheus配置文件:

mkdir -p /opt/prometheus

创建配置文件/opt/prometheus/prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'dcgm-exporter'
    static_configs:
      - targets: ['localhost:9400']
  
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

使用Docker部署Prometheus:

docker run -d --restart always \
  -p 9090:9090 \
  --name prometheus \
  -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus

验证Prometheus是否正常工作:访问http://your-server-ip:9090,您应该能看到Prometheus的Web界面。

检查目标是否正常:在Prometheus界面导航到Status > Targets,确认dcgm-exporter目标状态为UP。

第四步:安装和配置Grafana

使用Docker部署Grafana:

docker run -d --restart always \
  -p 3000:3000 \
  --name grafana \
  grafana/grafana

访问Grafana:打开浏览器访问http://your-server-ip:3000,默认用户名和密码都是admin

配置Prometheus数据源:

  1. 登录后,点击左侧菜单的"Configuration"(齿轮图标)
  2. 选择"Data Sources"
  3. 点击"Add data source"
  4. 选择"Prometheus"
  5. 在URL字段中输入http://prometheus:9090(如果Prometheus和Grafana不在同一网络,使用服务器IP)
  6. 点击"Save & Test"确认连接成功

第五步:导入NVIDIA GPU监控面板

Grafana有很多现成的NVIDIA GPU监控面板,我们可以导入使用:

  1. 在Grafana左侧菜单点击"+“图标,选择"Import”
  2. 输入面板ID 12239(这是一个优秀的NVIDIA GPU监控面板)
  3. 点击"Load"
  4. 选择之前创建的Prometheus数据源
  5. 点击"Import"完成导入

您也可以尝试其他面板ID,如1457415117,它们提供不同风格的GPU监控视图。

监控的GPU指标说明:

导入的面板将显示以下关键GPU指标:

  • GPU利用率:显示GPU计算核心的使用百分比
  • GPU内存使用:显示GPU显存的使用情况
  • 温度:GPU核心温度
  • 功耗:GPU的功耗消耗
  • PCIe带宽:通过PCIe总线的数据传输速率
  • SM Clock:GPU流处理器的时钟频率
  • Memory Clock:GPU内存的时钟频率
  • Encoder/Decoder利用率:视频编解码器的使用情况

使用Docker Compose实现一键部署

为了简化部署,创建docker-compose.yml文件:

version: '3'

services:
  dcgm-exporter:
    image: nvcr.io/nvidia/k8s/dcgm-exporter:2.4.6-2.6.10
    restart: always
    ports:
      - "9400:9400"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

  prometheus:
    image: prom/prometheus
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    depends_on:
      - dcgm-exporter

  grafana:
    image: grafana/grafana
    restart: always
    ports:
      - "3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana
    depends_on:
      - prometheus

volumes:
  grafana-storage:

在同一目录下创建Prometheus配置:

mkdir -p prometheus

创建prometheus/prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'dcgm-exporter'
    static_configs:
      - targets: ['dcgm-exporter:9400']
  
  - job_name: 'prometheus'
    static_configs:
      - targets: ['prometheus:9090']

启动整个监控栈:

docker-compose up -d

故障排除:

  1. DCGM Exporter无法启动
    • 检查NVIDIA驱动是否正确安装:nvidia-smi
    • 确保DCGM服务正在运行:systemctl status nvidia-dcgm
  2. Prometheus无法抓取DCGM指标
    • 检查网络连接:curl localhost:9400/metrics
    • 检查Prometheus配置中的目标地址是否正确
  3. Grafana无法连接Prometheus
    • 确保Prometheus正在运行:docker ps | grep prometheus
    • 检查Grafana中配置的Prometheus URL是否正确
  4. 导入的面板无数据
    • 在Prometheus界面中检查查询是否返回数据
    • 检查时间范围设置是否合适

扩展和优化:

  1. 添加告警
    • 在Grafana中为关键指标设置告警,如高温或内存使用过高
    • 配置Prometheus AlertManager进行更复杂的告警管理
  2. 添加更多监控目标
    • 修改Prometheus配置以监控多台服务器的GPU
    • 使用服务发现自动添加新的GPU节点
  3. 持久化数据
    • 配置Prometheus的存储目录以持久化历史数据
    • 考虑使用远程存储解决方案用于长期数据保留
  4. 安全加固
    • 为Prometheus和Grafana配置身份验证
    • 使用反向代理和HTTPS加密访问

通过以上步骤,您已经成功部署了一个基于DCGM、Prometheus和Grafana的GPU监控系统,可以实时监控GPU的各项关键指标,为GPU资源管理和优化提供有力支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值