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

60GB SSD 8Gb DDR4