Inventarisierung von RAID-Arrays LSI in GLPI

Inventarisierung von RAID-Arrays LSI in GLPI
In meiner Arbeit habe ich oft Obsessionen aufgrund des Mangels an Informationen ĂŒber die Infrastruktur, und mit der VergrĂ¶ĂŸerung des Serverschwarms wird es zu einer echten Qual. Selbst als ich in kleinen Organisationen administrierte, wollte ich immer wissen, was wo steht, wo etwas angeschlossen ist, wer fĂŒr welches GerĂ€t oder welchen Dienst verantwortlich ist, und am wichtigsten — die Änderungen in all dem festzuhalten. Wenn man an einen neuen Ort kommt und mit einem Vorfall konfrontiert wird, vergeht viel Zeit damit, diese Informationen zu suchen. Im Folgenden werde ich erzĂ€hlen, mit welchen Herausforderungen ich bei RuVDS konfrontiert war und wie ich das im Titel beschriebene Problem gelöst habe.

Vorgeschichte

Als Enterprise-Administrator hatte ich wenig Erfahrung in einem Rechenzentrum, aber ich habe RackTables am Rande gesehen. Darin war das Rack mit allen Servern, USVs, Switches und allen Verbindungen dazwischen anschaulich dargestellt. In RuVDS gab es ein solches System nicht, nur Excel/Papierdateien mit Informationen ĂŒber die Server, deren Komponenten, Racknummern usw. Mit einem solchen Ansatz ist es sehr schwierig, Änderungen nachzuvollziehen und kleine Komponenten im Auge zu behalten. Und das wichtigste und oft wechselnde Verbrauchsmaterial der Server sind die Festplatten. Es ist sehr wichtig, aktuelle Informationen ĂŒber den Zustand der Festplatten und ihren strategischen Vorrat zu haben. Wenn eine Festplatte aus dem RAID-Array ausfĂ€llt und es keinen schnellen Ersatz gibt, kann das letztendlich zu fatalen Folgen fĂŒhren. Daher brauchen wir dringend ein System, das den Standort und den Zustand der Festplatten ĂŒberwacht, um zu verstehen, was uns fehlen könnte und welche Modelle wir kaufen mĂŒssen.

GLPI kam zur Hilfe, ein Open-Source-Produkt, das entwickelt wurde, um die Arbeit der IT-Abteilungen zu verbessern und sie idealen ITIL-Praktiken nĂ€herzubringen. Es bietet, neben der Inventarisierung von GerĂ€ten und der Verwaltung von Racks, eine Wissensdatenbank, einen Service-Desk, Dokumentenmanagement und vieles mehr. GLPI hat viele Plugins, darunter FusionInventory und OCS Inventory, die es ermöglichen, Informationen ĂŒber Computer und andere GerĂ€te automatisch zu sammeln, indem Agenten installiert und SNMP verwendet wird. Detaillierte Informationen zur Installation von GLPI und Plugins finden Sie in anderen Artikeln, am besten — offiziellen Dokumentation. Man kann es bei uns auf dem Hosting mit einer bereits vorhandenen Vorlage installieren LAMP.

Nach dem Deployment des Agents werden wir die Computerkomponenten in GLPI öffnen und dies sehen:

Inventarisierung von RAID-Arrays LSI in GLPI
Das Problem ist, dass keiner der Plugins Informationen ĂŒber die physischen Festplatten in LSI RAID-Arrays anzeigen kann. Ich habe gesehen, wie dieses Problem fĂŒr die Überwachung in Zabbix mit einem PowerShell-Skript gelöst wurde. lsi-raid.ps1 Deshalb habe ich beschlossen, ein Ă€hnliches Skript zu schreiben, um die Informationen an GLPI zu ĂŒbertragen.
Die Daten zu den Festplatten im Array können mit den Tools des Herstellers des Controllers abgerufen werden; im Fall von LSI ist das StorCLI. Daraus können die Daten im JSON-Format abgerufen, geparst und ĂŒber die GLPI-API ĂŒbertragen werden. Die Festplatten werden mit den Computern verknĂŒpft, die FusionInventory bereits erstellt hat. Bei einer erneuten AusfĂŒhrung wird das Skript die Festplattendaten aktualisieren und neue hinzufĂŒgen. Das Skript Send-RAIDtoGLPI.ps1 befindet sich hier auf GitHub.Als NĂ€chstes werde ich erklĂ€ren, wie man es benutzt.

Was benötigt wird

  1. GLPI Version 9.5.1 (darauf wurde getestet)
  2. Plugin FusionInventory und ein Agent fĂŒr Windows
  3. Windows 2012 R2 (oder höher) als Hostsystem, oder eine Management-VM mit durchgereichtem Controller, PowerShell Version 4 oder höher
  4. Installierter MegaRAID-Treiber
  5. Ein Modul fĂŒr PowerShell — PSGLPI
  6. Ein Konto in GLPI mit einem Admin-Profil fĂŒr die Authentifizierung ĂŒber die API, generierte UserToken und AppToken

Wichtiger Punkt. In GLPI gibt es aus irgendeinem Grund 2 verschiedene EntitĂ€ten fĂŒr das Festplattenmodell, aber kein Attribut „Medientyp“. Daher habe ich beschlossen, die Dropdown-Liste „Festplattenmodelle“ (front/devicemodel.php?itemtype=DeviceHardDriveModel) fĂŒr die Aufzeichnung der Attribute HDD und SSD zu verwenden. FĂŒr das Skript mĂŒssen diese Werte in der GLPI-Datenbank vorhanden sein, andernfalls kann es die Festplattendaten nicht aufzeichnen. Daher mĂŒssen zuerst HDD und dann SSD in diese leere Liste eingetragen werden, sodass die IDs dieser Elemente in der Datenbank 1 und 2 ergeben. Wenn es andere gibt, ersetzen Sie in dieser Zeile des Skripts Send-RAIDtoGLPI.ps1 nach HDD und SSD die entsprechenden IDs anstelle von 1 und 2:

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

Wenn Sie sich damit nicht auseinandersetzen möchten oder diese Dropdown-Liste anders verwenden, können Sie einfach diese Zeile aus dem Skript löschen.

Außerdem mĂŒssen Status fĂŒr die Festplatten in den „Elementstatus“ (front/state.php) hinzugefĂŒgt werden. Ich habe die Status „MediaError“ (es gab mindestens einen Fehler beim Zugriff auf die Festplatte) und „OK“ hinzugefĂŒgt, die Zeile im Skript, wo ihre IDs ĂŒbergeben werden, „2“ fĂŒr „OK“ und „1“ fĂŒr „MediaError“:

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

Diese Status sind zur Vereinfachung erforderlich; wenn Sie diese Eigenschaften nicht benötigen, können Sie auch diese Zeile vollstÀndig löschen.

Vergessen Sie im Skript nicht, die Variablen auf Ihre zu setzen. $GlpiCreds muss die URL zum GLPI-API-Server, den UserToken und den AppToken enthalten.

Was im Skript

Wegen der unĂŒbersichtlichen JSON-Parsing und der vielen if-Anweisungen ist das Skript schwer lesbar, daher beschreibe ich seine Logik hier.

Bei der ersten AusfĂŒhrung auf dem Host durchlĂ€uft das Skript alle Controller und sucht in der GLPI-Datenbank nach Festplatten anhand der Seriennummern. Wenn es nichts findet, sucht es nach dem Modell. Wenn es auch das Modell nicht findet, fĂŒgt es das neue Festplattmodell in GLPI ein und trĂ€gt diese Festplatte in die Datenbank ein.

Bei jedem neuen Durchlauf wird das Skript versuchen, neue Festplatten zu entdecken, aber fehlende kann es nicht löschen, daher mĂŒssen Sie dies manuell machen.

Beispiel fĂŒr die Bereitstellung

Im Repository des Skripts gibt es ein Skript Deploy-Send-RAIDtoGLPI.ps1, das ein ZIP-Archiv mit den benötigten Dateien von unserem GLPI-Server herunterlÀdt und sie auf jedem Host entpackt.

Nach dem Kopieren der Dateien installiert das Skript den FusionInventory-Agenten mit der AusfĂŒhrung als tĂ€gliche Aufgabe und erstellt eine Ă€hnliche Aufgabe fĂŒr unser Skript. Nach erfolgreicher Implementierung können wir endlich die Festplatten im Bereich „Komponenten“ des Computers in GLPI sehen.

Ergebnis

Jetzt können wir, nachdem wir uns in GLPI im MenĂŒ „Einstellungen“ -> „Komponenten“ -> „Festplatten“ eingeloggt haben, auf die Festplattenmodelle klicken und deren Anzahl betrachten, um zu verstehen, was wir kaufen mĂŒssen.

Inventarisierung von RAID-Arrays LSI in GLPI
Inventarisierung von RAID-Arrays LSI in GLPI

Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster