Einführung
Dieses Lab erweitert Ihr Monitoring auf einen externen Dienst. Sie werden Node Exporter einrichten, einen Prometheus-Exporter für Hardware- und OS-Metriken. Das Setup wird einen laufenden Prometheus-Container aus dem vorherigen Lab bereitstellen. Sie werden einen Node Exporter-Container ausführen und ihn als neues Ziel in Ihrer prometheus.yml hinzufügen. Am Ende dieses Labs werden Sie in der Lage sein, Systemmetriken auf Host-Ebene innerhalb der Prometheus-UI abzufragen.
Node Exporter Docker Image herunterladen
In diesem Schritt laden Sie das offizielle Docker-Image für Node Exporter herunter. Node Exporter ist ein Prometheus-Exporter, der eine Vielzahl von Hardware- und Kernel-bezogenen Metriken von der Host-Maschine bereitstellt.
Um zu beginnen, ziehen Sie das Image prom/node-exporter von Docker Hub. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:
docker pull prom/node-exporter
Dieser Befehl kontaktiert die Docker Hub-Registry und lädt die neueste Version des Node Exporter-Images auf Ihre lokale Maschine herunter. Sie sehen eine Ausgabe, die den Download-Fortschritt für jede Schicht des Images anzeigt.
Erwartete Ausgabe:
Using default tag: latest
latest: Pulling from prom/node-exporter
Digest: sha256:a5579e72377a6053359058893b80f4f47c55d761457d685343b8e797859a159b
Status: Image is up to date for prom/node-exporter
docker.io/prom/node-exporter
Node Exporter Container auf Port 9100 ausführen
Nachdem Sie das Image haben, lassen Sie uns den Node Exporter als Container ausführen. Wir werden seine Metriken auf Port 9100 bereitstellen, was der Standardport für Node Exporter ist.
Führen Sie den folgenden Befehl aus, um den Container zu starten und ihn im selben Docker-Netzwerk wie Prometheus zu platzieren:
docker run -d -p 9100:9100 --name node-exporter --network monitoring prom/node-exporter
Lassen Sie uns diesen Befehl aufschlüsseln:
-d: Führt den Container im detached mode (im Hintergrund) aus.-p 9100:9100: Ordnet Port9100des Hosts dem Port9100des Containers zu.--name node-exporter: Weist dem Container einen einprägsamen Namen für einfache Referenzierung zu.prom/node-exporter: Das zu verwendende Image zum Erstellen des Containers.
Sie können mit dem Befehl docker ps überprüfen, ob der Container läuft:
docker ps
Sie sollten node-exporter in der Liste der laufenden Container sehen. Optional können Sie die Netzwerkanbindung mit folgendem Befehl bestätigen:
docker inspect node-exporter --format '{{.HostConfig.NetworkMode}}'
Die Ausgabe sollte monitoring sein.
Erwartete Ausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
... prom/node-exporter "/bin/node_exporter" A few seconds ago Up a few seconds 0.0.0.0:9100->9100/tcp, :::9100->9100/tcp node-exporter
... prom/prometheus "/bin/prometheus --c…" About a minute ago Up about a minute 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp prometheus
prometheus.yml aktualisieren, um Node Exporter Target hinzuzufügen
In diesem Schritt konfigurieren Sie Prometheus so, dass es Metriken vom neu laufenden Node Exporter Container abruft (scrapes). Dies geschieht durch Bearbeiten der Konfigurationsdatei prometheus.yml, um einen neuen Scrape-Job hinzuzufügen.
Öffnen Sie zuerst die Datei prometheus.yml in Ihrem Projektverzeichnis mit dem nano-Editor:
nano ~/project/prometheus.yml
Fügen Sie nun eine neue Job-Konfiguration für den Node Exporter unter dem Abschnitt scrape_configs hinzu. Ihre endgültige Datei sollte wie folgt aussehen. Achten Sie auf die korrekte Einrückung, da YAML darauf empfindlich reagiert.
global:
scrape_interval: 15s
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["prometheus:9090"]
- job_name: "node_exporter"
static_configs:
- targets: ["node-exporter:9100"]
Hier ist, was der neue Block bewirkt:
job_name: 'node_exporter': Gibt diesem Scrape-Job einen Namen, der zur Kennzeichnung der gesammelten Metriken verwendet wird.targets: ['node-exporter:9100']: Teilt Prometheus mit, wo der Node Exporter zu finden ist. Wir verwenden den Containernamen, da Docker eine interne DNS-Auflösung zwischen Containern im selben Netzwerk bietet. Der Hostnamelocalhostist auf jeden Container beschränkt, daher kann er nicht verwendet werden, um andere Container zu erreichen.
Nach der Bearbeitung speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, dann Y und dann Enter drücken.
Prometheus Container mit aktualisierter Konfiguration neu starten
Damit Prometheus die neue Konfiguration laden kann, müssen Sie seinen Container neu starten. Die zuvor konfigurierte Volume-Mount stellt sicher, dass der Container nach dem Neustart die aktualisierte prometheus.yml-Datei erkennt.
Führen Sie den folgenden Befehl aus, um den Prometheus-Container neu zu starten:
docker restart prometheus
Dieser Befehl stoppt den Container mit dem Namen prometheus ordnungsgemäß und startet ihn dann neu. Nach einigen Sekunden läuft Prometheus mit der neuen Konfiguration.
Lassen Sie uns nun die Änderung in der Prometheus-Benutzeroberfläche überprüfen.
- Klicken Sie in der LabEx-Oberfläche auf die Schaltfläche
+(Neuer Tab), wählen Sie Web Service und geben Sie9090für den Port ein. - Wenn sich der neue Tab öffnet, sollten Sie die Startseite des Prometheus Expression Browsers sehen.
- Klicken Sie in der oberen Navigationsleiste auf das Menü "Status" und wählen Sie dann "Targets".

Sie sollten nun zwei aufgeführte Ziele sehen: prometheus und node_exporter. Beide sollten den Status "UP" haben, was darauf hinweist, dass Prometheus erfolgreich Metriken sowohl von sich selbst als auch vom Node Exporter abruft.
node_cpu_seconds_total Metrik in der Benutzeroberfläche abfragen
Der letzte Schritt besteht darin, durch Ausführen einer Abfrage zu bestätigen, dass Prometheus erfolgreich Metriken vom Node Exporter aufnimmt.
Navigieren Sie zurück zur Hauptseite "Graph" in der Prometheus-Benutzeroberfläche, indem Sie auf den Link "Graph" in der Navigationsleiste klicken. Geben Sie im Eingabefeld "Expression" den folgenden Metriknamen ein:
node_cpu_seconds_total
Diese Metrik repräsentiert die Gesamtzeit in Sekunden, die die CPU in verschiedenen Modi (z. B. idle, user, system) verbracht hat.

Klicken Sie auf die Schaltfläche "Execute". Wenn die Verbindung erfolgreich ist, sehen Sie unterhalb des Graphen eine Ergebnistabelle. Jedes Ergebnis entspricht einem anderen CPU-Kern und Modus. Das Erscheinen dieser Ergebnisse bestätigt, dass Ihre gesamte Monitoring-Pipeline korrekt funktioniert, von der Datenerfassung durch Node Exporter bis zur Aufnahme und Speicherung durch Prometheus.
Sie können zwischen den Ansichten "Table" und "Graph" wechseln, um die Daten zu visualisieren.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben Ihr Monitoring-Setup erfolgreich erweitert, indem Sie einen externen Dienst hinzugefügt haben. In diesem Lab haben Sie gelernt, wie Sie den offiziellen Prometheus Node Exporter in einem Docker-Container ausführen, eine Prometheus-Instanz konfigurieren, um Metriken von diesem neuen Ziel abzurufen, und die Datenerfassung durch Abfragen von Host-Level-Metriken überprüfen. Dies ist eine grundlegende Fähigkeit für den Aufbau eines umfassenden Observability-Stacks, der Ihnen tiefe Einblicke in die Leistung und den Zustand Ihrer Systeme ermöglicht.



