Sie fragen - wir antworten!

GPU-Metriken mit Grafana sammeln

Es ist wichtig zu beachten, dass diese Einrichtung nicht sicher ist. Wir empfehlen dringend, die Dokumentation für jede unabhängig verwendete Komponente zu lesen und die eingebauten Sicherheitsfunktionen wann immer möglich zu nutzen.

In diesem Leitfaden zeigen wir Ihnen, wie Sie jede GPU auf Ihrem Server überwachen und mit Grafana wunderschöne Dashboards erstellen können. Alle Metriken werden mit dem Prometheus-Exporter gesammelt. Der Exporter ruft periodisch das nvidia-smi-Binary auf, um alle verfügbaren Werte alle paar Sekunden zu lesen.

Grafana installieren

Um einen reibungslosen Installationsprozess zu gewährleisten, empfiehlt es sich, Grafana aus dem offiziellen Repository des Projekts zu installieren. Bevor Sie das Repository in die Quellenliste eines Paketmanagers aufnehmen, überprüfen Sie bitte, ob alle erforderlichen Pakete im Betriebssystem vorhanden sind. Der folgende Befehl installiert fehlende:

sudo apt -y install apt-transport-https software-properties-common wget

Erstellen wir ein separates Verzeichnis für Schlüsselringe:

sudo mkdir -p /etc/apt/keyrings/

Laden Sie den Grafana GPG-Schlüssel herunter und wenden Sie ihn an:

wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

Fügen Sie das Grafana-Repository mit dem heruntergeladenen Schlüssel hinzu:

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Aktualisieren Sie den Cache und installieren Sie Grafana:

sudo apt update && sudo apt -y install grafana

Nach Abschluss des Prozesses können Sie die Anwendung starten:

sudo systemctl start grafana-server.service

Wenn Sie Grafana neben dem Betriebssystem ausführen möchten:

sudo systemctl enable grafana-server.service

Prometheus installieren

Um die aktuelle Version zu ermitteln und den Link zum Herunterladen des Pakets zu erhalten, sollten Sie die offizielle Website des Projekts besuchen. Zum Beispiel, wenn Sie Prometheus v2.47.1 installieren müssen, können Sie den folgenden Link verwenden:

wget https://github.com/prometheus/prometheus/releases/download/v2.47.1/prometheus-2.47.1.linux-amd64.tar.gz

Entpacken Sie das Archiv:

tar xvfz prometheus-2.47.1.linux-amd64.tar.gz

Öffnen Sie das entpackte Verzeichnis:

cd prometheus-2.47.1.linux-amd64

Kopieren wir zwei ausführbare Dateien in das Systemverzeichnis:

sudo cp prometheus /usr/local/bin
sudo cp promtool /usr/local/bin

Erstellen Sie ein separates Verzeichnis für die Konfigurationsdateien:

sudo mkdir /etc/prometheus

Und kopieren Sie diese Dateien dorthin:

sudo cp -r consoles /etc/prometheus
sudo cp -r console_libraries /etc/prometheus

Erstellen Sie eine Konfigurationsdatei namens prometheus.yml, die die Haupt-Prometheus-Einstellungen und -Ziele enthält:

sudo nano /etc/prometheus/prometheus.yml
global:
  scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
  scrape_interval: 5s
  static_configs:
  - targets: ['localhost:9090']
- job_name: 'nvidia'
  scrape_interval: 5s
  static_configs:
  - targets: ['localhost:9835']

Es gibt grundlegende Optionen und zwei Ziele:

  1. localhost:9090 - dieses Ziel ist standardmäßig ein in Prometheus integriertes Ziel.
  2. localhost:9835 - dies wird verwendet, um Metriken vom nvidia_smi_exporter zu scrapen.

Drücken Sie Ctrl + X, dann Y, dann Enter, um die Datei zu speichern und den Texteditor zu verlassen. Es ist eine gute Idee, Prometheus als dedizierten Benutzer ohne Shell-Zugriff zu betreiben. Wir schlagen vor, einen Benutzer wie diesen zu erstellen:

sudo useradd --no-create-home --shell /bin/false prometheus

Gut. Ausführbare Dateien wurden kopiert und Konfigurationsdateien sind an ihren Plätzen. Es ist an der Zeit, das Betriebssystem darüber zu informieren, dass Prometheus als Daemon verwendet und mit systemd verwaltet werden kann. Führen Sie den folgenden Befehl aus und geben Sie diesen Inhalt ein:

sudo systemctl edit --full --force prometheus.service
[Unit]
  Description=Prometheus
  Wants=network-online.target
  After=network-online.target
  [Service]
  User=prometheus
  Group=prometheus
  Type=simple
  ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus/ \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries
  [Install]
  WantedBy=multi-user.target

Speichern und verlassen Sie durch Drücken von Ctrl + X, dann Y, dann Enter. Als Nächstes müssen Sie den neu erstellten Benutzer zum Eigentümer von zwei Arbeitsverzeichnissen und deren Inhalt machen:

sudo chown -R prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus

Alles ist bereit, um Prometheus zu starten. Führen Sie den Daemon aus:

sudo systemctl start prometheus

Überprüfen Sie den Status und Sie erhalten ein Ergebnis wie dieses:

sudo systemctl status prometheus
● prometheus.service - Prometheus
  Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled)
  Active: active (running) since Mon 2023-10-09 12:44:16 UTC; 5min ago
Main PID: 2223 (prometheus)
   Tasks: 42 (limit: 425060)
  Memory: 96.4M
     CPU: 1.099s
  CGroup: /system.slice/prometheus.service
          └─2223 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml ->
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.263Z caller=head.go:760 l>
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.269Z caller=head.go:760 l>
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.269Z caller=head.go:760 l>
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.270Z caller=head.go:797 l>
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.273Z caller=main.go:1045 >
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.273Z caller=main.go:1048 >
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.273Z caller=main.go:1229 >
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.274Z caller=main.go:1266 >
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.274Z caller=main.go:1009 >
Oct 09 12:44:19 gpuserver prometheus[2223]: ts=2023-10-09T12:44:19.274Z caller=manager.go:10>

Der letzte Befehl zeigt an, dass der Prometheus-Daemon beim Starten des Betriebssystems automatisch geladen werden soll:

sudo systemctl enable prometheus

Scraping von Metriken in Linux

Alle vorherigen Schritte waren nur Vorbereitungen. Obwohl Grafana und Prometheus bereits installiert sind, wissen sie noch nichts voneinander. Fügen wir eine neue Datenquelle zu Grafana hinzu. Öffnen Sie Ihren Webbrowser und geben Sie die folgende Adresse ein:

http://[LEADERGPU_IP_ADDRESS]:3000/connections/datasources/new

Für die erste Anmeldung bei Grafana verwenden Sie die Standard-Anmeldedaten: admin/admin. Diese müssen danach sofort geändert werden. Wählen Sie auf der geöffneten Seite Prometheus:

Datenquelle hinzufügen

Stellen Sie den Namen und die URL unserer lokalen Prometheus-Instanz ein. Standardmäßig verwendet es den Port 9090 und das einfache HTTP-Protokoll:

Neues Datenquellendialog

Scrollen Sie bis zum Ende und klicken Sie auf den Speichern & testen Knopf. Grafana sendet eine kurze Anfrage an Prometheus und wenn alles in Ordnung ist, erhalten Sie eine Meldung wie diese:

Datenquelle speichern und testen

Jetzt benötigen Sie ein fertiges offizielles Dashboard, das mit dem nvidia_gpu_metrics Exporter arbeitet. Öffnen Sie den folgenden Link in Ihrem Browser:

https://grafana.com/grafana/dashboards/14574-nvidia-gpu-metrics/

Hier haben Sie die JSON herunterladen Schaltfläche. Sie müssen keine JSON-Datei herunterladen. Klicken Sie einfach mit der rechten Maustaste darauf und wählen Sie Linkadresse kopieren:

Holen Sie sich das Dashboard

Öffnen Sie die Grafana-Web-Oberfläche unter http://[LEADERGPU_IP_ADDRESS]:3000/, klicken Sie auf das Plus-Symbol und wählen Sie den Menüpunkt Dashboard importieren:

Import Dashboard Dialog

Fügen Sie den kopierten Link in das folgende Feld ein, indem Sie die Tastenkombination Strg + V drücken, und klicken Sie auf die Laden Schaltfläche:

Hochladen von Dashboard JSON

Grafana lädt das Dashboard herunter und Sie müssen die zuvor erstellte Datenquelle, Prometheus, aus dem Dropdown-Menü auswählen. Dann klicken Sie auf den Importieren Knopf:

Importdatenquelle Prometheus

Es öffnet sich ein schönes Dashboard, aber es zeigt noch keine Daten an:

Leeres Dashboard

Das liegt daran, dass wir die letzte Komponente noch nicht installiert haben: den nvidia_gpu_exporter. Machen wir das. Öffnen Sie Link in Ihrem Webbrowser und kopieren Sie den Link zum deb-Paket. Jetzt können Sie es mit dem wget-Dienstprogramm herunterladen:

wget https://github.com/utkuozdemir/nvidia_gpu_exporter/releases/download/v1.2.0/nvidia-gpu-exporter_1.2.0_linux_amd64.deb

Schließlich, installieren Sie es:

sudo dpkg -i nvidia-gpu-exporter_1.2.0_linux_amd64.deb

Warten Sie ein paar Sekunden und Sie erhalten die ersten Daten auf Ihrem Grafana-Dashboard:

Dashboard mit Daten

Genießen Sie Ihr neues Überwachungstool!

Metriken in Windows Server scrapen

Das oben beschriebene System muss sich nicht auf demselben Server befinden. Zum Beispiel können Sie eine Kombination aus Grafana und Prometheus auf einem Server (selbst ein kleiner Einplatinencomputer wie Raspberry Pi genügt) und scrapen GPU-Metriken von einem entfernten Server einrichten. Die Schlüsselkomponente des Systems, nvidia_gpu_exporter, kann sowohl auf Linux als auch auf Windows Server betrieben werden. Wir haben kurze Anleitungen für seine Installation vorbereitet.

Öffnen Sie PowerShell und führen Sie die folgenden Befehle sequentiell aus. Ermöglichen Sie dem aktuellen Benutzer das Ausführen von PowerShell-Skripten:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Besorgen Sie sich den Scoop-Paketmanager und installieren Sie ihn:

iex "& {$(irm get.scoop.sh)} -RunAsAdmin"

Installieren Sie die nssm und git Pakete mit Scoop. Diese Pakete sind notwendig um nvidia_gpu_exporter von Github zu bekommen und es als Systemdienst zu installieren:

scoop install nssm --global
scoop install git

Scoop verwaltet Apps, indem es sie in Sammlungen gruppiert, die als Buckets bezeichnet werden. Erstellen wir einen mit der notwendigen App:

scoop bucket add nvidia_gpu_exporter https://github.com/utkuozdemir/scoop_nvidia_gpu_exporter.git

Jetzt sind wir bereit, die App herunterzuladen und zu installieren:

scoop install nvidia_gpu_exporter/nvidia_gpu_exporter --global

Wenn die App startet, verwendet sie die Portnummer 9835. Sie müssen die Windows Defender Firewall so konfigurieren, dass sie Verbindungen von außen akzeptiert:

New-NetFirewallRule -DisplayName "Nvidia GPU Exporter" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 9835

Teilen Sie dem Betriebssystem mit, dass nvidia_gpu_exporter ein neuer Dienst ist und beim Laden des Betriebssystems ausgeführt werden muss:

nssm install nvidia_gpu_exporter "C:\ProgramData\scoop\apps\nvidia_gpu_exporter\current\nvidia_gpu_exporter.exe"

Der letzte Schritt besteht darin, den Dienst zu starten:

Start-Service nvidia_gpu_exporter

Bitte beachten Sie, dass Sie den Remote-Server als Ziel in Ihrem prometheus.yml hinzufügen müssen:

…
  - job_name: 'nvidia'
    scrape_interval: 5s
    static_configs:
    - targets: ['REMOTE_SERVER_IP:9835']
…

Siehe auch:



Aktualisiert: 28.03.2025

Veröffentlicht: 25.06.2024


Haben Sie noch Fragen? Schreiben Sie uns!

By clicking «I Accept» you confirm that you have read and accepted the website Terms and Conditions, Privacy Policy, and Moneyback Policy.