Prometheus, Node Exporter und Grafana unter Debian oder Ubuntu einrichten
Schritt-für-Schritt-Anleitung zum Aufbau eines Monitoring-Stacks auf einem Debian-/Ubuntu-Server. Die unten verwendeten Versionen sind die zum Zeitpunkt des Schreibens aktuellen stabilen Stände (August 2026): Prometheus 3.13.1, Node Exporter 1.12.1, Grafana 13.1.1. Prüfen Sie die Release-Seiten, bevor Sie loslegen, falls es inzwischen neuere gibt.
Drei Seiten aus der offiziellen Dokumentation sollten Sie daneben offen lassen: die Konfigurationsreferenz von Prometheus, die Liste der Node-Exporter-Collectors samt dem, was jeder einzelne davon kostet, und Grafanas eigene Installationsanleitung für Debian.
Architektur
+----------------+ scrapes :9100 +----------------+
| Node Exporter | <---------------- | Prometheus |
| :9100 | | :9090 |
+----------------+ +--------+-------+
|
| PromQL queries :9090
v
+----------------+
| Grafana |
| :3000 |
+----------------+
|
v
Browser / userVoraussetzungen
- Ein Debian- oder Ubuntu-Server mit sudo-Zugriff
curlundtarinstalliert- SSH-Zugang für einen Tunnel. Halten Sie die Ports 9090, 9100 und 3000 zum Internet geschlossen; alle drei Dienste lauschen nur auf Loopback.
Teil 1: Prometheus installieren
Schritt 1: den Systembenutzer prometheus anlegen
sudo useradd --no-create-home --shell /bin/false prometheusSchritt 2: Verzeichnisse anlegen
sudo mkdir -p /etc/prometheus /var/lib/prometheusSchritt 3: Prometheus herunterladen
cd /tmp
curl -LO https://github.com/prometheus/prometheus/releases/download/v3.13.1/prometheus-3.13.1.linux-amd64.tar.gz
tar -xvf prometheus-3.13.1.linux-amd64.tar.gzSchritt 4: die Binaries installieren
sudo cp prometheus-3.13.1.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-3.13.1.linux-amd64/promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtoolSchritt 5: Konsolenvorlagen installieren und Besitzrechte setzen
sudo cp -r prometheus-3.13.1.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-3.13.1.linux-amd64/console_libraries /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheusSchritt 6: die Konfigurationsdatei anlegen
sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
scrape_interval: 10s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
EOFDer Scrape-Job für Node Exporter kommt in Teil 3 dazu, sobald er installiert ist.
Schritt 7: den systemd-Dienst anlegen
sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF
[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.listen-address=127.0.0.1:9090 \\
--web.console.templates=/etc/prometheus/consoles \\
--web.console.libraries=/etc/prometheus/console_libraries \\
--storage.tsdb.retention.time=365d
ExecReload=/bin/kill -HUP \$MAINPID
[Install]
WantedBy=multi-user.target
EOFExecReload sorgt dafür, dass systemctl reload prometheus in Teil 3 funktioniert. Ohne das verweigert systemd das Neuladen mit "Job type reload is not applicable", und Ihnen bleibt nur ein vollständiger Neustart. Achten Sie auf den Backslash in \$MAINPID: dieses Heredoc steht ohne Anführungszeichen, sonst würde die Shell die Variable beim Schreiben der Datei zu nichts auflösen.
Schritt 8: Prometheus starten und aktivieren
sudo systemctl daemon-reload
sudo systemctl enable --now prometheusSchritt 9: prüfen
sudo systemctl status prometheus
curl -s http://localhost:9090/-/healthyÖffnen Sie auf Ihrem eigenen Rechner einen SSH-Tunnel und lassen Sie ihn laufen:
ssh -N -L 9090:127.0.0.1:9090 -L 3000:127.0.0.1:3000 user@serverErsetzen Sie user@server durch Ihr SSH-Ziel. Öffnen Sie anschließend http://localhost:9090 im Browser Ihres Rechners.
Den Prometheus-Download aufräumen
rm -rf /tmp/prometheus-3.13.1.linux-amd64*Teil 2: Node Exporter installieren
Schritt 1: den Systembenutzer node_exporter anlegen
sudo useradd --no-create-home --shell /bin/false node_exporterSchritt 2: Node Exporter herunterladen
cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.12.1/node_exporter-1.12.1.linux-amd64.tar.gz
tar -xvf node_exporter-1.12.1.linux-amd64.tar.gzSchritt 3: das Binary installieren
sudo cp node_exporter-1.12.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporterSchritt 4: den systemd-Dienst anlegen
sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<EOF
[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 --web.listen-address=127.0.0.1:9100
[Install]
WantedBy=multi-user.target
EOFSchritt 5: Node Exporter starten und aktivieren
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporterSchritt 6: prüfen
curl -s http://localhost:9100/metrics | headDen Node-Exporter-Download aufräumen
rm -rf /tmp/node_exporter-1.12.1.linux-amd64*Teil 3: Prometheus auf Node Exporter richten
Schritt 1: den Scrape-Job hinzufügen
sudo vim /etc/prometheus/prometheus.ymlFügen Sie unter scrape_configs hinzu:
- job_name: "node_exporter"
static_configs:
- targets: ['localhost:9100']Schritt 2: die Konfiguration prüfen
promtool check config /etc/prometheus/prometheus.ymlSchritt 3: Prometheus neu laden
sudo systemctl reload prometheusSchritt 4: prüfen, ob das Target läuft
Öffnen Sie über den SSH-Tunnel http://localhost:9090/targets: die Jobs prometheus und node_exporter sollten beide State = UP zeigen.
Teil 4: Grafana installieren
Offizieller Weg: APT-Repository. apt-get update aktualisiert die Paketlisten; apt-get install --only-upgrade grafana installiert eine verfügbare Aktualisierung. Quelle: https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/
Schritt 1: Voraussetzungen installieren
sudo apt-get install -y apt-transport-https wget gnupgSchritt 2: den GPG-Schlüssel importieren
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.ascSchritt 3: das Stable-Repository hinzufügen
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.listSchritt 4: die Paketliste aktualisieren
sudo apt-get updateSchritt 5: Grafana OSS installieren
sudo apt-get install -y grafanaSchritt 6: Grafana starten und aktivieren
sudo mkdir -p /etc/systemd/system/grafana-server.service.d
printf '[Service]\nEnvironment=GF_SERVER_HTTP_ADDR=127.0.0.1\n' | sudo tee /etc/systemd/system/grafana-server.service.d/listen.conf
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl restart grafana-serverSchritt 7: prüfen
sudo systemctl status grafana-serverÖffnen Sie über den SSH-Tunnel http://localhost:3000. Die Standardanmeldung ist admin / admin, und Sie werden beim ersten Anmelden zum Ändern aufgefordert.
Teil 5: optionale Grafana-Konfiguration (eigene Domain / HTTPS)
Für privaten Zugriff reicht der SSH-Tunnel. Für ein öffentlich erreichbares Dashboard richten Sie grafana.example.com auf den Server und terminieren TLS in nginx. Grafana bleibt auf Loopback-HTTP; aktivieren Sie kein HTTPS auf dem internen Port.
Schritt 1: grafana.ini bearbeiten
sudo vim /etc/grafana/grafana.ini[server]
http_addr = 127.0.0.1
http_port = 3000
domain = grafana.example.com
root_url = https://grafana.example.com/
enforce_domain = true
protocol = httpSchritt 2: Grafana neu starten
sudo systemctl restart grafana-serverSchritt 3 (optional): Nginx als Reverse Proxy
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name grafana.example.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3000;
}
location /api/live {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3000;
}
}Installieren Sie nginx und Certbot und speichern Sie die obige Konfiguration unter /etc/nginx/sites-available/grafana.example.com. Ersetzen Sie die Beispieldomain überall:
sudo apt-get install -y nginx certbot python3-certbot-nginx
sudo ln -s /etc/nginx/sites-available/grafana.example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d grafana.example.com
sudo certbot renew --dry-runÖffnen Sie die Ports 80 und 443 für nginx, nicht 3000. Certbot richtet TLS und den Erneuerungstimer ein. Lassen Sie die Grafana-Authentifizierung aktiviert und ändern Sie das Anfangspasswort über den SSH-Tunnel, bevor Sie die Domain freigeben.
Teil 6: Grafana mit Prometheus verbinden
Schritt 1: die Datenquelle hinzufügen
In Grafana: Connections > Data sources > Add data source > Prometheus.
Setzen Sie die URL auf:
http://localhost:9090Klicken Sie auf Save & test, Sie sollten "Successfully queried the Prometheus API." sehen.
Schritt 2: das Node-Exporter-Dashboard importieren
Dashboards > New > Import, dann die Dashboard-ID eingeben:
1860Wählen Sie auf Nachfrage Ihre Prometheus-Datenquelle und klicken Sie auf Import. Das ist das Community-Dashboard "Node Exporter Full", und es deckt CPU, Arbeitsspeicher, Festplatte und Netzwerk von Haus aus ab.
Spickzettel zur Dienstverwaltung
service start status enable
--------------- -------------------- -------------------- -------------------------------
prometheus systemctl start systemctl status systemctl enable prometheus
node_exporter systemctl start systemctl status systemctl enable node_exporter
grafana-server systemctl start systemctl status systemctl enable grafana-serverKonfigurationen ohne Ausfallzeit neu laden:
sudo systemctl reload prometheus
sudo systemctl restart grafana-serverWie es weitergeht
Ein Server ist der Anfang, nicht das Ende. Die nächsten beiden Schritte sind meist Alarmierung (Alertmanager, damit eine volle Platte Sie um 3 Uhr weckt statt Sie um 9 zu überraschen) und ein zweiter Exporter für das, was auf der Maschine tatsächlich läuft. Ist diese Maschine eine Website, dann ist WordPress mit Docker und Redis selbst hosten die andere Hälfte desselben Aufbaus.
Monitoring in größerem Maßstab ist ein guter Teil meiner Arbeit: Observability mit Grafana und Prometheus, einschließlich eines Benchmark-Aufbaus, der zehn Millionen Requests in fünfzehn Minuten losgeschickt hat. Ich bespreche das gern mit Ihnen.
Deinstallieren
Prometheus entfernen
sudo systemctl disable --now prometheus
sudo rm -f /usr/local/bin/prometheus /usr/local/bin/promtool
sudo rm -rf /etc/prometheus /var/lib/prometheus /etc/systemd/system/prometheus.service
sudo userdel prometheus
sudo systemctl daemon-reloadNode Exporter entfernen
sudo systemctl disable --now node_exporter
sudo rm -f /usr/local/bin/node_exporter /etc/systemd/system/node_exporter.service
sudo userdel node_exporter
sudo systemctl daemon-reloadGrafana entfernen
sudo systemctl stop grafana-server
sudo apt-get remove -y grafana
sudo rm -i /etc/apt/sources.list.d/grafana.list