Überwachung des S.M.A.R.T.-Status von Proxmox-Festplatten mit Scrutiny
Installieren Sie das Scrutiny-Dashboard in einem LXC-Container und erfassen sowie archivieren Sie die S.M.A.R.T.-Daten der physischen Proxmox-Festplatten.
Proxmox VE kann die S.M.A.R.T.-Informationen eines Laufwerks auslesen, zeichnet jedoch deren Entwicklung nicht auf. Es ist über die native Oberfläche nicht möglich, die aktuelle Temperatur mit der vom Vortag zu vergleichen oder eine schleichende Verschlechterung leicht zu erkennen. Scrutiny schließt diese Lücke mit einem Web-Dashboard, Schwellenwerten, die auf echten Ausfalldaten basieren, und einem in InfluxDB gespeicherten Verlauf.
Warum Scrutiny verwenden
Die von Proxmox gelieferte Auslesung bleibt für eine gelegentliche Kontrolle nützlich: allgemeiner Zustand, Temperatur, gelesenes oder geschriebenes Datenvolumen, Betriebsstunden und aufgezeichnete Fehler. Sie ermöglicht es jedoch nicht, die Dynamik dieser Werte über mehrere Stunden, Monate oder ein Jahr hinweg zu visualisieren.
Scrutiny ist ein Open-Source-Projekt, das der S.M.A.R.T.-Überwachung von HDDs, SSDs und NVMe-Laufwerken gewidmet ist. In einer sogenannten Hub-and-Spoke-Installation bilden die Web-Oberfläche und die Datenbank den Hub, während ein oder mehrere Collector die Laufwerke der zu überwachenden Hosts abfragen. Diese Trennung eignet sich gut für Proxmox: Das Dashboard bleibt in einem LXC isoliert, aber der Collector wird auf dem Hypervisor ausgeführt, wo die Laufwerke tatsächlich sichtbar sind.
Den LXC-Container erstellen
Die ursprüngliche Installation verwendet Ubuntu 22.04 LTS. Diese Version bleibt für das hier reproduzierte Szenario geeignet. Ubuntu 24.04 funktioniert ebenfalls mit Docker Compose v2; die im ursprünglichen Artikel aufgetretene Schwierigkeit rührte hauptsächlich vom alten Paket docker-compose her und nicht von einer grundlegenden Inkompatibilität von Scrutiny.
Wählen Sie im Speicher Ihres Proxmox-Knotens Container-Vorlagen → Vorlagen, suchen Sie nach ubuntu-22.04-standard und starten Sie den Download.
Erstellen Sie dann einen Container mit den folgenden Parametern:
- 1 vCPU und 512 MB Arbeitsspeicher reichen für einen leichten Test aus; 1 GB bietet InfluxDB mehr Spielraum.
- 8 GiB Festplatte sind das Minimum der ursprünglichen Installation. Planen Sie 16 GiB oder mehr, wenn Sie die Messungen vieler Laufwerke lange aufbewahren.
- Aktivieren Sie die Option Verschachtelung, um die Ausführung von Docker im LXC zu ermöglichen.
- Weisen Sie eine feste IP-Adresse oder eine DHCP-Reservierung zu. In den Screenshots antwortet Scrutiny auf
192.168.68.144. - Fügen Sie vorzugsweise Ihren öffentlichen SSH-Schlüssel während der Container-Erstellung hinzu.
Aktualisieren Sie das System über die Konsole des Containers und installieren Sie Docker mit dem aktuellen Compose-Modul:
apt update
apt full-upgrade -y
apt install -y ca-certificates curl docker.io docker-compose-v2
systemctl enable --now docker
reboot
Scrutiny und InfluxDB im LXC installieren
Verbinden Sie sich nach dem Neustart erneut mit dem Container und bereiten Sie dann die persistenten Verzeichnisse vor:
mkdir -p /opt/scrutiny/config /opt/scrutiny/influxdb
cd /opt/scrutiny
nano compose.yaml
Die folgende Datei übernimmt die Architektur des ursprünglichen Artikels, mit InfluxDB 2.8 und Scrutiny 0.9.3. Die Version wird angeheftet, um zu verhindern, dass ein unvorhergesehenes Update den Dienst verändert. Der InfluxDB-Port wird nicht im Netzwerk veröffentlicht: Nur Scrutiny greift innerhalb von Docker darauf zu.
services:
influxdb:
image: influxdb:2.8
container_name: scrutiny-influxdb
restart: unless-stopped
volumes:
- ./influxdb:/var/lib/influxdb2
environment:
TZ: Europe/Brussels
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8086/health"]
interval: 5s
timeout: 10s
retries: 20
scrutiny-web:
image: ghcr.io/analogj/scrutiny:v0.9.3-web
container_name: scrutiny-web
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./config:/opt/scrutiny/config
environment:
SCRUTINY_WEB_INFLUXDB_HOST: scrutiny-influxdb
TZ: Europe/Brussels
depends_on:
influxdb:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
interval: 5s
timeout: 10s
retries: 20
start_period: 10s
Starten Sie die beiden Dienste und überprüfen Sie ihren Status:
docker compose up -d
docker compose ps
docker compose logs --tail=50
Öffnen Sie dann http://192.168.68.144:8080, und ersetzen Sie die Adresse durch die Ihres LXC. Die Oberfläche sollte erscheinen, bleibt aber leer, bevor der Collector die ersten Daten sendet.
Setzen Sie den Port 8080 nicht direkt dem Internet aus. Beschränken Sie ihn auf das Verwaltungsnetzwerk oder platzieren Sie Scrutiny hinter Ihrem Reverse-Proxy mit HTTPS und einer geeigneten Authentifizierung.
Den Collector auf dem Proxmox-Host installieren
Die Befehle in diesem Abschnitt müssen in der Shell des Proxmox-Hosts und nicht im LXC-Container ausgeführt werden. Installieren Sie zuerst smartmontools und überprüfen Sie, ob die Laufwerke erkannt werden:
apt update
apt install -y ca-certificates curl smartmontools
smartctl --scan
Laden Sie den Collector herunter, der der Serverversion entspricht:
install -d -m 0755 /opt/scrutiny/bin /opt/scrutiny/config
curl -fL \
https://github.com/AnalogJ/scrutiny/releases/download/v0.9.3/scrutiny-collector-metrics-linux-amd64 \
-o /opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64
chmod 0755 /opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64
Um die Laufwerke dieses Hosts eindeutig zu identifizieren, erstellen Sie /opt/scrutiny/config/collector.yaml:
version: 1
host:
id: "pve20"
Ersetzen Sie pve20 durch den tatsächlichen Namen des Knotens. Starten Sie dann eine erste manuelle Erfassung:
/opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run \
--api-endpoint "http://192.168.68.144:8080"
Der Befehl sollte die erkannten Laufwerke auflisten, ihre Attribute mit smartctl auslesen und dann den Versand an den Server bestätigen. Wenn ein Laufwerk fehlt, vergleichen Sie das Ergebnis mit smartctl --scan. Ein RAID-Controller kann einen expliziten Gerätetyp in collector.yaml erfordern.
Die Datenerfassung mit systemd automatisieren
Erstellen Sie den Dienst /etc/systemd/system/scrutiny-collector.service:
[Unit]
Description=Collecteur S.M.A.R.T. Scrutiny
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint http://192.168.68.144:8080
Erstellen Sie dann /etc/systemd/system/scrutiny-collector.timer:
[Unit]
Description=Collecte S.M.A.R.T. périodique pour Scrutiny
[Timer]
OnBootSec=5min
OnUnitActiveSec=60min
Persistent=true
Unit=scrutiny-collector.service
[Install]
WantedBy=timers.target
Laden Sie systemd neu, aktivieren Sie den Timer und lösen Sie sofort eine Kontrollauslesung aus:
systemctl daemon-reload
systemctl enable --now scrutiny-collector.timer
systemctl start scrutiny-collector.service
systemctl status scrutiny-collector.timer
systemctl list-timers scrutiny-collector.timer
OnUnitActiveSec=60min übernimmt die im ursprünglichen Artikel verwendete Frequenz. Ein Intervall von 15 Minuten zeichnet die Temperaturkurve feiner auf; eine tägliche Erfassung reicht aus, wenn Sie nur an langsamen Trends interessiert sind.
Die Daten in Scrutiny überprüfen
Einige Minuten nach der ersten Ausführung des Collectors sollten die Laufwerke in der Web-Oberfläche erscheinen. Öffnen Sie ein Gerät, um seine detaillierten Attribute zu finden, und kehren Sie dann zum Dashboard zurück, um die Entwicklung der Temperaturen anzuzeigen.
Wenn die Oberfläche leer bleibt, überprüfen Sie beide Seiten:
journalctl -u scrutiny-collector.service -n 100 --no-pagerauf Proxmox;docker compose logs --tail=100 scrutiny-web influxdbim LXC;- den TCP-Zugriff auf den Port
8080zwischen Host und Container; - die von
smartctl --scanzurückgegebenen Geräte; - die Uhrzeit und Zeitzone der beiden Maschinen.
Mehrere Proxmox-Knoten und Benachrichtigungen
Installieren Sie in einem Cluster den Collector auf jedem Knoten, der über physische Laufwerke verfügt. Geben Sie jeder Datei collector.yaml eine eigene host.id-Kennung — zum Beispiel pve20, pve21 und pve22. Dieses Label verhindert, dass Laufwerke von mehreren Servern in einem unleserlichen Dashboard vermischt werden.
Scrutiny kann auch Warnungen über Shoutrrr senden. Die Ziele werden in /opt/scrutiny/config/scrutiny.yaml oder mit der Variable SCRUTINY_NOTIFY_URLS konfiguriert. Bewahren Sie die Benachrichtigungs-Token außerhalb der veröffentlichten Datei auf und testen Sie jeden Kanal, bevor Sie sich auf diese Warnungen verlassen.
Fazit
Diese Installation bewahrt die einfache Logik des ursprünglichen Leitfadens: Die Oberfläche und InfluxDB leben in einem kleinen LXC-Container, während der Collector so nah wie möglich an den Laufwerken auf Proxmox bleibt. Man erhält so das, was dem nativen S.M.A.R.T.-Bildschirm fehlt: eine zentralisierte Ansicht, historisierte Temperaturen und ausreichend lange Trends, um eine Änderung vor dem Ausfall zu erkennen.
Diskussion
Kommentare
Noch kein Kommentar. Eröffnen Sie die Diskussion gern mit einer Frage oder Ihrem eigenen Erfahrungsbericht.