Распределенный мониторинг с использованием прокси
Обзор
Прокси Zabbix можно использовать для создания эффективной и надежной распределенной системы мониторинга.
Прокси разворачиваются локально для сбора данных о производительности и доступности. Затем данные передаются на централизованный сервер.
Прокси Zabbix можно использовать для:
- Мониторинга удаленных площадок
- Мониторинга площадок с ненадежными каналами связи
- Снижения нагрузки на сервер Zabbix при мониторинге тысяч устройств

Прокси требуется только одно TCP-соединение с сервером Zabbix. Это упрощает обход межсетевого экрана, поскольку нужно настроить только одно правило.
Прокси Zabbix должен использовать отдельную базу данных. Указание базы данных сервера Zabbix приведет к нарушению конфигурации.
Все данные, собранные прокси, сначала сохраняются локально, а затем передаются на сервер.
Таким образом, данные не теряются из-за временных проблем связи с сервером.
Параметры ProxyLocalBuffer и ProxyOfflineBuffer в файле конфигурации прокси определяют, как долго данные хранятся локально.
Может случиться так, что прокси, который получает последние изменения конфигурации напрямую из базы данных сервера Zabbix, имеет более актуальную конфигурацию, чем сервер Zabbix, чья конфигурация может обновляться не так быстро из-за значения CacheUpdateFrequency. В результате прокси может начать собирать данные и отправлять их на сервер Zabbix, который эти данные игнорирует.
Прокси Zabbix — это сборщик данных. Он не вычисляет триггеры, не обрабатывает события и не отправляет оповещения. Обзор возможностей прокси приведен в следующей таблице:
| Function | Supported by proxy | |
|---|---|---|
| Items | ||
| Проверки агента Zabbix | Да | |
| Проверки агента Zabbix (активные) | Да 1 | |
| Простые проверки | Да | |
| Элементы данных trapper | Да | |
| Проверки SNMP | Да | |
| SNMP traps | Да | |
| Проверки IPMI | Да | |
| Проверки JMX | Да | |
| Мониторинг лог-файлов | Да | |
| Внутренние проверки | Да | |
| Проверки SSH | Да | |
| Проверки Telnet | Да | |
| Внешние проверки | Да | |
| Зависимые элементы данных | Да | |
| Элементы данных script | Да | |
| Элементы данных browser | Да | |
| Встроенный веб-мониторинг | Да | |
| Предобработка значений элементов данных | Да | |
| Обнаружение сети | Да | |
| Автоматическая регистрация активного агента | Да | |
| Низкоуровневое обнаружение | Да 2 | |
| Удаленные команды | Да | |
| Вычисление триггеров | Нет | |
| Обработка событий | Нет | |
| Корреляция событий | Нет | |
| Отправка оповещений | Нет | |
[1] Чтобы убедиться, что агент запрашивает активные проверки у прокси (а не у сервера), прокси должен быть указан в параметре ServerActive в файле конфигурации агента.
[2] Для LLD прокси Zabbix только собирает и выполняет предобработку данных, а затем отправляет их на сервер Zabbix для дальнейшей обработки.
Возможности прокси
При выборе использования или неиспользования прокси необходимо учитывать несколько факторов.
| Proxy | |
|---|---|
| Легковесный | Да |
| GUI | Нет |
| Работает независимо | Да |
| Простое обслуживание | Да |
| Автоматическое создание БД | Да1 |
| Локальное администрирование | Нет |
| Готов для встроенного оборудования | Да |
| Однонаправленные TCP-соединения | Да |
| Централизованная конфигурация | Да |
| Генерирует уведомления | Нет |
1 Функция автоматического создания БД работает только с SQLite. Для других поддерживаемых баз данных требуется ручная настройка.
Прокси Zabbix не учитывает периоды обслуживания; см. Расчет очередей во время обслуживания для подробностей.
Защита от перегрузки
Если сервер Zabbix был недоступен некоторое время, а прокси собрали много данных, и затем сервер запускается, он может оказаться перегружен (использование history cache некоторое время остается на уровне 95-100%). Такая перегрузка может привести к снижению производительности, когда проверки обрабатываются медленнее, чем должны. Для предотвращения этой ситуации была реализована защита, чтобы избежать проблем, возникающих из-за перегрузки history cache.
Когда history cache сервера Zabbix заполнен, запись в history cache начинает ограничиваться, что приостанавливает процессы сбора данных сервером. Наиболее распространенный случай перегрузки history cache - это период после простоя сервера, когда прокси загружают собранные данные. Чтобы избежать этого, было добавлено ограничение для прокси (в настоящее время его нельзя отключить).
Когда использование history cache достигает 80%, сервер Zabbix переходит в режим ограничения. В режиме ограничения сервер принимает данные от прокси только когда использование history cache ниже 60%, поочередно обслуживая принятые прокси. Как только использование history cache опускается ниже 20%, сервер возвращается в нормальный режим.
Кроме того, в нормальном режиме сервер Zabbix ограничивает отдельные прокси, отправляющие очень большие пакеты (10 000+ записей), если использование history cache превышает 60%.
Это решение принимается в момент, когда сервер оценивает загрузку от прокси, и поэтому не всегда сразу отражается на графиках использования history cache (внутренний элемент данных zabbix[wcache,history,pused] и интервал его обновления могут не зафиксировать кратковременные пики).
Этот режим ограничения будет продолжаться до тех пор, пока либо использование cache снова не достигнет 80%, либо не снизится до 20%, либо список ограничения не станет пустым. В первом случае сервер снова перестанет принимать данные от прокси. В двух других случаях сервер начнет работать нормально, принимая данные от всех прокси.
Приведенную выше информацию можно проиллюстрировать следующей таблицей:
| Использование записи в cache истории |
Режим сервера Zabbix | Действие сервера Zabbix |
|---|---|---|
| Достигает 80% | Ожидание | Прекращает принимать данные от прокси, но сохраняет список ограничения (приоритетный список прокси, к которым нужно обратиться позже). |
| Достигает 60% | Нормальный, но готов к ограничению | Может отклонять очень большие загрузки от прокси (более 10 тыс. записей) при принятии решения о приеме данных; продолжает принимать другие данные от прокси. |
| Снижается до 20% | Нормальный | Удаляет список ограничения и начинает принимать данные от прокси в обычном режиме. |
Для сопоставления этого поведения сервера Zabbix с метрикой можно использовать внутренний элемент данных zabbix[wcache,history,pused].
Конфигурация
После того как вы установили и настроили прокси, пришло время настроить его во веб-интерфейсе 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 с правами на раздел веб-интерфейса Administration > General. Обратите внимание, что хотя тайм-ауты на уровне прокси переопределяют глобальные, они будут переопределены индивидуальными тайм-аутами элементов данных, если они настроены. |
Если основная версия прокси не совпадает с основной версией сервера, рядом с Timeouts for item types будет отображаться значок
с всплывающим сообщением "Timeouts disabled because the proxy and server versions do not match".
В таких случаях прокси будет использовать параметр Timeout из файла конфигурации прокси.
Форма редактирования существующего прокси содержит следующие дополнительные кнопки:
- Refresh configuration - обновить конфигурацию прокси;
- Clone - создать новый прокси на основе свойств существующего прокси;
- Delete - удалить прокси.
Конфигурация узла сети
Вы можете указать, что отдельный узел сети должен отслеживаться прокси или группой прокси, в форме конфигурации узла сети, используя поле Monitored by.

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