Skip to content

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.

Architektur

+----------------+   scrapes :9100   +----------------+
|  Node Exporter | <---------------- |   Prometheus   |
|   :9100        |                   |   :9090        |
+----------------+                   +--------+-------+
                                              |
                                              | PromQL queries :9090
                                              v
                                     +----------------+
                                     |    Grafana     |
                                     |   :3000        |
                                     +----------------+
                                              |
                                              v
                                        Browser / user

Voraussetzungen

  • Ein Debian- oder Ubuntu-Server mit sudo-Zugriff
  • curl und tar installiert
  • Die Ports 9090 (Prometheus), 9100 (Node Exporter) und 3000 (Grafana) in der Firewall offen, falls Sie aus der Ferne zugreifen

Teil 1: Prometheus installieren

Schritt 1: den Systembenutzer prometheus anlegen

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

Schritt 2: Verzeichnisse anlegen

bash
sudo mkdir -p /etc/prometheus /var/lib/prometheus

Schritt 3: Prometheus herunterladen

bash
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.gz

Schritt 4: die Binaries installieren

bash
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/promtool

Schritt 5: Konsolenvorlagen installieren und Besitzrechte setzen

bash
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/prometheus

Schritt 6: die Konfigurationsdatei anlegen

bash
sudo tee /etc/prometheus/prometheus.yml > /dev/null <<EOF
global:
  scrape_interval: 10s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
EOF

Der Scrape-Job für Node Exporter kommt in Teil 3 dazu, sobald er installiert ist.

Schritt 7: den systemd-Dienst anlegen

bash
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.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
EOF

ExecReload 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

bash
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus

Schritt 9: prüfen

bash
sudo systemctl status prometheus
curl -s http://localhost:9090/-/healthy

Öffnen Sie http://<server-ip>:9090 im Browser, um zu bestätigen, dass die Oberfläche lädt.

Den Prometheus-Download aufräumen

bash
rm -rf /tmp/prometheus-3.13.1.linux-amd64*

Teil 2: Node Exporter installieren

Schritt 1: den Systembenutzer node_exporter anlegen

bash
sudo useradd --no-create-home --shell /bin/false node_exporter

Schritt 2: Node Exporter herunterladen

bash
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.gz

Schritt 3: das Binary installieren

bash
sudo cp node_exporter-1.12.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Schritt 4: den systemd-Dienst anlegen

bash
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

[Install]
WantedBy=multi-user.target
EOF

Schritt 5: Node Exporter starten und aktivieren

bash
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

Schritt 6: prüfen

bash
curl -s http://localhost:9100/metrics | head

Den Node-Exporter-Download aufräumen

bash
rm -rf /tmp/node_exporter-1.12.1.linux-amd64*

Teil 3: Prometheus auf Node Exporter richten

Schritt 1: den Scrape-Job hinzufügen

bash
sudo vim /etc/prometheus/prometheus.yml

Fügen Sie unter scrape_configs hinzu:

yaml
  - job_name: "node_exporter"
    static_configs:
      - targets: ['localhost:9100']

Schritt 2: die Konfiguration prüfen

bash
promtool check config /etc/prometheus/prometheus.yml

Schritt 3: Prometheus neu laden

bash
sudo systemctl reload prometheus

Schritt 4: prüfen, ob das Target läuft

Öffnen Sie http://<server-ip>:9090/targets: die Jobs prometheus und node_exporter sollten beide State = UP zeigen.

Teil 4: Grafana installieren

Offizieller Weg: APT-Repository, damit apt-get update Grafana aktuell hält. Quelle: https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/

Schritt 1: Voraussetzungen installieren

bash
sudo apt-get install -y apt-transport-https wget gnupg

Schritt 2: den GPG-Schlüssel importieren

bash
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.asc

Schritt 3: das Stable-Repository hinzufügen

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

Schritt 4: die Paketliste aktualisieren

bash
sudo apt-get update

Schritt 5: Grafana OSS installieren

bash
sudo apt-get install -y grafana

Schritt 6: Grafana starten und aktivieren

bash
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server

Schritt 7: prüfen

bash
sudo systemctl status grafana-server

Öffnen Sie http://<server-ip>:3000. Die Standardanmeldung ist admin / admin, und Sie werden beim ersten Anmelden zum Ändern aufgefordert.

Teil 5: optionale Grafana-Konfiguration (eigene Domain / HTTPS)

Nur nötig, wenn Sie Grafana hinter einem Domainnamen mit TLS betreiben.

Schritt 1: grafana.ini bearbeiten

bash
sudo vim /etc/grafana/grafana.ini
ini
[server]
http_addr =
http_port = 3000
domain = mysite.com
root_url = https://subdomain.mysite.com:3000
cert_key = /etc/grafana/grafana.key
cert_file = /etc/grafana/grafana.crt
enforce_domain = False
protocol = https

Schritt 2: Grafana neu starten

bash
sudo systemctl restart grafana-server

Schritt 3 (optional): Nginx als Reverse Proxy

nginx
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://localhost: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 $http_host;
        proxy_pass http://localhost:3000;
    }
}

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:9090

Klicken 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:

1860

Wä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-server

Konfigurationen ohne Ausfallzeit neu laden:

bash
sudo systemctl reload prometheus
sudo systemctl restart grafana-server

Wie 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

bash
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-reload

Node Exporter entfernen

bash
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-reload

Grafana entfernen

bash
sudo systemctl stop grafana-server
sudo apt-get remove -y grafana
sudo rm -i /etc/apt/sources.list.d/grafana.list