Proxmox en monitoring 12 min. leestijd

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.

Proxmox-venster dat de ruwe S.M.A.R.T.-gegevens van een NVMe-schijf toont
Proxmox kan een onmiddellijke S.M.A.R.T.-meting weergeven, maar bewaart de evolutie ervan in de tijd niet.

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.

Downloaden van het Ubuntu 22.04-sjabloon in de Proxmox-interface vertaald in het Frans
Open in de Proxmox-opslag Containersjablonen en download vervolgens Ubuntu 22.04 Jammy.

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.
Stappen voor het aanmaken van de Scrutiny LXC-container in Proxmox met een schijf van 8 GiB en een vast IP-adres
De container in het voorbeeld gebruikt ID 110, de naam scrutiny, Ubuntu 22.04, een schijf van 8 GiB en het vaste adres 192.168.68.144/24.

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.

Leeg Scrutiny-dashboard vóór de eerste S.M.A.R.T.-verzameling
Het dashboard blijft leeg zolang er nog geen metingen door een collector naar zijn verzonden.

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.

Gedetailleerd overzicht van een Kingston NVMe-ssd in Scrutiny
Scrutiny groepeert het model, het serienummer, de capaciteit, de temperatuur en de belangrijke attributen van de schijf.
Volledige lijst van NVMe S.M.A.R.T.-attributen in Scrutiny
De gedetailleerde weergave laat toe om de NVMe-attributen en hun individuele geschiedenis te raadplegen.
Scrutiny-dashboard met twee NVMe-ssd’s en hun temperatuurcurve
Na de verzameling verschijnen de schijven met hun status, temperatuur, capaciteit en een historische curve.

Als de interface leeg blijft, controleer dan beide kanten:

  • journalctl -u scrutiny-collector.service -n 100 --no-pager op Proxmox;
  • docker compose logs --tail=100 scrutiny-web influxdb in de LXC;
  • de TCP-toegang tot poort 8080 tussen 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.

Referenties

Over de auteur

Jeremy Kraft beheert de infrastructuur en de zelfgehoste diensten van het IBCSC. Deze gidsen beschrijven configuraties die echt zijn uitgerold en voor publicatie opnieuw zijn nagekeken.

Discussie

Reacties

0

Nog geen reacties. U kunt de discussie openen met een vraag of uw eigen ervaring.

Hebt u een account? Aanmelden

Platte tekst, maximaal 2 000 tekens. Nieuwe reacties worden gemodereerd. Uw naam wordt bij de reactie getoond. Er wordt geen e-mailadres gevraagd; alleen een onomkeerbare vingerafdruk van uw IP-adres wordt bewaard tegen spam.