Zabbix – network discovery

Wstęp

W tym artykule poświęconym systemowi monitorowania Zabbix skupię się na mechanizmie wykrywania nowych urządzeń w sieci, i ich automatycznym dodawaniu do Zabbix.


Sieci to wysoce zmienne środowiska zawierające w sobie wiele typów urządzeń, które są monitorowane w różny sposób. W infrastrukturach monitorowanych za pomocą Zabbix często znajdują się setki lub tysiące hostów. Jedne zostają usunięte z sieci, inne zaś są dodawane. Pozostawienie administratorowi Zabbix manualnej czynności dodawania hostów jest mało efektywne i powoduje możliwość powstawania opóźnień w dodawaniu elementów, jak i zwiększa możliwość popełnienia błędów w konfiguracji.


Już od dawna Zabbix wspiera funkcję Network Discovery pozwalającą na skanowanie przez Zabbix Server lub Zabbix Proxy zadanej adresacji IP. W najnowszych wersjach została ona dodatkowo wzbogacona o nowe możliwości.
Network Discovery jest odpowiedzialne za wykrycie nowego hosta spełniającego określone kryteria. Następnie, akcja typu Discovery wykonuje zdefiniowane kroki: np. przypisuje szablon, ustawia tryb Inventory lub wysyła powiadomienie do użytkowników Zabbix.


Całość może się na tym etapie wydawać dość skomplikowana. Jednak mam nadzieję, że dzięki temu artykułowi, pokazującemu krok po kroku jak skonfigurować Network Discovery, uda Ci się zastosować ten mechanizm u siebie.

Uwaga: w tym artykule opisany zostanie Network Discovery dla wersji Zabbix Server 4.4, nie wszystkie poniższe możliwości są dostępne w wersji LTS 4.0

Cel

Artykuł ten ma charakter poradnika. Jego celem jest zaprezentowanie możliwości Zabbix Network Discovery. W tym scenariuszu skonfiguruję regułę Discovery dla danej podsieci. Umieściłem w niej cztery typy urządzeń, każde z nich będę monitorować innym szablonem.
Będą to:

  • MikroTik RotuerOS pełniący rolę kontrolera sieci bezprzewodowej CAPsMAN
  • MikroTik RotuerOS pełniący rolę punktu dostępowego CAP
  • Host z systemem Linux
  • Host z systemem MS Windows
network discovery zabbix

Określenie discovery rule

Pierwszym etapem jest określenie dla jakiej sieci (jednej lub więcej) Zabbix ma stosować wykrywanie hostów. Możliwe jest podanie zakresu adresów IP, np. 192.168.247.1-254 lub stosując notację CIDR (192.168.247.0/24). Należy przewidzieć, że hosty wykrywane są jeden po drugim (bez zrównoleglenia), a statystycznie jeden adres IP zostanie przeskanowany w 3-5 sekund. Powiększenie skanowanej sieci może wpłynąć na czas działania reguły i odpowiednio opóźni skanowanie.

network discovery zabbix

Za pomocą parametru Update Interval należy określić, jaka będzie przerwa w uruchomieniu reguły. Czas ten liczony jest od momentu zakończenia działania poprzedniej iteracji. W środowisku produkcyjnym parametr ustawia się w zależności od zmienności środowiska i wynosi on zwykle od jednej godziny do jednego dnia.

określenie update interval
określenie update interval

Następnie, należy określić jakie elementy ma sprawdzać reguła Discovery. Do dyspozycji są: SSH, LDAP, SMTP, FTP, HTTP, HTTPS, POP, NNTP, IMAP, TCP, Telnet, Zabbix agent, SNMPv1 agent, SNMPv2 agent, SNMPv3 agent, ICMP ping.


W opisywanym scenariuszu będziemy odczytywać SNMP (określony OID) dla urządzeń MikroTik, Zabbix agent dla hostów z Linux i Windows. Na podstawie zwróconych wartości podejmowane będą odpowiednie akcje, takie jak dodanie hosta, przypinanie szablonu, dodanie hosta do odpowiedniej grupy.


Wartość odczytywana za pomocą SNMP z urządzeń MikroTik to Identity routera (SNMPv2 agent “1.3.6.1.2.1.1.5.0”), i jest to nic innego jak jego nazwa. Jest ona często wykorzystywana do określenia m.in. typu, lokalizacji routera itp. W naszym przypadku, gdy w nazwie będzie słowo „APoint” dodatkowo wykrytego hosta dodam do drugiej grupy.


Możliwymi akcjami do wykonania są:

  • wysłanie notyfikacji
  • dodanie hosta
  • usunięcie hosta
  • włączenie hosta
  • wyłączenie hosta
  • dodanie do grupy
  • usunięcie z grupy
  • przypisanie szablonu do hosta
  • odpięcie szablonu od hosta
  • wykonanie własnego skryptu
network discovery - actions
network discovery - operations
network discovery - wybór operacji

Do wersji 4.0 włącznie, jedyną możliwą nazwą hosta była nazwa DNS (rozwiązanie IP przez serwer Zabbix/ proxy) lub adres IP. Od wersji Zabbix Server 4.2 pojawiła się możliwość nazywania dodawanych hostów w sposób bardzo elastyczny. Teraz nazwą może być wartość pozyskana przez regułę Network Discovery (np. wartość odczytana poprzez SNMP).

network discovery - host name

Wynik działania Network Discovery można zobaczyć w zakładce Monitoring -> Discovery

zakładka monitoring-discovery

Wykryte w ten sposób hosty zostaną poddane akcjom typu Discovery. W naszym przypadku zostaną one dodane do odpowiednich grup oraz podpięte zostaną odpowiednie szablony


MT-APoint-1 192.168.247.143
MT-APoint-2 192.168.247.144
MT-APoint-3 192.168.247.145
Zabbix Server 192.168.247.141
Windows 192.168.247.1
linux-client-1 192.168.247.142
linux-client-1 192.168.247.137

lista hostów
szczegóły hostów
hosts templates
host data
linked templates
hosts - inventory

Uwagi dodatkowe

  • Funkcjonalność Network Discovery może zostać zaklasyfikowana przez UTM/ firewall jako próba skanowania portów. Należy rozważyć dodanie odpowiednich reguł dla ruchu od Zabbix Server / Zabbix Proxy
  • Network Discovery nie pozwala na zbudowanie topologicznej mapy sieci
  • Proponuję rozważyć dodawanie hostów tylko jeśli ich Uptime jest odpowiednio duży. Wówczas unikniemy dodawania hostów dołączonych do sieci na krótki czas.
  • Wielkość liter w regułach jest istotna (case sensitive)
  • W przypadku problemów z Network Discovery pomocne jest zwiększenie poziomu logowania poleceniem:
polecenie: zabbix_server -R log_level_increase=discover, 7

Dzięki temu otrzymamy bardzo szczegółowe informacje. Więcej o logowaniu znajduje się w dokumentacji Zabbix: https://www.zabbix.com/documentation/4.4/manual/concepts/server

  • W procesie Network Discovery nie ma możliwości szyfrowania komunikacji Zabbix server – Zabbix agent
terminal

W przypadku posiadania wielu reguł Discovery, można rozważyć uruchomienie dodatkowych procesów Discover w pliku /etc/zabbix/zabbix_server.conf -> StartDiscovers=6

Piotr Wasyk