LSI-RAID-Inventar in GLPI

LSI-RAID-Inventar in GLPI
Bei meiner Arbeit bin ich oft von mangelnden Informationen über die Infrastruktur besessen, und mit zunehmender Anzahl der bedienten Server wird dies zu einer echten Qual. Selbst als ich Administrator in kleinen Organisationen war, wollte ich immer wissen, was wo war, wo es eingesteckt war, welche Leute für welche Hardware oder welchen Dienst verantwortlich waren und vor allem, um Änderungen in all dem aufzuzeichnen. Wenn Sie an einen neuen Ort kommen und auf einen Vorfall stoßen, wird viel Zeit damit verbracht, nach diesen Informationen zu suchen. Als nächstes erzähle ich Ihnen, womit ich in RuVDS konfrontiert war und wie ich das im Titel angegebene Problem gelöst habe.

Vorgeschichte

Als Unternehmensadministrator hatte ich wenig Erfahrung mit der Arbeit in einem Rechenzentrum, aber ich erhaschte einen Blick auf RackTables. Es zeigte deutlich das Rack mit allen Servern, USVs, Switches und allen Verbindungen zwischen ihnen. RuVDS hatte kein solches System, sondern nur Excel-/Papierdateien mit Informationen über Server, einige ihrer Komponenten, Racknummern usw. Mit diesem Ansatz ist es sehr schwierig, Änderungen an kleinen Komponenten zu verfolgen. Das wichtigste und am häufigsten ersetzte Verbrauchsmaterial für Server sind jedoch Festplatten. Es ist sehr wichtig, aktuelle Informationen über den Status der Festplatten und ihre strategische Reserve zu erhalten. Fällt in einem RAID-Verbund ein Laufwerk aus und wird nicht schnellstmöglich ersetzt, kann das letztlich fatale Folgen haben. Deshalb brauchen wir wirklich ein System, das den Standort der Festplatten und ihren Zustand verfolgt, um zu verstehen, was uns möglicherweise fehlt und welche Modelle wir kaufen müssen.

Zur Rettung kam GLPI, ein Open-Source-Produkt, das die Leistung von IT-Abteilungen verbessern und sie an die ITIL-Ideale heranführen soll. Neben Geräteinventur und Rack-Management verfügt es über eine Wissensdatenbank, einen Service Desk, Dokumentenmanagement und vieles mehr. GLPI verfügt über viele Plugins, darunter FusionInventory und OCS Inventory, mit denen Sie durch Agenteninstallation und SNMP automatisch Informationen über Computer und andere Geräte sammeln können. Mehr über die Installation von GLPI und Plugins können Sie in anderen Artikeln lesen, und das Beste ist: amtliche Dokumentation. Sie können es auf unserem Hosting auf einer vorgefertigten Vorlage installieren LAMP.

Nach der Bereitstellung des Agenten öffnen wir jedoch die Computerkomponenten in GLPI und sehen Folgendes:

LSI-RAID-Inventar in GLPI
Das Problem besteht darin, dass keines der Plugins Informationen über die physischen Festplatten in LSI-RAID-Arrays sehen kann. Ich habe gesehen, wie dieses Problem für die Überwachung in Zabbix mithilfe eines PowerShell-Skripts gelöst wird lsi-raid.ps1 Ich beschloss, ein ähnliches zu schreiben, um Informationen an GLPI zu übertragen.
Daten zu den Festplatten im Array können mit Dienstprogrammen des Controller-Herstellers abgerufen werden; im Fall von LSI ist dies StorCLI. Daraus können Sie Daten im JSON-Format abrufen, analysieren und an die GLPI-API übergeben. Wir verknüpfen die Festplatten mit Computern, die FusionInventory bereits erstellt hat. Bei erneuter Ausführung aktualisiert das Skript die Daten auf den Festplatten und fügt neue hinzu. Das Skript selbst lautet Send-RAIDtoGLPI.ps1 hier auf GitHub. Als nächstes werde ich Ihnen erklären, wie Sie es verwenden.

Was wird benötigt

  1. GLPI Version 9.5.1 (auf dieser getestet)
  2. Plugin FusionInventar und Agent für Windows
  3. Windows 2012 R2 (und höher) als Hostsystem oder eine Management-VM mit eingefügtem Controller, PowerShell Version 4 oder höher
  4. Installierter MegaRAID-Treiber
  5. Modul für PowerShell - PSGLPI
  6. Konto in GLPI mit Admin-Profil zur Autorisierung über die von UserToken und AppToken generierte API

Wichtiger Punkt. Aus irgendeinem Grund verfügt GLPI über zwei verschiedene Entitäten für das Festplattenmodell, aber es gibt keine Eigenschaft „Medientyp“. Um die HDD- und SSD-Eigenschaften aufzuzeichnen, habe ich mich daher für die Dropdown-Liste „Festplattenmodelle“ (front/devicemodel.php?itemtype=DeviceHardDriveModel) entschieden. Das Skript muss diese Werte in der GLPI-Datenbank haben, sonst kann es keine Daten über das Festplattenmodell schreiben. Daher müssen Sie dieser leeren Liste zuerst die Festplatte und dann die SSD hinzufügen, sodass die IDs dieser Elemente in der Datenbank 2 und 1 sind. Wenn es andere gibt, ersetzen Sie diese in dieser Zeile des Skripts durch Send-RAIDtoGLPI.ps2 HDD und SSD statt 1 und 1 ihre entsprechenden IDs:

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

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

Sie müssen auch Status für die Festplatten in „Element Statuses“ (/front/state.php) hinzufügen. Ich habe die Status „MediaError“ (es gab mindestens einen Festplattenzugriffsfehler) und „OK“ hinzugefügt, eine Zeile im Skript, in der ihre IDs übertragen werden, „2“ für „OK“ und „1“ für „MediaError“:

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

Diese Status werden aus Bequemlichkeitsgründen benötigt. Wenn Sie diese Eigenschaften nicht benötigen, können Sie diese Zeile auch vollständig löschen.

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

Was steht im Drehbuch?

Aufgrund der umständlichen JSON-Analyse und der leeren Ifs ist das Skript schwer zu lesen, daher werde ich hier seine Logik beschreiben.

Wenn das Skript zum ersten Mal auf dem Host gestartet wird, durchsucht es alle Controller und sucht anhand der Seriennummern nach Festplatten in der GLPI-Datenbank. Wenn es diese nicht findet, sucht es nach dem Modell. Wenn es das Modell nicht findet, fügt es die hinzu Modell der neuen Platte auf GLPI und trägt diese Platte in die Datenbank ein.

Bei jedem neuen Durchlauf versucht das Skript, neue Festplatten zu erkennen, weiß jedoch nicht, wie fehlende Festplatten entfernt werden können, sodass Sie dies manuell tun müssen.

Bereitstellungsbeispiel

Das Skript-Repository enthält das Skript Deploy-Send-RAIDtoGLPI.ps1, das ein ZIP-Archiv mit den erforderlichen Dateien von unserem GLPI-Server herunterlädt und sie auf jedem Host bereitstellt.

Nach dem Kopieren der Dateien installiert das Skript den FusionInventory-Agenten zur Ausführung als tägliche Aufgabe und erstellt dieselbe Aufgabe für unser Skript. Nach erfolgreicher Implementierung können wir endlich die Laufwerke im Komponentenbereich des Computers in GLPI sehen.

Erlebe die Kraft effektiver Ergebnisse

Wenn wir nun im Menü „Einstellungen“ -> „Komponenten“ -> „Festplatten“ zu GLPI gehen, können wir auf die Laufwerksmodelle klicken und deren Anzahl sehen, um zu verstehen, was wir kaufen müssen.

LSI-RAID-Inventar in GLPI
LSI-RAID-Inventar in GLPI

Source: habr.com

Kommentar hinzufügen