Monitorowanie rozproszone z użyciem proxy
Przegląd
Proxy Zabbix można wykorzystać do utworzenia skutecznego i niezawodnego rozproszonego systemu monitorowania.
Proxy są wdrażane lokalnie w celu zbierania danych dotyczących wydajności i dostępności. Następnie dane są przekazywane do scentralizowanego serwera.
Proxy Zabbix można wykorzystać do:
- Monitorowania zdalnych lokalizacji
- Monitorowania lokalizacji, w których komunikacja jest zawodna
- Odciążenia serwera Zabbix podczas monitorowania tysięcy urządzeń
- Zbierania danych telemetrycznych na potrzeby monitorowania wydajności aplikacji (APM)

Proxy wymaga tylko jednego połączenia TCP z serwerem Zabbix. Dzięki temu łatwiej ominąć zaporę sieciową, ponieważ wystarczy skonfigurować jedną regułę zapory.
Proxy Zabbix musi korzystać z oddzielnej bazy danych. Wskazanie bazy danych serwera Zabbix spowoduje uszkodzenie konfiguracji.
Wszystkie dane zebrane przez proxy są przechowywane lokalnie przed przesłaniem ich do serwera.
Dzięki temu dane nie zostaną utracone z powodu tymczasowych problemów z komunikacją z serwerem.
Parametry ProxyLocalBuffer i ProxyOfflineBuffer w pliku konfiguracyjnym proxy określają, 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, będzie mieć bardziej aktualną konfigurację niż serwer Zabbix, którego konfiguracja może nie być aktualizowana równie szybko z powodu wartości parametru CacheUpdateFrequency. W rezultacie proxy może rozpocząć zbieranie danych i wysyłać je do serwera Zabbix, który będzie te dane ignorować.
Proxy Zabbix jest kolektorem danych. Nie oblicza wyzwalaczy, nie przetwarza zdarzeń ani nie wysyła alertów. Przegląd funkcji obsługiwanych przez proxy przedstawiono w poniższej tabeli:
| 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 | |
| Telemetry query 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 | |
| Telemetry data collection (APM) | Yes 3 | |
| 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ć wymienione w parametrze ServerActive w pliku konfiguracyjnym agenta.
[2] W przypadku LLD proxy Zabbix tylko zbiera i wstępnie przetwarza dane, a następnie wysyła je do serwera Zabbix w celu dalszego przetwarzania.
[3] Dane telemetryczne są zbierane tylko wtedy, gdy APM jest włączone na proxy (zobacz kartę APM w konfiguracji proxy); serwer Zabbix nie może odbierać danych telemetrycznych.
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ł niedostępny przez pewien czas, a proxy zebrały dużą ilość danych, po uruchomieniu serwer może zostać przeciążony (wykorzystanie pamięci podręcznej historii przez pewien czas utrzymuje się na poziomie 95-100%). To przeciążenie może obniżyć wydajność, powodując wolniejsze przetwarzanie kontroli, niż powinno mieć miejsce. Wprowadzono ochronę przed tym scenariuszem, aby uniknąć problemów wynikających z przeciążenia pamięci podręcznej historii.
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ęstszy przypadek przeciążenia pamięci podręcznej historii występuje po przestoju serwera, gdy proxy przesyłają zebrane dane. Aby uniknąć tego problemu, dodano ograniczanie proxy (obecnie nie można go wyłączyć).
Gdy wykorzystanie pamięci podręcznej historii osiągnie 80%, serwer Zabbix przechodzi w tryb ograniczania. W tym trybie serwer akceptuje dane z proxy tylko wtedy, gdy wykorzystanie pamięci podręcznej historii jest niższe niż 60%, rotacyjnie obsługując zaakceptowane proxy. Gdy wykorzystanie pamięci podręcznej historii spadnie poniżej 20%, serwer powraca do trybu normalnego.
Dodatkowo, gdy wykorzystanie pamięci podręcznej historii przekroczy 60%, serwer Zabbix może odroczyć obsługę poszczególnych proxy w trybie normalnym, jeśli ich przesyłanie zostało skrócone z powodu limitów przesyłania.
Decyzja ta jest podejmowana w chwili, gdy serwer ocenia przesyłanie danych przez proxy, dlatego nie zawsze musi być natychmiast widoczna na wykresach wykorzystania pamięci podręcznej historii (wewnętrzna pozycja zabbix[wcache,history,pused] i jej interwał aktualizacji mogą nie zarejestrować krótkotrwałych skoków).
Ten tryb ograniczania będzie trwał do momentu, gdy wykorzystanie pamięci podręcznej ponownie osiągnie 80%, spadnie do 20% albo lista ograniczania zostanie opróżniona. W pierwszym przypadku serwer ponownie przestanie akceptować dane z proxy. W dwóch pozostałych przypadkach serwer zacznie działać normalnie, akceptując dane ze wszystkich proxy.
Powyższe informacje można przedstawić w następującej tabeli:
| Wykorzystanie pamięci podręcznej zapisu historii | Tryb serwera Zabbix | Działanie serwera Zabbix |
|---|---|---|
| Powyżej 60% (w trybie „Normal”, do osiągnięcia 80%) | Normal | Odroczenie obsługi proxy, których partia przesyłania została skrócona z powodu limitów przesyłania; dalsza akceptacja pozostałych proxy. |
| Osiąga 80% | Wait | Zaprzestaje akceptowania danych z proxy, ale zachowuje listę ograniczania (uporządkowaną listę proxy, z którymi należy skontaktować się później). |
| Spada poniżej 60% (po trybie „Wait”) | Throttling | Ponownie zaczyna akceptować dane z proxy, rotacyjnie obsługując proxy znajdujące się na liście ograniczania. |
| Spada poniżej 20% (po trybie „Throttling”) | Normal | Usuwa listę ograniczania i zaczyna normalnie akceptować dane z proxy. |
Możesz użyć wewnętrznej pozycji zabbix[wcache,history,pused], aby skorelować to zachowanie serwera Zabbix z metryką.
Konfiguracja
Po zainstalowaniu i skonfigurowaniu proxy nadszedł czas, aby skonfigurować je w frontendzie Zabbixa.
Dodawanie proxy
Zamiast instalować proxy we własnej infrastrukturze, możesz wdrożyć je w Zabbix Cloud. W tym celu kliknij Create proxy in Cloud w sekcji Administration > Proxies; Zabbix Cloud otworzy się w nowej karcie przeglądarki. Po utworzeniu tam węzła proxy skonfiguruj proxy w frontend Zabbix zgodnie z poniższym opisem. Więcej informacji znajdziesz w sekcji Konfigurowanie proxy Zabbix Cloud.
Aby skonfigurować proxy w frontend Zabbix:
- Przejdź do sekcji Administration > Proxies.
- Kliknij Create proxy.
- Wprowadź parametry proxy w formularzu.

| 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 na potrzeby równoważenia obciążenia/wysokiej dostępności proxy. | |
| Address for active agents | Wprowadź adres, z którym muszą łączyć się monitorowane aktywne agenty lub nadawcy. Obsługiwane tylko przez agenty Zabbix 7.0 lub nowsze. Ten adres jest używany do łączenia 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 serwerem Zabbix i zażąda danych konfiguracyjnych Passive - serwer Zabbix łączy się z proxy Uwaga: w przypadku korzystania z aktywnego proxy, bez szyfrowanej komunikacji, dane konfiguracyjne proxy (informacje poufne) mogą stać się dostępne dla osób mających dostęp do portu trappera serwera Zabbix. Jest to możliwe, ponieważ każdy może podszyć się pod aktywne proxy i zażądać danych konfiguracyjnych, jeśli uwierzytelnianie nie jest stosowane lub adresy proxy nie są ograniczone w polu Proxy address. |
|
| Proxy address | Jeśli określono, żądania aktywnego proxy będą akceptowane wyłącznie z tej listy rozdzielanych przecinkami adresów IP, 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 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), przy użyciu PSK (klucza wstępnie współdzielonego) lub certyfikatu. |
| Connections from proxy | Wybierz typy połączeń dozwolone z aktywnego proxy. Jednocześnie można wybrać kilka typów połączeń (co jest przydatne podczas testowania i przełączania na inny typ połączenia). Domyślnie jest to „No encryption”. |
| Issuer | Dozwolony wystawca certyfikatu. Certyfikat jest najpierw weryfikowany za pomocą CA (urzędu certyfikacji). Jeśli jest prawidłowy i podpisany przez CA, pole Issuer może służyć do dodatkowego ograniczenia dozwolonego CA. To pole jest opcjonalne i przeznaczone do użycia, jeśli instalacja Zabbix korzysta z certyfikatów wystawionych przez wiele urzędów CA. |
| Subject | Dozwolony podmiot certyfikatu. Certyfikat jest najpierw weryfikowany za pomocą CA. Jeśli jest prawidłowy i podpisany przez CA, pole Subject może służyć do zezwolenia tylko na jedną wartość ciągu Subject. Jeśli to pole jest puste, akceptowany jest dowolny prawidłowy certyfikat podpisany przez skonfigurowany urząd CA. |
| PSK identity | Ciąg identyfikatora klucza wstępnie współdzielonego. Nie umieszczaj poufnych informacji w identyfikatorze PSK, ponieważ jest on przesyłany przez sieć w postaci niezaszyfrowanej, aby poinformować odbiorcę, którego PSK należy użyć. |
| PSK | Klucz wstępnie współdzielony (ciąg szesnastkowy). Maksymalna długość: 512 cyfr szesnastkowych (klucz PSK o długości 256 bajtów), jeśli Zabbix korzysta z biblioteki GnuTLS lub OpenSSL, albo 64 cyfry szesnastkowe (klucz PSK o długości 32 bajtów), jeśli Zabbix korzysta z biblioteki mbed TLS (PolarSSL). Przykład: 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952 |
Karta APM umożliwia skonfigurowanie monitorowania wydajności aplikacji (APM) na proxy. Proxy może zbierać dane telemetryczne (ślady, metryki i dzienniki) wysyłane przez aplikacje lub kolektory OpenTelemetry za pośrednictwem protokołu OpenTelemetry (OTLP/gRPC), a następnie zapisywać te dane w źródle danych telemetrycznych.

| Parameter | Description | |
|---|---|---|
| Data collection enabled | Zaznacz pole wyboru, aby włączyć zbieranie danych telemetrycznych na proxy. Przed włączeniem zbierania danych telemetrycznych ustaw parametr StartAPMCollector na 1 w pliku konfiguracyjnym proxy (wymaga proxy Zabbix z obsługą APM). |
|
| Max messages per second | Ustaw maksymalną liczbę wiadomości na sekundę akceptowanych przez proxy: Unlimited - akceptuj wszystkie wiadomości przychodzące. Custom - akceptuj do określonej liczby wiadomości na sekundę. Wiadomość to żądanie OTLP wysłane przez aplikację, kolektor OpenTelemetry lub inne źródło danych telemetrycznych. Jej rozmiar zależy od nadawcy; na przykład kolektor OpenTelemetry może grupować tysiące spanów w jednej wiadomości, podczas gdy prosta aplikacja może wysyłać mniejsze wiadomości (np. jedną na ślad). Po przekroczeniu limitu proxy odpowiada kodem stanu gRPC UNAVAILABLE (błąd tymczasowy), dlatego nadawca może ponowić próbę wysłania wiadomości później, zależnie od swojej konfiguracji. |
|
| Resource attributes | Określ atrybuty zasobu, które mają zostać dodane do przychodzących danych telemetrycznych wybranej kategorii (np. aby oznaczyć wszystkie dane odebrane przez to proxy jego środowiskiem lub regionem). Następnie możesz używać tych atrybutów do filtrowania danych telemetrycznych, na przykład w warunkach pozycji telemetry query. Jeśli dane przychodzące zawierają już atrybut zasobu o tym samym kluczu, zachowywany jest atrybut przychodzący zamiast określonego tutaj. |
|
| Key | Wprowadź klucz atrybutu (np. deployment.environment, cloud.region). Musi być unikatowy dla wybranej wartości Category. |
|
| Value | Wprowadź wartość atrybutu (np. production, eu-central-1). Może być pusta. |
|
| Category | Wybierz kategorię danych przychodzących, do której odnosi się atrybut: Traces, Metrics lub Logs. | |
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 niestandardowy limit czasu (w polu Timeout dla każdego typu pozycji). Dozwolony zakres: 1-600 s (domyślnie: odziedziczony z globalnych limitów czasu). Obsługiwane są przyrostki jednostek czasu, np. 30s i 1m, oraz makra użytkownika. Kliknięcie łącza Global timeouts umożliwia skonfigurowanie globalnych limitów czasu. Pamiętaj, że łącze Global timeouts jest widoczne tylko dla użytkowników typu Super admin, którzy mają uprawnienia do sekcji frontend Administration > General. Pamiętaj, że chociaż limity czasu na poziomie proxy zastępują limity globalne, zostaną zastąpione przez indywidualne limity czasu pozycji, jeśli zostaną skonfigurowane. |
Jeśli główna wersja proxy nie odpowiada głównej wersji serwera, obok opcji Timeouts for item types zostanie wyświetlona ikona
z komunikatem wyświetlanym 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żenie konfiguracji proxy;
- Clone - utworzenie nowego proxy na podstawie właściwości istniejącego proxy;
- Delete - usunięcie 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.