Inventarisierung von RAID-Arrays LSI in GLPI

Inventarisierung von RAID-Arrays LSI in GLPI
In meiner Arbeit habe ich häufig Anfragen zur unzureichenden Information über die Infrastruktur, und bei einer wachsenden Anzahl betreuter Server wird das zu einer echten Qual. Selbst als ich in kleinen Organisationen Administrationsaufgaben übernahm, wollte ich immer wissen, was wo steht, wo es eingesteckt ist, wer für welches Gerät oder welchen Service verantwortlich ist, und vor allem — die Änderungen in all dem festhalten. Wenn man an einen neuen Ort kommt und mit einem Vorfall konfrontiert wird, vergeht viel Zeit mit der Suche nach diesen Informationen. Im Folgenden werde ich berichten, mit welchen Herausforderungen ich bei RuVDS konfrontiert wurde und wie ich die im Titel angesprochene Problematik gelöst habe.

Hintergrund

Als Enterprise-Administrator hatte ich wenig Erfahrung in einem Rechenzentrum, aber ich habe RackTables am Rande wahrgenommen. Darin wurde der Rack mit allen Servern, USV-Anlagen, Switches und sämtlichen Verbindungen visuell dargestellt. Bei RuVDS gab es kein solches System, sondern nur Excel/Papierdokumente mit Informationen über Server, einige ihrer Komponenten, Racknummern usw. Bei diesem Ansatz ist es sehr schwierig, Änderungen nachzuverfolgen und auf kleine Komponenten zu achten. Dieser wichtigste und häufig wechselnde Verbrauchsstoff der Server sind die Festplatten. Es ist äußerst wichtig, aktuelle Informationen über den Zustand der Festplatten und deren strategische Vorräte zu haben. Wenn eine Festplatte aus dem RAID-Verbund ausfällt und kein schneller Ersatz bereitsteht, kann das letztendlich fatale Folgen haben. Daher benötigen wir dringend ein System, das den Standort der Festplatten und deren Zustand überwacht, um zu verstehen, was uns fehlen könnte und welche Modelle wir gezielt beschaffen müssen.

Hier kam GLPI ins Spiel, ein Open-Source-Produkt, das entwickelt wurde, um die Arbeit von IT-Abteilungen zu optimieren und sie zu ITIL-Idealen zu führen. Neben der Inventarisierung von Equipment und dem Rack-Management enthält es eine Wissensdatenbank, einen Service Desk, Dokumentenmanagement und vieles mehr. GLPI bietet zahlreiche Plugins, darunter FusionInventory und OCS Inventory, die es ermöglichen, Informationen über Computer und andere Geräte automatisch durch die Installation von Agenten und über SNMP zu sammeln. Nähere Informationen zur Installation von GLPI und Plugins finden Sie in anderen Artikeln, am besten — offiziellen Dokumentation. Sie können es auf unserem Hosting auf bereits bereiteten Vorlagen installieren. LAMP.

Nach dem Deployment des Agents werden wir die Komponenten des Computers in GLPI öffnen und Folgendes sehen:

Inventarisierung von RAID-Arrays LSI in GLPI
Das Problem ist, dass keiner der Plugins Informationen über physische Festplatten in LSI-RAID-Verbundsystemen abrufen kann. Nachdem ich gesehen habe, wie dieses Problem für das Monitoring in Zabbix mit Hilfe eines PowerShell-Skripts gelöst wurde, lsi-raid.ps1 entschloss ich mich, ein ähnliches Skript zur Übertragung von Informationen an GLPI zu schreiben.
Die Daten über die Festplatten im Verbund können mit Tools des Herstellers des Controllers, im Falle von LSI ist es StorCLI, abgerufen werden. Damit können Sie Daten im JSON-Format erhalten, diese parsen und an die API von GLPI übergeben. Wir werden die Festplatten den Computern zuordnen, die bereits von FusionInventory erstellt wurden. Bei einer erneuten Ausführung wird das Skript die Daten über die Festplatten aktualisieren und neue hinzufügen. Das Skript Send-RAIDtoGLPI.ps1 befindet sich hier auf GitHub. Im Folgenden erkläre ich, wie Sie es verwenden können.

Was benötigt wird

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

Ein wichtiger Punkt. In GLPI gibt es aus irgendeinem Grund zwei unterschiedliche Entitäten für das Modell einer Festplatte, aber kein Merkmal „Medientyp“. Daher habe ich beschlossen, die Dropdown-Liste „Festplattenmodelle“ (front/devicemodel.php?itemtype=DeviceHardDriveModel) für die Aufzeichnung der Eigenschaften HDD und SSD zu verwenden. Für das Skript muss diese Werte in der GLPI-Datenbank vorhanden sein, andernfalls kann es keine Daten über das Festplattenmodell speichern. Daher sollten Sie zunächst HDD und dann SSD in diese leere Liste einfügen, damit die IDs dieser Elemente in der Datenbank 1 und 2 werden. Wenn es andere gibt, ersetzen Sie in dieser Zeile im Skript Send-RAIDtoGLPI.ps1 nach HDD und SSD die IDs 1 und 2 durch die entsprechenden IDs:

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

Wenn Sie sich nicht damit beschäftigen möchten oder diese Dropdown-Liste anders verwenden, können Sie diese Zeile einfach aus dem Skript entfernen.

Außerdem müssen Sie Status für die Festplatten in „Elementstatus“ (/front/state.php) hinzufügen. Ich habe die Status „MediaError“ (es gab zumindest einen Fehler beim Zugriff auf die Festplatte) und „OK“ hinzugefügt, die IDs in der Zeile im Skript, „2“ für „OK“ und „1“ für „MediaError“:

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

Diese Status sind für die Übersichtlichkeit erforderlich, wenn Sie diese Eigenschaften nicht benötigen, können Sie diese Zeile ebenfalls ganz entfernen.

Vergessen Sie nicht, im Skript Ihre Variablen anzugeben. $GlpiCreds sollte die URL zum API-Server von GLPI, UserToken und AppToken enthalten.

Was im Skript steht

Aufgrund der komplizierten JSON-Analyse und der langen if-Bedingungen ist das Skript schwer lesbar, daher werde ich seine Logik hier beschreiben.

Beim ersten Start auf dem Host durchläuft das Skript alle Controller und sucht in der GLPI-Datenbank nach Festplatten anhand der Seriennummern. Wenn keine gefunden werden, sucht es nach dem Modell. Wenn das Modell ebenfalls nicht gefunden wird, wird das Modell der neuen Festplatte in GLPI hinzugefügt und die Festplatte wird in die Datenbank eingetragen.

Bei jedem neuen Durchlauf wird das Skript versuchen, neue Festplatten zu erkennen, kann aber fehlende nicht entfernen, daher muss dies manuell erfolgen.

Beispiel für das Deployment

Im Repository des Skripts befindet sich das Skript Deploy-Send-RAIDtoGLPI.ps1, das eine ZIP-Datei mit den erforderlichen Dateien von unserem GLPI-Server herunterlädt und sie auf jedem Host entpackt.

Nach dem Kopieren der Dateien installiert das Skript den FusionInventory-Agenten 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 in GLPI im Menü "Einstellungen" -> "Komponenten" -> "Festplatten" sind, auf die Modelle der Festplatten klicken und deren Anzahl ansehen, 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

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster