4. Прокси

Обзор

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

Развёртывание прокси не обязательно, но может быть очень полезно для распределения нагрузки одиночного Zabbix сервера. Если только прокси собирают данные, то обработка данных на сервере не так сильно нагружает CPU и I/O диска.

Zabbix прокси — идеальное решение для централизованного мониторинга удалённых объектов, филиалов и сетей, где отсутствуют локальные администраторы.

Для Zabbix прокси требуется отдельная база данных.

Zabbix прокси поддерживает следующие базы данных: SQLite, MySQL и PostgreSQL. Вы можете использовать Oracle на свой собственный риск; при этом возможны определённые ограничения — например, в значениях, возвращаемых правилами низкоуровневого обнаружения.

Смотрите также: Использование прокси в распределённой среде

Запуск прокси

Если установлен из пакета

Zabbix прокси работает как демон. Его можно запустить, выполнив:

systemctl start zabbix-proxy

Эта команда будет работать на большинстве систем GNU/Linux. На других системах вам, возможно, потребуется выполнить:

/etc/init.d/zabbix-proxy start

Аналогично, для остановки/перезапуска/просмотра состояния Zabbix прокси, используйте следующие команды:

systemctl stop zabbix-proxy
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
Запуск вручную

Если приведённые ранее команды не работают, вам необходимо запустить прокси вручную. Найдите путь к бинарному файлу zabbix_proxy и выполните:

zabbix_proxy

С Zabbix прокси можно использовать следующие параметры командной строки:

-c --config <файл>             Путь к файлу конфигурации
-f --foreground                Запуск Zabbix прокси без перехода в фоновый режим
-R --runtime-control <опция>   Выполнение административных функций
-T --test-config               Проверка файла конфигурации и выход
-h --help                      Вывод этого сообщения помощи
-V --version                   Вывод номера версии

Примеры запуска Zabbix прокси с параметрами командой строки:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
Управление во время работы

Параметры управления во время работы:

Option Description Target
config_cache_reload Перезагрузить кэш конфигурации. Игнорируется, если кэш в данный момент загружается.
Активный прокси Zabbix подключится к серверу Zabbix и запросит данные конфигурации.
Пассивный прокси Zabbix запросит данные конфигурации у сервера Zabbix при следующем подключении сервера к прокси.
diaginfo[=<section>] Собрать диагностическую информацию в файле журнала прокси. historycache - статистика кэша истории;
preprocessing - статистика менеджера предварительной обработки;
locks - список мьютексов (пусто в системах BSD).
snmp_cache_reload Перезагрузить кэш SNMP - очистить свойства SNMP engine (engine time, engine boots, engine id, credentials) для всех узлов сети. Используйте для принудительной глобальной очистки кэша при устранении неполадок SNMP.
housekeeper_execute Запустить процедуру housekeeping. Игнорируется, если процедура housekeeping уже выполняется.
log_level_increase[=<target>] Повысить уровень журналирования, влияет на все процессы, если target не указан.
Не поддерживается в системах BSD.
process type - все процессы указанного типа (например, poller).
См. все типы процессов прокси.
process type,N - тип процесса и номер (например, poller,3).
pid - идентификатор процесса (1 to 65535). Для больших значений указывайте target как 'process type,N'.
log_level_decrease[=<target>] Понизить уровень журналирования, влияет на все процессы, если target не указан.
Не поддерживается в системах BSD.
prof_enable[=<target>] Включить профилирование.
Влияет на все процессы, если target не указан.
Включенное профилирование предоставляет сведения обо всех rwlocks/mutexes по имени функции.
process type - все процессы указанного типа (например, history syncer).
См. все типы процессов прокси.
process type,N - тип процесса и номер (например, history syncer,1)
pid - идентификатор процесса (1 to 65535). Для больших значений указывайте target как 'process type,N'.
scope - rwlock, mutex, processing можно использовать с типом процесса и номером (например, history syncer,1,processing) или со всеми процессами данного типа (например, history syncer,rwlock).
prof_disable[=<target>] Отключить профилирование.
Влияет на все процессы, если target не указан.
process type - все процессы указанного типа (например, history syncer).
См. все типы процессов прокси.
process type,N - тип процесса и номер (например, history syncer,1).
pid - идентификатор процесса (1 to 65535). Для больших значений указывайте target как 'process type,N'.

Когда тип процесса указан как target для управления во время работы, команда применяется только к выполняющимся процессам этого типа. Если в данный момент не выполняется ни одного процесса указанного типа, команда возвращает ошибку:

zabbix_proxy -R log_level_increase='data sender'
Cannot redirect signal: "data sender" process does not exist

Пример использования управления во время работы для перезагрузки кэша конфигурации прокси:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload

Примеры использования управления во время работы для сбора диагностической информации:

# Собрать всю доступную диагностическую информацию в файле журнала прокси:
zabbix_proxy -R diaginfo

# Собрать статистику кэша истории в файле журнала прокси:
zabbix_proxy -R diaginfo=historycache

Пример использования управления во время работы для перезагрузки кэша SNMP:

zabbix_proxy -R snmp_cache_reload

Когда интерфейс SNMPv3 обновляется через веб-интерфейс Zabbix, Zabbix в большинстве случаев автоматически перезагружает новые учетные данные SNMPv3 для этого интерфейса; используйте -R snmp_cache_reload только если опрос по-прежнему не выполняется после изменения учетных данных (например, из-за несоответствий engineBoots/engineID или устройств, не соответствующих RFC), либо если требуется принудительно очистить глобальный кэш SNMP для устранения неполадок.

Пример использования управления во время работы для запуска housekeeper:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute

Примеры использования управления во время работы для изменения уровня журналирования:

# Повысить уровень журналирования всех процессов:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase

# Повысить уровень журналирования второго процесса poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2

# Повысить уровень журналирования процесса с PID 1234:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234

# Понизить уровень журналирования всех процессов http poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
Пользователь процесса

Zabbix прокси спроектирован для запуска от непривилегированного пользователя (non-root). Он будет работать от любого непривилегированного пользователя, от которого был запущен. Таким образом, вы можете запускать прокси от имени любого непривилегированного пользователя, без каких либо последствий.

Если вы попытаетесь запустить его от имени «root», прокси сразу переключится на пользователя «zabbix», который должен присутствовать в вашей системе. Единственный способ запустить прокси от пользователя «root» — соответствующим образом отредактировать параметр AllowRoot в файле конфигурации прокси.

Файл конфигурации

Смотрите опции файла конфигурации для получения подробной информации по настройке zabbix_proxy.

Типы процессов и потоки прокси

  • agent poller — асинхронный процесс поллера для пассивных проверок с рабочим потоком (with a worker thread);
  • availability manager — процесс для обновления доступности узлов сети;
  • browser poller — процесс поллера для проверок браузерных элементов данных;
  • configuration syncer — процесс управления кэшем данных конфигурации в оперативной памяти;
  • data sender — процесс отправки данных с прокси;
  • discovery manager — процесс менеджера для обнаружения устройств;
  • discovery worker — процесс для выполнения задач обнаружения от discovery manager-а;
  • history syncer — процесс, который записывает историю в БД;
  • housekeeper — процесс удаления истории устаревших элементов данных;
  • http agent poller — процесс асинхронного поллера для проверок HTTP с рабочим потоком;
  • http poller — поллер веб-мониторинга;
  • icmp pinger — поллер проверок icmpping;
  • internal poller — поллер внутренних проверок;
  • ipmi manager — менеджер IPMI поллеров;
  • ipmi poller — поллер для проверок через IPMI;
  • java poller — поллер для Java проверок;
  • odbc poller — поллер для ODBC проверок;
  • poller — обычный поллер для пассивных проверок;
  • preprocessing manager — менеджер задач предобработки, выполняемых рабочими потоками;
  • preprocessing worker — рабочий поток предобработки данных;
  • self-monitoring — процесс сбора внутренней статистики сервера;
  • snmp poller — процесс асинхронного поллера для проверок SNMP с рабочим потоком (только элементы данных walk[OID] и get[OID]);
  • snmp trapper — траппер сбора/обработки SNMP трапов;
  • task manager — процесс для удалённого выполнения задач, которые запрашиваются другими компонентами (например, функционал закрытия проблемы, подтверждения проблемы, принудительной проверки значения элемента данных, удалённой команды);
  • trapper — процесс-траппер для активных проверок, трапов и взаимодействия с прокси;
  • unreachable poller — поллер недоступных устройств;
  • vmware collector — сборщик данных VMware, ответственный за сбор данных от служб VMware.

Можно воспользоваться файлом журнала прокси для выявления этих типов процессов.

Начиная с версии Zabbix 7.0.22, файл журнала прокси-сервера создаётся с правами на чтение и запись только для владельца файла. Кроме того, файл доступен для чтения группе владельца. Все остальные права запрещены.

Различные типы процессов Zabbix прокси можно контролировать, используя внутренний элемент данных zabbix[process,<тип>,<режим>,<состояние>].

Поддерживаемые платформы

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

Буфер памяти

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

В инсталляциях до версии Zabbix 7.0 собранные данные сохранялись в базе данных перед выгрузкой на сервер Zabbix. Для этих инсталляций такое поведение остаётся поведением по умолчанию после обновления до Zabbix версии 7.0.

Для оптимизации производительности рекомендуется настроить использование буфера памяти на прокси. Это возможно путём изменения значения ProxyBufferMode с disk (жёстко запрограммированное значение по умолчанию для существующих инсталляций) на hybrid (рекомендуется) или memory. Также необходимо установить размер буфера памяти (параметр ProxyMemoryBufferSize).

В гибридном режиме (hybrid) буфер защищён от потери данных путём сброса неотправленных данных в базу данных в случаях, если прокси-сервер остановлен, буфер заполнен или данные слишком старые. Когда все значения были сброшены в базу данных, прокси возвращается к использованию буфера памяти.

В режиме «memory» будет использоваться буфер памяти, однако защита от потери данных отсутствует. Если прокси остановлен или память переполнится, неотправленные данные будут утеряны.

Гибридный режим (ProxyBufferMode=hybrid) применяется ко всем новым инсталляциям, начиная с версии Zabbix 7.0.

Дополнительные параметры, такие как ProxyMemoryBufferSize и ProxyMemoryBufferAge, определяют размер буфера памяти и максимальный возраст данных в буфере соответственно.

Обратите внимание, что при конфликтующих настройках прокси-сервер выдаст сообщение об ошибке и не запустится, например, если:

  • Для ProxyBufferMode установлено значение hybrid или memory, а для ProxyMemoryBufferSize — 0;
  • Для ProxyBufferMode установлено значение hybrid или memory, а ProxyLocalBuffer — не 0.

Региональные настройки (локаль)

Обратите внимание, что прокси серверу требуется локаль UTF-8, чтобы некоторые текстовые элементы данных интерпретировались корректно. Большинство современных Unix-подобных систем уже имеют локаль UTF-8 по умолчанию; тем не менее, есть некоторые системы, где это необходимо указывать вручную.

Расчёт очередей во время обслуживания

Прокси-сервер Zabbix не знает о периодах обслуживания; подробности смотрите в Расчёт очередей во время обслуживания.