Wykrywanie i dodawanie hostów w monitoringu Zabbix
Żyjemy w czasach, w których wymogi stawiane infrastrukturze IT stale rosną. Usługi muszą być dostarczane szybko, a aplikacje, pracować bezbłędnie. Co za tym idzie, utrzymanie infrastruktury staje się coraz bardziej skomplikowane i wymaga automatyzacji. Czyli takiego przystosowania oprogramowania w firmie, aby najbardziej powtarzalne procesy odbywały się automatycznie, bez udziału administratora. Dzisiaj przedstawimy jeden ze sposobów, jak zautomatyzować system monitoringu infrastruktury Zabbix.
Z tego artykułu dowiesz się:
Na czym polega odkrywanie niskopoziomowe
Dla tych, którzy szukają sposobów na automatyzację Zabbixa, producent przygotował bardzo przydatne funkcje odkrywania (eng. Discovery).
W Zabbixie wyróżniamy dwa sposoby odkrywania:
- Zwykłe odkrywanie – służy do skanowania sieci pod kątem dostępności danego portu lub odpowiedzi ICMP.
- Odkrywanie niskopoziomowe – służy do wykrywania obiektów na podstawie danych w formacie JSON z konkretnego hosta, które zostaną użyte do automatycznego tworzenia na nim zdefiniowanych pozycji, wyzwalaczy, wykresów, itd.
Dzisiaj skupimy się na odkrywaniu niskopoziomowym. A konkretniej, na odkrywaniu niskopoziomowym hostów w Zabbixie, czyli prototypie hosta. Odkrywanie niskopoziomowe polega na tworzeniu zdefiniowanego monitoringu na podstawie otrzymanego JSON’a z pozycji „matki” (jak np. klucz vfs.fs.discovery zwracający listę dostępnych systemów plików na serwerze). Jak już wspomniałem, na podstawie JSONa można utworzyć potrzebne nam pozycje, wyzwalacze, wykresy lub właśnie hosty.
Jak powinien wyglądać JSON dla Zabbixa
Zabbix do wykrywania niskopoziomowego wymaga konkretnego formatu danych wejściowych. Zasadniczo jest to lista słowników. Kluczami w słowniku są makra niskiego poziomu, które wyglądają jak zwykłe makro, lecz charakteryzuje się znakiem „#” przed jego nazwą np. {#NAZWA_POZYCJI}. Poniżej przykładowe dane wejściowe z pozycji, z której możemy wytworzyć monitoring:
[
{„{#FSNAME}”: „C:”, „{#FSTYPE}”: „NTFS”,”{#FSDRIVETYPE}”: „fixed”},
{„{#FSNAME}”: „F:”,”{#FSTYPE}”: „UNKNOWN”, „{#FSDRIVETYPE}”: „cdrom”}
]
Co ważne, każdy element tablicy reprezentuje dokładnie jeden odkryty obiekt.
Ale jak to działa? Do celów pokazowych wykorzystamy wiedzę z artykułu o parametrach użytkownika : https://aplitt.pl/jak-sie-tworzy-wlasny-monitoring-it/ . Na serwerze Hyper-V z zainstalowanym Zabbix Agentem tworzymy dwa parametry użytkownika.
Pierwszy uruchomi skrypt o nazwie odkrywanie.ps1, służący do wykrywania wirtualnych hostów na serwerze Hyper-V, a drugi sprawdzi stan maszyny wirtualnej na podstawie jej nazwy.
Skrypt odkrywanie.ps1
$list=New-Object 'System.Collections.Generic.List[System.Object]’
foreach ($vm in ((Get-Vm).Name)){
$list.add(@{„{#VMNAME}”=”$vm”})
}
ConvertTo-Json $list
Parametry użytkownika są zdefiniowane w pliku konfiguracyjnym Zabbix Agenta:
- UserParameter=odkrywanie, powershell.exe C:/zabbix_agent/scripts/odkrywanie.ps1
- UserParameter=stan_maszyny_wirtualnej[*], powershell.exe (Get-VM -Name $1).State
W moim środowisku istnieje host o nazwie Serwer Hyper-V, pod który podłączymy wykreowany przez nas szablon z regułą odkrywania o kluczu odkrywanie.
Jak przeprowadzić automatyzację
Poznajmy zatem jedną z metod na automatyzację monitoringu Zabbix. Krok po kroku.
Krok 1. Kreujemy Szablon, który podłączymy potem pod hosta Serwer Hyper-V.
Krok 2. Tworzymy na nowo utworzonym szablonie regułę odkrywania, dzięki której będziemy wykrywać maszyny wirtualne i dodawać do Zabbixa.
.
Krok 3. W Zabbix 5.0 dostępna jest możliwość przetestowania działania reguł wykrywania. Wykorzystajmy to.
Jak widzimy powyżej, wartość otrzymana z klucza odkrywanie to JSON z nazwami maszyn wirtualnych zainstalowanych na Serwer Hyper-V (żółte zaznaczenie), jest zgodna z wymaganym formatem.
Krok 4. Po wykreowaniu reguły wykrywania powinniśmy otrzymać poniższy widok:
Krok 5. Wytwórzmy prototyp hosta Prototyp Hosta -> Utwórz Prototyp Hosta.
- Ustawiamy podstawowe pola. W miejscu Nazwy hosta podamy makro {#VMNAME}, które przyjmie wartość zgodnie z JSONem, który uzyskaliśmy wcześniej. Należy pamiętać, że nazwa hosta powinna być unikatowa w skali instancji Zabbix, więc może być konieczne wprowadzenie jakiegoś schematu nazewnictwa, który pozwoli na uniknięcie konfliktów.
- Przechodzimy na zakładkę Grupy i ustawiamy do których grup hostów maszyny wirtualne będą przynależeć – obowiązkowo przynajmniej jedną.
- Jak widzimy powyżej możliwe jest utworzenie nowych grup na podstawie makr odkrywania. Klikamy Dodaj.
Krok 6. Podpinamy szablon pod host Serwer Hyper-V.
Krok 7. Mamy przygotowany monitoring, który automatycznie doda do Zabbixa maszyny wirtualne z serwera Hyper-V. W momencie, gdy serwery zostaną usunięte z hosta „matki”, przestaną być wykrywane przez skrypt i automatycznie zostaną usunięte po okresie zdefiniowanym w „keep lost resources period” w regule wykrywania.
Krok 8. Jak widzimy, po uruchomieniu reguły wykrywania dodały się hosty do monitorowania. Lecz brakuje im pozycji, które monitorowałyby te hosty. Wytwórzmy zatem szablon dla maszyn wirtualnych, z pozycją sprawdzającą jej stan. Klucz ten zwróci nam dane „Running” lub „Off”, co można by było zamienić na 0 lub 1 i zastosować mapowanie wartości, lecz wykorzystamy tę opcję w następnym artykule.
Krok 9. Szablon ten podpinamy pod prototyp hosta na Szablon Hyper-V.
Krok 10. I czekamy na rezultat. Po ponownym uruchomieniu Reguły wykrywania na Serwer Hyper-V maszyny wirtualne w Ostatnich Danych powinny otrzymać dane o ich stanie.
Jak widać, Zabbix potrafi automatyzować pracę Administratorów. Po wytworzeniu nowych hostów na wirtualizatorze, dodadzą się one również do monitorowania, gdzie będziemy mogli badać ich stan. Jest to jeden z wielu przykładów w jaki sposób można zoptymalizować swą pracę. Sprawdzi się również na Proxmoxie, VirtualBoxie, VMWare i wielu innych.
Podziel się treścią: