4 Proxy

Przegląd

Zabbix proxy to proces, który może zbierać dane monitoringu z jednego lub większej liczby monitorowanych urządzeń i wysyłać te informacje do serwera Zabbix, działając zasadniczo w imieniu serwera. Wszystkie zebrane dane są buforowane lokalnie, a następnie przesyłane do serwera Zabbix, do którego należy dany proxy.

Wdrożenie proxy jest opcjonalne, ale może być bardzo korzystne dla rozłożenia obciążenia pojedynczego serwera Zabbix. Jeśli dane zbierają wyłącznie proxy, przetwarzanie na serwerze wymaga mniej zasobów CPU i operacji wejścia/wyjścia dysku.

Zabbix proxy jest idealnym rozwiązaniem do scentralizowanego monitorowania zdalnych lokalizacji, oddziałów i sieci bez lokalnych administratorów.

Zabbix proxy wymaga oddzielnej bazy danych.

Należy pamiętać, że bazami danych obsługiwanymi przez Zabbix proxy są SQLite, MySQL i PostgreSQL.

Zobacz także: Używanie proxy w środowisku rozproszonym

Uruchamianie proxy

Jeśli zainstalowano jako pakiet

Zabbix proxy działa jako proces demona. Proxy można uruchomić, wykonując:

systemctl start zabbix-proxy

To zadziała w większości systemów GNU/Linux. W innych systemach może być konieczne uruchomienie:

/etc/init.d/zabbix-proxy start

Podobnie, aby zatrzymać/uruchomić ponownie/wyświetlić status Zabbix proxy, użyj następujących poleceń:

systemctl stop zabbix-proxy
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
Uruchom ręcznie

Jeśli powyższe nie działa, musisz uruchomić go ręcznie. Znajdź ścieżkę do pliku binarnego zabbix_proxy i wykonaj:

zabbix_proxy

Możesz użyć następujących parametrów wiersza poleceń z Zabbix proxy:

-c --config <file>              ścieżka do pliku konfiguracyjnego
-f --foreground                 uruchom Zabbix proxy na pierwszym planie
-R --runtime-control <option>   wykonaj funkcje administracyjne
-T --test-config                sprawdź poprawność pliku konfiguracyjnego i zakończ
-h --help                       wyświetl tę pomoc
-V --version                    wyświetl numer wersji

Przykłady uruchamiania Zabbix proxy z parametrami wiersza poleceń:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
Sterowanie w czasie działania

Opcje sterowania w czasie działania:

Option Description Target
config_cache_reload Przeładuj pamięć podręczną konfiguracji. Ignorowane, jeśli pamięć podręczna jest obecnie ładowana.
Aktywny Zabbix proxy połączy się z Zabbix server i zażąda danych konfiguracyjnych.
Pasywny Zabbix proxy zażąda danych konfiguracyjnych z Zabbix server przy następnym połączeniu serwera z proxy.
history_cache_clear=target Wyczyść pamięć podręczną historii dla pozycji określonej przez jej ID.
Wpływa na wszystkie wartości pozycji, z wyjątkiem pierwszej i ostatniej wartości.
target - ID pozycji
diaginfo[=<section>] Zbierz informacje diagnostyczne w pliku logu proxy. historycache - statystyki pamięci podręcznej historii
preprocessing - statystyki menedżera przetwarzania wstępnego
locks - lista muteksów (jest pusta w systemach BSD)
snmp_cache_reload Przeładuj pamięć podręczną SNMP — wyczyść właściwości silnika SNMP (czas silnika, uruchomienia silnika, ID silnika, poświadczenia) dla wszystkich hostów. Użyj tej opcji, aby wymusić globalne wyczyszczenie pamięci podręcznej podczas rozwiązywania problemów z SNMP.
housekeeper_execute Uruchom procedurę housekeeping. Ignorowane, jeśli procedura housekeeping jest obecnie w toku.
log_level_increase[=<target>] Zwiększ poziom logowania; wpływa na wszystkie procesy, jeśli target nie został określony.
Nieobsługiwane w systemach BSD.
process type - Wszystkie procesy określonego typu (np. poller)
Zobacz wszystkie typy procesów proxy.
process type,N - Typ procesu i numer (np. poller,3)
pid - Identyfikator procesu (od 1 do 65535). Dla większych wartości określ target jako 'process type,N'.
log_level_decrease[=<target>] Zmniejsz poziom logowania; wpływa na wszystkie procesy, jeśli target nie został określony.
Nieobsługiwane w systemach BSD.
prof_enable[=<target>] Włącz profilowanie.
Wpływa na wszystkie procesy, jeśli target nie został określony.
Włączone profilowanie dostarcza szczegóły wszystkich rwlocków/muteksów według nazwy funkcji.
process type - Wszystkie procesy określonego typu (np. history syncer)
Zobacz wszystkie typy procesów proxy.
process type,N - Typ procesu i numer (np. history syncer,1)
pid - Identyfikator procesu (od 1 do 65535). Dla większych wartości określ target jako 'process type,N'.
scope - rwlock, mutex, processing mogą być używane z typem procesu i numerem (np. history syncer,1,processing) lub dla wszystkich procesów danego typu (np. history syncer,rwlock)
prof_disable[=<target>] Wyłącz profilowanie.
Wpływa na wszystkie procesy, jeśli target nie został określony.
process type - Wszystkie procesy określonego typu (np. history syncer)
Zobacz wszystkie typy procesów proxy.
process type,N - Typ procesu i numer (np. history syncer,1)
pid - Identyfikator procesu (od 1 do 65535). Dla większych wartości określ target jako 'process type,N'.

Przykład użycia sterowania w czasie działania do przeładowania pamięci podręcznej konfiguracji proxy:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload

Przykład użycia sterowania w czasie działania do wyczyszczenia pamięci podręcznej historii dla pozycji:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R history_cache_clear=42243

Przykłady użycia sterowania w czasie działania do zbierania informacji diagnostycznych:

# Zbierz wszystkie dostępne informacje diagnostyczne w pliku logu proxy:
zabbix_proxy -R diaginfo

# Zbierz statystyki pamięci podręcznej historii w pliku logu proxy:
zabbix_proxy -R diaginfo=historycache

Przykład użycia sterowania w czasie działania do przeładowania pamięci podręcznej SNMP:

zabbix_proxy -R snmp_cache_reload

Gdy interfejs SNMPv3 zostanie zaktualizowany za pomocą interfejsu Zabbix, Zabbix w większości przypadków automatycznie przeładuje nowe poświadczenia SNMPv3 dla tego interfejsu; używaj -R snmp_cache_reload tylko wtedy, gdy odpytywanie nadal kończy się niepowodzeniem po zmianie poświadczeń (na przykład z powodu niespójności engineBoots/engineID lub urządzeń niezgodnych z RFC), albo gdy trzeba wymusić globalne wyczyszczenie pamięci podręcznej SNMP na potrzeby rozwiązywania problemów.

Przykład użycia sterowania w czasie działania do wyzwolenia wykonania housekeepera:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute

Przykłady użycia sterowania w czasie działania do zmiany poziomu logowania:

# Zwiększ poziom logowania wszystkich procesów:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase

# Zwiększ poziom logowania drugiego procesu poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2

# Zwiększ poziom logowania procesu o PID 1234:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234

# Zmniejsz poziom logowania wszystkich procesów http poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
Użytkownik procesu

Zabbix proxy został zaprojektowany do działania jako użytkownik niebędący rootem. Będzie działać jako dowolny użytkownik niebędący rootem, jako który został uruchomiony. Dlatego możesz uruchamiać proxy jako dowolny użytkownik niebędący rootem bez żadnych problemów.

Jeśli spróbujesz uruchomić go jako 'root', przełączy się na zakodowanego na stałe użytkownika 'zabbix', który musi być obecny w twoim systemie. Możesz uruchamiać proxy jako 'root' tylko wtedy, gdy odpowiednio zmodyfikujesz parametr 'AllowRoot' w pliku konfiguracyjnym proxy.

Plik konfiguracyjny

Szczegółowe informacje na temat konfiguracji zabbix_proxy można znaleźć w opcjach pliku konfiguracyjnego.

Typy procesów i wątków proxy

  • agent poller - asynchroniczny proces odpytywania dla pasywnych kontroli z wątkiem roboczym
  • availability manager - proces aktualizacji dostępności hostów
  • browser poller - proces odpytywania dla kontroli pozycji przeglądarkowych
  • configuration syncer - proces zarządzania pamięcią podręczną danych konfiguracyjnych w pamięci
  • data sender - nadawca danych proxy
  • discovery manager - proces menedżera wykrywania urządzeń
  • discovery worker - proces obsługi zadań wykrywania od menedżera wykrywania
  • history syncer - zapisujący historię do bazy danych
  • housekeeper - proces usuwania nieaktualnej historii pozycji
  • http agent poller - asynchroniczny proces odpytywania dla kontroli HTTP z wątkiem roboczym
  • http poller - proces odpytywania monitoringu WWW
  • icmp pinger - proces odpytywania dla kontroli icmpping
  • internal poller - proces odpytywania dla kontroli wewnętrznych
  • ipmi manager - menedżer procesów odpytywania IPMI
  • ipmi poller - proces odpytywania dla kontroli IPMI
  • java poller - proces odpytywania dla kontroli Java
  • odbc poller - proces odpytywania dla kontroli ODBC
  • poller - zwykły proces odpytywania dla pasywnych kontroli
  • preprocessing manager - menedżer zadań przetwarzania wstępnego z wątkami roboczymi przetwarzania wstępnego
  • preprocessing worker - wątek przetwarzania wstępnego danych
  • self-monitoring - proces zbierania wewnętrznych statystyk serwera
  • snmp poller - asynchroniczny proces odpytywania dla kontroli SNMP z wątkiem roboczym (tylko pozycje walk[OID] i get[OID])
  • snmp trapper - trapper dla pułapek SNMP
  • task manager - proces zdalnego wykonywania zadań żądanych przez inne komponenty (np. zamknięcie problemu, potwierdzenie problemu, sprawdzenie teraz wartości pozycji, funkcja zdalnych poleceń)
  • trapper - trapper dla aktywnych kontroli, pułapek, komunikacji proxy
  • unreachable poller - proces odpytywania dla nieosiągalnych urządzeń
  • vmware collector - kolektor danych VMware odpowiedzialny za zbieranie danych z usług VMware

Plik dziennika proxy może być używany do obserwowania tych typów procesów.

Plik dziennika proxy jest tworzony z uprawnieniami odczytu i zapisu tylko dla właściciela pliku. Dodatkowo plik jest dostępny do odczytu dla grupy właściciela. Wszystkie pozostałe uprawnienia są zabronione.

Różne typy procesów Zabbix proxy mogą być monitorowane przy użyciu wewnętrznej pozycji zabbix[process,<type>,<mode>,<state>] item.

Statystyki transakcji synchronizatora historii

Tytuł procesu synchronizatora historii wyświetla szczegółowe statystyki dotyczące transakcji synchronizatora historii.

205276 ?        S      0:00  zabbix_proxy: history syncer #1 [processed 1 values in 0.001179 (0.001167,0.000000) sec, idle 1 sec]
205277 ?        S      0:00  zabbix_proxy: history syncer #2 [processed 0 values in 0.000022 (0.000000,0.000000) sec, idle 1 sec]

Czasy w wyrażeniu „processed...in N (<timings>) sec” oznaczają:

  • Czas poświęcony na zapisywanie wartości pozycji do bazy danych;
  • Czas poświęcony na aktualizację danych pozycji (stan, błędy).
Procedura housekeeping

Proxy Zabbix ma proces housekeeper, który usuwa nieaktualną historię i trendy pozycji. Działa on cyklicznie, z częstotliwością określoną przez HousekeepingFrequency, a limit usuwania na cykl jest określany przez ProxyLocalBuffer i ProxyOfflineBuffer. W przeciwieństwie do procedury housekeeping w serwerze Zabbix, proces housekeeper proxy nie używa tabeli housekeeper — usuwa wszystkie nieaktualne dane raz na każdy cykl housekeeping.

Obsługiwane platformy

Zabbix proxy działa na tej samej liście obsługiwanych platform co serwer Zabbix.

Bufor pamięci

Bufor pamięci umożliwia przechowywanie nowych danych (wartości pozycji, wykrywanie sieci, autorejestracja hostów) w buforze i przesyłanie ich do serwera Zabbix bez dostępu do bazy danych. Bufor pamięci został wprowadzony dla proxy od wersji Zabbix 7.0.

W instalacjach sprzed Zabbix 7.0 zebrane dane były przechowywane w bazie danych przed przesłaniem do serwera Zabbix. Dla tych instalacji po aktualizacji do Zabbix 7.0 pozostaje to domyślnym zachowaniem.

W celu uzyskania zoptymalizowanej wydajności zaleca się skonfigurowanie użycia bufora pamięci na proxy. Jest to możliwe przez zmianę wartości ProxyBufferMode z "disk" (domyślna wartość zakodowana na stałe dla istniejących instalacji) na "hybrid" (zalecane) lub "memory". Wymagane jest również ustawienie rozmiaru bufora pamięci (parametr ProxyMemoryBufferSize).

W trybie hybrydowym bufor jest chroniony przed utratą danych przez zapisywanie niewysłanych danych do bazy danych, jeśli proxy zostanie zatrzymany, bufor się zapełni lub dane będą zbyt stare. Po zapisaniu wszystkich wartości do bazy danych proxy wraca do używania bufora pamięci.

W trybie pamięci bufor pamięci będzie używany, jednak nie ma ochrony przed utratą danych. Jeśli proxy zostanie zatrzymany lub pamięć zostanie przepełniona, niewysłane dane zostaną odrzucone.

Tryb hybrydowy (ProxyBufferMode=hybrid) jest stosowany we wszystkich nowych instalacjach od wersji Zabbix 7.0.

Dodatkowe parametry, takie jak ProxyMemoryBufferSize oraz ProxyMemoryBufferAge, definiują odpowiednio rozmiar bufora pamięci i maksymalny wiek danych w buforze.

Uwaga: w przypadku sprzecznej konfiguracji proxy wypisze błąd i nie uruchomi się, na przykład jeśli:

  • ProxyBufferMode jest ustawiony na "hybrid" lub "memory", a ProxyMemoryBufferSize ma wartość "0";
  • ProxyBufferMode jest ustawiony na "hybrid" lub "memory", a ProxyLocalBuffer nie ma wartości "0".

Ustawienia regionalne

Zwróć uwagę, że proxy wymaga ustawień regionalnych UTF-8, aby niektóre tekstowe pozycje mogły być poprawnie interpretowane. Większość nowoczesnych systemów typu Unix ma domyślnie ustawienia regionalne UTF-8, jednak istnieją systemy, w których trzeba je skonfigurować ręcznie.

Obliczanie kolejek podczas konserwacji

Proxy Zabbix nie jest świadomy okresów konserwacji; szczegóły znajdują się w sekcji Obliczanie kolejek podczas konserwacji.