LSI RAID-inventaris in GLPI

LSI RAID-inventaris in GLPI
In mijn werk ervaar ik vaak obsessies over het gebrek aan informatie over de infrastructuur, en met een toename van het aantal servers dat wordt bediend, verandert dit in echte marteling. Zelfs toen ik beheerder was in kleine organisaties, wilde ik altijd weten wat waar was, waar het was aangesloten, welke mensen verantwoordelijk waren voor welk stuk hardware of dienst, en het allerbelangrijkste: om veranderingen daarin vast te leggen. Wanneer je op een nieuwe plek komt en een incident tegenkomt, wordt er veel tijd besteed aan het zoeken naar deze informatie. Vervolgens zal ik je vertellen waar ik in RuVDS mee te maken kreeg en hoe ik het in de titel aangegeven probleem heb opgelost.

prehistorie

Als bedrijfsbeheerder had ik weinig ervaring met het werken in een datacenter, maar ik ving een glimp op van RackTables. Hierop was duidelijk het rack te zien met alle servers, UPS, switches en alle verbindingen daartussen. RuVDS beschikte niet over een dergelijk systeem, maar alleen over Excel/papieren bestanden met informatie over servers, een deel van hun componenten, racknummers, etc. Met deze aanpak is het erg moeilijk om veranderingen in kleine componenten te volgen. Maar de belangrijkste en meest vervangen verbruiksartikelen voor servers zijn schijven. Het is erg belangrijk om actuele informatie bij te houden over de status van schijven en hun strategische reserve. Als een schijf uit een RAID-array uitvalt en niet snel wordt vervangen, kan dit uiteindelijk fatale gevolgen hebben. Daarom hebben we echt een systeem nodig dat de locatie van schijven en hun toestand bijhoudt om te begrijpen wat we mogelijk missen en welke modellen we moeten aanschaffen.

GLPI kwam te hulp, een open source-product dat is ontworpen om de prestaties van IT-afdelingen te verbeteren en ze op het niveau van ITIL-idealen te brengen. Naast apparatuurinventaris en rackbeheer beschikt het over een kennisbank, servicedesk, documentbeheer en nog veel meer. GLPI heeft veel plug-ins, waaronder FusionInventory en OCS Inventory, waarmee u automatisch informatie over computers en andere apparaten kunt verzamelen via agentinstallatie en SNMP. U kunt meer lezen over het installeren van GLPI en plug-ins in andere artikelen, het beste van alles: officiële documentatie. Je kunt het op onze hosting installeren op een kant-en-klaar template LAMP.

Nadat we de agent hebben geïmplementeerd, openen we echter de computercomponenten in GLPI en zien we dit:

LSI RAID-inventaris in GLPI
Het probleem is dat geen van de plug-ins informatie kan zien over de fysieke schijven in LSI RAID-arrays. Ik heb gezien hoe dit probleem is opgelost voor monitoring in Zabbix met behulp van een PowerShell-script lsi-raid.ps1 Ik besloot een soortgelijk document te schrijven om informatie naar GLPI over te dragen.
Gegevens over de schijven in de array kunnen worden verkregen met behulp van hulpprogramma's van de controllerfabrikant; in het geval van LSI is dit StorCLI. Hieruit kunt u gegevens in JSON-indeling ophalen, deze parseren en doorgeven aan de GLPI API. We zullen de schijven koppelen aan computers die FusionInventory al heeft gemaakt. Wanneer het script opnieuw wordt uitgevoerd, zal het de gegevens op de schijven bijwerken en nieuwe toevoegen. Het script zelf Send-RAIDtoGLPI.ps1 is hier op GitHub. Vervolgens zal ik je vertellen hoe je het kunt gebruiken.

Wat is er nodig?

  1. GLPI versie 9.5.1 (op deze getest)
  2. Inpluggen Fusion-inventaris en agent voor Windows
  3. Windows 2012 R2 (en hoger) als hostsysteem, of een beheer-VM met daarin een controller, PowerShell versie 4 of hoger
  4. MegaRAID-stuurprogramma geïnstalleerd
  5. Module voor PowerShell - PSGLPI
  6. Account in GLPI met beheerdersprofiel voor autorisatie via API gegenereerd door UserToken en AppToken

Belangrijk punt. Om de een of andere reden heeft GLPI twee verschillende entiteiten voor het schijfmodel, maar er is geen eigenschap “mediatype”. Om de HDD- en SSD-eigenschappen vast te leggen, heb ik daarom besloten de vervolgkeuzelijst “Hard Drive Models” (front/devicemodel.php?itemtype=DeviceHardDriveModel) te gebruiken. Het script moet deze waarden in de GLPI-database hebben, anders kan het geen gegevens over het schijfmodel schrijven. Daarom moet u eerst HDD en vervolgens SSD aan deze lege lijst toevoegen, zodat de ID's van deze elementen in de database 2 en 1 zijn. Als er andere zijn, vervang dan in deze regel van het script Send-RAIDtoGLPI.ps2 daarna HDD en SSD in plaats van 1 en 1 hun overeenkomstige ID's:

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

Als u zich hier geen zorgen over wilt maken of deze vervolgkeuzelijst anders gebruikt, kunt u deze regel eenvoudig uit het script verwijderen.

U moet ook statussen voor de schijven toevoegen in “Element Statuses” (/front/state.php). Ik heb de statussen “MediaError” toegevoegd (er was minstens één schijftoegangsfout) en “OK”, een regel in het script waar hun ID's worden verzonden, “2” voor “OK” en “1” voor “MediaError”:

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

Deze statussen zijn nodig voor het gemak; als u deze eigenschappen niet nodig heeft, kunt u deze regel ook geheel verwijderen.

Vergeet in het script zelf niet om de variabelen naar de jouwe te verwijzen. $GlpiCreds moet de URL naar de GLPI API-server, UserToken en AppToken bevatten.

Wat staat er in het script

Vanwege omslachtige JSON-parsering en lege ifs is het script moeilijk te lezen, dus ik zal de logica hier beschrijven.

Wanneer het script voor het eerst op de host wordt gestart, doorloopt het alle controllers en zoekt het naar schijven in de GLPI-database op serienummers; als het deze niet vindt, zoekt het naar het model. Als het het model niet vindt, voegt het het model van de nieuwe schijf naar GLPI en voert deze schijf in de database in.

Bij elke nieuwe passage probeert het script nieuwe schijven te detecteren, maar het weet niet hoe de ontbrekende schijven moeten worden verwijderd, dus u zult het handmatig moeten doen.

Voorbeeld van implementatie

De scriptrepository bevat het script Deploy-Send-RAIDtoGLPI.ps1, dat een ZIP-archief met de benodigde bestanden van onze GLPI-server downloadt en op elke host implementeert.

Na het kopiëren van de bestanden installeert het script de FusionInventory-agent om als dagelijkse taak uit te voeren en maakt dezelfde taak voor ons script. Na een succesvolle implementatie kunnen we eindelijk de schijven zien in het Componenten-gedeelte van de computer in GLPI.

Resultaat

Door nu naar GLPI te gaan in het menu “Instellingen” -> “Componenten” -> “Harde schijven”, kunnen we op de schijfmodellen klikken en hun aantal bekijken om te begrijpen wat we moeten kopen.

LSI RAID-inventaris in GLPI
LSI RAID-inventaris in GLPI

Bron: www.habr.com

Voeg een reactie