Inventár LSI RAID v GLPI

Inventár LSI RAID v GLPI
Pri svojej práci často zažívam posadnutosť nedostatkom informácií o infraštruktúre a so zvyšujúcim sa počtom obsluhovaných serverov sa to mení na skutočné mučenie. Už keď som bol administrátorom v malých organizáciách, vždy som chcel vedieť, čo sa kde nachádza, kde je to zapojené, ktorí ľudia sú zodpovední za ktorý hardvér alebo službu, a čo je najdôležitejšie, zaznamenať zmeny v tomto všetkom. Keď prídete na nové miesto a stretnete sa s incidentom, veľa času strávite hľadaním týchto informácií. Ďalej vám poviem, čomu som musel čeliť v RuVDS a ako som vyriešil problém uvedený v názve.

pravek

Ako podnikový admin som mal málo skúseností s prácou v dátovom centre, ale zazrel som RackTables. Jasne ukázal stojan so všetkými servermi, UPS, prepínačmi a všetkými prepojeniami medzi nimi. RuVDS takýto systém nemal, ale iba excelové/papierové súbory s informáciami o serveroch, niektorých ich komponentoch, číslach rackov atď. S týmto prístupom je veľmi ťažké sledovať zmeny v malých komponentoch. Najdôležitejším a často vymieňaným spotrebným materiálom pre servery sú však disky. Je veľmi dôležité udržiavať aktuálne informácie o stave diskov a ich strategickej rezerve. Ak disk zlyhá z poľa RAID a nie je rýchlo vymenený, môže to mať v konečnom dôsledku fatálne následky. Preto skutočne potrebujeme systém, ktorý sleduje umiestnenie diskov a ich stav, aby sme pochopili, čo nám môže chýbať a ktoré modely si musíme kúpiť.

Na záchranu prišiel GLPI, produkt s otvoreným zdrojovým kódom určený na zlepšenie výkonu IT oddelení a ich prispôsobenie ideálom ITIL. Okrem inventáru zariadení a správy regálov disponuje vedomostnou základňou, service deskom, správou dokumentov a mnohými ďalšími. GLPI má veľa doplnkov, vrátane FusionInventory a OCS Inventory, ktoré vám umožňujú automaticky zhromažďovať informácie o počítačoch a iných zariadeniach prostredníctvom inštalácie agenta a SNMP. Viac o inštalácii GLPI a pluginov si môžete prečítať v iných článkoch, najlepšie - oficiálna dokumentácia. Môžete si ho nainštalovať na náš hosting na hotovú šablónu LAMP.

Po nasadení agenta však otvoríme počítačové komponenty v GLPI a uvidíme toto:

Inventár LSI RAID v GLPI
Problém je, že žiadny z doplnkov nevidí informácie o fyzických diskoch v poliach LSI RAID. Keď sme videli, ako je tento problém vyriešený na monitorovanie v Zabbix pomocou skriptu PowerShell lsi-raid.ps1 Rozhodol som sa napísať podobný na prenos informácií do GLPI.
Údaje o diskoch v poli je možné získať pomocou utilít od výrobcu radiča, v prípade LSI je to StorCLI. Z neho môžete získať údaje vo formáte JSON, analyzovať ich a odovzdať do GLPI API. Disky prepojíme s počítačmi, ktoré už FusionInventory vytvoril. Pri opätovnom spustení skript aktualizuje údaje na diskoch a pridá nové. Samotný skript Send-RAIDtoGLPI.ps1 je tu na GitHub. Ďalej vám poviem, ako ho používať.

Čo bude potrebné

  1. GLPI verzia 9.5.1 (testované na tejto)
  2. Плагин Fusion Inventory a agent pre Windows
  3. Windows 2012 R2 (a vyšší) ako hostiteľský systém alebo riadiaci VM s vloženým radičom, PowerShell verzia 4 alebo vyššia
  4. Nainštalovaný ovládač MegaRAID
  5. Modul pre PowerShell - PSGLPI
  6. Účet v GLPI s profilom správcu na autorizáciu cez API vygenerované UserToken a AppToken

Dôležitý bod. Z nejakého dôvodu má GLPI 2 rôzne entity pre model disku, ale neexistuje žiadna vlastnosť „typ média“. Preto som sa na zaznamenanie vlastností HDD a SSD rozhodol použiť rozbaľovací zoznam “Modely pevných diskov” (front/devicemodel.php?itemtype=DeviceHardDriveModel). Skript musí mať tieto hodnoty v databáze GLPI, inak nebude môcť zapisovať údaje o modeli disku. Preto musíte do tohto prázdneho zoznamu pridať najskôr HDD, potom SSD, aby ID týchto prvkov v databáze boli 1 a 2. Ak existujú ďalšie, potom nahraďte v tomto riadku skriptu Send-RAIDtoGLPI.ps1 za HDD a SSD namiesto 1 a 2 ich zodpovedajúce ID:

deviceharddrivemodels_id = switch ($MediaType) { "HDD" { "1" }; "SSD" { "2" }; default { "" } }

Ak sa s tým nechcete obťažovať alebo tento rozbaľovací zoznam používate inak, môžete tento riadok zo skriptu jednoducho odstrániť.

Tiež je potrebné pridať stavy pre disky v “Element Statuses” (/front/state.php). Pridal som stavy „MediaError“ (vyskytla sa aspoň jedna chyba prístupu na disk) a „OK“, riadok v skripte, kde sa prenášajú ich ID, „2“ pre „OK“ a „1“ pre „MediaError“:

states_id = switch ($MediaError) { 0 { "2" }; { $_ -gt 0 } { "1" } }

Tieto stavy sú potrebné pre pohodlie; ak tieto vlastnosti nepotrebujete, môžete tento riadok tiež úplne odstrániť.

V samotnom skripte nezabudnite nasmerovať premenné na tie vaše. $GlpiCreds musí obsahovať URL na server GLPI API, UserToken a AppToken.

Čo je v scenári

Kvôli ťažkopádnej analýze JSON a prázdnym ifs je skript ťažko čitateľný, preto tu opíšem jeho logiku.

Pri prvom spustení na hostiteľovi skript prejde všetky radiče a vyhľadá disky v databáze GLPI podľa sériových čísel, ak nenájde, vyhľadá model. Ak nenájde model, pridá modelu nového disku do GLPI a zapíše tento disk do databázy.

Pri každom novom prechode sa skript pokúsi detekovať nové disky, ale nevie, ako odstrániť chýbajúce, takže to budete musieť urobiť manuálne.

Príklad nasadenia

Úložisko skriptov obsahuje skript Deploy-Send-RAIDtoGLPI.ps1, ktorý stiahne archív ZIP s potrebnými súbormi z nášho servera GLPI a nasadí ich na každého hostiteľa.

Po skopírovaní súborov skript nainštaluje agenta FusionInventory, ktorý sa spustí ako denná úloha a vytvorí rovnakú úlohu pre náš skript. Po úspešnej implementácii budeme môcť konečne vidieť mechaniky v časti Components počítača v GLPI.

Výsledok

Teraz, keď prejdeme na GLPI v ponuke „Nastavenia“ -> „Komponenty“ -> „Pevné disky“, môžeme kliknúť na modely diskov a zobraziť ich množstvo, aby sme pochopili, čo musíme kúpiť.

Inventár LSI RAID v GLPI
Inventár LSI RAID v GLPI

Zdroj: hab.com

Pridať komentár