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 #
- Ein Linux-Host mit Docker (z. B. dein ausgemusterter PC als Homeserver)
- Ein laufendes Prometheus — oder die Bereitschaft, eins mitzustarten
- Kein Prometheus im Einsatz? Für die meisten Homelabs ist der Monitoring-Stack aus Uptime Kuma + Beszel der einfachere Einstieg; Beszel zeigt Disk-Werte, aber keine SMART-Details.
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:
| Metrik | Bedeutung |
|---|---|
smartctl_device_smart_status | Gesamturteil des Laufwerks (1 = PASSED) |
smartctl_device_temperature | Temperatur in °C |
smartctl_device_percentage_used | Abnutzung einer NVMe-SSD in % |
smartctl_device_available_spare | verbleibende Reserveblöcke (NVMe) |
smartctl_device_power_on_seconds | Betriebsstunden (als Sekunden) |
smartctl_device_attribute | rohe 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):
| Wert | NVMe (WD SN520, 512 GB) | USB-HDD (1 TB, 5400 rpm) |
|---|---|---|
| SMART-Status | PASSED | PASSED |
| Temperatur | 36 °C | 29 °C |
| Abnutzung / Defekte | Wear 5 %, Spare 100 % | 0 Reallocated / Pending / Uncorrectable |
| Gelesen / geschrieben | ~17,6 TB / ~28,3 TB | nicht 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
Hardware
Home-Assistant-Hardware: Raspberry Pi, Green, Mini-PC oder Proxmox-VM?
Worauf Home Assistant wirklich laufen sollte: die vier sinnvollen Wege im Vergleich, warum die SD-Karte der wahre Feind ist und welche Rolle der Zigbee-Stick spielt.
Hardware
Jellyfin-Hardware: Warum ein iGPU-Mini-PC den großen Server schlägt
Die richtige Hardware für Jellyfin: Direct Play vs. Transcoding verstehen, Intel QuickSync aktivieren und warum du keine dedizierte GPU brauchst.
Hardware
Alten PC als Homeserver nutzen: Was er taugt und was er wirklich kostet
Der ausgemusterte Office-PC oder All-in-One als erster Homeserver: wann sich das lohnt, wann der Stromverbrauch die Ersparnis auffrisst und wie du sinnvoll startest.