НАЗНАЧЕНИЕ
Развертывание виртуального сервера Zabbix Proxy для мониторинга локальных агентов.
ПРИМЕНЕНИЕ
Нужно перенастроить агентов для связи с Zabbix Proxy, чтобы этот сервер отправлял данные на Zabbix Server.
УСЛОВИЕ
- Гипервизор (удобней Vmware Workstation);
- iso-образ Debian 13;
- Сформированный файл zabbix_proxy.conf и ключ proxy.psk (их нужно создать и сгенерировать самому);
- Место на диске (для развертывания ВМ);
- Наличие доступа к Zabbix Server;
- Схожие версии агентов, сервера и прокси (по крайней мере, версии 7.4.x).
ШАГИ
Шаг 1: Развертывание ВМ, установка Debian и настройки сети
- Запустить Vmware Workstation Pro и создать виртуальную машину, выбрав iso-образ Debian;
- Выделить 1 ядро процессора, 2 Гб ОЗУ и примерно 16-20 Гб дисковой памяти, сеть обязательно Bridge;
- Запустить установщик Debian, все выбрать по умолчанию, кроме трех моментов:
- имя хоста лучше задать примерно zbx-proxy-client (вместо client выбрать другое имя);
- имя пользователя для простоты лучше задать zbx;
- после запуска tasksel выбрать только сервер SSH и стандартные системные утилиты, то есть без DE.
- После завершения установки перезагрузиться и ввести базовые команды:
sudo apt update && sudo apt -y upgrade
sudo timedatectl set-timezone Europe/Moscow
ip a
ip route
sudo apt install -y resolvconf curl wget
sudo systemctl restart networking
- Изменить DHCP на статику:
-
сначала открыть текстовым редактором настройки сети:
sudo nano /etc/network/interfaces -
затем добавить следующее в конфиг:
allow-hotplug ens33
iface ens33 inet static
address 192.168.X.X/24
gateway 192.168.X.1
dns-nameservers <тот DNS, что был в resolv.conf>
- после сохранить, выйти из редактора и перезапустить сетевую службу:
sudo systemctl restart networking
- Проверить изменения сети:
ip a # адрес без пометки "dynamic" и без таймеров valid_lft
cat /etc/resolv.conf # если DNS-строка пропала — прописать вручную:
echo "nameserver
<DNS>" | sudo tee /etc/resolv.conf
ping <шлюз>
ping ya.ru
Шаг 2: Установка и настройка Zabbix Proxy
- Скачать репозиторий и установить Zabbix Proxy:
wget https://repo.zabbix.com/zabbix/7.4/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.4+debian13_all.deb
sudo dpkg -i zabbix-release_latest_7.4+debian13_all.deb
sudo apt update
sudo apt install -y zabbix-proxy-sqlite3 zabbix-get fping
- Скопировать конфиг zabbix_proxy.conf и ключ proxy.psk из Windows в ВМ (они должны быть в одной сети):
scp .\zabbix_proxy.conf .\proxy.psk zbx@<IP-прокси>:~/
- Раскидать конфиг и ключ по нужным папкам внутри Debian и дать права на них:
sudo cp zabbix_proxy.conf /etc/zabbix/zabbix_proxy.conf
sudo cp proxy.psk /etc/zabbix/proxy.psk
sudo chown zabbix:zabbix /etc/zabbix/proxy.psk
sudo chmod 600 /etc/zabbix/proxy.psk
- Проверить на «невидимый мусор из Windows»:
file /etc/zabbix/zabbix_proxy.conf # если видите "CRLF line terminators" — лечим:
sudo apt install -y dos2unix
sudo dos2unix /etc/zabbix/zabbix_proxy.conf
- Проверить и поправить конфиг:
- открыть в редакторе:
sudo nano /etc/zabbix/zabbix_proxy.conf
- проверить по чек-листу настройки:
| Параметр | Что должно быть |
|---|---|
LogType |
file |
LogFile |
обязательно явно прописан, например /var/log/zabbix/zabbix_proxy.log. Если LogType=file, а LogFile не задан — служба не стартует. |
ProxyBufferMode |
Для одного клиента на SQLite проще всего disk. |
ProxyMemoryBufferSize |
Если ProxyBufferMode=disk — эту строку нужно удалить/закомментировать. Она конфликтует с ProxyLocalBuffer и валит запуск. |
ProxyOfflineBuffer, ProxyLocalBuffer |
Работают только с disk-режимом — оставить как есть. |
PidFile |
Прописать явно: PidFile=/run/zabbix/zabbix_proxy.pid. Если не задать — демон пишет PID в свой дефолтный путь (обычно /tmp), а systemd-юнит ждёт файл строго в /run/zabbix/... — служба вечно висит в статусе activating, хотя реально работает. |
ConfigFrequency |
Устарел, лучше переименовать в ProxyConfigFrequency (иначе просто warning, не критично). |
DBName |
Полный путь к файлу SQLite, например /var/lib/zabbix/zabbix_proxy.db. |
Hostname |
Должно точно совпадать с именем прокси, заведённым в Zabbix-фронтенде (Administration → Proxies). |
TLSConnect, TLSPSKIdentity, TLSPSKFile |
Identity должна точно совпадать со значением на вкладке «Шифрование» прокси в веб-интерфейсе; в файле по TLSPSKFile — ровно 64 hex-символа, без комментариев и лишних строк. |
- после сохранить и выйти из редактора;
- закрепить директорию
/run/zabbix, чтобы она пересоздавалась при каждой перезагрузке (/run— tmpfs, обнуляется):
echo 'd /run/zabbix 0755 zabbix zabbix -' | sudo tee /etc/tmpfiles.d/zabbix-proxy.conf
sudo systemd-tmpfiles --create /etc/tmpfiles.d/zabbix-proxy.conf
Для быстрой проверки конфига без танцев с systemctl+journalctl:**
sudo -u zabbix zabbix_proxy -c /etc/zabbix/zabbix_proxy.conf -f
- Запустить службу:
sudo mkdir -p /var/lib/zabbix && sudo chown zabbix:zabbix /var/lib/zabbix
sudo systemctl enable --now zabbix-proxy
sudo systemctl status zabbix-proxy
- Проверить связь с сервером Zabbix:
getent hosts <ip-адрес Zabbix-сервера или DNS-имя> # должно вернуть белый ip
nc -vz <ip-адрес Zabbix-сервера или DNS-имя> 10051 # должно быть "succeeded"/"open"
curl -s ifconfig.me; echo # внешний IP площадки
Шаг 3: Установка и настройка Zabbix агентов той же сети, что и Zabbix Proxy
- Установить Zabbix Agent 2 на клиентские ПК;
- Открыть текстовый редактор от имени администратора и оттуда открыть zabbix_agent2.conf;
- Привести настройки к следующему виду:
Server=<IP виртуалки с прокси>
ServerActive=<IP виртуалки с прокси>
Hostname=<уникальное имя машины, латиницей>
HostMetadata=client:<клиент>;os:windows;mode:active
Для справки:
-
Hostnameдолжен посимвольно совпадать с именем узла в Zabbix — это самая частая причина, почему хост «не виден». Опечатка на одну букву (SRVvsSRV1) — и данные никуда не привязываются. -
HostMetadataработает только вместе с настроенным правилом автоregистрации на сервере (Configuration/Data collection → Actions → Autoregistration actions). Если правило не настроено — узел нужно создавать вручную в веб-интерфейсе с точно таким же именем. -
Restart-Service «Zabbix Agent 2» — после правки конфига служба сама его не перечитывает. Выбор режима — определитесь заранее и придерживайтесь одного варианта на клиента:
-
Active (
mode:active, шаблон «… by Zabbix agent active»): агент сам стучится к прокси. У узла в веб-интерфейсе интерфейс «Агент» не нужен вообще — если он есть, лучше удалить, иначе индикатор ZBX будет висеть серым, пытаясь опросить нерабочий адрес. -
Passive (
mode:passive, обычный шаблон «… by Zabbix agent», без «active»): прокси сам стучится к агенту по локальной сети клиента. Для этого на Windows-машине клиента нужно разрешить входящие подключения на порт 10050 от IP прокси в Windows Firewall, а в свойствах узла в веб-интерфейсе интерфейс «Агент» должен указывать на реальный локальный IP этой машины (не IP прокси и не белый IP).
На роутере/ИБП/коммутаторе, если их нужно мониторить — включить SNMP v2c, сообщить community-строку и адреса, проверки настроятся на стороне сервера, опрашивать будет прокси.
- Сохранить изменения и перезапустить службу Zabbix Agent2 через диспетчер задач;
Шаг 4: Создание узла Proxy и добавление клиентского ПК на Zabbix Server
- Авторизоваться в веб-конфигураторе Zabbix Server;
- В Администрирование -> Прокси создать прокси с режимом «Активный», указав имя и вставив ключ PSK (все в соответствии с zabbix_proxy.conf;
- В Сбор данных -> Узлы сети создать узел сети со следующими настройками:
- имя хоста — такое же, какое указано в конфиге Zabbix Agent2 у клиентского ПК в строке «Hostname»;
- шаблон — Windows by zabbix agent active (или Linux by zabbix agent active);
- группы узлов сети — Discovered hosts и Silent monitoring;
- наблюдение — через прокси (указать имя прокси, которое было создано в пункте 19).
РЕЗУЛЬТАТ
Виртуальная машина Zabbix Proxy поднята, агенты посылают информацию о себе Proxy, оттуда уже идет отправка на сервер. Даже в случае сбоев сети информация об агентах сохраняется на сервере Zabbix Proxy 30 дней по умолчанию.
ТИПОВЫЕ ОШИБКИ
Будет приведено в виде таблицы:
| Симптом | Причина | Решение |
|---|---|---|
В логе агента host [X] not found |
Hostname в конфиге не совпадает с именем хоста в Zabbix |
Свериться с именами и подправить либо в конфиге агента, либо в узле ести в веб-конфигураторе Zabbix |
| Прокси стартует и сразу падает | Права на proxy.psk (нужно zabbix:zabbix, chmod 600) |
Дать права (смотреть пункт 9) |
cannot connect to server |
Закрыт исходящий TCP 10051 на фаерволе клиента | Открыть порт 10051 (в брандмауэре Windows, в Linux утилитой ufw или на роутере) |
| Данные не идут, ошибок нет | Не перезапустили службу агента после правки конфига | После каждой правки перезапускать службу агента |
| Установщик Debian не грузится в Hyper-V | Secure Boot: нужен шаблон Microsoft UEFI CA | Разобраться с шаблоном; отключить Secure Boot; использовать другой гипервизор |
| После перезагрузки сервера мониторинг пропал (VMware) | Не настроен автозапуск VM (Task Scheduler + vmrun) |
Через планировщик задач настроить автозапуск ВМ без gui (есть отдельная инструкция) |
| Данные приходят с расхождением по времени | Не выставлен часовой пояс / не синхронизировано время на VM | Ввести команду sudo timedatectl set-timezone Europe/Moscow |
ERROR: "LogType" "file" parameter requires "LogFile" |
LogFile не прописан явно в конфиге |
Прописать в конфиге zabbix_proxy.conf строку LogFile=/var/log/zabbix/zabbix_proxy.log |
ERROR: ProxyBufferMode ... cannot be set to "memory"/"hybrid" when ProxyLocalBuffer is set |
Конфликт параметров буфера | Использовать ProxyBufferMode=disk, убрать ProxyMemoryBufferSize |
Служба вечно висит в activating (start), хотя процессы явно работают |
PidFile не прописан в конфиге — путь по умолчанию не совпадает с тем, что ждёт systemd-юнит |
В конфиге zabbix_proxy.conf прописать PidFile=/run/zabbix/zabbix_proxy.pid |
После перезагрузки VM снова Can't open PID file |
/run — tmpfs, папка /run/zabbix не создаётся заново без правила в /etc/tmpfiles.d/ |
Ввести команды echo 'd /run/zabbix 0755 zabbix zabbix -', sudo tee /etc/tmpfiles.d/zabbix-proxy.conf и sudo systemd-tmpfiles --create /etc/tmpfiles.d/zabbix-proxy.conf |
| Параметры в конфиге выглядят нормально, но парсер ругается непонятно | Windows-переносы строк (CRLF) в файле, собранном на Windows — лечится dos2unix |
См. пункт 10 |
| Индикатор ZBX у узла серый, хотя активные данные идут | Поле «Интерфейс» указывает на недостижимый IP | Для чисто активного узла интерфейс не нужен вообще, надо удалить |
| Агенты клиента со временем «теряют» прокси | IP виртуалки с прокси был на DHCP и сменился | Закрепить статический ip |
| Сеть пропала после установки статического ip | DNS-сервера отсутствуют, не резолвятся | Установить resolveconf и перезапустить сетевую службу (или просто перезагрузить сервер), после проверить командами ip a и ip route |



