技术博客

GPU 监控怎么做?DCGM Exporter、Prometheus 和 Grafana 运维入门

GPU 集群不能只靠 nvidia-smi 手工查看。本文解释 DCGM Exporter 如何暴露 GPU 指标,以及 Prometheus 告警和 Grafana 看板应该关注哪些数据。

DCGM ExporterGPU监控PrometheusGrafana

CPU 高、内存满、磁盘爆,传统运维都有成熟监控。但 GPU 集群如果只靠登录节点执行 nvidia-smi,很快就会失控。AI 训练和推理任务对 GPU 利用率、显存、温度、功耗、错误数都很敏感,缺少监控就无法判断资源是否被浪费,也无法及时发现硬件异常。

NVIDIA 官方推荐在 Kubernetes 中使用 DCGM Exporter 采集 GPU Telemetry。DCGM Exporter 基于 NVIDIA DCGM,把 GPU 指标暴露为 Prometheus 可抓取的 /metrics 端点,并可接入 Grafana 展示。

GPU 监控要看哪些指标

基础指标:

AI 平台还要关注:

只有 GPU 利用率不够。显存、温度、错误数和 Pod 归属都很重要。

DCGM Exporter 怎么工作

DCGM Exporter 可以作为独立容器运行,也可以在 Kubernetes 中以 DaemonSet 方式运行在 GPU 节点上。它会通过 DCGM 收集指标,并暴露 HTTP /metrics

典型检查命令:

kubectl get pods -A | grep dcgm
kubectl get svc -A | grep dcgm
kubectl logs -n <namespace> <dcgm-exporter-pod>

如果本地验证,可以访问指标端点:

curl http://<node-or-service>:9400/metrics | head

在生产环境中,通常使用 Prometheus Operator 的 ServiceMonitor 自动发现 DCGM Exporter。

告警怎么设计

不要一上来就做几十条告警。建议先做四类:

第一,GPU 温度过高。温度异常可能意味着机房散热、风扇或节点负载问题。

第二,GPU 长时间低利用率。训练任务申请 GPU 但几乎不用,可能是数据读取瓶颈或资源浪费。

第三,显存接近上限。推理服务显存持续高位,容易出现 OOM 或延迟抖动。

第四,硬件错误。ECC、XID、掉卡等错误要单独告警。

示例排查:

nvidia-smi
dmesg | grep -i nvidia
journalctl -k | grep -i xid
kubectl describe node <gpu-node>

Grafana 看板应该怎么分层

建议至少三层:

管理者看集群利用率,运维看节点健康,开发者看自己的任务。一个看板想满足所有人,往往会很乱。

常见问题 FAQ

有 GPU Operator 还需要单独部署 DCGM Exporter 吗?

NVIDIA 文档说明 DCGM 和 DCGM Exporter 通常会随 GPU Operator 默认部署。实际是否启用,要看安装参数和集群配置。

nvidia-smi 和 DCGM Exporter 有什么区别?

nvidia-smi 适合临时登录排查,DCGM Exporter 适合持续采集、告警和趋势分析。

GPU 利用率低一定是浪费吗?

不一定。推理服务可能低利用率但要求低延迟;训练任务低利用率则可能是数据加载或通信瓶颈。

监控 GPU 会不会影响性能?

正常采集开销很小。真正需要注意的是采集频率、指标数量和 Prometheus 存储压力。

参考资料