Inventario RAID LSI in GLPI

Inventario RAID LSI in GLPI
Nel mio lavoro ho spesso un'ossessione per la mancanza di informazioni sull'infrastruttura e, con l'aumento del numero di server serviti, questo si trasforma in una vera tortura. Anche quando ero amministratore di piccole organizzazioni, volevo sempre sapere cosa si trovava, dove era collegato, quali persone erano responsabili di quale componente hardware o servizio e, cosa più importante, registrare i cambiamenti in tutto questo. Quando arrivi in ​​un posto nuovo e ti imbatti in un incidente, viene dedicato molto tempo alla ricerca di queste informazioni. Successivamente ti racconterò cosa ho dovuto affrontare in RuVDS e come ho risolto il problema indicato nel titolo.

Sfondo

In qualità di amministratore aziendale, avevo poca esperienza di lavoro in un data center, ma ho intravisto RackTables. Mostrava chiaramente il rack con tutti i server, gli UPS, gli interruttori e tutte le connessioni tra loro. RuVDS non disponeva di un sistema del genere, ma solo di file Excel/cartacei con informazioni sui server, alcuni dei loro componenti, numeri di rack, ecc. Con questo approccio è molto difficile tenere traccia dei cambiamenti nei piccoli componenti. Ma i materiali di consumo più importanti e frequentemente sostituiti per i server sono i dischi. È molto importante mantenere informazioni aggiornate sullo stato dei dischi e sulla loro riserva strategica. Se un'unità di un array RAID si guasta e non viene sostituita rapidamente, ciò può portare a conseguenze fatali. Pertanto, abbiamo davvero bisogno di un sistema che tenga traccia della posizione dei dischi e delle loro condizioni per capire cosa potremmo perdere e quali modelli dobbiamo acquistare.

In soccorso è arrivato GLPI, un prodotto open source progettato per migliorare le prestazioni dei dipartimenti IT e portarli agli ideali ITIL. Oltre all'inventario delle apparecchiature e alla gestione degli scaffali, dispone di knowledge base, service desk, gestione dei documenti e molto altro. GLPI dispone di numerosi plug-in, tra cui FusionInventory e OCS Inventory, che consentono di raccogliere automaticamente informazioni su computer e altri dispositivi tramite l'installazione dell'agente e SNMP. Puoi leggere ulteriori informazioni sull'installazione di GLPI e plugin in altri articoli, soprattutto: documentazione ufficiale. Puoi installarlo sul nostro hosting su un modello già pronto LAMP.

Tuttavia, dopo aver distribuito l'agente, apriremo i componenti del computer in GLPI e vedremo quanto segue:

Inventario RAID LSI in GLPI
Il problema è che nessuno dei plugin può vedere le informazioni sui dischi fisici negli array RAID LSI. Ho visto come viene risolto questo problema per il monitoraggio in Zabbix utilizzando uno script PowerShell lsi-raid.ps1 Ho deciso di scriverne uno simile per trasferire le informazioni a GLPI.
I dati sui dischi dell'array possono essere ottenuti utilizzando le utility del produttore del controller; nel caso di LSI si tratta di StorCLI. Da esso puoi ottenere dati in formato JSON, analizzarli e passarli all'API GLPI. Collegheremo i dischi ai computer che FusionInventory ha già creato. Quando eseguito nuovamente, lo script aggiornerà i dati sui dischi e ne aggiungerà di nuovi. Lo script stesso Send-RAIDtoGLPI.ps1 lo è qui su GitHub. Successivamente ti dirò come usarlo.

Che cosa sarà richiesto

  1. GLPI versione 9.5.1 (testata su questa)
  2. plug-in FusionInventario e agente per Windows
  3. Windows 2012 R2 (e versioni successive) come sistema host o una VM di gestione con un controller inserito, PowerShell versione 4 o successiva
  4. Driver MegaRAID installato
  5. Modulo per PowerShell - PSGLPI
  6. Account in GLPI con profilo Admin per l'autorizzazione tramite API generata da UserToken e AppToken

Punto importante. Per qualche motivo, GLPI ha 2 entità diverse per il modello del disco, ma non esiste una proprietà "tipo di supporto". Pertanto, per registrare le proprietà dell'HDD e dell'SSD, ho deciso di utilizzare l'elenco a discesa "Modelli di disco rigido" (front/devicemodel.php?itemtype=DeviceHardDriveModel). Lo script deve avere questi valori nel database GLPI, altrimenti non sarà in grado di scrivere dati sul modello del disco. Pertanto, è necessario aggiungere prima l'HDD, quindi l'SSD a questo elenco vuoto, in modo che gli ID di questi elementi nel database siano 1 e 2. Se ce ne sono altri, sostituire in questa riga dello script Send-RAIDtoGLPI.ps1 dopo HDD e SSD invece di 1 e 2 i loro ID corrispondenti:

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

Se non vuoi preoccuparti di questo o usi questo elenco a discesa in modo diverso, puoi semplicemente rimuovere questa riga dallo script.

È inoltre necessario aggiungere gli stati per i dischi in "Stati elemento" (/front/state.php). Ho aggiunto gli stati “MediaError” (si è verificato almeno un errore di accesso al disco) e “OK”, una riga nello script in cui vengono trasmessi i loro ID, “2” per “OK” e “1” per “MediaError”:

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

Questi stati sono necessari per comodità; se non ti servono queste proprietà, puoi anche eliminare completamente questa riga.

Nello script stesso, non dimenticare di puntare le variabili sulle tue. $GlpiCreds deve contenere l'URL del server API GLPI, UserToken e AppToken.

Cosa c'è nella sceneggiatura

A causa della complessa analisi JSON e degli if vuoti, lo script è difficile da leggere, quindi descriverò qui la sua logica.

Al primo avvio sull'host, lo script attraversa tutti i controller e cerca i dischi nel database GLPI in base ai numeri di serie; se non lo trova, cerca il modello. Se non trova il modello, aggiunge il modello del nuovo disco in GLPI e inserisce questo disco nel database.

Ad ogni nuovo passaggio lo script proverà a rilevare nuovi dischi, ma non sa come rimuovere quelli mancanti, quindi dovrai farlo manualmente.

Esempio di distribuzione

Il repository di script contiene lo script Deploy-Send-RAIDtoGLPI.ps1, che scaricherà un archivio ZIP con i file necessari dal nostro server GLPI e li distribuirà su ciascun host.

Dopo aver copiato i file, lo script installerà l'agente FusionInventory da eseguire come attività quotidiana e creerà la stessa attività per il nostro script. Dopo aver eseguito con successo l'implementazione, potremo finalmente vedere le unità nella sezione Componenti del computer in GLPI.

risultato

Ora, andando su GLPI nel menu “Impostazioni” -> “Componenti” -> “Dischi Rigidi”, possiamo cliccare sui modelli di unità e vederne la quantità per capire cosa dobbiamo acquistare.

Inventario RAID LSI in GLPI
Inventario RAID LSI in GLPI

Fonte: habr.com

Aggiungi un commento