Proxmox und Überwachung 12 Min. Lesezeit

Ü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.

Proxmox-Fenster, das die rohen S.M.A.R.T.-Daten einer NVMe-Festplatte anzeigt
Proxmox kann eine augenblickliche S.M.A.R.T.-Auslesung anzeigen, speichert jedoch deren zeitliche Entwicklung nicht.

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.

Herunterladen der Ubuntu 22.04-Vorlage in der ins Französische übersetzten Proxmox-Oberfläche
Öffnen Sie im Proxmox-Speicher Container-Vorlagen und laden Sie dann Ubuntu 22.04 Jammy herunter.

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.
Schritte zum Erstellen des Scrutiny LXC-Containers in Proxmox mit 8 GiB Festplatte und fester IP-Adresse
Der Container im Beispiel verwendet die ID 110, den Namen scrutiny, Ubuntu 22.04, eine 8 GiB Festplatte und die feste Adresse 192.168.68.144/24.

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.

Leeres Scrutiny-Dashboard vor der ersten S.M.A.R.T.-Datenerfassung
Das Dashboard bleibt leer, solange ihm kein Collector Messungen gesendet hat.

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.

Detailliertes Datenblatt einer Kingston NVMe-SSD in Scrutiny
Scrutiny bündelt Modell, Seriennummer, Kapazität, Temperatur und die wichtigen Attribute des Laufwerks.
Vollständige Liste der NVMe S.M.A.R.T.-Attribute in Scrutiny
Die detaillierte Ansicht ermöglicht das Durchsuchen der NVMe-Attribute und deren individueller Verlauf.
Scrutiny-Dashboard mit zwei NVMe-SSDs und ihrer Temperaturkurve
Nach der Erfassung erscheinen die Laufwerke mit ihrem Status, ihrer Temperatur, ihrer Kapazität und einer Verlaufskurve.

Wenn die Oberfläche leer bleibt, überprüfen Sie beide Seiten:

  • journalctl -u scrutiny-collector.service -n 100 --no-pager auf Proxmox;
  • docker compose logs --tail=100 scrutiny-web influxdb im LXC;
  • den TCP-Zugriff auf den Port 8080 zwischen Host und Container;
  • die von smartctl --scan zurü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.

Referenzen

Über den Autor

Jeremy Kraft betreut die Infrastruktur und die selbst gehosteten Dienste des IBCSC. Diese Anleitungen beschreiben Konfigurationen, die tatsächlich im Einsatz waren und vor der Veröffentlichung erneut geprüft wurden.

Diskussion

Kommentare

0

Noch kein Kommentar. Eröffnen Sie die Diskussion gern mit einer Frage oder Ihrem eigenen Erfahrungsbericht.

Sie haben ein Konto? Anmelden

Reiner Text, höchstens 2 000 Zeichen. Neue Kommentare werden moderiert. Ihr Name wird mit dem Kommentar angezeigt. Es wird keine E-Mail-Adresse abgefragt; gegen Spam wird nur ein nicht umkehrbarer Fingerabdruck Ihrer IP-Adresse gespeichert.