Monitoring stavu diskov na VMware ESXi pomocou smartctl

Monitoring stavu diskov na VMware ESXi pomocou smartctl

Obsah

Samostatné ESXi hosty a malé vSphere klastre často bežia na lokálnych SATA alebo SAS diskoch — v homelabe, na pobočke alebo na zálohovacom serveri. Keď niektorý z týchto diskov začne zlyhávať, chcete sa to dozvedieť z monitoringu, nie z datastoru, ktorý sa zrazu prepne do režimu iba na čítanie.

Na bežnom Linuxe je riešením smartctl z balíka smartmontools. ESXi ho neobsahuje a vstavaný príkaz esxcli storage core device smart get vráti len niekoľko hodnôt (pri diskoch za radičom často N/A). Preto sme smartctl zabalili ako VIB, ktorý sa na ESXi inštaluje ako ktorýkoľvek iný balík.

Projekt: github.com/bsv9/smartctl-esxi-vib — smartctl 7.5 pre ESXi 7, 8 a 9.

Warning

VIB má úroveň CommunitySupported a nie je podpísaný spoločnosťou VMware, preto nefunguje na hostoch so zapnutým Secure Boot. Používajte ho tam, kde máte konfiguráciu hosta pod kontrolou a rozumiete dopadom na podporu.

Inštalácia

  1. Stiahnite najnovší VIB, napríklad smartctl-7.5-5714.x86_64.vib.

  2. Skopírujte ho do /tmp/ na ESXi hoste:

    scp smartctl-7.5-5714.x86_64.vib root@esxi-host:/tmp/
    
  3. Pripojte sa na host cez SSH a povoľte komunitné balíky:

    esxcli software acceptance set --level=CommunitySupported
    
  4. Nainštalujte balík. Režim údržby ani reštart nie sú potrebné:

    esxcli software vib install -v /tmp/smartctl-7.5-5714.x86_64.vib
    

Binárka sa nainštaluje do /opt/smartmontools/smartctl. Balík overíte príkazom esxcli software vib get -n smartctl a kedykoľvek ho môžete odstrániť, opäť bez reštartu:

esxcli software vib remove -n smartctl

Čítanie SMART údajov

Disky nájdete v /dev/disks/ (alebo cez esxcli storage core device list). Pri SATA diskoch nechajte smartctl zvoliť správny prenos pomocou -d sat,auto:

[root@host:~] /opt/smartmontools/smartctl -s on -d sat,auto -A /dev/disks/t10.ATA_____ST2000VX0082D2E3164__________________________________Z52C5LJ1
smartctl 7.5 2025-04-30 r5714 [x86_64-linux-8.0.3] (local build)
Copyright (C) 2002-25, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   114   099   006    Pre-fail  Always       -       69586192
  3 Spin_Up_Time            0x0003   096   096   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       118
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   072   060   030    Pre-fail  Always       -       18572538
  9 Power_On_Hours          0x0032   091   091   000    Old_age   Always       -       8349h+00m+00.000s
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       109
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   096   096   000    Old_age   Always       -       4
190 Airflow_Temperature_Cel 0x0022   071   055   045    Old_age   Always       -       29 (Min/Max 19/29)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       102
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       130
194 Temperature_Celsius     0x0022   029   045   000    Old_age   Always       -       29 (0 19 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

[root@host:~] uname -a
VMkernel host 8.0.3 #1 SMP Release build-24022510 Jun 11 2024 05:59:34 x86_64 x86_64 x86_64 ESXi

Užitočné varianty:

  • smartctl -H <disk> — celkový verdikt (PASSED / FAILED).
  • smartctl -a <disk> — všetko: identifikácia, atribúty, log chýb a log self-testov.
  • smartctl -t short <disk> — spustí krátky self-test; výsledok neskôr zobrazíte cez -l selftest.

Ktoré atribúty sú naozaj dôležité

Väčšina tabuľky je informačná. Surové hodnoty atribútov ako Raw_Read_Error_Rate či Seek_Error_Rate sú kódované výrobcom a na diskoch Seagate vyzerajú hrozivo, aj keď je disk úplne v poriadku. Upozornenia má zmysel nastaviť na:

ID Atribút Prečo je dôležitý
5 Reallocated_Sector_Ct Sektory už presunuté do rezervy. Akýkoľvek nárast je varovanie.
197 Current_Pending_Sector Nečitateľné sektory čakajúce na presun. Nenulová hodnota znamená ohrozené dáta.
198 Offline_Uncorrectable Sektory, ktoré sa nepodarilo prečítať pri offline kontrole.
187 Reported_Uncorrect Chyby, ktoré disk nedokázal opraviť pomocou ECC.
188 Command_Timeout Často ukazuje na problém s káblom, napájaním alebo radičom.
199 UDMA_CRC_Error_Count Chyby prenosu medzi diskom a radičom — zvyčajne zlý kábel alebo backplane.
194 Temperature_Celsius Dlhodobo vysoká teplota skracuje životnosť disku.

Praktické pravidlo: upozorňujte na akýkoľvek nárast atribútov 5, 197, 198 a 187 a na teplotu nad limitom výrobcu (pri HDD zvyčajne 50–60 °C).

Odosielanie údajov do Zabbixu

Tip

Nechcete položky vytvárať ručne? Náš hotový template robí všetko toto vrátane discovery diskov a triggerov — pozrite Stav diskov ESXi v Zabbixe. Nižšie je popísané, ako to funguje vnútri.

Na ESXi nie je možné spustiť Zabbix agenta a jeho SNMP agent SMART atribúty neposkytuje. Najjednoduchší spoľahlivý spôsob je nechať Zabbix server alebo proxy spúšťať smartctl cez SSH:

  1. Zapnite na hoste SSH a pridajte samostatný kľúč pre používateľa Zabbixu (na ESXi sú kľúče v /etc/ssh/keys-root/authorized_keys).

  2. Vytvorte položku typu SSH agent s autentifikáciou verejným kľúčom, napríklad s kľúčom ssh.run[smart.disk1.realloc] a príkazom:

    /opt/smartmontools/smartctl -A -d sat,auto /dev/disks/<disk-id> | awk '$1==5 {print $10}'
    
  3. Zopakujte pre atribúty z tabuľky vyššie (alebo vráťte celý výstup -A do jednej textovej položky a hodnoty vytiahnite závislými položkami s predspracovaním cez regulárne výrazy — jedno SSH volanie na disk namiesto jedného na atribút).

  4. Pridajte triggery, napríklad change(/esxi-host/ssh.run[smart.disk1.realloc])>0, a prah pre teplotu.

Stačí interval 15–30 minút: SMART hodnoty sa menia pomaly a častejšie budenie diskov nemá zmysel.

Rovnaké údaje samozrejme môžete posielať aj do Promethea alebo iného systému, ktorý dokáže spustiť vzdialený príkaz; podstatné je, že smartctl je teraz na hoste k dispozícii.

Zhrnutie

  • smartctl nainštalujete ako VIB: bez reštartu, bez režimu údržby, funguje na ESXi 7, 8 a 9 (bez Secure Boot).
  • /opt/smartmontools/smartctl používate presne ako na Linuxe.
  • Upozorňujte na presunuté, čakajúce a neopraviteľné sektory a na teplotu — nie na surové hodnoty read/seek error rate.

Potrebujete pomôcť s monitoringom vašej vSphere alebo Proxmox infraštruktúry? Kontaktujte nás.

comments powered by Disqus

Súvisiace články

gWebTail: tail -f v prehliadači pre tímy bez SSH prístupu

gWebTail: tail -f v prehliadači pre tímy bez SSH prístupu

Známa situácia: na testovací server sa nasadí nový build a vývojár sa pýta „môžeš mi poslať log?“. Niekto so SSH prístupom sa prihlási, spustí tail -f, skopíruje kus do chatu — a o desať minút znova.

Čítať ďalej
Monitoring HPE Managed PDU v Zabbixe: napájanie, zásuvky, ističe a senzory v racku

Monitoring HPE Managed PDU v Zabbixe: napájanie, zásuvky, ističe a senzory v racku

PDU je najmenej oslnivá krabica v racku — kým nevypadne istič a polovica serverov nepríde o jeden zdroj, alebo kým nový server nepreťaží fázu a celý rack nezhasne. Managed PDU toto všetko meria. Údaje len musia skončiť niekde, kam sa ľudia naozaj pozerajú.

Čítať ďalej
Chyby 4xx/5xx z Traefiku v Zabbixe bez Promethea

Chyby 4xx/5xx z Traefiku v Zabbixe bez Promethea

Traefik stojí pred množstvom aplikácií: ako reverse proxy pre Docker, ako ingress controller v Kubernetes alebo ako edge router na jednom VM. Vďaka tomu je to najlepšie miesto, kde vidieť, či sú vaše aplikácie zdravé z pohľadu používateľa — každá neúspešná požiadavka ním prechádza.

Čítať ďalej