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数据源:
第五步:导入NVIDIA GPU监控面板
Grafana有很多现成的NVIDIA GPU监控面板,我们可以导入使用:
您也可以尝试其他面板ID,如14574或15117,它们提供不同风格的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
故障排除:
- 检查NVIDIA驱动是否正确安装:nvidia-smi
- 确保DCGM服务正在运行:systemctl status nvidia-dcgm
- 检查网络连接:curl localhost:9400/metrics
- 检查Prometheus配置中的目标地址是否正确
- 确保Prometheus正在运行:docker ps | grep prometheus
- 检查Grafana中配置的Prometheus URL是否正确
- 在Prometheus界面中检查查询是否返回数据
- 检查时间范围设置是否合适
扩展和优化:
- 在Grafana中为关键指标设置告警,如高温或内存使用过高
- 配置Prometheus AlertManager进行更复杂的告警管理
- 修改Prometheus配置以监控多台服务器的GPU
- 使用服务发现自动添加新的GPU节点
- 配置Prometheus的存储目录以持久化历史数据
- 考虑使用远程存储解决方案用于长期数据保留
- 为Prometheus和Grafana配置身份验证
- 使用反向代理和HTTPS加密访问
通过以上步骤,您已经成功部署了一个基于DCGM、Prometheus和Grafana的GPU监控系统,可以实时监控GPU的各项关键指标,为GPU资源管理和优化提供有力支持。
评论前必须登录!
注册