labkompass

Guides · Hardware

SMART-Monitoring im Homelab: smartctl_exporter + Prometheus einrichten

Festplatten- und SSD-Gesundheit dauerhaft überwachen statt einmalig prüfen: smartctl_exporter per Docker Compose, Prometheus-Anbindung und die Stolpersteine mit USB-Platten und NVMe — aus dem echten Setup.

Von Niclas Hennrich · Veröffentlicht: · 3 Min. Lesezeit


Kurz gesagt: Ein einzelner Container (smartctl_exporter) macht die SMART-Werte aller Laufwerke für Prometheus abgreifbar — Temperaturen, Abnutzung, Fehlerzähler, Laufzeit. Aufsetzen dauert eine Viertelstunde; die eigentliche Arbeit steckt darin, fehlende Werte richtig zu interpretieren: fehlender Wert ≠ Fehler.

SMART (Self-Monitoring, Analysis and Reporting Technology) ist die Selbstdiagnose, die praktisch jede Festplatte und SSD eingebaut hat. Einmalig auslesen kann man sie mit smartctl — Befehle dafür baust du dir im smartctl Command Builder zusammen. Dieser Guide geht den Schritt weiter: SMART dauerhaft aufzeichnen, damit du Trends siehst und gewarnt wirst, bevor eine Platte stirbt.

Das Setup hier ist genau so am 25.08.2026 auf unserem Homeserver (Debian 13, System-NVMe + USB-Datenplatte) in Betrieb gegangen — inklusive der Stolpersteine, die dabei aufkamen.

Voraussetzungen #

smartctl_exporter per Docker Compose #

Der smartctl_exporter der Prometheus-Community fragt alle Laufwerke zyklisch ab und stellt die Werte auf Port 9633 bereit:

# ~/homelab/smartctl-exporter/compose.yaml
services:
  smartctl-exporter:
    image: prometheuscommunity/smartctl-exporter:v0.14.0
    container_name: smartctl-exporter
    restart: unless-stopped
    # SMART-Auslesen braucht direkten Zugriff auf die Block-Devices
    # (ioctl) — der Exporter arbeitet dabei rein lesend.
    privileged: true
    ports:
      - "9633:9633"
    command:
      - "--smartctl.interval=120s"
docker compose up -d
curl -s localhost:9633/metrics | grep -c '^smartctl'

Bei uns liefert der Check 104 Metrik-Serien für zwei Laufwerke. Das Abfrageintervall von 120 Sekunden ist bewusst entspannt — SMART-Werte ändern sich langsam, und häufigeres Wecken hält Platten unnötig wach.

Prometheus anbinden #

In der prometheus.yml kommt ein eigener Job dazu:

scrape_configs:
  - job_name: "smartctl"
    scrape_interval: 60s
    static_configs:
      - targets: ["<host-ip>:9633"]

Danach stehen unter anderem diese Metriken bereit:

MetrikBedeutung
smartctl_device_smart_statusGesamturteil des Laufwerks (1 = PASSED)
smartctl_device_temperatureTemperatur in °C
smartctl_device_percentage_usedAbnutzung einer NVMe-SSD in %
smartctl_device_available_spareverbleibende Reserveblöcke (NVMe)
smartctl_device_power_on_secondsBetriebsstunden (als Sekunden)
smartctl_device_attributerohe ATA-Attribute (Reallocated, Pending, …)

Stolpersteine aus der Praxis #

USB-Platten sind Glückssache — aber oft gute Glückssache. Unsere 1-TB-Datenplatte hängt in einem WD-Elements-Gehäuse am USB-Port. Die verbaute Bridge reicht SMART per SAT sauber durch, inklusive aller relevanten Fehlerzähler (Reallocated, Pending, Uncorrectable). Nur die Gesamt-Lese-/Schreibmengen liefert das Modell nicht — das ist normal.

NVMe und ATA sprechen verschiedene Sprachen. Die System-NVMe liefert naturgemäß keine ATA-Attribute; dafür gibt es Percentage Used, Available Spare und Media Errors. Wer beide Laufwerkstypen mischt, muss sein Monitoring so bauen, dass fehlende Werte als „n/a“ erscheinen — nicht als Warnung. Sonst leuchtet das Dashboard dauerhaft gelb und niemand schaut mehr hin.

Nicht jede Metrik existiert in jeder Exporter-Version. Version 0.14 exponiert z. B. keine unsafe_shutdowns-Metrik. Solche Lücken dokumentieren und offen lassen, statt sie mit Ersatzwerten zu füllen.

Echte Baseline als Referenz #

Zur Einordnung die Werte unseres Setups direkt nach der Einrichtung (gemessen am 25.08.2026, smartctl_exporter v0.14.0):

WertNVMe (WD SN520, 512 GB)USB-HDD (1 TB, 5400 rpm)
SMART-StatusPASSEDPASSED
Temperatur36 °C29 °C
Abnutzung / DefekteWear 5 %, Spare 100 %0 Reallocated / Pending / Uncorrectable
Gelesen / geschrieben~17,6 TB / ~28,3 TBnicht verfügbar (Bridge)
Betriebsstunden~10.900 h~22.500 h (~2,6 Jahre)

Die Zahlen zeigen, warum sich die Baseline lohnt: Die HDD hat ordentlich Stunden auf der Uhr, ist aber komplett unauffällig — und die NVMe steht nach ~28 TB Schreiblast erst bei 5 % Abnutzung. Ohne Ausgangswerte wüsste man in einem Jahr nicht, ob sich etwas verschlechtert hat.

Und wenn ein Wert kippt? #

SMART-Warnungen sind ein Signal, kein Urteil — aber eins, das du ernst nimmst: Prüfe zuerst, ob dein Backup aktuell ist (falls das Konzept fehlt: Backup-Strategie für zuhause), und sieh dir dann die Details mit smartctl direkt an — den passenden Befehl inklusive Selbsttest baust du im smartctl Command Builder.

Häufige Fragen

Funktioniert SMART-Monitoring auch bei USB-Festplatten?
Oft ja, aber nicht garantiert. Die USB-SATA-Bridge im Gehäuse muss SMART-Befehle per SAT (SCSI/ATA Translation) durchreichen. Eine WD-Elements-Bridge reicht in unserem Setup alle relevanten Fehlerzähler sauber durch — nur die Gesamt-Lese- und Schreibmengen fehlen modellbedingt. Billige Bridges blocken SMART dagegen komplett; das zeigt sich sofort daran, dass der Exporter für das Laufwerk keine Werte liefert.
Warum zeigt meine NVMe-SSD keine Reallocated Sectors an?
Weil NVMe ein eigenes Gesundheitsmodell hat. Klassische ATA-Attribute wie Reallocated oder Pending Sectors gibt es dort nicht — stattdessen liefert NVMe Werte wie Percentage Used (Abnutzung), Available Spare (Reserve), Media Errors und Critical Warnings. Ein fehlendes ATA-Attribut ist bei NVMe also normal und kein Fehler.
Ist ein privileged Container für den Exporter ein Sicherheitsrisiko?
Der Exporter braucht Zugriff auf die Block-Devices und deren ioctl-Aufrufe, um SMART-Daten zu lesen — daher läuft er meist privileged. Er arbeitet dabei rein lesend und nimmt keine Verbindungen nach außen auf. Wer die Rechte enger fassen will, kann statt privileged gezielt die betroffenen Devices und die nötigen Capabilities freigeben; wichtig ist vor allem, den Metrik-Port nicht ins Internet zu exponieren.
Reicht es nicht, smartctl gelegentlich von Hand aufzurufen?
Für einen Schnellcheck ja — aber Platten sterben selten schlagartig. Wertvoll sind Trends: langsam steigende Pending Sectors, kletternde Temperaturen, wachsende Fehlerzähler. Die sieht man nur mit kontinuierlicher Aufzeichnung, und Alarme kommen dann, bevor das Backup zur letzten Rettung wird.
Was bedeutet es, wenn ein SMART-Wert fehlt?
Erst einmal nichts Schlimmes. Welche Werte ein Laufwerk liefert, hängt von Typ (ATA, NVMe, USB-Bridge) und Firmware ab. Ein Monitoring sollte fehlende Werte als „nicht verfügbar“ behandeln — wer jeden fehlenden Wert als Fehler wertet, bekommt bei gemischten Laufwerken Dauer-Warnungen und stumpft ab.

Weiterlesen