Inventarizace RAID polí LSI v GLPI

Inventarizace RAID polí LSI v GLPI
Ve své práci často zažívám obsesivní myšlenky ohledně nedostatku informací o infrastruktuře, a s rostoucím počtem spravovaných serverů se to stává skutečným mučením. I když jsem pracoval v malých organizacích, vždy jsem chtěl vědět, co a kde se nachází, kdo z lidí za které zařízení nebo službu odpovídá, a co je nejdůležitější — zaznamenávat změny ve všem. Když přijdete na nové místo a narazíte na nějaký incident, hodně času se stráví právě hledáním těchto informací. Dále se podělím o to, s čím jsem se musel vypořádat v RuVDS, a jak jsem vyřešil problém uvedený v nadpisu.

Pozadí

Jako podnikový administrátor jsem měl málo zkušeností s prací v datovém centru, ale koutkem oka jsem zahlédl RackTables. V něm byla přehledně zobrazena skříň se všemi servery, záložními zdroji, přepínači a všemi spojeními mezi nimi. V RuVDS však nebyl takový systém, byly pouze soubory Excel/papírové soubory s informacemi o serverech, některých jejich komponentech, číslech skříní atd. S takovým přístupem je velmi obtížné sledovat změny a detaily u malých komponent. A přitom nejdůležitějším a často měněným spotřebním materiálem serverů jsou disky. Je velmi důležité udržovat aktuální informace o stavu disků a jejich strategické zásoby. Pokud disk selže v RAID poli a nebude mu rychlá výměna, může to nakonec vést k fatálním následkům. Proto potřebujeme systém, který sleduje umístění disků a jejich stav, abychom věděli, čeho nám může chybět a jaké modely je třeba zakoupit.

Na pomoc přišel GLPI, produkt s otevřeným zdrojovým kódem, vytvořený pro zlepšení práce IT oddělení a jejich přivedení na úroveň ideálů ITIL. Kromě inventarizace vybavení a řízení skříní nabízí také znalostní základnu, servisní desku, správu dokumentů a mnoho dalšího. GLPI má řadu pluginů, včetně FusionInventory a OCS Inventory, které umožňují automaticky shromažďovat informace o počítačích a dalších zařízeních instalací agentů a pomocí SNMP. Podrobnosti o instalaci GLPI a pluginů můžete nalézt v jiných článcích, nejlepší je — oficiální dokumentaci. Lze ho nainstalovat u nás na hostingu na již připravený šablonu LAMP.

Po nasazení agenta otevřeme komponenty počítače v GLPI a uvidíme tohle:

Inventarizace RAID polí LSI v GLPI
Problém je v tom, že žádný z pluginů nemůže vidět informace o fyzických discích v RAID polích LSI. Viděl jsem, jak tento problém byl vyřešen pro monitorování v Zabbix pomocí PowerShell skriptu. lsi-raid.ps1 Rozhodl jsem se napsat obdobný, který předá informace do GLPI.
Data o discích v poli lze získat pomocí nástrojů od výrobce kontroléru, v případě LSI je to StorCLI. Z něj lze získat data ve formátu JSON, analyzovat je a poslat je do API GLPI. Disky spojíme s počítači, které již vytvořil FusionInventory. Při opětovném spuštění skriptu se data o discích aktualizují a přidají se nové. Samotný skript Send-RAIDtoGLPI.ps1 se nachází tady na GitHubu.Dále vám řeknu, jak ho použít.

Co bude potřeba

  1. GLPI verze 9.5.1 (na této verzi byla testována)
  2. Plugin FusionInventory a agent pro Windows
  3. Windows 2012 R2 (a novější) jako hostitelský systém, nebo management-VM s přiřazeným kontrolérem, PowerShell verze 4 nebo vyšší.
  4. Nainstalovaný ovladač MegaRAID.
  5. Modul pro PowerShell — PSGLPI.
  6. Účet v GLPI s profilem Admin pro autorizaci přes API, s vygenerovanými UserToken a AppToken.

Důležitý bod. V GLPI je z nějakého důvodu 2 různé entity pro model disku, ale neexistuje vlastnost „typ média“. Proto jsem se rozhodl použít rozbalovací seznam „Modely pevných disků“ (front/devicemodel.php?itemtype=DeviceHardDriveModel) pro ukládání vlastnosti HDD a SSD. Pro skript je nutné mít tyto hodnoty v databázi GLPI, jinak nebude schopen zapsat data o modelu disku. Proto je třeba nejprve přidat do tohoto prázdného seznamu HDD a poté SSD, aby ID těchto položek v databázi byla 1 a 2. Pokud budou jiné, nahraďte v tomto řádku skriptu Send-RAIDtoGLPI.ps1 po HDD a SSD místo 1 a 2 odpovídajícími ID:

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

Pokud se vám s tím nechce zabývat, nebo pokud používáte tento rozbalovací seznam jinak, můžete tuto řádku jednoduše odstranit ze skriptu.

Také je třeba přidat stavy pro disky do „Stavy prvků“ (front/state.php). Přidal jsem stavy „MediaError“ (pokud došlo k nějaké chybě při přístupu k disku) a „OK“, řádek ve skriptu, kde se předávají jejich ID, „2“ pro „OK“ a „1“ pro „MediaError“:

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

Tyto stavy jsou potřeba pro pohodlí, pokud tyto vlastnosti nepotřebujete, můžete také celou tuto řádku odstranit.

V samotném skriptu nezapomeňte nastavit proměnné na své. $GlpiCreds by měl obsahovat URL na server API GLPI, UserToken a AppToken.

Co ve skriptu

Kvůli neohrabanému JSON-parsing a množství if-ů je skript špatně čitelný, proto jeho logiku popíšu zde.

Při prvním spuštění na hostu skript prochází všechny kontrolery a hledá disky v databázi GLPI podle sériových čísel, pokud nenajde, hledá model. Pokud ani model nenajde, přidá model nového disku do GLPI a zapíše tento disk do databáze.

Při každém novém spuštění se skript pokusí odhalit nové disky, ale chybějící nemůže odstranit, takže to budete muset udělat ručně.

Příklad nasazení

V repozitáři skriptu je skript Deploy-Send-RAIDtoGLPI.ps1, který stáhne ZIP-archiv s potřebnými soubory z našeho serveru GLPI a nasadí je na každém hostu.

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ém nasazení konečně uvidíme disky v sekci „Komponenty“ počítače v GLPI.

Výsledek

Nyní, když se přihlásíme do GLPI v menu „Nastavení“ -> „Komponenty“ -> „Pevné disky“, můžeme kliknout na modely disků a sledovat jejich množství, abychom zjistili, co potřebujeme zakoupit.

Inventarizace RAID polí LSI v GLPI
Inventarizace RAID polí LSI v GLPI

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster