DCGM-Exporter 技术文档
DCGM-Exporter 是一个专为 Prometheus 设计的 GPU 指标导出器,利用 NVIDIA 的 DCGM(Data Center GPU Manager)来采集并报告 GPU 性能指标。本技术文档将引导您完成从安装到使用的全过程,以及如何配置高级功能。
安装指南
简易部署(非 Kubernetes)
对于快速测试或简单环境,可以直接通过 Docker 运行:
docker run -d --gpus all --rm -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.3.6-3.4.2-ubuntu22.04
随后,可以通过访问 localhost:9400/metrics
来查看 GPU 指标数据。
Kubernetes 部署
推荐使用 NVIDIA GPU Operator 集成 DCGM-Exporter,首先确保集群已配置 NVIDIA 容器运行时:
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.0.0-beta5/nvidia-device-plugin.yml
然后添加 DCGM-Exporter 的 Helm 库,并安装图表:
helm repo add gpu-helm-charts https://nvidia.github.io/dcgm-exporter/helm-charts
helm repo update
helm install --generate-name gpu-helm-charts/dcgm-exporter
使用 kubectl
查看服务状态并使用端口转发获取指标:
kubectl port-forward svc/<your-exporter-service-name> 8080:9400
curl localhost:8080/metrics
注意:上述命令中的 <your-exporter-service-name>
需要替换为实际的服务名。
使用说明
一旦部署完成,您可以通过 Prometheus 配置来拉取这些 GPU 指标,用于监控和报警。
API 使用文档
DCGM-Exporter 提供了一个 RESTful API,默认监听在 9400
端口上。通过访问 /metrics
路径可获得当前的 GPU 统计数据,以 Prometheus 的指标格式返回。
示例响应:
# HELP DCGM_FI_DEV_SM_CLOCK SM clock frequency (MHz)
# TYPE DCGM_FI_DEV_SM_CLOCK gauge
DCGM_FI_DEV_SM_CLOCK{gpu="0", UUID="GPU-id..."} 1390
每个指标帮助信息描述了其含义,类型及对应的值。
项目安装方式
从源代码构建
如果您想要编译自己的二进制文件,需要 Golang 环境(建议 version >= 1.21)和 NVIDIA DCGM 的安装。以下步骤展示了如何从源码构建 DCGM-Exporter:
-
克隆仓库到本地:
git clone https://github.com/NVIDIA/dcgm-exporter.git cd dcgm-exporter
-
构建并安装:
make binary sudo make install
之后,直接运行 dcgm-exporter
命令即可启动服务。
高级特性
- TLS 和基本认证: 利用
exporter-toolkit
支持,需提供--web-config-file
参数指向配置文件。 - HPC 作业映射: 可通过特定目录配置文件,将 GPU 到 HPC 作业的关系映射到标签。
- 自定义指标收集: 修改或指定新的 CSV 文件来控制采集的 DCGM 字段。
请参阅 NVIDIA 的官方文档和项目 README 了解更多详细配置和定制选项。