Inventario dei RAID array LSI in GLPI

Inventario dei RAID array LSI in GLPI
Nel mio lavoro, spesso ho ossessioni riguardo alla mancanza di informazioni sull'infrastruttura, e con l'aumento del numero di server gestiti, questo si trasforma in un vero e proprio tormento. Anche quando amministravo piccole organizzazioni, desideravo sempre sapere cosa e dove si trovasse, chi fosse responsabile di quale hardware o servizio, e soprattutto registrare le modifiche. Quando si arriva in un nuovo posto e si affronta un incidente, gran parte del tempo viene spesa nella ricerca di queste informazioni. In seguito, parlerò di cosa mi è successo in RuVDS e di come ho risolto il problema menzionato nel titolo.

Antefatti

Da amministratore enterprise, ho avuto poca esperienza lavorativa in un data center, ma ho intravisto RackTables. In esso, era presentato in modo chiaro il rack con tutti i server, gli UPS, gli switch e tutte le connessioni tra di essi. In RuVDS non esisteva un sistema simile, solo file Excel/o cartacei con informazioni sui server, alcuni dei loro componenti, i numeri dei rack e simili. Con questo approccio, risulta molto difficile tenere traccia delle modifiche e dei piccoli componenti. Eppure, il materiale di consumo più importante e frequentemente sostituito nei server sono i dischi. È fondamentale mantenere informazioni aggiornate sullo stato dei dischi e sul loro stock strategico. Se un disco esce dal RAID e non viene sostituito rapidamente, questo può portare a conseguenze fatali. Pertanto, abbiamo urgentemente bisogno di un sistema che monitori la posizione e lo stato dei dischi, per capire cosa ci manca e quali modelli acquistare.

A venire in aiuto è stato GLPI, un prodotto open source creato per migliorare l'efficacia dei reparti IT e portarli verso gli ideali ITIL. Esso presenta, oltre all'inventario delle attrezzature e alla gestione dei rack, anche una knowledge base, un servizio di assistenza, gestione documentale e molto altro. GLPI dispone di numerosi plugin, tra cui FusionInventory e OCS Inventory, che permettono di raccogliere automaticamente informazioni su computer e altri dispositivi tramite l'installazione di agenti e SNMP. Maggiori dettagli sull'installazione di GLPI e dei plugin possono essere letti in altri articoli, meglio ancora — documentazione ufficiale. Può essere installato sul nostro hosting su un template già pronto LAMP.

Tuttavia, dopo il deployment dell'agente, apriremo i componenti del computer in GLPI e vedremo questo:

Inventario dei RAID array LSI in GLPI
Il problema è che nessuno dei plugin può vedere le informazioni sui dischi fisici negli array RAID LSI. Ho visto come questo problema è stato risolto per il monitoraggio in Zabbix utilizzando uno script PowerShell. lsi-raid.ps1 Ho deciso di scrivere un analogo per trasferire le informazioni in GLPI.
I dati sui dischi nell'array possono essere ottenuti utilizzando utilità del produttore del controller, nel caso di LSI si tratta di StorCLI. Da essa è possibile ottenere i dati in formato JSON, analizzarli e inviarli all'API GLPI. Binderemo i dischi ai computer già creati da FusionInventory. Al successivo esecuzione, lo script aggiornerà le informazioni sui dischi e aggiungerà nuovi. Lo script stesso Send-RAIDtoGLPI.ps1 si trova qui su GitHub.Successivamente, vi spiegherò come utilizzarlo.

Cosa serve

  1. GLPI versione 9.5.1 (su questa è stata eseguita la prova)
  2. Plugin FusionInventory e un agente per Windows
  3. Windows 2012 R2 (e versioni superiori) come sistema host, oppure una macchina virtuale di gestione con il controller passato a essa, PowerShell versione 4 o superiore
  4. Driver MegaRAID installato
  5. Modulo per PowerShell — PSGLPI
  6. Credenziali in GLPI con profilo Admin per l'autenticazione tramite API, generati UserToken e AppToken.

Un punto importante. In GLPI per qualche motivo ci sono 2 entità diverse per il modello di disco, ma non esiste la proprietà 'tipo di supporto'. Pertanto, per registrare le proprietà HDD e SSD ho deciso di usare l'elenco a discesa 'Modelli di dischi rigidi' (front/devicemodel.php?itemtype=DeviceHardDriveModel). È necessario che questi valori siano presenti nel database GLPI, altrimenti non sarà in grado di registrare i dati sul modello del disco. Pertanto, è necessario inserire prima HDD e poi SSD in questo elenco vuoto in modo che gli ID di questi elementi nel database risultino 1 e 2. Se ci saranno altri, sostituisci in questa riga dello script Send-RAIDtoGLPI.ps1 dopo HDD e SSD, invece di 1 e 2, con i rispettivi ID:

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

Se non si vuole affrontare questa questione o si utilizza diversamente questo elenco a discesa, è possibile semplicemente rimuovere questa riga dallo script.

È necessario aggiungere anche stati per i dischi negli 'Stati degli elementi' (/front/state.php). Ho aggiunto gli stati 'MediaError' (se è stato registrato almeno un errore di accesso al disco) e 'OK', la riga nello script dove 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 queste proprietà non ti servono, puoi anche eliminare completamente questa riga.

Nello script non dimenticate di specificare le variabili con le vostre. $GlpiCreds deve contenere l'URL del server API GLPI, UserToken e AppToken.

Cosa c'è nello script

A causa del voluminoso parsing JSON e della miriade di if, lo script è difficile da leggere, quindi descriverò la sua logica qui.

Al primo avvio sull'host, lo script controlla tutti i controller e cerca dischi nel database GLPI per i numeri di serie; se non li trova, cerca il modello. Se non trova nemmeno il modello, aggiunge il modello del nuovo disco in GLPI e registra quel disco nel database.

Ad ogni nuovo passaggio, lo script tenterà di rilevare nuovi dischi, ma non è in grado di rimuovere quelli assenti, quindi dovrete farlo manualmente.

Esempio di distribuzione

Nel repository dello script c'è uno script Deploy-Send-RAIDtoGLPI.ps1, che scaricherà un archivio ZIP con i file necessari dal nostro server GLPI e li distribuirà su ogni host.

Dopo aver copiato i file, lo script installerà l'agente FusionInventory avviandolo come attività giornaliera e creerà un'attività simile per il nostro script. Dopo un'implementazione riuscita, potremo finalmente vedere i dischi nella sezione "Componenti" del computer in GLPI.

Risultato

Ora, accedendo a GLPI nel menu "Impostazioni" -> "Componenti" -> "Dischi rigidi", possiamo fare clic sui modelli di dischi e vedere la loro quantità, per capire cosa dobbiamo acquistare.

Inventario dei RAID array LSI in GLPI
Inventario dei RAID array LSI in GLPI

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster