
Bei meiner Arbeit bin ich oft besessen von dem Mangel an Informationen über die Infrastruktur, und mit der Zunahme der Anzahl der betreuten Server wird dies zu einer echten Qual. Selbst als ich in kleinen Organisationen verwaltete, wollte ich immer wissen, was wo ist, wo es steckt, welche der Leute für welche Hardware oder Dienstleistung verantwortlich sind und vor allem, um Änderungen daran für alle zu korrigieren. Wenn Sie an einen neuen Ort kommen und auf einen Vorfall stoßen, dauert es sehr lange, diese Informationen zu finden. Als nächstes werde ich Ihnen sagen, was ich in RuVDS zu tun hatte und wie ich das im Titel angegebene Problem gelöst habe.
Hintergrund
Als Unternehmensadministrator hatte ich wenig Erfahrung im Rechenzentrum, aber ich sah RackTables aus den Augenwinkeln. Es zeigte deutlich ein Rack mit allen Servern, USVs, Switches und allen Verbindungen zwischen ihnen. RuVDS verfügte nicht über ein solches System, sondern nur über Excel- / Papierdateien mit Informationen zu Servern, einigen ihrer Komponenten, Rack-Nummern usw. Mit diesem Ansatz ist es sehr schwierig, Änderungen für kleine Komponenten zu verfolgen. Das wichtigste und am häufigsten ersetzte Verbrauchsmaterial für Server sind jedoch Festplatten. Es ist sehr wichtig, Informationen über den Zustand der Laufwerke und ihre strategische Reserve auf dem neuesten Stand zu halten. Wenn ein Laufwerk aus dem RAID-Array abstürzt und nicht schnell ersetzt wird, kann dies letztendlich fatale Folgen haben. Daher brauchen wir wirklich ein System, das die Position der Festplatten und ihren Zustand verfolgt, um zu verstehenWas wir möglicherweise nicht genug haben und welche Modelle gekauft werden müssen.
Zur Rettung kam GLPI, ein Open-Source-Produkt, das die Leistung von IT-Abteilungen verbessern und sie auf die Ideale von ITIL bringen soll. Neben dem Gerätebestands- und Rack-Management verfügt es über eine Wissensdatenbank, einen Service Desk, ein Dokumentenmanagement und vieles mehr. GLPI verfügt über eine Vielzahl von Plugins, darunter FusionInventory und OCS Inventory, mit denen Sie durch die Installation von Agenten und über SNMP automatisch Informationen über Computer und andere Geräte sammeln können. Weitere Informationen zur Installation von GLPI und Plugins finden Sie in anderen Artikeln, am besten in der offiziellen Dokumentation . Sie können es auf unserem Hosting auf einer vorgefertigten LAMP- Vorlage installieren .
Nach der Bereitstellung des Agenten öffnen wir jedoch die Computerkomponenten in GLPI und sehen Folgendes:

Das Problem ist, dass keines der Plugins die Informationen zur physischen Festplatte in LSI-RAID-Arrays sehen kann. Nachdem ich gesehen hatte, wie dieses Problem für die Überwachung in Zabbix mithilfe des PowerShell-Skripts lsi-raid.ps1 gelöst wurde, entschied ich mich, ein ähnliches Problem für die Übertragung von Informationen an GLPI zu schreiben.
Daten zu Festplatten im Array können mit Dienstprogrammen des Controller-Herstellers abgerufen werden. Bei LSI handelt es sich um StorCLI. Daraus können Sie Daten im JSON-Format abrufen, analysieren und an die GLPI-API übergeben. Wir werden die Festplatten an Computer binden, die FusionInventory bereits erstellt hat. Bei wiederholter Ausführung aktualisiert das Skript die Daten auf allen Festplatten und fügt neue hinzu. Das Send-RAIDtoGLPI.ps1-Skript selbst befindet sich hier auf GitHub . Als nächstes zeige ich Ihnen, wie man es benutzt.
Was wird benötigt
- GLPI 9.5.1 ( )
- FusionInventory Windows
- Windows 2012 R2 ( ) , management-VM , PowerShell 4
- MegaRAID
- PowerShell — PSGLPI
- GLPI Admin API, UserToken AppToken
Ein wichtiger Punkt. Aus irgendeinem Grund verfügt GLPI über zwei verschiedene Entitäten für das Festplattenmodell, es gibt jedoch keine Eigenschaft "Medientyp". Um die Eigenschaften von HDD und SSD aufzuzeichnen, habe ich mich daher für die Dropdown-Liste "Festplattenmodelle" entschieden (front / devicemodel.php? Itemtype = DeviceHardDriveModel). Das Skript benötigt diese Werte in der GLPI-Datenbank, da es sonst keine Daten über das Festplattenmodell schreiben kann. Daher müssen Sie zuerst die Festplatte und dann die SSD in diese leere Liste eingeben, damit die IDs dieser Elemente in der Datenbank 1 und 2 sind. Wenn andere vorhanden sind, ersetzen Sie die entsprechenden IDs in dieser Zeile des Skripts Send-RAIDtoGLPI.ps1 nach HDD und SSD anstelle von 1 und 2 ::
deviceharddrivemodels_id = switch ($MediaType) { "HDD" { "1" }; "SSD" { "2" }; default { "" } }
Wenn Sie sich nicht darum kümmern 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 Datenträger zu den "Elementstatus" (/front/state.php) hinzufügen. Ich habe die Status "MediaError" (es gab mindestens einen Datenträgerzugriffsfehler) und "OK" hinzugefügt, eine Zeile im Skript, in der ihre IDs übergeben werden, "2" für "OK" und "1" für "MediaError":
states_id = switch ($MediaError) { 0 { "2" }; { $_ -gt 0 } { "1" } }
Diese Status werden zur Vereinfachung 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 für Ihre anzugeben. $ GlpiCreds muss die URL zum GLPI API Server, UserToken und AppToken enthalten.
Was ist im Skript
Aufgrund des umständlichen JSON-Parsings und des Ifs-Blattes ist das Skript schwer zu lesen, daher werde ich seine Logik hier beschreiben.
Beim ersten Start auf dem Host durchläuft das Skript alle Controller und sucht nach Datenträgern in der GLPI-Datenbank anhand von Seriennummern. Wenn es nicht gefunden wird, sucht es nach einem Modell. Wenn es auch kein Modell findet, fügt es das Modell des neuen Datenträgers zu GLPI hinzu und gibt diesen Datenträger in die Datenbank ein.
Bei jedem neuen Durchgang versucht das Skript, neue Datenträger zu finden, die fehlenden können jedoch nicht gelöscht werden. Daher müssen Sie dies manuell tun.
Bereitstellungsbeispiel
Das Skript-Repository enthält das Skript Deploy-Send-RAIDtoGLPI.ps1, mit dem das ZIP-Archiv mit den erforderlichen Dateien von unserem GLPI-Server heruntergeladen und auf jedem Host bereitgestellt wird.
Nach dem Kopieren der Dateien installiert das Skript den FusionInventory-Agenten, der als tägliche Aufgabe ausgeführt wird, und erstellt dieselbe Aufgabe für unser Skript. Nach einer erfolgreichen Implementierung können wir die Festplatten endlich im Abschnitt Komponenten des Computers in GLPI sehen.
Ergebnis
Wenn Sie nun im Menü "Einstellungen" -> "Komponenten" -> "Festplatten" zu GLPI gehen, können Sie auf die Laufwerksmodelle klicken und deren Nummer anzeigen, um zu verstehen, was wir kaufen müssen.

