[comment]: # ({0a2d9a93-0a2d9a93})
# 1. Прокси

[comment]: # ({/0a2d9a93-0a2d9a93})

[comment]: # ({c112bcf2-5a59cd81})
### Обзор

Прокси Zabbix может собирать данные о производительности и доступности от имени сервера Zabbix. Таким образом, прокси может взять на себя часть нагрузки по сбору данных и разгрузить сервер Zabbix.

Кроме того, использование прокси — это самый простой способ реализовать централизованный и распределенный мониторинг, когда все агенты и прокси отправляют данные на один сервер Zabbix, а все данные собираются централизованно.

Прокси Zabbix можно использовать для:

-   Мониторинга удаленных площадок
-   Мониторинга площадок с ненадежной связью
-   Разгрузки сервера Zabbix при мониторинге тысяч устройств
-   Упрощения обслуживания распределенного мониторинга

![](../../../assets/en/manual/proxies/proxy.png){width="600"}

Для работы прокси требуется только одно TCP-соединение с сервером Zabbix. Это упрощает обход межсетевого экрана, поскольку нужно настроить только одно правило.

::: noteimportant
Прокси Zabbix должен использовать отдельную базу данных.
Если указать базу данных сервера Zabbix, конфигурация будет нарушена.
:::

Все данные, собранные прокси, сначала сохраняются локально, а затем передаются на сервер. Благодаря этому данные не теряются из-за временных проблем связи с сервером. Параметры *ProxyLocalBuffer* и *ProxyOfflineBuffer* в [файле конфигурации прокси](/manual/appendix/config/zabbix_proxy) определяют, как долго данные хранятся локально.

::: noteimportant
Может случиться так, что прокси, который получает последние изменения конфигурации напрямую из базы данных сервера Zabbix, имеет более актуальную конфигурацию, чем сервер Zabbix, чья конфигурация может обновляться не так быстро из-за значения
[CacheUpdateFrequency](/manual/appendix/config/zabbix_server). В результате прокси может начать собирать данные и отправлять их на сервер Zabbix, который будет игнорировать эти данные.
:::

Прокси Zabbix — это сборщик данных. Он не вычисляет триггеры, не обрабатывает события и не отправляет оповещения. Обзор возможностей прокси приведен в следующей таблице:

|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*|

::: noteclassic
\[1\] Чтобы агент запрашивал активные проверки у прокси, а не у
сервера, прокси должен быть указан в параметре
**ServerActive** в файле конфигурации агента.<br>
\[2\] Для LLD прокси Zabbix только собирает и предварительно обрабатывает
данные, а затем отправляет их на сервер Zabbix для дальнейшей
обработки.
:::

[comment]: # ({/c112bcf2-5a59cd81})

[comment]: # ({bde28545-737fe0c2})
##### Защита от перегрузки

Если Zabbix сервер был остановлен на какое-то время и прокси собрали много данных, а затем сервер запустился, он может оказаться перегруженным (использование кэша истории некоторое время остаётся на уровне 95-100%). 
Эта перегрузка может привести к падению производительности, где проверки обрабатываются медленнее, чем должны. Чтобы избежать проблем, возникающих из-за перегрузки кэша истории, была реализована защита от такого сценария.

Когда кэш истории сервера Zabbix полностью заполнен, доступ на запись в кэш истории ограничивается, что приводит к задержке процессов сбора данных сервера. Наиболее распространенный случай перегрузки кэша истории — после останова сервера, когда прокси-серверы пересылают собранные данные. Чтобы избежать этого, был добавлен троттлинг прокси (в настоящее время его нельзя отключить).

Сервер Zabbix остановит приём данных от прокси, когда использование кэша истории достигнет 80%. Вместо этого эти прокси будут помещены в список троттлинга. Это будет продолжаться до тех пор, пока использование кэша не упадёт до 60%. Теперь сервер начнёт принимать данные от прокси по очереди, определенной списком троттлинга. Это означает, что первый прокси-сервер, который пытался выгрузить данные в течение периода троттлинга, будет обслужен первым, и до тех пор, пока он не завершит, сервер не будет принимать данные от других прокси.

Этот режим троттлинга будет продолжаться до тех пор, пока или использование кэша снова не достигнет 80%, или не упадет до 20%, или пока список троттлинга не опустеет. В первом случае сервер снова перестанет принимать данные прокси. В остальных двух случаях сервер начнёт работать как обычно, принимая данные со всех прокси.

Приведённую выше информацию можно проиллюстрировать следующей таблицей:

|Использование на запись<br>кэша истории|Режим сервера Zabbix|Действие сервера Zabbix|
|--|--|------|
|Достигает 80% |Ожидание|Останавливает приём данных от прокси, но поддерживает *список троттлинга* (упорядоченный по приоритету список прокси-серверов, с которыми надо будет связаться позже).|
|Падает до 60% |Троттлинг|Начинает обработку по списку троттлинга, но всё ещё не принимает данные от прокси.|
|Падает до 20% |Обычный|Удаляет список троттлинга и начинает обычный приём данных от прокси.|

Вы можете использовать внутренний элемент данных [zabbix[wcache,history,pused]](/manual/config/items/itemtypes/internal#wcache), чтобы скоррелировать это поведение сервера Zabbix с метрикой.

[comment]: # ({/bde28545-737fe0c2})

[comment]: # ({0f7bc9e3-e3203196})
### Настройка

Если у вас есть [установленный](/manual/installation/install) и [настроенный](/manual/appendix/config/zabbix_proxy) прокси, то самое время настроить его в веб-интерфейсе Zabbix.

[comment]: # ({/0f7bc9e3-e3203196})

[comment]: # ({e8649a6d-a5555aaf})
##### Добавление прокси

Для настройки прокси в веб-интерфейсе Zabbix:

-   Перейдите к: *Администрирование → Прокси (Administration → Proxies)*
-   Нажмите на *Создать прокси (Create proxy)*

![](../../../assets/en/manual/distributed_monitoring/proxy.png){width="600"}

|Параметр|<|Описание|
|-|----------|----------------------------------------|
|*Имя прокси*<br>*(Proxy name)*|<|Введите имя прокси. Оно должно совпадать с именем параметра *Hostname* в файле конфигурации прокси.|
|*Группа прокси*<br>*(Proxy group)*|<|Выберите одну группу прокси для [балансировки нагрузки/высокой доступности](/manual/distributed_monitoring/proxies/ha) прокси-сервера.|
|*Адрес для активных агентов*<br>*(Address for active agents)*|<|Введите адрес, к которому должны подключаться наблюдаемые активные агенты или sender'ы. Поддерживается **только** для агентов Zabbix 7.0 или новее.<br>Этот адрес используется для подключения как к активным, так и пассивным прокси-серверам. Это поле доступно, только если в поле *Группа прокси (Proxy group)* выбрана группа прокси.|
| |*Адрес (Address)*|IP адрес/DNS имя для подключения.|
|^|*Порт (Port)*|Номер TCP порта для подключения (по умолчанию 10051). Поддерживаются пользовательские макросы.|
|*Режим прокси*<br>*(Proxy mode)*|<|Выберите режим прокси.<br>**Активный (Active)** — прокси будет подключаться к Zabbix серверу и запрашивать данные конфигурации<br>**Пассивный (Passive)** — Zabbix сервер будет подключаться к прокси<br>*Обратите внимание*, что при использовании активного прокси без шифрованных коммуникаций (конфиденциальные) данные конфигурации прокси могут стать доступны лицам, имеющим доступ к порту траппера Zabbix сервера. Такое возможно потому, что, если аутентификация не выполняется или адреса прокси не ограничены в поле *Адрес прокси*, то кто угодно может представиться активным прокси и запросить данные конфигурации.|
|*Адрес прокси*<br>*(Proxy address)*|<|Если задано значение, тогда запросы активного прокси принимаются только из этого списка разделённых запятыми IP адресов, опционально в CIDR нотации, или DNS имён активных Zabbix прокси.<br>Это поле доступно, только если в поле *Режим прокси* выбран активный прокси. Макросы не поддерживаются.|
|*Интерфейс*<br>*(Interface)*|<|Укажите детали интерфейса для пассивного прокси.<br>Это поле доступно, только если в поле *Режим прокси* выбран пассивный прокси.|
| |*Адрес*<br>*(Address)*|IP адрес или DNS имя пассивного прокси.|
|^|*Порт (Port)*|Номер TCP порта пассивного прокси (по умолчанию 10051). Поддерживаются пользовательские макросы.|
|*Описание (Description)*|<|Введите описание прокси.|

Вкладка **Шифрование** позволяет вам требовать [шифрованных соединений](/manual/encryption) с прокси.

|Параметр|Описание|
|--|--------|
|*Подключения к прокси*<br>*(Connections to proxy)*|Каким образом сервер подключается к пассивному прокси: без шифрования (по умолчанию), используя PSK (pre-shared key) или сертификат.|
|*Соединения с прокси*<br>*(Connections from proxy)*|Выберите, какой тип подключений разрешён с активного прокси. Можно выбрать несколько типов соединений одновременно (полезно при тестировании и переключении на другой тип соединения). По умолчанию — «Без шифрования».|
|*Издатель*<br>*(Issuer)*|Разрешённый эмитент сертификата. Сертификат сначала подтверждается CA (центром сертификации). Если он действительный, подписан с помощью CA, тогда можно использовать поле *Издатель* для более строгого ограничения разрешённых CA. Это поле опционально, предназначено для использования, если ваша Zabbix инсталляция использует сертификаты от нескольких CA.|
|*Тема*<br>*(Subject)*|Разрешённая тема сертификата. Сертификат сначала подтверждается CA. Если он действительный, подписан с помощью CA, тогда можно использовать поле *Тема*, чтобы разрешить только одно значение строки *Тема*. Если поле пустое, тогда принимается любой сертификат, подписанный настроенным CA.|
|*Идентификатор PSK*<br>*(PSK identity)*|Строка идентификации pre-shared key.<br>Не помещайте чувствительную информацию в идентификатор PSK, для информирования принимающей стороны об используемом PSK он передаётся по сети в нешифрованном виде.|
|*PSK*|Pre-shared key (строка в шестнадцатеричном формате). Максимальная длина: 512 шестнадцатеричных цифр (256-байт PSK), если Zabbix использует библиотеки GnuTLS или OpenSSL, 64 шестнадцатеричных цифры (32-байт PSK), если Zabbix использует библиотеку mbed TLS (PolarSSL). Пример: 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952|

Вкладка **Время ожидания (Timeouts)** позволяет переопределить [глобальные](/manual/web_interface/frontend_sections/administration/general#время-ожидания) тайм-ауты для тех типов элементов данных, которые это поддерживают.

![](../../../assets/en/manual/distributed_monitoring/proxy_timeout.png){width="600"}

|Параметр|Описание|
|--|--------|
|*Время ожидания по типам элементов данных*<br>*(Timeouts for item types)*|Выберите вариант тайм-аута:<br>**Глобальный (Global)** — используется глобальный тайм-аут (отображается на сером фоне в поле *Время ожидания (Timeout)* по каждому типу элементов данных);<br>**Замещение (Override)** — используется настраиваемый тайм-аут (указанный в поле *Время ожидания (Timeout)* по каждому типу элементов данных). Допустипый диапазон: 1 - 600s (по умолчанию: наследуется от [глобальных](/manual/web_interface/frontend_sections/administration/general#время-ожидания) тайм-аутов). Поддерживаются [суффиксы времени](/manual/appendix/suffixes#суффиксы-времени), например: 30s, 1m, и [пользовательские макросы](/manual/config/macros/user_macros).<br><br>Щелчок по ссылке *Глобальное время ожидания (Global timeouts)* позволяет настроить [глобальные](/manual/web_interface/frontend_sections/administration/general#время-ожидания) тайм-ауты. Обратите внимание, что ссылка *Глобальное время ожидания (Global timeouts)* видна только пользователям с типом  *Супер-администратор (Super admin)*, имеющим доступ к разделу веб-интерфейса *Администрирование (Administration)* → [*Общие (General)*](/manual/web_interface/frontend_sections/administration/general).<br><br>Поддерживаемые типы элементов данных:<br>- [Zabbix агент (Zabbix agent)](/manual/config/items/itemtypes/zabbix_agent) (как пассивные, так и активные проверки)<br>- [Простая проверка (Simple check)](/manual/config/items/itemtypes/simple_checks) (за исключением элементов данных `icmpping*` и `vmware.*`)<br>- [SNMP агент (SNMP agent)](/manual/config/items/itemtypes/snmp) (только для элементов данных SNMP `walk[OID]` и `get[OID]`)<br>- [Внешняя проверка
 (External check)](/manual/config/items/itemtypes/external)<br>- [Монитор баз данных (Database monitor)](/manual/config/items/itemtypes/odbc_checks)<br>- [HTTP агент (HTTP agent)](/manual/config/items/itemtypes/http)<br>- [SSH агент (SSH agent)](/manual/config/items/itemtypes/ssh_checks)<br>- [TELNET агент (TELNET agent)](/manual/config/items/itemtypes/telnet_checks)<br>- [Скрипт (Script)](/manual/config/items/itemtypes/script)<br>- [Браузер (Browser)](/manual/config/items/itemtypes/browser)<br><br>Обратите внимание, что тайм-ауты, заданные в разделе **Замещение**, будут иметь приоритет над глобальными, но будут переопределены индивидуальными тайм-аутами элементов данных, если они указаны при [настройке элементов данных](/manual/config/items/item#настройка).|

::: noteclassic
Если мажорная версия прокси не совпадает с мажорной версией сервера,
рядом с надписью *Время ожидания по типам элементов данных (Timeouts for item types)* отобразится значок
![](../../../assets/en/manual/distributed_monitoring/info_yellow.png){class="nozoom"}, при наведении мышью на который отобразится сообщение:
«Timeouts disabled because the proxy and server versions do not match (Тайм-ауты отключены, так как версии прокси и сервера не совпадают)».
В таких случаях прокси будет использовать параметр [`Timeout`](/manual/appendix/config/zabbix_proxy#timeout) из файла конфигурации прокси.
:::

Диалог редактирования существующего прокси имеет следующие дополнительные кнопки:

-   *Обновить конфигурацию (Refresh configuration)* — обновить конфигурацию прокси-сервера
-   *Клонировать (Clone)* — создать новый прокси-сервер на основе свойств существующего прокси
-   *Удалить (Delete)* — удалить прокси-сервер

[comment]: # ({/e8649a6d-a5555aaf})

[comment]: # ({5fe15bb4-96c17aaf})
##### Настройка узлов сети

Указать, что конкретные узлы сети должны наблюдаться через прокси или группу прокси, вы можете в диалоге [настройки узла сети](/manual/config/hosts/host), используя поле *Наблюдение через (Monitored by)*.

![](../../../assets/en/manual/proxies/proxy_set.png){width="600"}

[Массовое обновление](/manual/config/hosts/hostupdate) узлов сети является ещё одним способом указать, что узлы сети должны наблюдаться через прокси или группу прокси.

[comment]: # ({/5fe15bb4-96c17aaf})
