
# 使用DCGM监控轻量算力节点GPU资源
#### 场景描述
本文主要介绍如何在轻量算力节点上配置DCGM监控，用于监控轻量算力节点上的GPU资源。
DCGM是用于管理和监控基于Linux系统的GPU大规模集群的一体化工具，提供多种能力，包括主动健康监控、诊断、系统验证、策略、电源和时钟管理、配置管理和审计等。
#### 约束限制
仅适用于GPU资源监控。
#### 前提条件
裸金属服务器需要安装driver、cuda、fabric-manager软件包。
#### 步骤一：安装Docker
使用Docker官方脚本安装最新版Docker：
```
curl https://get.docker.com | sh
sudo systemctl --now enable docker
```
#### 步骤二：安装容器工具集
设置仓库地址和GPG key：
```
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
```
安装nvidia-docker2：
```
sudo apt-get update \
   && sudo apt-get install -y nvidia-docker2
```
编辑/etc/docker/daemon.json，改为如下内容：
```
{
   "default-runtime": "nvidia",
   "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
      }
   }
}
```
重启Docker daemon：
```
sudo systemctl restart docker
```
#### 步骤三：运行DCGM-Exporter
以Docker方式运行DCGM-Exporter：
```
DCGM_EXPORTER_VERSION=3.1.7-3.1.4 && \
docker run -d --rm \
   --gpus all \
   --net host \
   --cap-add SYS_ADMIN \
   nvcr.io/nvidia/k8s/dcgm-exporter:${DCGM_EXPORTER_VERSION}-ubuntu20.04 \
   -f /etc/dcgm-exporter/dcp-metrics-included.csv
```
![](https://support.huaweicloud.com/resmgmt-modelarts/public_sys-resources/note_3.0-zh-cn.png)
这里使用的是DCGM-Exporter默认的指标采集配置文件/etc/dcgm-exporter/dcp-metrics-included.csv，指标采集对象详见[dcgm-exporter](https://github.com/NVIDIA/dcgm-exporter/tree/main/etc)。如果采集对象不能满足要求，可通过定制镜像或挂载的方式使用自定义配置。
等待约1分钟，执行下面的命令获取GPU指标：
```
curl localhost:9400/metrics
```
指标获取结果如下：
```
# HELP DCGM_FI_DEV_SM_CLOCK SM clock frequency (in MHz).
# TYPE DCGM_FI_DEV_SM_CLOCK gauge
# HELP DCGM_FI_DEV_MEM_CLOCK Memory clock frequency (in MHz).
# TYPE DCGM_FI_DEV_MEM_CLOCK gauge
# HELP DCGM_FI_DEV_MEMORY_TEMP Memory temperature (in C).
# TYPE DCGM_FI_DEV_MEMORY_TEMP gauge
...
DCGM_FI_DEV_SM_CLOCK{gpu="0", UUID="GPU-6ad7ea4c-5517-05e7-0b54-7554cb4374d3"} 1
DCGM_FI_DEV_MEM_CLOCK{gpu="0", UUID="GPU-6ad7ea4c-5517-05e7-0b54-7554cb4374d3"} 4
DCGM_FI_DEV_MEMORY_TEMP{gpu="0", UUID="GPU-6ad7ea4c-5517-05e7-0b54-7554cb4374d3"} 9223372036854578794
...
```
#### 步骤四：安装Prometheus
在"/usr/local/prometheus"目录创建配置文件prometheus.yml内容如下：
```
global:
  scrape_interval: 15s # 采集间隔
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['xx.xx.xx.xx:9400'] # DCGM-Exporter指标获取端口，替换xx.xx.xx.xx为DCGM-Exporter所在节点的IP地址
```
运行Prometheus：
```
docker run -d \
    -p 9090:9090 \
    -v /usr/local/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus
```
![](https://support.huaweicloud.com/resmgmt-modelarts/public_sys-resources/note_3.0-zh-cn.png)
这里使用的是Prometheus最基本的功能，如有更高级的诉求，可参考[prometheus的官方文档](https://prometheus.io/docs/prometheus/latest/getting_started/)。
#### 步骤五：安装Grafana
运行社区最新发行的Grafana版本：
```
docker run -d -p 3000:3000 grafana/grafana-oss
```
在BMS页面打开Grafana所在节点的安全组配置，添加入方向规则，允许外部访问3000、9090端口：
在浏览器地址栏输入xx.xx.xx.xx:3000，登录Grafana，默认账号密码为：admin/admin。在配置管理页面，添加数据源，类型选择Prometheus。
备注：xx.xx.xx.xx为Grafana的所在宿主机的IP地址
图1Prometheus   
![](https://support.huaweicloud.com/resmgmt-modelarts/figure/zh-cn_image_0000001565771892.png)
在HTTP的URL输入框中输入Prometheus的IP地址和端口号，单击Save\&Test：
图2IP地址和端口号   
![](https://support.huaweicloud.com/resmgmt-modelarts/figure/zh-cn_image_0000001636212966.png "点击放大")
至此，指标监控方案安装完成。指标监控效果展示如下：
图3指标监控效果   
![](https://support.huaweicloud.com/resmgmt-modelarts/figure/zh-cn_image_0000001566250908.png "点击放大")
![](https://support.huaweicloud.com/resmgmt-modelarts/public_sys-resources/note_3.0-zh-cn.png)
这里使用的是Grafana最基本的功能，如有更高级的诉求，可参考[Grafana的官方文档](https://grafana.com/docs/grafana/latest/)。
