DCGM Exporter 与 GPU 指标入监控
DCGM Exporter 把 GPU 指标转换成 Prometheus 格式,默认监听 9400 端口,配合 Prometheus 与 Grafana 就能形成 GPU 监控闭环。它支持容器化部署,在 Kubernetes 上常用 Helm 安装,是 GPU 指标进入统一监控栈的标准做法。
基本信息
| 默认端口 | 9400 |
|---|---|
| 输出 | 指标端点上的 Prometheus 文本格式数据 |
| 前置依赖 | 驱动与 GPU 管理能力可用,容器需具备访问设备的权限 |
| 部署形态 | 容器运行或 Kubernetes 上的 Helm 部署 |
| 版本敏感项 | 镜像 tag、指标名与标签随版本演进 |
典型使用场景
- 把 GPU 指标接入现有监控栈,避免逐台登录机器查看
- 多机统一看板:所有节点的 GPU 曲线放在同一视图里对比
- 告警数据源:利用率、温度、功耗与显存异常都能据此触发
- 压测对照:把采集数据与压测结论放在一起看
- 容量与健康观测:长期趋势比单次快照更能反映问题
容器运行与抓取
容器运行与抓取
# 容器运行(需可访问 GPU 设备)
docker run -d --gpus all -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:<版本>
# 先看实际输出,再写监控表达式
curl http://127.0.0.1:9400/metrics | headPrometheus 抓取片段
Prometheus 抓取片段
scrape_configs:
- job_name: gpu
static_configs:
- targets: ['127.0.0.1:9400']采集到的指标类别
| 类别 | 内容 | 用途 |
|---|---|---|
| 利用率与显存 | 整卡占用情况 | 容量判断与排队分析 |
| 温度与功耗 | 散热与功耗墙状态 | 降频排查 |
| 时钟频率 | 当前工作频率 | 性能退化定位 |
| 错误计数 | 显存错误等硬件信号 | 硬件健康巡检 |
镜像 tag 与字段名随版本演进:接入前先核对当前文档与指标端点的实际输出,避免照抄旧配置。
只采 GPU 指标不看服务指标会漏判:GPU 曲线平稳而服务超时的场景并不少见,两类指标要在同一块看板上对照。
多机部署时按节点维度打标签:同一组织有多台机器时,只有带上节点标识才能区分是哪台机器在退化,否则聚合曲线会把个别异常节点平均掉。
上量前先做一次抓取演练:确认采集端能连通、指标数量在可接受范围、看板能出图,再把它接入告警,否则故障当天才发现链路不通就来不及了。