AI服务器GPU监控配置:用DCGM把显卡状态盯住
AI服务器GPU监控配置,最直接的答案是:先用 nvidia-smi 确认驱动和卡状态正常,再安装 NVIDIA DCGM 和 dcgm-exporter,把 GPU 指标暴露给 Prometheus,最后在 Grafana 里看显存、温度、利用率和 ECC 错误。
单卡临时查看用 nvidia-smi 就够,多卡长期运行建议走 DCGM,因为能持续采集并保留历史数据。
先确认驱动和卡都能被系统识别
监控工具依赖 NVIDIA 驱动,驱动不正常时后面步骤都会失败。
登录服务器后先执行:
nvidia-smi
预期能看到 GPU 型号、显存总量、驱动版本和当前进程。
如果提示 NVIDIA-SMI has failed,先检查驱动是否加载:
lsmod | grep nvidia
没有输出说明驱动未加载,需要先处理驱动安装或内核模块问题,不要继续装监控组件。
另外确认系统有 systemd,因为 dcgm-exporter 通常以服务方式运行。
安装DCGM和dcgm-exporter
DCGM 是 NVIDIA 的数据中心 GPU 管理工具,dcgm-exporter 负责把指标转成 Prometheus 格式。
以 Ubuntu 为例,先添加 NVIDIA 仓库再安装:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y datacenter-gpu-manager
安装后启动 DCGM 服务并设置开机自启:
sudo systemctl enable --now nvidia-dcgm
sudo systemctl status nvidia-dcgm
dcgm-exporter 可以从 GitHub 发布页下载二进制,也可以直接用 Docker 运行。
二进制方式示例:
wget https://github.com/NVIDIA/dcgm-exporter/releases/latest/download/dcgm-exporter
chmod +x dcgm-exporter
sudo ./dcgm-exporter --address :9400
启动后访问 http://服务器IP:9400/metrics,能看到以 DCGM_FI_ 开头的指标说明采集成功。
接入Prometheus并配置采集任务
在 Prometheus 的 prometheus.yml 里增加 job,把目标指向运行 dcgm-exporter 的服务器:
scrape_configs:
- job_name: 'gpu'
static_configs:
- targets: ['192.168.1.10:9400']
改完执行 promtool check config prometheus.yml 校验,再重载 Prometheus:
curl -X POST http://localhost:9090/-/reload
到 Prometheus 界面 Status -> Targets 里看到 gpu 状态为 UP,
说明指标已经进入时序库。dcgm-exporter 默认暴露的指标较多,
如果只想保留常用项,
可以用 --collectors 参数指定,
避免指标量过大。
在Grafana里看关键指标
Grafana 添加 Prometheus 数据源后,导入 NVIDIA 提供的 DCGM 仪表盘模板,或者自己建面板。
日常最值得盯的指标有:
DCGM_FI_DEV_GPU_UTIL:GPU 利用率,长期接近 100% 说明卡被占满。DCGM_FI_DEV_MEM_COPY_UTIL:显存带宽利用率,偏高时可能是数据搬运瓶颈。DCGM_FI_DEV_FB_USED:已用显存,接近总量时新任务容易 OOM。DCGM_FI_DEV_GPU_TEMP:GPU 温度,持续偏高要检查散热和风道。DCGM_FI_DEV_ECC_SBE_VOL_TOTAL:ECC 单比特错误计数,增长时留意显存健康。
如果只想快速查看,也可以在命令行用 dcgmi diag -r 1 做基础诊断,但这是瞬时检查,不能替代持续监控。
容易踩的几个坑
直接改防火墙前先确认端口用途。 9400 是 dcgm-exporter 默认端口,只应允许 Prometheus 所在主机访问,不要直接对公网开放。
DCGM 版本和驱动不匹配。 安装前确认驱动版本满足 DCGM 要求,版本跨度过大时可能出现服务起不来或指标缺失,优先使用 NVIDIA 官方仓库的配套版本。
容器环境里看不到 GPU。 如果用 Docker 跑 dcgm-exporter,
需要加 --gpus all 并挂载 NVIDIA 驱动相关目录,
否则容器内 nvidia-smi 会失败。
只装 exporter 不装 DCGM。 dcgm-exporter 依赖 DCGM 服务,先确认 nvidia-dcgm 在运行,再排查 exporter 本身。
指标采集到了但没人看。 建议在 Grafana 里对显存使用率和温度设告警阈值,否则监控只停留在展示层面。
验证配置是否真正生效
完成配置后按顺序检查三件事:systemctl status nvidia-dcgm 为 active;curl http://localhost:9400/metrics 能返回 GPU 指标;
Prometheus 的 gpu target 为 UP。
三项都通过,才算 GPU 监控配置落地。
后续如果新增 GPU 或更换驱动,重新检查 nvidia-smi 和 exporter 指标即可。
如果监控对象是多台 AI 服务器,
把每台机器的 dcgm-exporter 地址都加入 Prometheus 的 targets 列表,
并用统一的 Grafana 仪表盘按实例区分,
这样比逐台登录查看更省时间。