I mitt arbete upplever jag ofta en besatthet över bristen pĂ„ information om infrastrukturen, och nĂ€r antalet servrar jag hanterar ökar blir det en verklig plĂ„ga. Ăven nĂ€r jag administrerade i mindre organisationer, ville jag alltid veta vad som stod var, vad som var kopplat, vem av kollegorna som ansvarade för vilken hĂ„rdvara eller tjĂ€nst, och kanske viktigast av allt â dokumentera förĂ€ndringar i allt detta. NĂ€r man kommer till en ny plats och stöter pĂ„ en incident gĂ„r det massor av tid Ă„t till att leta efter denna information. HĂ€r nedan berĂ€ttar jag om de utmaningar jag stött pĂ„ hos RuVDS och hur jag löste det problem som nĂ€mns i rubriken.
Bakgrund
Som företagsadministratör hade jag lite erfarenhet av att arbeta i ett datacenter, men jag sÄg RackTables i ögonvrÄn. Den visade tydligt en rack med alla servrar, UPS, switchar och alla anslutningar mellan dem. Hos RuVDS fanns det ingen sÄdan system, bara Excel-/pappersfiler med information om servrar, deras vissa komponenter, racknummer och sÄ vidare. Med denna metod Àr det mycket svÄrt att spÄra förÀndringar och hÄlla koll pÄ mindre komponenter. Och den mest kritiska och ofta utbytta förbrukningsvaran för servrar Àr diskar. Det Àr mycket viktigt att ha aktuell information om diskarnas tillstÄnd och deras strategiska reserv. Om en disk gÄr ner ur RAID-arrayen och det inte finns nÄgon snabb ersÀttning, kan det i slutÀndan leda till fatala konsekvenser. DÀrför behöver vi verkligen ett system för att spÄra diskarnas placering och tillstÄnd, sÄ att vi förstÄr vad vi kan sakna och vilka modeller som behöver köpas in.
Till vĂ„r rĂ€ddning kom GLPI, en öppen kĂ€llkodsprodukt som skapats för att förbĂ€ttra IT-avdelningars arbete och föra dem till ITIL-ideal. Den har, förutom utrustningsinventering och rackhantering, en kunskapsdatabas, service desk, dokumenthantering och mycket mer. GLPI har mĂ„nga plugins, inklusive FusionInventory och OCS Inventory, som gör det möjligt att automatiskt samla in information om datorer och andra enheter genom att installera agenter och via SNMP. Mer om installation av GLPI och plugins kan du lĂ€sa i andra artiklar, helst â . Du kan installera det hos oss pĂ„ hostingtjĂ€nsten pĂ„ en fĂ€rdig mall .
Men efter att ha distribuerat agenten kommer vi att öppna datorns komponenter i GLPI och se detta:

Problemet Àr att inga av plugin-programmen kan se information om de fysiska diskarna i RAID-matriserna LSI. Jag har sett hur denna frÄga har lösts för övervakning i Zabbix med hjÀlp av ett PowerShell-skript. Jag beslutade att skriva ett liknande skript för att överföra information till GLPI.
Data om diskarna i matrisen kan hÀmtas med hjÀlp av verktyg frÄn tillverkaren av kontrollerkortet, i LSI:s fall Àr det StorCLI. FrÄn detta verktyg kan man fÄ data i JSON-format, parsa det och skicka det till GLPI:s API. Vi kommer att koppla diskarna till datorer som redan har skapats av FusionInventory. Vid upprepning av skriptet kommer det att uppdatera informationen om diskarna och lÀgga till nya. SjÀlva skriptet Send-RAIDtoGLPI.ps1 finns HÀrnÀst kommer jag att förklara hur man anvÀnder det.
Vad som krÀvs
- version 9.5.1 (denna har testats)
- Plugin och en agent för Windows
- Windows 2012 R2 (eller senare) som vÀrdsystem, eller en management-VM med kontrollerkortet tilldelat, PowerShell version 4 eller högre
- Installerad MegaRAID-drivrutin
- Modul för PowerShell â
- Ett konto i GLPI med Admin-profil för autentisering via API, genererade UserToken och AppToken.
En viktig punkt. I GLPI finns det tvÄ olika entiteter för modell av diskar, men inget fÀlt för "lagringsmedietyp". DÀrför beslutade jag att anvÀnda en rullgardinslista "Modeller av hÄrddiskar" (front/devicemodel.php?itemtype=DeviceHardDriveModel) för att registrera egenskapen HDD och SSD. Skriptet krÀver att dessa vÀrden finns i GLPI-databasen, annars kan det inte registrera informationen om diskmodellen. SÄ det Àr nödvÀndigt att först lÀgga till HDD och sedan SSD i denna tomma lista, sÄ att ID för dessa element i databasen blir 1 och 2. Om det blir andra, byt ut ID:na 1 och 2 i denna rad i skriptet Send-RAIDtoGLPI.ps1 efter HDD och SSD:
deviceharddrivemodels_id = switch ($MediaType) { "HDD" { "1" }; "SSD" { "2" }; default { "" } }Om du inte vill hantera detta eller om du anvÀnder denna rullgardinslista pÄ annat sÀtt, kan du helt enkelt ta bort denna rad frÄn skriptet.
Det behövs ocksÄ att lÀgga till statusar för diskarna i "Elementstatus" (front/state.php). Jag har lagt till statusarna "MediaError" (om det har förekommit minst ett fel vid Ätkomst till disken) och "OK". Raden i skriptet dÀr deras ID överförs Àr "2" för "OK" och "1" för "MediaError":
states_id = switch ($MediaError) { 0 { "2" }; { $_ -gt 0 } { "1" } }Dessa statusar behövs för bekvÀmlighet, om du inte behöver dessa egenskaper kan du ocksÄ ta bort denna rad helt.
I skriptet, kom ihÄg att ange dina variabler. $GlpiCreds ska innehÄlla URL till GLPI API-servern, UserToken och AppToken.
Vad i skriptet
PÄ grund av den omfattande JSON-parsing och ett lÄngt antal if-satser Àr skriptet svÄrt att lÀsa, sÄ jag beskriver dess logik hÀr.
Vid första körningen pÄ vÀrden gÄr skriptet igenom alla kontroller och letar efter diskar i GLPI-databasen baserat pÄ serienummer; om det inte hittar dem, söker det efter modell. Om modellen inte hittas lÀggs den nya diskmodellen till i GLPI och den disk lÀggs in i databasen.
Vid varje nytt körning kommer skriptet att försöka upptÀcka nya diskar, men det kan inte ta bort saknade, sÄ det fÄr göras manuellt.
Exempel pÄ implementering
I skriptets repository finns skriptet Deploy-Send-RAIDtoGLPI.ps1, som kommer att ladda ner en ZIP-arkiv med nödvÀndiga filer frÄn vÄr GLPI-server och installera dem pÄ varje vÀrd.
Efter att filerna har kopierats kommer skriptet att installera FusionInventory-agenten med en daglig uppgift och skapa en liknande uppgift för vÄrt skript. Efter en lyckad implementering kan vi Àntligen se diskarna i avsnittet 'Komponenter' pÄ datorn i GLPI.
Resultat
Nu, nÀr vi gÄr in i GLPI i menyn 'InstÀllningar' -> 'Komponenter' -> 'HÄrddiskar', kan vi klicka pÄ diskmodeller och se deras antal för att förstÄ vad vi behöver köpa.

KĂ€lla: habr.com
