1. Прокси

Обзор

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

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

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

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

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

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

Все данные, собранные прокси, сначала сохраняются локально, а затем передаются на сервер. Благодаря этому данные не теряются из-за временных проблем связи с сервером. Параметры ProxyLocalBuffer и ProxyOfflineBuffer в файле конфигурации прокси определяют, как долго данные хранятся локально.

Может случиться так, что прокси, который получает последние изменения конфигурации напрямую из базы данных сервера Zabbix, имеет более актуальную конфигурацию, чем сервер Zabbix, чья конфигурация может обновляться не так быстро из-за значения CacheUpdateFrequency. В результате прокси может начать собирать данные и отправлять их на сервер 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

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

Защита от перегрузки

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

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

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

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

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

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

Вы можете использовать внутренний элемент данных zabbix[wcache,history,pused], чтобы скоррелировать это поведение сервера Zabbix с метрикой.

Настройка

Если у вас есть установленный и настроенный прокси, то самое время настроить его в веб-интерфейсе Zabbix.

Добавление прокси

Чтобы настроить прокси в Zabbix веб-интерфейсе:

  • Перейдите в: Administration → Proxies
  • Нажмите Create proxy

Parameter Description
Proxy name Введите имя прокси. Оно должно совпадать с именем в параметре Hostname в файле конфигурации прокси.
Proxy group Выберите одну группу прокси для балансировки нагрузки/высокой доступности.
Address for active agents Введите адрес, к которому должны подключаться контролируемые активные агенты или отправители. Поддерживается только для агентов Zabbix 7.0 или более поздней версии.
Этот адрес используется для подключения как к активным, так и к пассивным прокси. Это поле доступно только если в поле Proxy group выбрана группа прокси.
Address IP-адрес/DNS-имя для подключения.
Port Номер TCP-порта (по умолчанию 10051) для подключения. Поддерживаются пользовательские макросы.
Proxy mode Выберите режим прокси.
Active - прокси будет подключаться к серверу Zabbix и запрашивать данные конфигурации
Passive - сервер Zabbix подключается к прокси
Примечание: без шифрования конфиденциальные данные конфигурации прокси могут стать доступны лицам, имеющим доступ к trapper-порту сервера Zabbix, при использовании активного прокси. Это возможно, поскольку любой может выдать себя за активный прокси и запросить данные конфигурации, если аутентификация не выполняется или адреса прокси не ограничены в поле Proxy address.
Proxy address Если указано, запросы активного прокси принимаются только из этого списка IP-адресов, разделенных запятыми, при необходимости в нотации CIDR, или DNS-имен активного прокси Zabbix.
Это поле доступно только если в поле Proxy mode выбран активный прокси. Макросы не поддерживаются.
Interface Введите сведения об интерфейсе для пассивного прокси.
Это поле доступно только если в поле Proxy mode выбран пассивный прокси.
Address IP-адрес/DNS-имя пассивного прокси.
Port Номер TCP-порта пассивного прокси (по умолчанию 10051). Поддерживаются пользовательские макросы.
Description Введите описание прокси.

Вкладка Encryption позволяет требовать зашифрованные соединения с прокси.

Parameter Description
Connections to proxy Как сервер подключается к пассивному прокси: без шифрования (по умолчанию), с использованием PSK (предварительно разделяемого ключа) или сертификата.
Connections from proxy Выберите, какие типы соединений разрешены от активного прокси. Можно выбрать несколько типов соединений одновременно (полезно для тестирования и переключения на другой тип соединения). По умолчанию - "No encryption".
Issuer Разрешенный издатель сертификата. Сначала сертификат проверяется с CA (центром сертификации). Если он действителен и подписан CA, поле Issuer можно использовать для дополнительного ограничения разрешенного CA. Это поле необязательное и предназначено для использования, если ваша установка Zabbix использует сертификаты от нескольких CA.
Subject Разрешенный субъект сертификата. Сначала сертификат проверяется с CA. Если он действителен и подписан CA, поле Subject можно использовать, чтобы разрешить только одно значение строки Subject. Если это поле пустое, принимается любой действительный сертификат, подписанный настроенным CA.
PSK identity Строка идентификатора предварительно разделяемого ключа.
Не помещайте конфиденциальную информацию в PSK identity, она передается по сети без шифрования, чтобы сообщить получателю, какой PSK использовать.
PSK Предварительно разделяемый ключ (hex-строка). Максимальная длина: 512 шестнадцатеричных цифр (PSK длиной 256 байт), если Zabbix использует библиотеку GnuTLS или OpenSSL, 64 шестнадцатеричные цифры (PSK длиной 32 байта), если Zabbix использует библиотеку mbed TLS (PolarSSL). Пример: 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Вкладка Timeouts позволяет переопределять глобальные тайм-ауты для типов элементов данных, которые это поддерживают.

Parameter Description
Timeouts for item types Выберите вариант тайм-аута:
Global - используется глобальный тайм-аут (отображается в неактивном поле Timeout для каждого типа элемента данных);
Override - используется пользовательский тайм-аут (задается в поле Timeout для каждого типа элемента данных). Допустимый диапазон: 1 - 600 с (по умолчанию: наследуется из глобальных тайм-аутов). Поддерживаются суффиксы времени, например 30s, 1m, и пользовательские макросы.

Нажатие ссылки Global timeouts позволяет настроить глобальные тайм-ауты. Обратите внимание, что ссылка Global timeouts видна только пользователям типа Super admin с правами на раздел веб-интерфейса AdministrationGeneral.

Поддерживаемые типы элементов данных:
- Zabbix agent (как пассивные, так и активные проверки)
- Simple check (кроме элементов icmpping*, vmware.*)
- SNMP agent (только для элементов SNMP walk[OID] и get[OID])
- External check
- Database monitor
- HTTP agent
- SSH agent
- TELNET agent
- Script
- Browser

Обратите внимание, что тайм-ауты, заданные в режиме Override, будут иметь приоритет над глобальными, но будут переопределены индивидуальными тайм-аутами элемента данных, если они заданы в настройках элемента данных.

Если основная версия прокси не совпадает с основной версией сервера, значок будет отображаться рядом с Timeouts for item types, а при наведении будет показано сообщение "Timeouts disabled because the proxy and server versions do not match". В таких случаях прокси будет использовать параметр Timeout из файла конфигурации прокси.

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

  • Refresh configuration - обновить конфигурацию прокси
  • Clone - создать новый прокси на основе свойств существующего прокси
  • Delete - удалить прокси
Настройка узлов сети

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

Массовое обновление узлов сети является ещё одним способом указать, что узлы сети должны наблюдаться через прокси или группу прокси.