1. Прокси

Обзор

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

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

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

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

Прокси требует только одно TCP соединение к Zabbix серверу. Таким образом, будет проще настроить обход брандмауэра, вам потребуется настроить только одно правило в брандмауэре.

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

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

Может случиться, что прокси, получающий изменения конфигурации из базы Zabbix сервера, будет иметь более свежую конфигурацию, чем сам Zabbix сервер, чья конфигурация может обновляться реже согласно значению параметра CacheUpdateFrequency. В результате, прокси начнёт сбор данных и будет отправлять эти данные Zabbix серверу, который будет их игнорировать.

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

Функция Поддержка прокси
Элементы данных
Проверки через Zabbix агент Да
Проверки через Zabbix агент (активный) Да 1
Простые проверки Да
Элементы данных траппера Да
SNMP проверки Да
SNMP трапы Да
IPMI проверки Да
JMX проверки Да
Мониторинг файлов журналов Да
Внутренние проверки Да
Проверки через SSH Да
Проверки через Telnet Да
Внешние проверки Да
Зависимые элементы данных Да
Скриптовые элементы данных Да
Браузерные элементы данных Да
Встроенный веб-мониторинг Да
Предобработка значений элементов данных Да
Обнаружение сети Да
Авторегистрация активных агентов Да
Низкоуровневое обнаружение Да 2
Удалённые команды Да
Вычисление триггеров Нет
Обработка событий Нет
Корреляция событий Нет
Отправка оповещений Нет

[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)

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

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

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

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

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

Щелчок по ссылке Глобальное время ожидания (Global timeouts) позволяет настроить глобальные тайм-ауты. Обратите внимание, что ссылка Глобальное время ожидания (Global timeouts) видна только пользователям с типом Супер-администратор (Super admin), имеющим доступ к разделу веб-интерфейса Администрирование (Administration)Общие (General).

Поддерживаемые типы элементов данных:
- Zabbix агент (Zabbix agent) (как пассивные, так и активные проверки)
- Простая проверка (Simple check) (за исключением элементов данных icmpping* и vmware.*)
- SNMP агент (SNMP agent) (только для элементов данных SNMP walk[OID] и get[OID])
- [Внешняя проверка
(External check)](/manual/config/items/itemtypes/external)
- Монитор баз данных (Database monitor)
- HTTP агент (HTTP agent)
- SSH агент (SSH agent)
- TELNET агент (TELNET agent)
- Скрипт (Script)
- Браузер (Browser)

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

Если мажорная версия прокси не совпадает с мажорной версией сервера, рядом с надписью Время ожидания по типам элементов данных (Timeouts for item types) отобразится значок , при наведении мышью на который отобразится сообщение: «Timeouts disabled because the proxy and server versions do not match (Тайм-ауты отключены, так как версии прокси и сервера не совпадают)». В таких случаях прокси будет использовать параметр Timeout из файла конфигурации прокси.

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

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

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

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