Dashboard Monitoring GPU
Dalam artikel ini, saya akan memandu semua orang melalui pembuatan dashboard monitoring GPU dengan Grafana, dimulai dari cara menginstal Grafana hingga mengkonfigurasinya untuk menerima metrik performa GPU menggunakan dcgm-exporter melalui Prometheus hingga kita dapat membuat dashboard untuk melihat berbagai operasi GPU. Kita akan demo semuanya dengan Docker.
Jika semua orang sudah menyiapkan mesin mereka, mari kita mulai!
Membuat Docker Network
Kita akan membuat setiap container dalam contoh ini berada di network yang sama sehingga mereka dapat saling memanggil melalui nama container.
docker network create monitor
Menginstal Grafana
Buat folder untuk menyimpan data Grafana dan atur izin
mkdir grafana-data
chown -R 472:472 grafana-data
Jalankan Grafana dengan Docker
docker run -d -p 3000:3000 --name=grafana --network monitor \
      -v "./grafana-data:/var/lib/grafana" \
      --user 472 \
      grafana/grafana-enterprise
Kita dapat mengaksesnya melalui http://localhost:3000 dengan user: admin dan password: admin. Setelah itu, atur password baru.
Menginstal DCGM Exporter
DCGM Exporter (singkatan dari Data Center GPU Manager Exporter) adalah alat dari NVIDIA yang digunakan untuk mengekstrak informasi status GPU dan mengekspornya dalam format yang dapat dengan mudah digunakan dengan sistem monitoring seperti Prometheus.
Instalasi dapat dilakukan dengan menjalankan melalui 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
Service ini adalah API yang mengembalikan data GPU. Test dengan:
curl http://localhost:9400/metrics

respons dcgm-exporter
Menginstal Prometheus
Buat folder untuk menyimpan file konfigurasi
mkdir prometheus
Buat prometheus.yml di folder yang baru dibuat
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']
Buat Prometheus dengan Docker
docker run -itd \
--name=prometheus \
--network monitor \
-p 9090:9090 \
-v ./prometheus:/etc/prometheus \
--user root \
prom/prometheus
Konfigurasi Grafana Datasource
Di Grafana UI, buka Connections > Add new connection dan pilih Data source sebagai Prometheus

Kemudian pilih Add new data source

Setelah di halaman settings, di Connection, masukkan Prometheus server URL sebagai http://prometheus:9090 lalu klik save & test untuk membuat data source.
Membuat Grafana Dashboard
Di langkah ini, kita tidak akan membuat Dashboard sendiri tetapi akan menggunakan template yang dibuat Nvidia dari https://grafana.com/grafana/dashboards/12239-nvidia-dcgm-exporter-dashboard/
Di Grafana, buka Dashboard, pilih Create Dashboard, lalu pilih Import dashboard

Di field dashboard URL atau ID, masukkan 12239 yang merupakan id dari nvidia dashboard, lalu klik load dan Anda akan sampai di halaman Import dashboard

Di field Prometheus di bagian bawah, pilih prometheus data source yang kita buat, lalu klik Import

GPU Dashboard
Dan itu saja! Kita sekarang memiliki GPU Dashboard untuk monitoring berbagai metrik.
Ringkasan
Artikel ini untuk mereka yang sudah menggunakan alat-alat ini - saya yakin Anda dapat dengan mudah mengadaptasinya untuk menerima data dari DCGM-Exporter. Tetapi untuk pemula, saya yakin Anda dapat mengikuti contoh-contoh ini dan menggunakannya dengan sukses. Terutama, saya hanya ingin memperkenalkan alat DCGM-Exporter yang membantu mengekstrak berbagai GPU Metrics cukup komprehensif, jadi ini adalah service yang ingin saya rekomendasikan untuk tujuan ini.