Inventarizácia RAID polí LSI v GLPI

Inventarizácia RAID polí LSI v GLPI
Vo svojej práci často zažívam obsesie týkajúce sa nedostatku informácií o infraštruktúre, a pri zvyšovaní množstva spravovaných serverov sa to mení na skutočnú mučivú skúsenosť. Ešte aj keď som administrátoroval v malých organizáciách, vždy som chcel vedieť, čo kde je, kam je pripojené, kto z ľudí zodpovedá za ktoré zariadenie alebo službu, a čo je najdôležitejšie – zaznamenávať v tom všetkom zmeny. Keď prídete na nové miesto a stretnete sa s nejakým incidentom, veľa času sa stráca práve na hľadanie týchto informácií. Ďalej sa podelím o to, s čím som sa stretol v RuVDS a ako som vyriešil problém, ktorý som naznačil v názve.

Pozadie

Ako enterprise administrátor som mal málo skúseností s prácou v dátovom centre, ale z okrajového pohľadu som videl RackTables. V ňom bola prehľadne prezentovaná skriňa so všetkými servermi, UPS, prepínačmi a všetkými spojeniami medzi nimi. V RuVDS takýto systém neexistoval, iba Excel/papierové súbory s informáciami o serveroch, ich niektorých komponentoch, číslach skriniek a podobne. Pri takomto prístupe je veľmi ťažké sledovať zmeny a drobné komponenty. A predsa najdôležitejším a často meneným spotrebným materiálom serverov sú disky. Je veľmi dôležité udržiavať aktuálne informácie o stave diskov a ich strategickej zásobe. Ak disk vypadne z RAID poľa a nebude rýchla náhrada, môže to v konečnom dôsledku viesť k fatálnym následkom. Preto potrebujeme systém, ktorý sleduje umiestnenie diskov a ich stav, aby sme pochopili, čo nám môže chýbať a aké modely je potrebné zakúpiť.

Na pomoc prišiel GLPI, produkt s otvoreným zdrojovým kódom, navrhnutý na zlepšenie práce IT oddelení a ich privedenie k ideálom ITIL. Obsahuje okrem inventarizácie zariadení a manažmentu skriniek aj databázu znalostí, servisný stôl, správu dokumentov a mnoho ďalšieho. GLPI má množstvo pluginov, vrátane FusionInventory a OCS Inventory, ktoré umožňujú automaticky zbierať informácie o počítačoch a iných zariadeniach prostredníctvom inštalácie agentov a cez SNMP. Podrobnejšie informácie o inštalácii GLPI a pluginov nájdete v iných článkoch, najlepšie – oficiálnej dokumentácii. Môžete ho nainštalovať u nás na hostingu na už pripravenú šablónu LAMP.

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

Inventarizácia RAID polí LSI v GLPI
Problém je v tom, že žiadny z pluginov nemôže získať informácie o fyzických diskoch v RAID poliach LSI. Vidieť, ako bol tento problém vyriešený pre monitoring v Zabbix pomocou PowerShell skriptu lsi-raid.ps1 rozhodol som sa napísať podobný pre prenos informácií do GLPI.
Údaje o diskoch v poli je možné získať pomocou utilít od výrobcu ovládača, v prípade LSI je to StorCLI. Z nej môžeme získať údaje vo formáte JSON, spracovať ich a preniesť do API GLPI. Disky budeme prepojiť s počítačmi, ktoré už vytvoril FusionInventory. Pri opakovanom spustení skriptu sa údaje o diskoch aktualizujú a pridajú nové. Samotný skript Send-RAIDtoGLPI.ps1 sa nachádza tu na GitHub. Ďalej vám poviem, ako ho využiť.

Čo bude potrebné

  1. GLPI verzia 9.5.1 (na tejto som testoval)
  2. Plug-in FusionInventory a agent pod Windows
  3. Windows 2012 R2 (a vyššie) ako hostiteľský systém alebo management-VM s pripojeným ovládačom, PowerShell verzie 4 alebo vyššej
  4. Nainštalovaný ovládač MegaRAID
  5. Modul pre PowerShell — PSGLPI
  6. Účet v GLPI s Admin profilom pre autorizáciu cez API, vygenerované UserToken a AppToken

Dôležitý bod. V GLPI sú z nejakého dôvodu 2 rôzne entity pre model disku, ale chýba vlastnosť „typ nosiča“. Preto som pre zápis vlastností HDD a SSD rozhodol použiť rozbaľovaciu ponuku „Modely pevných diskov“ (front/devicemodel.php?itemtype=DeviceHardDriveModel). Pre skript je potrebné, aby sa tieto hodnoty nachádzali v databáze GLPI, inak nebude môcť zapisovať údaje o modeli disku. Preto je potrebné najprv do tohto prázdneho zoznamu pridať HDD, potom SSD, aby ID týchto prvkov v databáze vyšli 1 a 2. Ak budú iné, nahraďte v tomto riadku skriptu Send-RAIDtoGLPI.ps1 po HDD a SSD namiesto 1 a 2 príslušnými ID:

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

Ak sa s týmto nechcete zaoberať alebo máte tento rozbaľovací zoznam použitý inak, môžete jednoducho odstrániť túto časť skriptu.

Tiež je potrebné pridať stavy pre disky v „Stavoch prvkov“ (/front/state.php). Pridal som stavy „MediaError“ (ak bola aspoň jedna chyba pri prístupe k disku) a „OK“, riadok v skripte, kde sú prenášané ich ID, „2“ pre „OK“ a „1“ pre „MediaError“:

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

Tieto stavy sú potrebné pre pohodlnosť, ak tieto vlastnosti nepotrebujete, môžete tiež celý tento riadok skriptu odstrániť.

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

Čo je v skripte

Kvôli objemnému JSON-parsovaniu a dlhým if-om je skript ťažšie čitateľný, preto opíšem jeho logiku tu.

Pri prvom spustení na hoste skript prechádza všetkými kontrolérmi a hľadá disky v databáze GLPI podľa sériových čísel, ak ich nenájde, hľadá model. Ak nenájde ani model, pridá model nového disku do GLPI a zapíše tento disk do databázy.

Pri každom novom spustení sa skript pokúša objaviť nové disky, ale odstrániť chýbajúce disky nevie, takže to budete musieť urobiť manuálne.

Príklad nasadenia

V repozitári skriptu je skript Deploy-Send-RAIDtoGLPI.ps1, ktorý stiahne ZIP-archív s potrebnými súbormi z nášho servera GLPI a rozbalí ich na každom hoste.

Po skopírovaní súborov skript nainštaluje agenta FusionInventory s nastavením na spúšťanie ako dennú úlohu a vytvorí takú istú úlohu pre náš skript. Po úspešnom nasadení konečne uvidíme disky v sekcii „Komponenty“ počítača v GLPI.

Výsledok

Teraz, keď sa prihlásime do GLPI v menu „Nastavenia“ -> „Komponenty“ -> „Pevné disky“, môžeme kliknúť na modely diskov a sledovať ich počet, aby sme pochopili, čo potrebujeme zakúpiť.

Inventarizácia RAID polí LSI v GLPI
Inventarizácia RAID polí LSI v GLPI

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster