Stav diskov ESXi v Zabbixe: SMART pre SATA, health log pre NVMe
- VMware , Monitoring
- 19. marca 2025
Obsah
Štandardné Zabbix templaty pre VMware (VMware a VMware Hypervisor, cez vSphere API) sú výborné na CPU, pamäť, datastory a stav VM. Neprezradia však, ako sa majú fyzické disky v samostatnom ESXi hoste. Že disk zlyhal, sa dozviete, keď datastore prejde do offline — nie o týždeň skôr, keď disk začal presúvať sektory.
Pre lokálne úložisko — homelaby, hosty na pobočkách, zálohovacie servery, malé klastre s lokálnymi NVMe — používame dva malé templaty, ktoré čítajú stav diskov priamo z hosta cez SSH.
Templaty: esxi-smart-health a esxi-nvme-health — Zabbix 7.2+, otestované s ESXi 7.0.
SATA disky: ESXi SMART Health
ESXi neobsahuje smartctl, preto ho tento template potrebuje mať najprv nainštalovaný — balíme ho ako komunitný VIB: smartctl-esxi-vib (inštalácia cez esxcli software vib install, bez reštartu).
Ako to funguje:
- Raz za hodinu Zabbix cez SSH spustí
ls -1 /dev/disks | grep t10.ATA | grep -v ':'— zoznam SATA diskov (bez partícií). - Low-level discovery vytvorí jeden záznam pre každý disk, pomenovaný podľa sériového čísla.
- Pre každý disk sa každú hodinu spustí
/opt/smartmontools/smartctl -s on -d sat,auto -A /dev/disks/<disk>a krok predspracovania v JavaScripte rozparsuje tabuľku atribútov do JSON.
Položky pre každý disk:
| Položka | Prečo je dôležitá |
|---|---|
| Reallocated Sector Count | Sektory už presunuté do rezervnej oblasti |
| Current Pending Sector | Nečitateľné sektory čakajúce na presun |
| Offline Uncorrectable | Sektory, ktoré zlyhali pri offline kontrole |
| Power On Hours | Vek disku — užitočné pri plánovaní výmen |
Template obsahuje jeden trigger: Current Pending Sector > 0 (Average) — najjasnejší včasný príznak umierajúceho disku. Odporúčame do template pridať ešte dva v rovnakom štýle:
change(/ESXI SMART Health/smart.status[{#DISK_ID},Reallocated_Sector_Ct])>0— počet presunutých sektorov narástol;last(/ESXI SMART Health/smart.status[{#DISK_ID},Offline_Uncorrectable])>0.
NVMe disky: ESXi NVMe Health
Pre NVMe má ESXi všetko zabudované — na hoste netreba nič inštalovať. Template používa localcli:
/bin/localcli nvme device list(každú hodinu) nájde NVMe adaptéry (vmhba…)./bin/localcli nvme device log smart get --adapter <vmhba>(každých 5 minút) prečíta SMART/health log NVMe.
Položky a triggery pre každý disk:
| Položka | Triggery |
|---|---|
| Media Errors | > 0 → High — údaje sa nepodarilo obnoviť |
| Composite Temperature | > 60 °C Warning, > 70 °C High |
| Available Spare | < 20 % Warning, < 10 % High |
| Percentage Used (menovitá životnosť) | > 80 % Warning, > 95 % High |
| Power On Hours, Power Cycles, Controller Busy Time | informačné |
Percentage Used je hodnota, ktorú treba sledovať pri plánovaní kapacít: je to vlastný odhad disku, koľko z jeho menovitej zápisovej životnosti už spotreboval. Spotrebiteľský NVMe pod vyťaženým VM datastorom sa môže dostať z 10 % na 80 % prekvapivo rýchlo.
Nastavenie (oba templaty)
Oba templaty používajú Zabbix položky typu SSH agent: Zabbix server (alebo proxy) sa prihlási na ESXi ako root pomocou kľúča a spustí príkazy. Na ESXi nie je žiadny agent.
1. Zapnite SSH na ESXi hoste (Host → Manage → Services → TSM-SSH, politiku nastavte na spúšťanie spolu s hostom).
2. Vytvorte pár kľúčov pre Zabbix a uložte ho tam, kde Zabbix server hľadá kľúče:
sudo -u zabbix mkdir -p /var/lib/zabbix/ssh_keys
sudo -u zabbix ssh-keygen -t rsa -b 4096 -m PEM -N "" -f /var/lib/zabbix/ssh_keys/esxi
a uistite sa, že zabbix_server.conf (alebo zabbix_proxy.conf) obsahuje SSHKeyLocation=/var/lib/zabbix/ssh_keys.
3. Nainštalujte verejný kľúč na ESXi pridaním esxi.pub do /etc/ssh/keys-root/authorized_keys. Na ESXi 7 ho môžete nahrať aj cez API hosta:
curl -k -X PUT --data "@/var/lib/zabbix/ssh_keys/esxi.pub" \
-u root:<password> https://<esxi-ip>/host/ssh_root_authorized_keys
Na ESXi 8.0 U3 tento endpoint vracia 404 — upravte súbor priamo.
4. Importujte templaty, vytvorte pre ESXi server hosta s rozhraním smerujúcim na jeho IP (typ agent je v poriadku, používa sa len kvôli adrese), pripojte ESXI SMART Health a/alebo ESXI NVME Health a nastavte {$ESXI.SSH.KEY} na názov súboru s kľúčom (predvolene esxi).
Tip
Ak SSH položky zlyhávajú s chybou autentifikácie, hoci ssh -i esxi root@host funguje, vygenerujte kľúč vo formáte PEM (-m PEM, ako vyššie). Podľa toho, ako bol Zabbix zostavený, nemusí vedieť čítať novší formát kľúčov OpenSSH.
Poznámka k bezpečnosti
Tieto kontroly sa prihlasujú ako root. Súkromný kľúč nechajte čitateľný iba pre používateľa zabbix, obmedzte SSH na ESXi na adresu Zabbix servera (Firewall → SSH Server → povolené IP adresy) a kľúč nepoužívajte nikde inde. Majte tiež na pamäti, že smartctl VIB vyžaduje vypnutý Secure Boot; NVMe template takú požiadavku nemá.
Zhrnutie
- SATA: smartctl VIB + ESXI SMART Health — presunuté, čakajúce a neopraviteľné sektory.
- NVMe: vstavaný
localcli+ ESXI NVME Health — chyby média, rezerva, opotrebenie, teplota. - Bez agenta, cez SSH so samostatným kľúčom; ESXi 7.0 a Zabbix 7.2+.
Prevádzkujete VMware alebo migrujete na Proxmox a chcete mať hardvér poriadne monitorovaný? Ozvite sa.