GPU 监控仪表板
在本文中,我将指导大家使用 Grafana 创建 GPU 监控仪表板,从如何安装 Grafana 到配置它以通过 Prometheus 使用 dcgm-exporter 接收 GPU 性能指标,直到我们可以创建仪表板来查看各种 GPU 操作。我们将用 Docker 演示所有内容。
如果大家已经准备好机器,让我们开始吧!
创建 Docker 网络
我们将让在此示例中创建的每个容器都在同一网络上,以便它们可以通过容器名称相互调用。
docker network create monitor
安装 Grafana
创建一个文件夹来存储 Grafana 数据并设置权限
mkdir grafana-data
chown -R 472:472 grafana-data
使用 Docker 运行 Grafana
docker run -d -p 3000:3000 --name=grafana --network monitor \
      -v "./grafana-data:/var/lib/grafana" \
      --user 472 \
      grafana/grafana-enterprise
我们可以通过 http://localhost:3000 访问它,用户名:admin,密码:admin。之后,设置新密码。
安装 DCGM Exporter
DCGM Exporter(Data Center GPU Manager Exporter 的缩写)是来自 NVIDIA 的工具,用于提取 GPU 状态信息并以可以与 Prometheus 等监控系统轻松使用的格式导出。
安装可以通过 Docker 运行来完成。
docker run -itd --name dcgm-exporter \
--gpus all \
--runtime=nvidia \
--cap-add SYS_ADMIN \
--network monitor \
-p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:4.2.3-4.1.1-ubuntu22.04
该服务是返回 GPU 数据的 API。测试:
curl http://localhost:9400/metrics

dcgm-exporter 响应
安装 Prometheus
创建一个文件夹来存储配置文件
mkdir prometheus
在刚创建的文件夹中创建 prometheus.yml
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s
    static_configs:
      - targets: ['dcgm-exporter:9400']
使用 Docker 创建 Prometheus
docker run -itd \
--name=prometheus \
--network monitor \
-p 9090:9090 \
-v ./prometheus:/etc/prometheus \
--user root \
prom/prometheus
配置 Grafana 数据源
在 Grafana UI 中,转到 Connections > Add new connection 并选择数据源为 Prometheus

然后选择 Add new data source

进入设置页面后,在 Connection 中,输入 Prometheus 服务器 URL 为 **http://prometheus:9090**,然后点击 save & test 创建数据源。
创建 Grafana 仪表板
在这一步,我们不会自己创建仪表板,而是使用 Nvidia 从 https://grafana.com/grafana/dashboards/12239-nvidia-dcgm-exporter-dashboard/ 创建的模板
在 Grafana 中,转到 Dashboard,选择 Create Dashboard,然后选择 Import dashboard

在仪表板 URL 或 ID 字段中,输入 12239,这是 nvidia 仪表板的 id,然后点击 load,您将到达 Import dashboard 页面

在底部的 Prometheus 字段中,选择我们创建的 prometheus 数据源,然后点击 Import

GPU 仪表板
就是这样!我们现在有了一个用于监控各种指标的 GPU 仪表板。
总结
本文适用于已经使用这些工具的人 - 我相信您可以轻松地将其调整为从 DCGM-Exporter 接收数据。但对于初学者,我相信您可以按照这些示例成功使用它们。主要是,我只是想介绍 DCGM-Exporter 工具,它可以相当全面地帮助提取各种 GPU 指标,所以这是我想为此目的推荐的服务。