Inventarierea array-urilor RAID LSI în GLPI

Inventarierea array-urilor RAID LSI în GLPI
În activitatea mea, adesea mă simt obsedat de lipsa informațiilor despre infrastructură, iar pe măsură ce numărul serverelor administrate crește, aceasta devine o adevărată tortură. Chiar și atunci când administram în organizații mici, mă interesa mereu să știu ce se află unde, ce este conectat, cine răspunde de ce echipament sau serviciu și, cel mai important, să înregistrez modificările din toate acestea. Când ajungi într-un nou loc și te confrunți cu un incident, o mulțime de timp este pierdută căutând aceste informații. În continuare, voi povesti despre ce am întâlnit la RuVDS și cum am rezolvat problema menționată în titlu.

Povestea

Fiind un administrator de tip enterprise, aveam puțină experiență în data center, dar am zărit RackTables. Acesta prezenta vizual rack-ul cu toate serverele, UPS-urile, switch-urile și toate conexiunile dintre ele. La RuVDS nu exista un sistem asemănător, ci doar fișiere Excel/papier cu informații despre servere, unele dintre componente, numerele rack-urilor etc. Cu un astfel de sistem, este foarte greu să urmărești modificările și micile componente. Iar materialul de consum cel mai important și cel mai des schimbat la servere sunt hard disk-urile. Este crucial să menținem informații actualizate despre starea hard disk-urilor și rezervele strategice ale acestora. Dacă un hard disk iese din RAID și nu are o înlocuire rapidă, aceasta poate duce în cele din urmă la consecințe fatale. De aceea, avem nevoie de un sistem care să urmărească locația hard disk-urilor și starea lor, pentru a înțelege ce ne-ar putea lipsi și ce modele exact trebuie să achiziționăm.

GLPI a venit în ajutor, un produs cu sursă deschisă, creat pentru a îmbunătăți activitatea departamentelor IT și a le aduce la idealurile ITIL. În el, pe lângă inventarierea echipamentelor și managementul rack-urilor, există o bază de cunoștințe, un service desk, gestionarea documentelor și multe altele. GLPI dispune de numeroase pluginuri, inclusiv FusionInventory și OCS Inventory, care permit colectarea automată a informațiilor despre computere și alte dispozitive prin instalarea agenților și SNMP. Detalii despre instalarea GLPI și a plugin-urilor puteți citi în alte articole, cel mai bine — documentația oficială. Îl poți instala pe hosting-ul nostru pe un șablon deja gata LAMP.

Dar, după implementarea agentului, vom deschide componentele computerului în GLPI și le vom vedea:

Inventarierea array-urilor RAID LSI în GLPI
Problema este că niciunul dintre pluginuri nu poate vedea informațiile despre discurile fizice din array-urile RAID LSI. Am observat cum această problemă a fost rezolvată pentru monitorizare în Zabbix folosind un script PowerShell. lsi-raid.ps1 Am decis să scriu un script similar pentru a transmite informațiile în GLPI.
Informațiile despre discurile din array pot fi obținute folosind utilitarele de la producătorul controlerului, în cazul LSI, acesta fiind StorCLI. Din aceasta se pot obține date în format JSON, care pot fi parse și trimise prin API-ul GLPI. Discurile vor fi legate de computerele create deja de FusionInventory. La o execuție ulterioară, scriptul va actualiza datele despre discuri și va adăuga altele noi. Scriptul Send-RAIDtoGLPI.ps1 se află aici pe GitHub. În continuare, vă voi spune cum să-l folosiți.

Ce va fi necesar

  1. GLPI versiunea 9.5.1 (aceasta a fost testată)
  2. Plugin FusionInventory și agent pentru Windows
  3. Windows 2012 R2 (și versiuni superioare) ca sistem gazdă, sau management-VM cu controlerul conectat, PowerShell versiunea 4 sau mai recentă
  4. Driverul MegaRAID instalat
  5. Modul pentru PowerShell — PSGLPI
  6. Un cont în GLPI cu profil Admin pentru autorizare prin API, UserToken și AppToken generate

Un aspect important. În GLPI există dintr-un motiv două entități diferite pentru modelul de disk, dar nu există proprietatea "tipul suportului". Prin urmare, pentru a înregistra proprietățile HDD și SSD, am decis să folosesc lista derulantă "Modele de discuri dure" (front/devicemodel.php?itemtype=DeviceHardDriveModel). Este necesar ca aceste valori să existe în baza GLPI, altfel scriptul nu va putea înscrie datele despre modelul de disk. Așadar, trebuie să adăugați întâi HDD, apoi SSD, pentru ca ID-urile acestor elemente în baza de date să fie 1 și 2. Dacă sunt altele, atunci înlocuiți în această linie a scriptului Send-RAIDtoGLPI.ps1 după HDD și SSD, ID-urile corespunzătoare 1 și 2:

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

Dacă nu doriți să vă ocupați de asta sau utilizați această listă derulantă în alt mod, puteți pur și simplu să eliminați această linie din script.

De asemenea, trebuie să adăugați statuturi pentru discuri în "Statuturile elementelor" (front/state.php). Am adăugat statușile "MediaError" (a existat cel puțin o eroare de accesare a discului) și "OK", linia din script unde sunt transmise ID-urile lor, "2" pentru "OK" și "1" pentru "MediaError":

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

Aceste statuturi sunt necesare pentru comoditate, dacă aceste proprietăți nu sunt necesare, puteți, de asemenea, să eliminați întreaga linie.

În scriptul propriu-zis, nu uitați să specificați variabilele voastre. $GlpiCreds trebuie să conțină URL-ul serverului API GLPI, UserToken și AppToken.

Ce este în script

Din cauza parsării JSON voluminoase și a nenumăratelor condiții, scriptul este greu de citit, așa că voi descrie logica sa aici.

La prima rulare pe gazdă, scriptul va parcurge toate controlerele și va căuta discurile în baza GLPI dupa numerele de serie; dacă nu le găsește, caută modelul. Dacă nu găsește nici modelul, adaugă modelul noului disc în GLPI și îl înregistrează în bază.

La fiecare nouă rulare, scriptul va încerca să descopere discuri noi, dar nu știe să elimine lipsurile, așa că va trebui să faceți acest lucru manual.

Exemplu de implementare

În repository-ul scriptului, există un script Deploy-Send-RAIDtoGLPI.ps1, care va descărca un arhiv ZIP cu fișierele necesare de pe serverul nostru GLPI și le va desfășura pe fiecare gazdă.

După copierea fișierelor, scriptul va instala agentul FusionInventory cu execuția sub formă de sarcină zilnică și va crea o sarcină similară pentru scriptul nostru. După implementarea cu succes, în sfârșit vom putea vedea discurile în secțiunea „Componente” a computerului din GLPI.

Rezultatul

Acum, intrând în GLPI în meniul „Setări” -> „Componente” -> „Discuri dure”, putem da clic pe modelele discurilor și să vedem câte avem, pentru a înțelege ce trebuie să achiziționăm.

Inventarierea array-urilor RAID LSI în GLPI
Inventarierea array-urilor RAID LSI în GLPI

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster