linux-ubuntu-debian monitoring prometheus node-exporter metrics

Prometheus Node Exporter: Monitoring Setup (Artikel 043)

Installation und Konfiguration des Prometheus Node Exporters zur Überwachung von Systemressourcen. Erfahren Sie, wie Sie Metriken sammeln und für Dashboards bereitstellen.

# Prometheus Node Exporter: Hardware-Monitoring im Griff

TL;DR / Management Summary Wer seine Infrastruktur nicht misst, kann sie nicht managen. Der Prometheus Node Exporter ist das Standard-Werkzeug, um Hardware- und Kernel-Metriken (CPU, RAM, Disk, Network) von Linux-Hosts zu extrahieren. Er folgt dem Pull-Prinzip: Der Exporter bietet eine HTTP-Endpunkt an, den der Prometheus-Server in regelmäßigen Abständen abfragt. Ein absolutes Muss für jedes moderne SRE-Team.


# 1. Einführung & Architektur

Metriken sammeln, nicht pushen.

Im Gegensatz zu klassischen Systemen (wie Zabbix oder Icinga), die oft Agenten nutzen, die Daten aktiv senden, wartet der Node Exporter passiv auf Anfragen.

graph LR
    A[Hardware / Kernel] --- B[Node Exporter Port 9100]
    B -->|HTTP /metrics| C[Prometheus Server]
    C -->|Store| D[TSDB Time Series DB]
    D -->|Query| E[Grafana Dashboard]
    C -->|Alert| F[Alertmanager]

# 2. Installation & Basiskonfiguration

Schnell einsatzbereit.

# Installation via APT

Ubuntu und Debian haben den Exporter in den Standard-Quellen.

sudo apt update
sudo apt install prometheus-node-exporter

# Manueller Download (für aktuellste Version)

Enterprise-Admins bevorzugen oft die Binaries von GitHub für volle Kontrolle.

wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvfz node_exporter-*
sudo mv node_exporter-*/node_exporter /usr/local/bin/

# 3. Systemd-Integration & Security

Dauerhafter Betrieb.

# Eigene Unit-Datei (/etc/systemd/system/node_exporter.service)

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter \
    --collector.mountstats \
    --collector.systemd \
    --web.listen-address=:9100

[Install]
WantedBy=multi-user.target

Sicherheit: Der Node Exporter bietet standardmäßig keine Authentifizierung. Nutzen Sie eine Firewall (UFW), um Port 9100 nur für Ihren Prometheus-Server freizugeben, oder setzen Sie einen Nginx-Reverse-Proxy mit Basic-Auth davor.


# 4. Day-2 Operations: Metriken verstehen

Was bedeuten die Zahlen?

Testen Sie den Output manuell:

curl http://localhost:9100/metrics | grep node_cpu_seconds_total

# Wichtige Kennzahlen (KPIs)

  • node_memory_MemAvailable_bytes: Wie viel RAM ist wirklich noch frei?
  • node_filesystem_free_bytes: Freier Speicherplatz pro Partition.
  • node_load1: Systemlast (1-Minute Average).
  • node_network_receive_bytes_total: Eingehender Netzwerk-Traffic.

# 5. Troubleshooting & “War Stories”

Wenn das Dashboard leer bleibt.

# Story 1: “Der hängende Mount”

Symptom: Der Node Exporter antwortet nicht mehr oder ist extrem langsam. Prometheus zeigt einen “Scrape Timeout”. Ursache: Ein NFS-Mount auf dem Server ist “stale” (hängt). Der Node Exporter versucht, die Disk-Statistiken zu lesen und wartet ewig auf den Kernel. Lösung: Nutzen Sie das Flag --no-collector.nfs oder --collector.filesystem.ignored-mount-points, um problematische Pfade zu ignorieren.

# Story 2: “Metric Cardinality Explosion”

Symptom: Der Prometheus-Server braucht plötzlich massiv RAM und Disk-I/O. Ursache: Auf dem Host laufen tausende kurzlebige Docker-Container oder Prozesse. Der Exporter generiert für jeden eine eigene Metrik-Zeitreihe. Lösung: Deaktivieren Sie unnötige Collectoren wie processes oder filtern Sie die Metriken bereits beim Scrape in der prometheus.yml.


# 6. Fazit & Empfehlung

  • Standard: Aktivieren Sie die Collectoren systemd und filesystem.
  • Visualisierung: Nutzen Sie das berühmte Grafana Dashboard ID 1860 (Node Exporter Full) für eine sofortige Profi-Ansicht.
  • Best Practice: Führen Sie den Exporter unter einem dedizierten User ohne Root-Rechte aus.

# Anhang: Cheatsheet

Aufgabe Befehl
Status prüfen systemctl status prometheus-node-exporter
Logs einsehen journalctl -u prometheus-node-exporter -f
Collectoren listen node_exporter --help
Scrape-Test `curl -s localhost:9100/metrics
Port freigeben sudo ufw allow from <prom_ip> to any port 9100