Inventář LSI RAID v GLPI

Inventář LSI RAID v GLPI
Při své práci se často setkávám s obsesí o nedostatku informací o infrastruktuře a se zvyšujícím se počtem obsluhovaných serverů se to mění v opravdové mučení. Už když jsem byl administrátorem v malých organizacích, vždy jsem chtěl vědět, co kde je, kam je to zapojeno, kteří lidé jsou zodpovědní za který kus hardwaru nebo služby, a hlavně zaznamenávat změny v tom všem. Když přijdete na nové místo a setkáte se s incidentem, hledáním těchto informací strávíte spoustu času. Dále vám řeknu, čemu jsem musel čelit v RuVDS a jak jsem vyřešil problém uvedený v názvu.

pravěk

Jako podnikový administrátor jsem měl málo zkušeností s prací v datovém centru, ale zahlédl jsem RackTables. Jasně ukazoval stojan se všemi servery, UPS, přepínači a všemi propojeními mezi nimi. RuVDS takový systém neměl, ale pouze excelové/papírové soubory s informacemi o serverech, některých jejich komponentách, číslech racků atd. S tímto přístupem je velmi obtížné sledovat změny v malých součástech. Ale nejdůležitějším a často nahrazovaným spotřebním materiálem pro servery jsou disky. Je velmi důležité udržovat aktuální informace o stavu disků a jejich strategické rezervě. Pokud disk selže z pole RAID a není rychle vyměněn, může to mít nakonec fatální následky. Proto opravdu potřebujeme systém, který sleduje umístění disků a jejich stav, abychom pochopili, co nám může chybět a jaké modely musíme zakoupit.

K záchraně přišel GLPI, produkt s otevřeným zdrojovým kódem, který má zlepšit výkon IT oddělení a přivést je k ideálům ITIL. Kromě inventáře zařízení a správy stojanů má znalostní základnu, servisní desku, správu dokumentů a mnoho dalšího. GLPI má mnoho pluginů, včetně FusionInventory a OCS Inventory, které vám umožňují automaticky shromažďovat informace o počítačích a dalších zařízeních prostřednictvím instalace agenta a SNMP. Více o instalaci GLPI a pluginů si můžete přečíst v jiných článcích, nejlépe - oficiální dokumentace. Můžete si jej nainstalovat na náš hosting na již připravenou šablonu LAMP.

Po nasazení agenta však otevřeme počítačové komponenty v GLPI a uvidíme toto:

Inventář LSI RAID v GLPI
Problém je v tom, že žádný z pluginů nevidí informace o fyzických discích v polích LSI RAID. Když jsme viděli, jak je tento problém vyřešen pro monitorování v Zabbix pomocí skriptu PowerShell lsi-raid.ps1 Rozhodl jsem se napsat podobný pro přenos informací do GLPI.
Data o discích v poli lze získat pomocí utilit od výrobce řadiče, v případě LSI je to StorCLI. Z něj můžete získat data ve formátu JSON, analyzovat je a předat GLPI API. Disky propojíme s počítači, které již FusionInventory vytvořil. Při opětovném spuštění skript aktualizuje data na discích a přidá nová. Samotný skript Send-RAIDtoGLPI.ps1 je zde na GitHubu. Dále vám řeknu, jak jej používat.

Co bude zapotřebí

  1. GLPI verze 9.5.1 (testováno na této)
  2. Plugin Fusion Inventář a agent pro Windows
  3. Windows 2012 R2 (a vyšší) jako hostitelský systém nebo management-VM s vloženým řadičem, PowerShell verze 4 nebo vyšší
  4. Nainstalovaný ovladač MegaRAID
  5. Modul pro PowerShell - PSGLPI
  6. Účet v GLPI s profilem správce pro autorizaci přes API generované UserToken a AppToken

Důležitý bod. Z nějakého důvodu má GLPI 2 různé entity pro model disku, ale neexistuje žádná vlastnost „typ média“. Proto jsem se pro záznam vlastností HDD a SSD rozhodl použít rozbalovací seznam “Hard Drive Models” (front/devicemodel.php?itemtype=DeviceHardDriveModel). Skript musí mít tyto hodnoty v databázi GLPI, jinak nebude moci zapisovat data o modelu disku. Do tohoto prázdného seznamu je tedy potřeba přidat nejprve HDD, poté SSD, aby ID těchto prvků v databázi byla 1 a 2. Pokud existují další, pak nahraďte v tomto řádku skriptu Send-RAIDtoGLPI.ps1 za HDD a SSD místo 1 a 2 jejich odpovídající ID:

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

Pokud se s tím nechcete obtěžovat nebo používáte tento rozevírací seznam jinak, můžete tento řádek ze skriptu jednoduše odstranit.

Také je potřeba přidat stavy pro disky do “Element Statuses” (/front/state.php). Přidal jsem stavy „MediaError“ (nejméně jedna chyba přístupu k disku) a „OK“, řádek ve skriptu, kam se přenášejí jejich ID, „2“ pro „OK“ a „1“ pro „MediaError“:

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

Tyto stavy jsou potřebné pro pohodlí; pokud tyto vlastnosti nepotřebujete, můžete tento řádek také zcela smazat.

V samotném skriptu nezapomeňte nasměrovat proměnné na ty vaše. $GlpiCreds musí obsahovat adresu URL serveru GLPI API, UserToken a AppToken.

Co je ve scénáři

Kvůli těžkopádnému parsování JSON a prázdným ifs je skript obtížně čitelný, proto zde popíšu jeho logiku.

Skript při prvním spuštění na hostiteli projde všechny řadiče a vyhledá disky v databázi GLPI podle sériových čísel, pokud je nenajde, hledá model, pokud nenajde model, přidá model nového disku do GLPI a vloží tento disk do databáze.

Každý nový průchod se skript pokusí detekovat nové disky, ale neví, jak odstranit chybějící, takže to budete muset udělat ručně.

Příklad nasazení

Úložiště skriptů obsahuje skript Deploy-Send-RAIDtoGLPI.ps1, který stáhne archiv ZIP s potřebnými soubory z našeho serveru GLPI a nasadí je na každý hostitel.

Po zkopírování souborů skript nainstaluje agenta FusionInventory, který se spustí jako denní úloha a vytvoří stejnou úlohu pro náš skript. Po úspěšné implementaci budeme konečně moci vidět jednotky v sekci Komponenty počítače v GLPI.

Výsledek

Nyní, když přejdeme do GLPI v nabídce „Nastavení“ -> „Komponenty“ -> „Pevné disky“, můžeme kliknout na modely disků a zobrazit jejich množství, abychom pochopili, co potřebujeme koupit.

Inventář LSI RAID v GLPI
Inventář LSI RAID v GLPI

Zdroj: www.habr.com

Přidat komentář