Перейти к основному содержимому

ALIMUSAEV — IT и 1С

C:\> type \instructions\linux\razvernut-i-nastroit-virtualnyj-server-zabbix-proxy.md

Развернуть и настроить виртуальный сервер Zabbix Proxy

НАЗНАЧЕНИЕ

Развертывание виртуального сервера Zabbix Proxy для мониторинга локальных агентов.

ПРИМЕНЕНИЕ

Нужно перенастроить агентов для связи с Zabbix Proxy, чтобы этот сервер отправлял данные на Zabbix Server.

УСЛОВИЕ

  • Гипервизор (удобней Vmware Workstation);
  • iso-образ Debian 13;
  • Сформированный файл zabbix_proxy.conf и ключ proxy.psk (их нужно создать и сгенерировать самому);
  • Место на диске (для развертывания ВМ);
  • Наличие доступа к Zabbix Server;
  • Схожие версии агентов, сервера и прокси (по крайней мере, версии 7.4.x).

ШАГИ

Шаг 1: Развертывание ВМ, установка Debian и настройки сети

  1. Запустить Vmware Workstation Pro и создать виртуальную машину, выбрав iso-образ Debian;
  2. Выделить 1 ядро процессора, 2 Гб ОЗУ и примерно 16-20 Гб дисковой памяти, сеть обязательно Bridge;
  3. Запустить установщик Debian, все выбрать по умолчанию, кроме трех моментов:
  • имя хоста лучше задать примерно zbx-proxy-client (вместо client выбрать другое имя);
  • имя пользователя для простоты лучше задать zbx;
  • после запуска tasksel выбрать только сервер SSH и стандартные системные утилиты, то есть без DE.
  1. После завершения установки перезагрузиться и ввести базовые команды:
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
  1. Изменить 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
  1. Проверить изменения сети:
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

  1. Скачать репозиторий и установить 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
  1. Скопировать конфиг zabbix_proxy.conf и ключ proxy.psk из Windows в ВМ (они должны быть в одной сети):
scp .\zabbix_proxy.conf .\proxy.psk zbx@<IP-прокси>:~/
  1. Раскидать конфиг и ключ по нужным папкам внутри 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
  1. Проверить на «невидимый мусор из Windows»:
file /etc/zabbix/zabbix_proxy.conf     # если видите "CRLF line terminators" — лечим:
sudo apt install -y dos2unix
sudo dos2unix /etc/zabbix/zabbix_proxy.conf
  1. Проверить и поправить конфиг:
  • открыть в редакторе:
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
  1. Запустить службу:
sudo mkdir -p /var/lib/zabbix && sudo chown zabbix:zabbix /var/lib/zabbix
sudo systemctl enable --now zabbix-proxy
sudo systemctl status zabbix-proxy
  1. Проверить связь с сервером 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

  1. Установить Zabbix Agent 2 на клиентские ПК;
  2. Открыть текстовый редактор от имени администратора и оттуда открыть zabbix_agent2.conf;
  3. Привести настройки к следующему виду:
Server=<IP виртуалки с прокси>
ServerActive=<IP виртуалки с прокси>
Hostname=<уникальное имя машины, латиницей>
HostMetadata=client:<клиент>;os:windows;mode:active

Для справки:

  • Hostname должен посимвольно совпадать с именем узла в Zabbix — это самая частая причина, почему хост «не виден». Опечатка на одну букву (SRV vs SRV1) — и данные никуда не привязываются.

  • 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-строку и адреса, проверки настроятся на стороне сервера, опрашивать будет прокси.

  1. Сохранить изменения и перезапустить службу Zabbix Agent2 через диспетчер задач;

Шаг 4: Создание узла Proxy и добавление клиентского ПК на Zabbix Server

  1. Авторизоваться в веб-конфигураторе Zabbix Server;
  2. В Администрирование -> Прокси создать прокси с режимом «Активный», указав имя и вставив ключ PSK (все в соответствии с zabbix_proxy.conf;
  3. В Сбор данных -> Узлы сети создать узел сети со следующими настройками:
  • имя хоста — такое же, какое указано в конфиге 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