Inventario dei RAID array LSI in GLPI

Inventario dei RAID array LSI in GLPI
Nel mio lavoro, mi capita spesso di avere ossessioni riguardo alla mancanza di informazioni sull'infrastruttura, e quando si ampliano il parco server gestito, questo diventa una vera e propria tortura. Anche quando ho amministrato in piccole organizzazioni, ho sempre desiderato sapere cosa c'era dove, dove erano collegate le cose, chi era responsabile di quale hardware o servizio, e soprattutto, registrare le modifiche a tutto ciò. Quando arrivi in un nuovo posto e ti trovi di fronte a un incidente, gran parte del tempo viene spesa proprio nella ricerca di queste informazioni. In seguito, racconterò cosa mi è successo in RuVDS e come ho risolto il problema menzionato nel titolo.

Contesto

Come amministratore enterprise, avevo poca esperienza in un datacenter, ma ho intravisto RackTables. Esso offre una visualizzazione chiara del rack con tutti i server, UPS, switch e tutte le connessioni tra di loro. In RuVDS non c'era un sistema simile, solo file Excel/o documenti cartacei con informazioni sui server, alcuni dei loro componenti, numeri dei rack ecc. Con questo approccio è molto difficile tenere traccia delle modifiche e dei piccoli componenti. Eppure il materiale di consumo principale e più frequentemente sostituito nei server sono i dischi. È molto importante mantenere informazioni aggiornate sullo stato dei dischi e sul loro stock strategico. Se un disco si guasta in un array RAID e non c'è una sostituzione rapida, questo può portare a conseguenze fatali. Pertanto, abbiamo veramente bisogno di un sistema che tenga traccia della posizione e dello stato dei dischi, per capire cosa possa mancare e quali modelli dobbiamo acquistare.

È intervenuto GLPI, un prodotto open source progettato per migliorare le operazioni dei reparti IT e raggiungere gli standard ITIL. Oltre alla gestione dell'inventario hardware e delle postazioni, offre una base di conoscenze, un servizio di assistenza, gestione documentale e molto altro. GLPI dispone di numerosi plugin, tra cui FusionInventory e OCS Inventory, che consentono di raccogliere automaticamente informazioni sui computer e altri dispositivi tramite l'installazione di agenti e SNMP. Puoi leggere di più sull'installazione di GLPI e dei plugin in altri articoli, meglio ancora — documentazione ufficiale. Puoi installarlo su di noi su un template già pronto LAMP.

Tuttavia, dopo il deploy 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ò visualizzare le informazioni sui dischi fisici nei 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.
Le informazioni sui dischi dell'array possono essere ottenute utilizzando le utility fornite dal produttore del controller; per LSI, si tratta di StorCLI. Da questa utility è possibile ottenere dati in formato JSON, elaborarli e inviarli all'API di GLPI. I dischi verranno associati ai computer già creati da FusionInventory. Quando lo script verrà eseguito nuovamente, aggiornerà le informazioni sui dischi e aggiungerà i nuovi. Lo script stesso Send-RAIDtoGLPI.ps1 si trova qui su GitHub. Di seguito ti spiegherò come utilizzarlo.

Cosa serve

  1. GLPI versione 9.5.1 (testata su questa versione)
  2. Plugin FusionInventory e un agente per Windows
  3. Windows 2012 R2 (o superiore) come sistema host, oppure una macchina virtuale di gestione con il controller connesso, 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, UserToken e AppToken generati

Un punto importante. In GLPI ci sono due entità diverse per il modello del disco, ma non esiste una proprietà "tipo di supporto". Pertanto, per registrare le proprietà HDD e SSD, ho deciso di utilizzare l'elenco a discesa "Modelli di dischi rigidi" (front/devicemodel.php?itemtype=DeviceHardDriveModel). Lo script richiede la presenza di questi valori nel database GLPI, altrimenti non potrà registrare i dati sul modello del disco. Quindi, dovresti aggiungere prima l'HDD e poi l'SSD a questo elenco vuoto, in modo che gli ID di questi elementi nel database siano 1 e 2. Se ci sono altri, sostituisci nella riga dello script Send-RAIDtoGLPI.ps1 dopo HDD e SSD gli ID corrispondenti a 1 e 2:

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

Se non vuoi preoccuparti di questo o se utilizzi diversamente questo elenco a discesa, puoi semplicemente rimuovere questa riga dallo script.

È anche necessario aggiungere stati per i dischi in "Stati degli elementi" (/front/state.php). Ho aggiunto gli stati "MediaError" (c'è stata almeno un'errore nell'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 utili per comodità; se non hai bisogno di queste proprietà, puoi anche rimuovere completamente questa riga.

Nel tuo script, non dimenticare di specificare le variabili corrette. $GlpiCreds deve contenere l'URL del server API GLPI, UserToken e AppToken.

Cosa c'è nello script

A causa della complessità del parsing JSON e della lunghezza degli if, lo script è difficile da leggere, quindi descriverò qui la sua logica.

Al primo avvio sull'host, lo script esamina tutti i controller e cerca i dischi nel database GLPI tramite i numeri di serie; se non li trova, cerca il modello. Se non trova neanche il modello, aggiunge un nuovo modello di disco in GLPI e registra questo disco nel database.

Ad ogni nuova esecuzione, lo script cercherà di rilevare nuovi dischi, ma non è in grado di rimuovere quelli mancanti, quindi dovrai farlo manualmente.

Esempio di distribuzione

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

Dopo aver copiato i file, lo script installerà l'agente FusionInventory avviato come attività giornaliera e creerà un'attività simile per il nostro script. Una volta completata con successo l'implementazione, saremo finalmente in grado di vedere i dischi nella sezione 'Componenti' del computer in GLPI.

Risultato

Ora, accedendo a GLPI nel menu 'Impostazioni' -> 'Componenti' -> 'Dischi rigidi', possiamo cliccare sui modelli di dischi e vedere il loro numero 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