Inwentaryzacja macierzy RAID LSI w GLPI

Inwentaryzacja macierzy RAID LSI w GLPI
W mojej pracy często zmagam się z obsesjami na punkcie braku informacji o infrastrukturze, a przy zwiększającym się parku serwerów staje się to prawdziwą męką. Nawet gdy administrowałem w małych organizacjach, zawsze chciałem wiedzieć, co gdzie stoi, gdzie jest podłączone, kto z ludzi odpowiada za jaką część sprzętu lub usługę, i co najważniejsze — rejestrować zmiany w tym wszystkim. Kiedy przyjeżdżasz w nowe miejsce i stajesz w obliczu jakiegoś incydentu, mnóstwo czasu spędza się na szukaniu tych informacji. Poniżej opowiem, z czym musiałem się zmierzyć w RuVDS oraz jak rozwiązałem problem określony w tytule.

Tło

Jako administrator w przedsiębiorstwie, miałem niewielkie doświadczenie w pracy w data center, ale kątem oka zauważyłem RackTables. Przedstawiała ona w przejrzysty sposób szafę z wszystkimi serwerami, UPS-ami, switchami i wszystkimi połączeniami między nimi. W RuVDS nie było podobnego systemu, a tylko pliki Excel/papierowe z informacjami o serwerach, ich niektórych komponentach, numerach szaf i tym podobne. Przy takim podejściu bardzo trudno śledzić zmiany i małe komponenty. Najważniejszym i najczęściej wymienianym materiałem eksploatacyjnym w serwerach są dyski. Bardzo ważne jest, aby mieć aktualne informacje o stanie dysków i ich strategicznych zapasach. Jeśli dysk wypadnie z macierzy RAID i nie będzie jego szybkiej wymiany, może to doprowadzić do fatalnych skutków. Dlatego potrzebujemy systemu, który śledziłby lokalizację dysków i ich stan, aby zrozumieć, czego może nam brakować i jakie modele trzeba kupić.

Na pomoc przyszedł GLPI, produkt o otwartym kodzie źródłowym, stworzony w celu poprawy pracy działów IT i doprowadzenia ich do ideals ITIL. Oprócz inwentaryzacji sprzętu i zarządzania szafami, zawiera bazę wiedzy, helpdesk, zarządzanie dokumentami i wiele więcej. GLPI ma wiele wtyczek, w tym FusionInventory i OCS Inventory, które pozwalają automatycznie zbierać informacje o komputerach i innych urządzeniach poprzez instalację agentów i SNMP. Szczegółowe informacje na temat instalacji GLPI i wtyczek możesz znaleźć w innych artykułach, najlepiej — oficjalnej dokumentacji. Możemy go zainstalować na naszym hostingu na gotowym szablonie LAMP.

Jednak po wdrożeniu agenta otworzymy komponenty komputera w GLPI i zobaczymy to:

Inwentaryzacja macierzy RAID LSI w GLPI
Problematyk jest taki, że żaden z wtyczek nie może zobaczyć informacji o fizycznych dyskach w macierzach RAID LSI. Zobaczywszy, jak ten problem został rozwiązany do monitorowania w Zabbixie za pomocą skryptu PowerShell, lsi-raid.ps1 postanowiłem napisać analogiczny, aby przesłać informacje do GLPI.
Dane o dyskach w macierzy można uzyskać za pomocą narzędzi od producenta kontrolera, w przypadku LSI jest to StorCLI. Z niej można uzyskać dane w formacie JSON, przeanalizować je i przesłać do API GLPI. Dyski będziemy przypisywać do komputerów, które już zostały utworzone przez FusionInventory. Przy ponownym wykonaniu skryptu zaktualizuje on dane dotyczące dysków i doda nowe. Sam skrypt Send-RAIDtoGLPI.ps1 znajduje się tutaj na GitHubie. Następnie opiszę, jak z niego skorzystać.

Co będzie potrzebne

  1. GLPI w wersji 9.5.1 (na tej testowano)
  2. Wtyczka FusionInventory i agent na Windows
  3. Windows 2012 R2 (lub wyższy) jako system gospodarza, albo VM zarządzająca z przekazanym do niej kontrolerem, PowerShell w wersji 4 lub wyższej
  4. Zainstalowany sterownik MegaRAID
  5. Moduł dla PowerShell — PSGLPI
  6. Konto w GLPI z profilem Admin do autoryzacji przez API, wygenerowane UserToken i AppToken

Ważny punkt. W GLPI są jakoś dwie różne encje dla modelu dysku, ale brakuje właściwości „typ nośnika”. Dlatego do zapisania właściwości HDD i SSD postanowiłem użyć rozwijanego menu „Modele dysków twardych” (front/devicemodel.php?itemtype=DeviceHardDriveModel). Dla skryptu konieczne jest posiadanie tych wartości w bazie GLPI, inaczej nie będzie mógł zapisać danych o modelu dysku. Dlatego należy dodać najpierw HDD, a potem SSD, aby ID tych elementów w bazie wyniosły 1 i 2. Jeśli będą inne, to zamień w tej linijce skryptu Send-RAIDtoGLPI.ps1 po HDD i SSD odpowiednie im ID zamiast 1 i 2:

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

Jeśli nie chcesz się tym przejmować lub używasz tego rozwijanego menu w inny sposób, możesz po prostu usunąć tę linijkę ze skryptu.

Należy również dodać statusy dla dysków w „Statusach elementów” (front/state.php). Dodałem statusy „MediaError” (gdy wystąpił chociaż jeden błąd dostępu do dysku) i „OK”, linia w skrypcie, gdzie przekazywane są ich ID, „2” dla „OK” i „1” dla „MediaError”:

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

Te statusy są potrzebne dla wygody, jeśli nie potrzebujesz tych właściwości, możesz również całkowicie usunąć tę linijkę.

W samym skrypcie nie zapomnij podać zmiennych na swoje. $GlpiCreds powinien zawierać URL do serwera API GLPI, UserToken i AppToken.

Co w skrypcie

Z powodu ciężkiego parsowania JSON oraz wielu instrukcji if skrypt jest trudny do odczytania, dlatego opiszę jego logikę tutaj.

Podczas pierwszego uruchomienia na hoście skrypt przeszukuje wszystkich kontrolerów i szuka dysków w bazie GLPI według numerów seryjnych, a jeśli ich nie znajdzie, szuka modelu. Jeśli też nie znajdzie modelu, dodaje model nowego dysku do GLPI i zapisuje ten dysk w bazie.

Przy każdej nowej próbie skrypt będzie starał się wykryć nowe dyski, ale nie potrafi usuwać brakujących, więc będziesz musiał zrobić to ręcznie.

Przykład wdrożenia

W repozytorium skryptu znajduje się skrypt Deploy-Send-RAIDtoGLPI.ps1, który pobierze archiwum ZIP z niezbędnymi plikami z naszego serwera GLPI i wdroży je na każdym hoście.

Po skopiowaniu plików skrypt zainstaluje agenta FusionInventory, uruchamiając go jako codzienną zadanie, i stworzy podobne zadanie dla naszego skryptu. Po pomyślnym wdrożeniu w końcu będziemy mogli zobaczyć dyski w zakładce „Komponenty” komputera w GLPI.

Wynik

Teraz, wchodząc do GLPI w menu „Ustawienia” -> „Komponenty” -> „Dyski twarde”, możemy klikać modele dysków i sprawdzać ich ilość, aby zrozumieć, co musimy zakupić.

Inwentaryzacja macierzy RAID LSI w GLPI
Inwentaryzacja macierzy RAID LSI w GLPI

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster