De S.M.A.R.T. van Proxmox-schijven monitoren met Scrutiny
Het Scrutiny-dashboard installeren in een LXC-container en vervolgens de S.M.A.R.T.-gegevens van de fysieke schijven van Proxmox verzamelen en historiseren.
Proxmox VE kan de S.M.A.R.T.-informatie van een schijf uitlezen, maar volgt de evolutie ervan niet op. Het is onmogelijk om vanuit de native interface de huidige temperatuur te vergelijken met die van gisteren, of om een geleidelijke degradatie gemakkelijk op te sporen. Scrutiny vult dit hiaat aan met een webdashboard, drempelwaarden die gebaseerd zijn op echte storingsgegevens, en een geschiedenis die in InfluxDB wordt bewaard.
Waarom Scrutiny gebruiken
De meting die door Proxmox wordt geleverd, blijft nuttig voor een punctuele controle: algemene toestand, temperatuur, gelezen of geschreven gegevensvolume, bedrijfsuren en geregistreerde fouten. Het laat echter niet toe om de dynamiek van deze waarden over enkele uren, enkele maanden of een jaar te visualiseren.
Scrutiny is een open source-project gewijd aan de S.M.A.R.T.-opvolging van hdd's, ssd's en NVMe. In een zogenaamde hub and spoke-installatie vormen de webinterface en de database de hub, terwijl een of meerdere collectors de schijven van de te beheren hosts bevragen. Deze scheiding past goed bij Proxmox: het dashboard blijft geïsoleerd in een LXC, maar de collector wordt uitgevoerd op de hypervisor, daar waar de schijven daadwerkelijk zichtbaar zijn.
De LXC-container aanmaken
De oorspronkelijke installatie gebruikt Ubuntu 22.04 LTS. Deze versie blijft aangepast aan het scenario dat hier wordt gereproduceerd. Ubuntu 24.04 werkt ook met Docker Compose v2; de moeilijkheid in het oorspronkelijke artikel kwam voornamelijk voort uit het oude pakket docker-compose, en niet uit een fundamentele incompatibiliteit van Scrutiny.
Selecteer in de opslag van uw Proxmox-knooppunt Containersjablonen → Sjablonen, zoek naar ubuntu-22.04-standard en start de download.
Maak vervolgens een container aan met de volgende parameters:
- 1 vCPU en 512 MB geheugen volstaan voor een lichte test; 1 GB biedt meer marge aan InfluxDB.
- 8 GiB schijf is het minimum van de oorspronkelijke installatie. Voorzie 16 GiB of meer als u lang de metingen van talrijke schijven bewaart.
- Activeer de optie Nesting om de uitvoering van Docker in de LXC toe te laten.
- Wijs een vast IP-adres toe of een DHCP-reservering. Op de schermafbeeldingen antwoordt Scrutiny op
192.168.68.144. - Voeg bij voorkeur uw publieke SSH-sleutel toe tijdens het aanmaken van de container.
Update vanuit de console van de container het systeem en installeer Docker met de huidige Compose-module:
apt update
apt full-upgrade -y
apt install -y ca-certificates curl docker.io docker-compose-v2
systemctl enable --now docker
reboot
Scrutiny en InfluxDB in de LXC installeren
Maak opnieuw verbinding met de container na haar herstart, en bereid vervolgens de persistente mappen voor:
mkdir -p /opt/scrutiny/config /opt/scrutiny/influxdb
cd /opt/scrutiny
nano compose.yaml
Het volgende bestand neemt de architectuur van het oorspronkelijke artikel over, met InfluxDB 2.8 en Scrutiny 0.9.3. De versie is vastgepind om te vermijden dat een onvoorziene update de dienst wijzigt. De InfluxDB-poort wordt niet op het netwerk gepubliceerd: enkel Scrutiny heeft er binnen Docker toegang toe.
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
Start de twee diensten en controleer hun status:
docker compose up -d
docker compose ps
docker compose logs --tail=50
Open vervolgens http://192.168.68.144:8080, waarbij u het adres vervangt door dat van uw LXC. De interface moet verschijnen, maar blijft leeg vóór de eerste verzending door de collector.
Stel poort 8080 niet direct bloot aan het internet. Beperk deze tot het beheersnetwerk of plaats Scrutiny achter uw reverse proxy met HTTPS en een aangepaste authenticatie.
De collector op de Proxmox-host installeren
De commando's in deze sectie moeten in de shell van de Proxmox-host worden uitgevoerd, en niet in de LXC-container. Installeer eerst smartmontools en controleer of de schijven worden gedetecteerd:
apt update
apt install -y ca-certificates curl smartmontools
smartctl --scan
Download de collector die overeenkomt met de versie van de server:
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
Om de schijven van deze host duidelijk te identificeren, maakt u /opt/scrutiny/config/collector.yaml aan:
version: 1
host:
id: "pve20"
Vervang pve20 door de werkelijke naam van het knooppunt. Start vervolgens een eerste handmatige verzameling:
/opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run \
--api-endpoint "http://192.168.68.144:8080"
Het commando moet de gedetecteerde schijven weergeven, hun attributen uitlezen met smartctl, en vervolgens de verzending naar de server bevestigen. In geval van een ontbrekende schijf, vergelijk het resultaat met smartctl --scan. Een RAID-controller kan een expliciet apparaattype vereisen in collector.yaml.
De verzameling automatiseren met systemd
Maak de dienst /etc/systemd/system/scrutiny-collector.service aan:
[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
Maak vervolgens /etc/systemd/system/scrutiny-collector.timer aan:
[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
Herlaad systemd, activeer de timer en trigger onmiddellijk een controle-meting:
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 neemt de frequentie over die in het oorspronkelijke artikel werd gebruikt. Een interval van 15 minuten tekent de temperatuurcurve fijner; een dagelijkse verzameling volstaat indien enkel de trage trends u interesseren.
De gegevens in Scrutiny verifiëren
Enkele minuten na de eerste uitvoering van de collector moeten de schijven in de webinterface verschijnen. Open een apparaat om de gedetailleerde attributen terug te vinden, en keer vervolgens terug naar het dashboard om de evolutie van de temperaturen weer te geven.
Als de interface leeg blijft, controleer dan beide kanten:
journalctl -u scrutiny-collector.service -n 100 --no-pagerop Proxmox;docker compose logs --tail=100 scrutiny-web influxdbin de LXC;- de TCP-toegang tot poort
8080tussen de host en de container; - de apparaten die worden teruggegeven door
smartctl --scan; - de tijd en de tijdzone van beide machines.
Meerdere Proxmox-knooppunten en meldingen
In een cluster installeert u de collector op elk knooppunt dat fysieke schijven bezit. Geef elk bestand collector.yaml een unieke host.id-identificatie — bijvoorbeeld pve20, pve21 en pve22. Dit label voorkomt dat schijven afkomstig van verschillende servers door elkaar lopen in een onleesbaar dashboard.
Scrutiny kan ook waarschuwingen sturen met behulp van Shoutrrr. De bestemmingen worden geconfigureerd in /opt/scrutiny/config/scrutiny.yaml of met de variabele SCRUTINY_NOTIFY_URLS. Houd de meldingstokens buiten het gepubliceerde bestand en test elk kanaal voordat u op deze waarschuwingen vertrouwt.
Conclusie
Deze installatie behoudt de eenvoudige logica van de oorspronkelijke gids: de interface en InfluxDB leven in een kleine LXC-container, terwijl de collector zo dicht mogelijk bij de schijven op Proxmox blijft. Men krijgt zo wat er ontbreekt op het native S.M.A.R.T.-scherm: een gecentraliseerde weergave, gehistoriseerde temperaturen en trends die lang genoeg zijn om een verandering op te sporen vóór de storing.
Discussie
Reacties
Nog geen reacties. U kunt de discussie openen met een vraag of uw eigen ervaring.