[comment]: # (tags: proxy)

[comment]: # ({f9458f4e-f9458f4e})
# 4 Proxy

[comment]: # ({/f9458f4e-f9458f4e})

[comment]: # ({a0844076-05d8de8a})
#### 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.

::: noteimportant
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](/manual/distributed_monitoring/proxies)

[comment]: # ({/a0844076-05d8de8a})

[comment]: # ({709824a5-709824a5})
#### Uruchamianie proxy

[comment]: # ({/709824a5-709824a5})

[comment]: # ({70fd3646-a0a6c8d1})
##### Jeśli zainstalowano jako pakiet

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

```bash
systemctl start zabbix-proxy
```

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

```bash
/etc/init.d/zabbix-proxy start
```

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

```bash
systemctl stop zabbix-proxy
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
```

[comment]: # ({/70fd3646-a0a6c8d1})

[comment]: # ({5e827b2c-0b35181b})
##### Uruchamianie ręczne

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

```bash
zabbix_proxy
```

Z proxy Zabbix można używać następujących parametrów wiersza poleceń:

```bash
-c --config <file>              Ścieżka do pliku konfiguracyjnego
-f --foreground                 Uruchom proxy Zabbix 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 proxy Zabbix z parametrami wiersza poleceń:

```bash
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
```

[comment]: # ({/5e827b2c-0b35181b})

[comment]: # ({b9a1c6fe-ee4dd6f0})
##### 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.<br>Aktywny proxy Zabbix połączy się z serwerem Zabbix i zażąda danych konfiguracji.<br>Pasywny proxy Zabbix zażąda danych konfiguracji z serwera Zabbix przy następnym połączeniu serwera z proxy.| |
|`history_cache_clear=target`|Wyczyść pamięć podręczną historii dla pozycji określonej przez jej ID.<br>Dotyczy wszystkich wartości pozycji, z wyjątkiem pierwszej i ostatniej wartości.|**target** - ID pozycji.|
|`diaginfo[=<section>]`|Zbierz informacje diagnostyczne w pliku dziennika proxy.|`historycache` - statystyki pamięci podręcznej historii;<br>`preprocessing` - statystyki menedżera preprocessingu;<br>`locks` - lista mutexów (pusta w systemach *BSD*).|
|`snmp_cache_reload`|Przeładuj pamięć podręczną SNMP - wyczyść właściwości silnika SNMP (engine time, engine boots, engine id, credentials) dla wszystkich hostów. Użyj, 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 jest określony. <br>Nieobsługiwane w systemach *BSD*.|**process type** - wszystkie procesy określonego typu (np. `poller`).<br>Zobacz wszystkie [typy procesów proxy](#proxy-process-types-and-threads).<br>**process type,N** - typ procesu i numer (np. `poller,3`).<br>**pid** - identyfikator procesu (`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 jest określony.<br>Nieobsługiwane w systemach *BSD*.|^|
|`prof_enable[=<target>]`|Włącz profilowanie.<br>Wpływa na wszystkie procesy, jeśli target nie jest określony.<br>Włączone profilowanie dostarcza szczegółów wszystkich rwlocks/mutexes według nazwy funkcji.|**process type** - wszystkie procesy określonego typu (np. `history syncer`).<br>Zobacz wszystkie [typy procesów proxy](#proxy-process-types-and-threads).<br>**process type,N** - typ procesu i numer (np. `history syncer,1`)<br>**pid** - identyfikator procesu (`1` do `65535`). Dla większych wartości określ target jako 'process type,N'.<br>**scope** - `rwlock`, `mutex`, `processing` mogą być używane z typem procesu i numerem (np. `history syncer,1,processing`) lub ze wszystkimi procesami danego typu (np. `history syncer,rwlock`).|
|`prof_disable[=<target>]`|Wyłącz profilowanie.<br>Wpływa na wszystkie procesy, jeśli target nie jest określony.|**process type** - wszystkie procesy określonego typu (np. `history syncer`).<br>Zobacz wszystkie [typy procesów proxy](#proxy-process-types-and-threads).<br>**process type,N** - typ procesu i numer (np. `history syncer,1`).<br>**pid** - identyfikator procesu (`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:

```bash
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:

```bash
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:

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

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

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

```bash
zabbix_proxy -R snmp_cache_reload
```

::: noteimportant
Gdy interfejs SNMPv3 jest aktualizowany za pośrednictwem interfejsu Zabbix UI, 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 chcesz wymusić globalne wyczyszczenie pamięci podręcznej SNMP podczas rozwiązywania problemów.
:::

Przykład użycia sterowania w czasie działania do uruchomienia housekeeper:

```bash
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:

```bash
# 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"
```

[comment]: # ({/b9a1c6fe-ee4dd6f0})

[comment]: # ({2b13e467-a9af55d3})
##### Użytkownik procesu

Zabbix proxy jest zaprojektowany do działania jako użytkownik inny niż root.
Będzie działać jako dowolny użytkownik inny niż root, jako który zostanie uruchomiony.
Możesz więc uruchomić proxy jako dowolnego użytkownika innego niż root 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 uruchomić proxy jako `root` tylko wtedy, gdy odpowiednio zmodyfikujesz parametr `AllowRoot` w pliku konfiguracji proxy.

[comment]: # ({/2b13e467-a9af55d3})

[comment]: # ({6e096a7b-441f5ec7})
##### Plik konfiguracyjny

Szczegółowe informacje dotyczące konfiguracji `zabbix_proxy` można znaleźć w opcjach [pliku konfiguracyjnego](/manual/appendix/config/zabbix_proxy).

[comment]: # ({/6e096a7b-441f5ec7})

[comment]: # ({ee7041c3-2cd46511})
#### Typy procesów i wątki proxy

-   `agent poller` - asynchroniczny proces pollera dla kontroli pasywnych z wątkiem roboczym;
-   `availability manager` - proces aktualizujący dostępność hostów;
-   `browser poller` - poller do kontroli pozycji przeglądarkowych;
-   `configuration syncer` - proces zarządzający pamięcią podręczną danych konfiguracyjnych w pamięci;
-   `data sender` - wysyłacz danych proxy;
-   `discovery manager` - proces zarządzający wykrywaniem urządzeń;
-   `discovery worker` - proces obsługujący zadania wykrywania z procesu discovery manager;
-   `history syncer` - zapisujący dane historyczne do bazy danych;
-   `housekeeper` - proces usuwający nieaktualną historię pozycji;
-   `http agent poller` - asynchroniczny proces pollera dla kontroli HTTP z wątkiem roboczym;
-   `http poller` - poller monitorowania WWW;
-   `icmp pinger` - poller dla kontroli icmpping;
-   `internal poller` - poller dla kontroli wewnętrznych;
-   `ipmi manager` - menedżer pollera IPMI;
-   `ipmi poller` - poller dla kontroli IPMI;
-   `java poller` - poller dla kontroli Java;
-   `odbc poller` - poller dla kontroli ODBC;
-   `poller` - zwykły poller dla kontroli pasywnych;
-   `preprocessing manager` - menedżer zadań przetwarzania wstępnego z wątkami roboczymi przetwarzania wstępnego;
-   `preprocessing worker` - wątek do przetwarzania wstępnego danych;
-   `self-monitoring` - proces zbierający wewnętrzne statystyki serwera;
-   `snmp poller` - asynchroniczny proces pollera dla kontroli SNMP z wątkiem roboczym (tylko pozycje `walk[OID]` i `get[OID]`);
-   `snmp trapper` - trapper dla pułapek SNMP;
-   `task manager` - proces do zdalnego wykonywania zadań żądanych przez inne komponenty (np. zamknięcie problemu, potwierdzenie problemu, sprawdzenie wartości pozycji teraz, funkcjonalność zdalnych poleceń);
-   `trapper` - trapper dla kontroli aktywnych, pułapek i komunikacji z proxy;
-   `unreachable poller` - poller dla niedostępnych urządzeń;
-   `vmware collector` - kolektor danych VMware odpowiedzialny za zbieranie danych z usług VMware.

Plik dziennika proxy może służyć do obserwowania tych typów procesów.

Od Zabbix 7.4.6 plik dziennika proxy jest tworzony z uprawnieniami odczytu i zapisu wyłącznie dla właściciela pliku. Dodatkowo plik jest czytelny dla grupy właściciela. Wszystkie pozostałe uprawnienia są odrzucone.

Różne typy procesów proxy Zabbix można monitorować za pomocą wewnętrznej [pozycji](/manual/config/items/itemtypes/internal) `zabbix[process,<type>,<mode>,<state>]`.

[comment]: # ({/ee7041c3-2cd46511})

[comment]: # ({93aa4b3e-2bebd420})
##### Statystyki transakcji synchronizatora historii

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

```bash
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 formacie `processed...in N (<timings>) sec` oznaczają:

-   Czas spędzony na zapisywaniu wartości pozycji do bazy danych.
-   Czas spędzony na aktualizowaniu danych pozycji (stan, błędy).

[comment]: # ({/93aa4b3e-2bebd420})

[comment]: # ({99df0923-087c822f})
#### Obsługiwane platformy

Zabbix proxy działa na tej samej liście [obsługiwanych platform](/manual/concepts/server#supported-platforms) co serwer Zabbix.

[comment]: # ({/99df0923-087c822f})

[comment]: # ({f18fc440-d86eb1a8})
#### Bufor pamięci

Bufor pamięci umożliwia przechowywanie nowych danych (wartości pozycji, wykrywanie sieci, automatyczna rejestracja hosta) w buforze i wysyłanie ich do serwera Zabbix bez dostępu do bazy danych.
Bufor pamięci został wprowadzony dla proxy w Zabbix 7.0.

W instalacjach sprzed Zabbix 7.0 zebrane dane były przechowywane w bazie danych przed wysłaniem do serwera Zabbix.
W takich instalacjach pozostaje to domyślnym zachowaniem po uaktualnieniu do Zabbix 7.0.

Aby uzyskać zoptymalizowaną wydajność, zaleca się skonfigurowanie użycia bufora pamięci na proxy.
Można to zrobić, zmieniając wartość [`ProxyBufferMode`](/manual/appendix/config/zabbix_proxy#proxybuffermode) z `disk` (wbudowana wartość domyślna dla istniejących instalacji) na `hybrid` (zalecane) lub `memory`.
Wymagane jest również ustawienie rozmiaru bufora pamięci (parametr [`ProxyMemoryBufferSize`](/manual/appendix/config/zabbix_proxy#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 staną się zbyt stare.
Gdy wszystkie wartości zostaną zapisane do bazy danych, proxy wraca do korzystania z bufora pamięci.

W trybie pamięciowym będzie używany bufor pamięci, 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 do wszystkich nowych instalacji od Zabbix 7.0.

Dodatkowe parametry, takie jak [`ProxyMemoryBufferSize`](/manual/appendix/config/zabbix_proxy#proxymemorybuffersize) i [`ProxyMemoryBufferAge`](/manual/appendix/config/zabbix_proxy#proxymemorybufferage), określają odpowiednio rozmiar bufora pamięci oraz maksymalny wiek danych w buforze.

Należy pamiętać, że w przypadku sprzecznej konfiguracji proxy wyświetli 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`.

[comment]: # ({/f18fc440-d86eb1a8})

[comment]: # ({b4e0a962-c703b792})
#### 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.

[comment]: # ({/b4e0a962-c703b792})

[comment]: # ({de7d29ed-19fb9631})
#### Obliczanie kolejek podczas konserwacji

::: noteimportant
Proxy Zabbix nie jest świadomy okresów konserwacji; szczegóły znajdują się w sekcji [Obliczanie kolejek podczas konserwacji](/manual/maintenance#calculation-of-queues-during-maintenance).
:::

[comment]: # ({/de7d29ed-19fb9631})
