RAID-array Inventarisation LSI i GLPI

RAID-array Inventarisation LSI i GLPI
I mit arbejde oplever jeg ofte en besættelse over manglen på information om infrastrukturen, og når antallet af servere, jeg skal administrere, stiger, bliver det en sand torture. Selvom jeg tidligere har arbejdet i små organisationer, har jeg altid ønsket at vide, hvad der står hvor, hvor tingene er tilsluttet, hvem der er ansvarlig for hvilken hardware eller service, og vigtigst af alt – at holde styr på ændringerne. Når man ankommer til et nyt sted og støder på en hændelse, går der meget tid med at finde disse oplysninger. Her vil jeg fortælle om, hvad jeg har oplevet i RuVDS, og hvordan jeg løste det problem, der er nævnt i overskriften.

Background

Som en enterprise-administrator havde jeg begrænset erfaring med at arbejde i datacentre, men jeg fik et glimt af RackTables. Den viste tydeligt en rack med alle servere, UPS'er, switches og alle forbindelser imellem dem. I RuVDS var der ikke et lignende system, kun Excel/papirfiler med information om serverne, nogle af deres komponenter, racknumre osv. Med denne tilgang er det meget svært at holde styr på ændringer og små komponenter. Og det vigtigste og mest skiftende forbrugsmateriale til servere er diske. Det er meget vigtigt at have opdateret information om diskene og deres strategiske reserve. Hvis en disk svigter i RAID-arrayet og ikke hurtigt kan blive erstattet, kan det i sidste ende føre til fatale konsekvenser. Derfor har vi meget brug for et system, der overvåger diskens placering og tilstand, så vi kan forstå, hvad vi måtte mangle, og hvilke specifikke modeller vi skal købe.

GLPI kom til hjælp, et open source-produkt designet til at forbedre arbejdsgangen i IT-afdelinger og bringe dem i tråd med ITIL-standarder. Udover udstyrs-inventar og rack management, har det også en vidensbase, service desk, dokumenthåndtering og meget mere. GLPI har mange plugins, herunder FusionInventory og OCS Inventory, der gør det muligt automatisk at indsamle information om computere og andre enheder ved at installere agenter og via SNMP. Du kan læse mere om installationen af GLPI og plugins i andre artikler, bedst af alt — den officielle dokumentation. Det kan installeres hos os på hosting på en allerede eksisterende skabelon LAMP.

Men efter deployment af agenten åbner vi computerkomponenterne i GLPI og ser dette:

RAID-array Inventarisation LSI i GLPI
Problemet er, at ingen af plugins kan se information om fysiske diske i LSI RAID-arrays. Nu da vi har set, hvordan dette spørgsmål er løst til overvågning i Zabbix ved hjælp af et PowerShell-script, lsi-raid.ps1 har jeg besluttet at skrive et tilsvarende for at overføre information til GLPI.
Data om diskene i arrayet kan hentes ved hjælp af værktøjer fra controller-producenten, i tilfælde af LSI er det StorCLI. Fra den kan vi få data i JSON-format, analysere dem og sende dem til API'et i GLPI. Vi vil knytte diskene til de computere, som FusionInventory allerede har oprettet. Ved at køre scriptet igen vil det opdatere dataene om diskene og tilføje nye. Selve scriptet Send-RAIDtoGLPI.ps1 findes her på GitHub. Næste vil jeg forklare, hvordan man bruger det.

Hvad der er nødvendigt

  1. GLPI version 9.5.1 (denne blev testet)
  2. Plugin FusionInventory og agent til Windows
  3. Windows 2012 R2 (eller højere) som værtssystem, eller management-VM med controlleren tilsluttet, PowerShell version 4 eller højere
  4. Installeret MegaRAID-driver
  5. Modul til PowerShell — PSGLPI
  6. Oversigt i GLPI med Admin-profil til godkendelse via API, genererede UserToken og AppToken

Et vigtigt punkt. I GLPI findes der af en eller anden grund to forskellige enheder til diskmodellen, men der er ingen egenskab "lagertypen". Derfor har jeg besluttet at bruge en dropdown-liste til "Modeller af hårde diske" (front/devicemodel.php?itemtype=DeviceHardDriveModel) til at registrere HDD og SSD. For scriptet er det nødvendigt, at disse værdier er tilgængelige i GLPI-databasen; ellers kan det ikke registrere oplysninger om diskmodellen. Derfor skal vi først tilføje HDD, derefter SSD, så ID'er for disse elementer i databasen bliver 1 og 2. Hvis der er andre, så erstat i denne linje i scriptet Send-RAIDtoGLPI.ps1 efter HDD og SSD med deres tilsvarende ID'er:

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

Hvis du ikke vil bøvle med det, eller hvis du bruger denne dropdown-liste anderledes, kan du bare slette denne linje fra scriptet.

Det er også nødvendigt at tilføje statusser for diskene i "Element-statusser" (front/state.php). Jeg tilføjede statusserne "MediaError" (hvis der har været en fejl ved adgang til disken) og "OK"; linjen i scriptet, hvor deres ID'er sendes, "2" for "OK" og "1" for "MediaError":

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

Disse statusser er nødvendige for nemheds skyld; hvis du ikke har brug for disse egenskaber, kan du også slette denne linje helt.

I skriptet skal du ikke glemme at angive variablerne til dine. $GlpiCreds skal indeholde URL til GLPI API-serveren, UserToken og AppToken.

Hvad der er i skriptet

På grund af omfattende JSON-parsing og et væld af if-er, er skriptet svært at læse, så jeg vil beskrive dets logik her.

Ved første kørsel på værtserveren går skriptet igennem alle controllere og leder efter diske i GLPI-databasen baseret på serienumre; hvis det ikke finder noget, søger det efter modellen. Hvis modellen heller ikke findes, tilføjer det modellen af den nye disk til GLPI og registrerer denne disk i databasen.

Ved hver ny kørsel vil skriptet forsøge at opdage nye diske, men det kan ikke fjerne de, der ikke længere er til stede, så det må gøres manuelt.

Eksempel på implementering

I script-repositoriet findes skriptet Deploy-Send-RAIDtoGLPI.ps1, som vil downloade en ZIP-fil med nødvendige filer fra vores GLPI-server og implementere dem på hver vært.

Efter kopiering af filer vil skriptet installere FusionInventory-agenten med daglig opstart som en opgave og oprette en tilsvarende opgave for vores skript. Efter en vellykket implementering vil vi endelig kunne se diskene i afsnittet 'Komponenter' på computeren i GLPI.

Resultat

Nu, ved at gå ind i GLPI i menuen 'Indstillinger' -> 'Komponenter' -> 'Hårde diske', kan vi klikke på diskmodellerne og se deres antal for at forstå, hvad vi skal købe.

RAID-array Inventarisation LSI i GLPI
RAID-array Inventarisation LSI i GLPI

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster