Monitorowanie rozproszone z użyciem proxy

Omówienie

Proxy Zabbix można używać do tworzenia skutecznej i niezawodnej rozproszonej konfiguracji monitorowania.

Proxy są wdrażane lokalnie, aby zbierać dane o wydajności i dostępności. Następnie dane są raportowane do scentralizowanego serwera.

Proxy Zabbix można używać do:

  • Monitorowania zdalnych lokalizacji
  • Monitorowania lokalizacji z zawodną łącznością
  • Odciążenia serwera Zabbix podczas monitorowania tysięcy urządzeń

Proxy wymaga tylko jednego połączenia TCP z serwerem Zabbix. Dzięki temu łatwiej obejść zaporę sieciową, ponieważ trzeba skonfigurować tylko jedną regułę zapory.

Proxy Zabbix musi korzystać z oddzielnej bazy danych. Wskazanie bazy danych serwera Zabbix spowoduje uszkodzenie konfiguracji.

Wszystkie dane zbierane przez proxy są przechowywane lokalnie przed przesłaniem ich do serwera. Dzięki temu żadne dane nie zostaną utracone z powodu tymczasowych problemów z komunikacją z serwerem. Parametry ProxyLocalBuffer i ProxyOfflineBuffer w pliku konfiguracji proxy kontrolują, jak długo dane są przechowywane lokalnie.

Może się zdarzyć, że proxy, które otrzymuje najnowsze zmiany konfiguracji bezpośrednio z bazy danych serwera Zabbix, ma bardziej aktualną konfigurację niż serwer Zabbix, którego konfiguracja może nie być aktualizowana tak szybko z powodu wartości CacheUpdateFrequency. W rezultacie proxy może rozpocząć zbieranie danych i wysyłać je do serwera Zabbix, który te dane ignoruje.

Proxy Zabbix jest kolektorem danych. Nie oblicza wyzwalaczy, nie przetwarza zdarzeń ani nie wysyła alertów. Aby zapoznać się z przeglądem funkcjonalności proxy, przejrzyj poniższą tabelę:

Function Supported by proxy
Items
Zabbix agent checks Yes
Zabbix agent checks (active) Yes 1
Simple checks Yes
Trapper items Yes
SNMP checks Yes
SNMP traps Yes
IPMI checks Yes
JMX checks Yes
Log file monitoring Yes
Internal checks Yes
SSH checks Yes
Telnet checks Yes
External checks Yes
Dependent items Yes
Script items Yes
Browser items Yes
Built-in web monitoring Yes
Item value preprocessing Yes
Network discovery Yes
Active agent autoregistration Yes
Low-level discovery Yes 2
Remote commands Yes
Calculating triggers No
Processing events No
Event correlation No
Sending alerts No

[1] Aby upewnić się, że agent pyta proxy (a nie serwer) o aktywne sprawdzenia, proxy musi być wymieniony w parametrze ServerActive w pliku konfiguracji agenta.
[2] W przypadku LLD proxy Zabbix tylko zbiera i wstępnie przetwarza dane, a następnie wysyła je do serwera Zabbix do dalszego przetwarzania.

Funkcje proxy

Przy podejmowaniu decyzji o użyciu lub nieużywaniu proxy należy wziąć pod uwagę kilka kwestii.

Proxy
Lekki Tak
GUI Nie
Działa niezależnie Tak
Łatwa konserwacja Tak
Automatyczne tworzenie bazy danych Tak1
Lokalne administrowanie Nie
Gotowy do pracy na sprzęcie wbudowanym Tak
Jednokierunkowe połączenia TCP Tak
Scentralizowana konfiguracja Tak
Generuje powiadomienia Nie

1 Funkcja automatycznego tworzenia bazy danych działa tylko z SQLite. Inne obsługiwane bazy danych wymagają ręcznej konfiguracji.

Proxy Zabbixa nie uwzględnia okresów konserwacji; szczegóły można znaleźć w sekcji Obliczanie kolejek podczas konserwacji.

Ochrona przed przeciążeniem

Jeśli serwer Zabbix był przez pewien czas niedostępny, a proxy zebrały dużo danych, to po uruchomieniu serwera może dojść do jego przeciążenia (użycie pamięci podręcznej historii utrzymuje się przez pewien czas na poziomie 95-100%). Takie przeciążenie może spowodować spadek wydajności, w wyniku czego kontrole są przetwarzane wolniej, niż powinny. W celu uniknięcia problemów wynikających z przeciążenia pamięci podręcznej historii zaimplementowano mechanizm ochrony przed takim scenariuszem.

Gdy pamięć podręczna historii serwera Zabbix jest pełna, dostęp do zapisu w pamięci podręcznej historii jest ograniczany, co wstrzymuje procesy zbierania danych przez serwer. Najczęstszym przypadkiem przeciążenia pamięci podręcznej historii jest sytuacja po przestoju serwera, gdy proxy przesyłają zebrane dane. Aby temu zapobiec, dodano ograniczanie przepustowości proxy (obecnie nie można go wyłączyć).

Gdy użycie pamięci podręcznej historii osiągnie 80%, serwer Zabbix przechodzi w tryb ograniczania przepustowości. W tym trybie serwer przyjmuje dane od proxy tylko wtedy, gdy użycie pamięci podręcznej historii spadnie poniżej 60%, rotując akceptowane proxy. Gdy użycie pamięci podręcznej historii spadnie poniżej 20%, serwer wraca do trybu normalnego.

Dodatkowo w trybie normalnym serwer Zabbix ogranicza pojedyncze proxy wysyłające bardzo duże pakiety (10 000+ rekordów), jeśli użycie pamięci podręcznej historii przekracza 60%. Ta decyzja jest podejmowana w momencie, gdy serwer ocenia przesyłanie danych przez proxy, dlatego nie zawsze może być od razu widoczna na wykresach użycia pamięci podręcznej historii (wewnętrzna pozycja zabbix[wcache,history,pused] i jej interwał aktualizacji mogą nie uwzględniać krótkich skoków).

Ten tryb ograniczania przepustowości będzie działał do momentu, gdy użycie pamięci podręcznej ponownie osiągnie 80%, spadnie do 20% albo lista ograniczania przepustowości będzie pusta. W pierwszym przypadku serwer ponownie przestanie przyjmować dane od proxy. W dwóch pozostałych przypadkach serwer zacznie działać normalnie, przyjmując dane od wszystkich proxy.

Powyższe informacje można przedstawić w następującej tabeli:

Użycie pamięci podręcznej zapisu
historii
Tryb serwera Zabbix Działanie serwera Zabbix
Osiąga 80% Oczekiwanie Przestaje przyjmować dane od proxy, ale utrzymuje listę ograniczania przepustowości (priorytetową listę proxy, z którymi należy skontaktować się później).
Osiąga 60% Normalny, ale przygotowany do ograniczenia Może odrzucać bardzo duże przesyłania z proxy (ponad 10 tys. rekordów) podczas podejmowania decyzji o przyjęciu danych; nadal przyjmuje inne dane od proxy.
Spada do 20% Normalny Usuwa listę ograniczania przepustowości i zaczyna normalnie przyjmować dane od proxy.

Do skorelowania tego zachowania serwera Zabbix z metryką można użyć wewnętrznej pozycji zabbix[wcache,history,pused].

Konfiguracja

Po zainstalowaniu i skonfigurowaniu proxy nadszedł czas, aby skonfigurować je w frontendzie Zabbixa.

Dodawanie proxy

Aby skonfigurować proxy w frontend Zabbix:

  • Przejdź do: Administration > Proxies
  • Kliknij Create proxy

Parameter Description
Proxy name Wprowadź nazwę proxy. Musi być taka sama jak nazwa w parametrze Hostname w pliku konfiguracyjnym proxy.
Proxy group Wybierz jedną grupę proxy dla równoważenia obciążenia/wysokiej dostępności proxy.
Address for active agents Wprowadź adres, z którym muszą łączyć się monitorowane aktywne agent lub nadawcy. Obsługiwane tylko dla agentów Zabbix 7.0 lub nowszych.
Ten adres jest używany do łączenia się zarówno z aktywnymi, jak i pasywnymi proxy. To pole jest dostępne tylko wtedy, gdy w polu Proxy group wybrano grupę proxy.
Address Adres IP/nazwa DNS, z którym należy się połączyć.
Port Numer portu TCP (domyślnie 10051), z którym należy się połączyć. Obsługiwane są makra użytkownika.
Proxy mode Wybierz tryb proxy.
Active - proxy połączy się z serwer Zabbix i zażąda danych konfiguracyjnych
Passive - serwer Zabbix łączy się z proxy
Uwaga: bez szyfrowanej komunikacji dane konfiguracyjne proxy (wrażliwe) mogą stać się dostępne dla stron mających dostęp do portu trapper serwer Zabbix podczas korzystania z aktywnego proxy. Jest to możliwe, ponieważ każdy może podszyć się pod aktywne proxy i zażądać danych konfiguracyjnych, jeśli uwierzytelnianie nie ma miejsca lub adresy proxy nie są ograniczone w polu Proxy address.
Proxy address Jeśli określono, żądania aktywnego proxy są akceptowane tylko z tej listy adresów IP rozdzielonych przecinkami, opcjonalnie w notacji CIDR, lub nazw DNS aktywnego proxy Zabbix.
To pole jest dostępne tylko wtedy, gdy w polu Proxy mode wybrano aktywne proxy. Makra nie są obsługiwane.
Interface Wprowadź szczegóły interfejsu dla pasywnego proxy.
To pole jest dostępne tylko wtedy, gdy w polu Proxy mode wybrano pasywne proxy.
Address Adres IP/nazwa DNS pasywnego proxy.
Port Numer portu TCP pasywnego proxy (domyślnie 10051). Obsługiwane są makra użytkownika.
Description Wprowadź opis proxy.

Karta Encryption umożliwia wymaganie szyfrowanych połączeń z proxy.

Parameter Description
Connections to proxy Sposób, w jaki serwer łączy się z pasywnym proxy: bez szyfrowania (domyślnie), z użyciem PSK (pre-shared key) lub certyfikatu.
Connections from proxy Wybierz, jaki typ połączeń jest dozwolony z aktywnego proxy. Można wybrać kilka typów połączeń jednocześnie (przydatne do testowania i przełączania na inny typ połączenia). Domyślnie: "No encryption".
Issuer Dozwolony wystawca certyfikatu. Certyfikat jest najpierw weryfikowany za pomocą CA (certificate authority). Jeśli jest poprawny i podpisany przez CA, pole Issuer można wykorzystać do dalszego ograniczenia dozwolonego CA. To pole jest opcjonalne i przeznaczone do użycia, jeśli instalacja Zabbix korzysta z certyfikatów od wielu CA.
Subject Dozwolony subject certyfikatu. Certyfikat jest najpierw weryfikowany za pomocą CA. Jeśli jest poprawny i podpisany przez CA, pole Subject można wykorzystać do zezwolenia tylko na jedną wartość ciągu Subject. Jeśli to pole jest puste, akceptowany jest każdy poprawny certyfikat podpisany przez skonfigurowane CA.
PSK identity Ciąg identyfikacyjny pre-shared key.
Nie umieszczaj wrażliwych informacji w identyfikatorze PSK, ponieważ jest on przesyłany przez sieć bez szyfrowania, aby poinformować odbiorcę, którego PSK użyć.
PSK Pre-shared key (ciąg szesnastkowy). Maksymalna długość: 512 cyfr szesnastkowych (PSK o długości 256 bajtów), jeśli Zabbix używa biblioteki GnuTLS lub OpenSSL, 64 cyfry szesnastkowe (PSK o długości 32 bajtów), jeśli Zabbix używa biblioteki mbed TLS (PolarSSL). Przykład: 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Karta Timeouts umożliwia zastąpienie globalnych limitów czasu dla typów pozycji, które to obsługują.

Parameter Description
Timeouts for item types Ustaw limit czasu pozycji (na podstawie jej typu):
Global - użyj globalnego limitu czasu (wyświetlanego w wyszarzonym polu Timeout dla każdego typu pozycji);
Override - ustaw własny limit czasu (w polu Timeout dla każdego typu pozycji). Dozwolony zakres: 1 - 600 s (domyślnie: dziedziczony z globalnych limitów czasu). Obsługiwane są sufiksy czasu, np. 30s, 1m, oraz makra użytkownika.

Kliknięcie łącza Global timeouts umożliwia skonfigurowanie globalnych limitów czasu. Zwróć uwagę, że łącze Global timeouts jest widoczne tylko dla użytkowników typu Super admin z uprawnieniami do sekcji frontend Administration > General.

Pamiętaj, że chociaż limity czasu na poziomie proxy zastępują globalne, zostaną one zastąpione przez indywidualne limity czasu pozycji, jeśli zostały skonfigurowane.

Jeśli główna wersja proxy nie odpowiada głównej wersji serwer, obok Timeouts for item types zostanie wyświetlona ikona , z komunikatem po najechaniu kursorem: "Timeouts disabled because the proxy and server versions do not match". W takich przypadkach proxy użyje parametru Timeout z pliku konfiguracyjnego proxy.

Formularz edycji istniejącego proxy zawiera następujące dodatkowe przyciski:

  • Refresh configuration - odśwież konfigurację proxy;
  • Clone - utwórz nowe proxy na podstawie właściwości istniejącego proxy;
  • Delete - usuń proxy.
Konfiguracja hosta

Możesz określić, że pojedynczy host ma być monitorowany przez proxy lub grupę proxy, w formularzu konfiguracji hosta, używając pola Monitored by.

Masowa aktualizacja hosta to inny sposób określenia, że hosty powinny być monitorowane przez proxy lub grupę proxy.