// Tutorial · Docker · Monitoring

Netdata: Echtzeit-Monitoring für deinen Server

📅 09.09.2026 ⏱ 10 Min. Lesezeit ✍️ Redaktion

Netdata ist das Schweizer Taschenmesser unter den Monitoring-Tools: Es sammelt pro Sekunde hunderte Metriken – CPU, RAM, Disk, Netzwerk, Docker-Container, Prozesse – und zeigt sie in einer interaktiven Echtzeit-Oberfläche. Ein einziger Container ersetzt dir das Gefühl, „blind“ zu administrieren. In diesem Artikel richtest du Netdata mit Docker Compose ein, hängst es sicher an deinen Reverse Proxy und lernst die wichtigsten Konfigurations-Stellschrauben kennen.

Was ist Netdata?

Netdata ist ein Open-Source-Monitoring-Agent, der direkt auf dem zu überwachenden System läuft. Statt sich mit 15-Sekunden-Intervallen zufriedenzugeben, liefert Netdata Echtzeit-Daten in 1-Sekunden-Auflösung – und das mit erstaunlich geringem Eigenbedarf (je nach System ca. 1–3 % CPU).

  • System-Metriken: CPU, RAM, Swap, Disk-I/O, Netzwerk, Temperatur, Prozesse
  • Docker-Integration: Container-, Image- und Volume-Metriken über den (read-only) Docker-Socket
  • 200+ Collector-Plugins: von Nginx über PostgreSQL bis zu Proxmox – meist automatisch erkannt
  • Alarme: eingebaute Alarm-Regeln mit Benachrichtigung (E-Mail, Telegram, Discord …)
  • Interaktive Charts: ohne separate Grafana/InfluxDB-Installation – alles ist schon drin
Einordnung: Netdata ist perfekt für „Was passiert gerade?“ und schnelle Diagnose. Für Langzeit-Trends über Monate und komplexe Dashboards ist weiterhin ein Klassiker wie Prometheus/Grafana die bessere Wahl – Netdata kann beide Welten aber auch per Streaming verbinden.

Voraussetzungen

  • Debian-13-Server mit Docker & Compose (Teil 5)
  • Optional: Domain + Reverse Proxy (Nginx) für den Zugriff von außen
  • Keine eigene Datenbank nötig – Netdata bringt sein Speicher-Backend mit

Installation mit Docker Compose

Verzeichnis anlegen und in den Stack wechseln:

mkdir -p /opt/stacks/netdata
cd /opt/stacks/netdata

Die docker-compose.yml – mit allen Mounts, die Netdata braucht, um dein System wirklich zu sehen:

services:
  netdata:
    image: netdata/netdata
    container_name: netdata
    network_mode: bridge
    ports:
      - 127.0.0.1:50531:19999 # Web UI
    restart: unless-stopped
    cap_add:
      - SYS_PTRACE
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    volumes:
      - netdataconfig:/etc/netdata
      - netdatalib:/var/lib/netdata
      - netdatacache:/var/cache/netdata
      - /etc/passwd:/host/etc/passwd:ro
      - /etc/group:/host/etc/group:ro
      - /etc/localtime:/etc/localtime:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /etc/os-release:/host/etc/os-release:ro
      - /var/log:/host/var/log:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
volumes:
  netdataconfig: null
  netdatalib: null
  netdatacache: null
networks: {}

Starten und den Status prüfen:

docker compose up -d
docker compose ps

Danach öffnest du die Oberfläche im Browser: http://127.0.0.1:50531 – du solltest sofort die Live-Charts deines Servers sehen.

Warum diese Mounts?

BausteinWofür?
/proc, /sys (ro)System-, CPU-, Speicher- und Netzwerk-Metriken des Hosts
/var/log (ro)Log-Collector (u. a. Journald-Login-Versuche, Error-Logs)
/etc/passwd, /etc/group (ro)Benutzernamen für die Prozess-Anzeige statt kryptischer UIDs
docker.sock (ro)Container- und Docker-Metriken – bewusst nur lesend gemountet
netdataconfig/lib/cacheNamed Volumes für Konfiguration, Datenbank & Cache – überleben jeden Neustart
Gut zu wissen: Die Capabilities SYS_PTRACE (Prozess-Details) und SYS_ADMIN (u. a. Cgroup-/Netzwerk-Metriken) sowie apparmor:unconfined sind die von Netdata dokumentierte Standard-Empfehlung, damit wirklich alle Metriken ankommen. Alle Host-Pfade sind :ro gemountet – Netdata kann dein System also beobachten, aber nicht verändern.

Reverse Proxy: Netdata nach außen bringen

Da Netdata keine eigene Benutzerverwaltung mitbringt (Login gibt es nur optional über Netdata Cloud), gehört die UI hinter den Reverse Proxy mit Zugangsschutz:

server {
    listen 443 ssl http2;
    server_name metrics.deine-domain.de;

    ssl_certificate     /etc/letsencrypt/live/metrics.deine-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/metrics.deine-domain.de/privkey.pem;

    auth_basic "Netdata";
    auth_basic_user_file /etc/nginx/htpasswd-netdata;

    location / {
        proxy_pass http://127.0.0.1:50531;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
# Passwort-Datei einmalig anlegen
sudo htpasswd -c /etc/nginx/htpasswd-netdata admin
sudo nginx -t
sudo systemctl reload nginx
Nicht ohne Schutz freigeben: Deine Metriken verraten viel über den Server (Anzahl Dienste, Auslastung, Log-Daten). Ohne Basic Auth oder VPN solltest du Netdata nicht öffentlich erreichbar machen.

Konfiguration: Alarme, Retention & Co.

Die Hauptkonfiguration liegt in der Datei netdata.conf im Volume netdataconfig. Am einfachsten bearbeitest du sie direkt im Container:

docker exec -it netdata edit-config netdata.conf

Wichtige Bereiche:

  • Retention: Unter [db] steuert mode (z. B. dbengine) und retention die Speicherdauer – der DB-Engine-Modus ist der Standard und für Docker ideal.
  • Alarme: Netdata bringt hunderte Alarm-Regeln mit. Die Ausgabe-Kanäle konfigurierst du zentral – z. B. E-Mail oder Telegram.
  • Benachrichtigung testen: docker exec -it netdata netdata -W "alarm notify" funktioniert über das interne Kommando – sauberer ist der Test-Button im UI, falls eingerichtet.
  • Collector: Die meisten Dienste (Nginx, MariaDB, Redis …) werden automatisch erkannt, sobald sie laufen.

Nach Konfig-Änderungen den Container neu starten:

docker compose restart

Sicherheits-Check

  • localhost-Bindung: 127.0.0.1:50531 – die UI ist ohne Proxy nicht von außen erreichbar (Teil-3-Firewall bleibt wirksam).
  • Basic Auth am Proxy – Netdata selbst hat kein Login; der Zugangsschutz passiert vor dem Container.
  • Read-only Mounts: Alle Host-Pfade inkl. Docker-Socket sind :ro – gute Balance zwischen Metrik-Tiefe und Risiko.
  • AppArmor-Hinweis: apparmor:unconfined schaltet das Host-Profil für diesen Container ab – akzeptabel, solange der Container nicht öffentlich exponiert wird. Alternativ: Eigenes AppArmor-Profil erstellen (fortgeschritten).
  • Netdata Cloud: optionaler Login-Dienst von Netdata – nur aktivieren, wenn du den Agenten wirklich mit deren Cloud verbinden willst; ohne Anmeldung bleibt alles lokal.

Betrieb, Updates & Backups

Updates

cd /opt/stacks/netdata
docker compose pull
docker compose up -d

Backup der Konfiguration

Metriken und Cache kannst du jederzeit neu aufbauen – schützenswert ist deine Konfiguration im Volume netdataconfig. So sicherst du ein Named Volume in ein Borg-Archiv:

# Volume-Inhalt in einen temporären Ordner kopieren
docker run --rm -v netdata_netdataconfig:/src:ro -v /tmp/netdata-backup:/dst alpine \
  sh -c "cp -a /src/. /dst/"

# Ordner ins Borg-Archiv legen (Muster aus Teil 4/5)
borg create /mnt/backup/borg-repo::netdata-$(date +%Y-%m-%d) /tmp/netdata-backup

Der Volume-Name setzt sich aus Projekt- und Volume-Namen zusammen – prüfe ihn bei Bedarf mit docker volume ls.

Häufige Probleme (FAQ)

ProblemLösung
UI ist nicht erreichbarContainer-Status prüfen (docker compose ps) und Port-Test: curl -I http://127.0.0.1:50531. Bei Reverse Proxy: nginx -t und Reload nicht vergessen.
Keine Container-Metriken sichtbarDer Docker-Socket-Mount fehlt oder ist nicht read-only gemountet – Eintrag /var/run/docker.sock:/var/run/docker.sock:ro prüfen.
Hoher Speicherverbrauch des Cache-VolumesRetention unter [db] in der netdata.conf reduzieren oder das Cache-Volume zurücksetzen: docker compose down, Volume löschen, neu starten.
Alarm-Benachrichtigungen kommen nicht anAusgabe-Kanal in der Konfiguration prüfen und mit dem internen Test auslösen; SMTP-/Telegram-Zugangsdaten kontrollieren.
Zahlen wirken unplausibelZeitzone (TZ) und Host-Mounts prüfen – ohne /proc und /sys fehlen die wichtigsten Quellen.
Netdata will sich mit der Cloud verbindenEinfach nicht anmelden – der Agent läuft komplett lokal. Den Cloud-Bereich im UI ignorieren oder in der Konfiguration deaktivieren.

Fazit

Netdata ist in zehn Minuten installiert und liefert sofort einen erstaunlich tiefen Blick in deinen Server. Für den Alltag gilt:

  1. Port nur auf 127.0.0.1 binden – die UI gehört hinter Reverse Proxy + Basic Auth.
  2. Host-Pfade konsequent read-only mounten – Beobachten ja, Verändern nein.
  3. Alarme einrichten, bevor etwas passiert – Netdata schläft nie, du aber schon.
  4. Konfiguration sichern – Metriken regenerieren sich, deine Einstellungen nicht.

Damit hast du dein „Frühwarnsystem“ – und siehst künftig schon beim Blick auf die Charts, wenn ein Dienst auf dem Zahnfleisch läuft, bevor er es dir per Ausfall mitteilt.

📝
HuuuHosting-Redaktion

Open-Source-Tools für den eigenen Server – getestet, dokumentiert und in der Debian-13-Serie Schritt für Schritt erklärt.