A munkám során gyakran tapasztalok obsztináló érzéseket a hálózati infrastruktúra információs hiánya miatt, ami a kezelt szerverek számának növekedésével igazi kínt jelent. Még amikor kis szervezeteknél adminisztráltam, mindig szerettem volna tudni, hogy mi hol áll, hova van bedugva, ki felel melyik eszközért vagy szolgáltatásért, és ami a legfontosabb - rögzíteni a változásokat mindezekben. Amikor új helyre érkezik az ember, és valamilyen incidenssel találkozik, rengeteg időt felemészt a keresés. Továbbá elmondom, mivel kellett szembenéznem a RuVDS-nél, és hogyan oldottam meg a címből nevezetett problémát.
Háttér
Üzleti adminisztrátorként kevés tapasztalatom volt az adatközpontokban, de fél szemmel láttam a RackTables-t. Ebben vizuálisan bemutatásra került a szerverek, szünetmentes tápegységek, kapcsolók és a közöttük lévő kapcsolatok teljes állványzata. A RuVDS-nél nem volt hasonló rendszer, csak Excel/papíralapú fájlok a szerverekről, néhány komponensükről, az állványok számáról stb. Ezzel a megközelítéssel nagyon nehéz nyomon követni a változásokat és a kis komponenseket. Pedig a legfontosabb és leggyakrabban cserélhető erőforrás a szervereknél — a merevlemezek. Nagyon fontos fenntartani a merevlemezek állapotáról és stratégiai tartalékáról a friss információt. Ha egy lemez kiesik a RAID tömbből, és nem áll rendelkezésre gyors csere, az végül végzetes következményekhez vezethet. Ezért nagyon szükségünk van egy rendszerre, amely nyomon követi a merevlemezek elhelyezkedését és állapotát, hogy megértsük, milyen modellekre van szükségünk.
Segítségül jött a GLPI, egy nyílt forráskódú termék, amelyet az IT részlegek működésének javítására és az ITIL ideáljainak elérésére hoztak létre. A GLPI-ben, az eszközök leltározása és az állványok kezelésén kívül, tudásbázis, szervizszolgálat, dokumentumkezelés és még sok más található. A GLPI számos plugint kínál, beleértve a FusionInventory-t és az OCS Inventory-t, amelyek lehetővé teszik, hogy az információkat automatikusan gyűjtsük a számítógépekről és más eszközökről ügynökök telepítésével és SNMP-n keresztül. A GLPI és a pluginek telepítéséről többet olvashat más cikkekben, legjobban - . Telepítheti a mi hostingunkon egy már kész sablonnal .
De a szervizügynök telepítése után megnyitjuk a számítógép komponenseit a GLPI-ben, és ezt fogjuk látni:

A probléma az, hogy egyik bővítmény sem képes észlelni a fizikai lemezek információit az LSI RAID tömbökben. Láttam, hogy ezt a kérdést PowerShell-scripttel hogyan oldották meg a Zabbixban. Úgy döntöttem, hogy írok egy hasonlót az adatok GLPI-be való továbbítására.
Az adatok a tömb lemezeiről a vezérlő gyártójának segédprogramjával, az LSI esetében a StorCLI-val nyerhetők ki. Ebből az adatok JSON formátumba nyerhetők, elemezhetők és átvihetők a GLPI API-ba. A lemezeket a FusionInventory által már létrehozott számítógépekhez fogjuk társítani. A script újrafuttatása esetén frissíti a lemezek adatait és hozzáad újakat. Maga a script a Send-RAIDtoGLPI.ps1 néven található. Most elmondom, hogyan lehet használni.
Amire szükség lesz
- 9.5.1-es verzió (ezen teszteltem)
- Plugin és Windows alatti ügynök,
- Windows 2012 R2 (vagy újabb) mint host operációs rendszer, vagy egy management-VM, amelyhez vezérlőt csatlakoztattak, PowerShell 4-es verzió vagy újabb.
- Telepített MegaRAID illesztőprogram
- PowerShell modul —
- GLPI adminisztrátor profilú fiók az API-n keresztüli hitelesítésekhez, generált UserToken és AppToken.
Fontos megjegyzés. A GLPI-ben valamiért két külön entitás van a lemezmodell számára, de nincs «tároló típus» tulajdonság. Ezért a HDD és SSD tulajdonságok rögzítésére az «Adathordozók modellei» legördülő listát (front/devicemodel.php?itemtype=DeviceHardDriveModel) használom. A scripthez szükség van arra, hogy ezek az értékek szerepeljenek a GLPI adatbázisban, különben nem tudja rögzíteni a lemez modelljét. Ezért először HDD-t, majd SSD-t kell felvenni ebbe az üres listába, hogy ezek az elemek ID-je a 1 és 2 legyen az adatbázisban. Ha más értékek vannak, akkor a Send-RAIDtoGLPI.ps1 script ezen sorában cserélje le a 1 és 2 értékeket a megfelelő ID-kkal.
deviceharddrivemodels_id = switch ($MediaType) { "HDD" { "1" }; "SSD" { "2" }; default { "" } }Ha nem szeretne ezzel foglalkozni, vagy ha ezt a legördülő listát másként használja, akkor egyszerűen törölheti ezt a sort a scriptből.
Ezenkívül lemezstátuszokat is hozzá kell adni az «Elem Státuszokhoz» (front/state.php). Én a «MediaError» (ha volt legalább egy hiba a lemez elérhetőségekor) és az «OK» státuszokat adtam hozzá, a scriptnek abban a sorában, ahol ennek az ID-ját adjuk meg, «2» az «OK»-ra és «1» a «MediaError»-ra.
states_id = switch ($MediaError) { 0 { "2" }; { $_ -gt 0 } { "1" } }Ezek a státuszok a kényelemért szükségesek, ha Önnek ezek a tulajdonságok nem kellenek, azt a sort teljesen eltávolíthatja.
A szkriptben ne felejtsd el megadni a változókat. A $GlpiCreds-nek tartalmaznia kell az API GLPI szerver URL-jét, a UserToken-t és az AppToken-t.
Mi van a szkriptben
A terjedelmes JSON-parsere és az if-ágak miatt a szkript nehezen olvasható, ezért itt fogom leírni a logikáját.
Első futáskor a szkript végigmegy az összes vezérlőn és megkeresi a GLPI adatbázisban a lemezeket a sorozatszámok alapján; ha nem találja, a modellt keresi. Ha a modellt sem találja, új lemezmodellt ad hozzá a GLPI-hez, és rögzíti ezt a lemezt az adatbázisban.
Minden újabb futáskor a szkript próbálja felfedezni az új lemezeket, de az eltűnteket nem tudja eltávolítani, így ezt kézzel kell megtenni.
Példa telepítésre
A szkript repositóriumában található a Deploy-Send-RAIDtoGLPI.ps1 szkript, amely letölti a szükséges fájlok ZIP-archívumát a GLPI szerverünkről, és telepíti azokat minden hoszton.
A fájlok másolása után a szkript telepíti a FusionInventory ügynököt úgy, hogy napi feladatként indítja, és hasonló feladatot hoz létre a szkriptünk számára is. A sikeres bevezetés után végre látni fogjuk a lemezeket a GLPI számítógép "Komponensek" részében.
Eredmény
Most, belépve a GLPI-be a "Beállítások" -> "Komponensek" -> "Merevlemezek" menübe, kattintgathatunk a lemezmodellekre, és megnézhetjük a számukat, hogy megértsük, mit kell beszereznünk.

Forrás: habr.com
