Что нужно сделать перед переносом Zabbix Proxy
В моём случае старый Zabbix Proxy работает на Ubuntu 20.04, а новый сервер подготовлен на Ubuntu 24.04. Цель — сначала перенести существующий Proxy на новую операционную систему, сохранив его конфигурацию, а затем отдельно выполнить обновление Zabbix.
Перед началом работ рекомендую:
- проверить текущую версию Zabbix Proxy;
- определить используемую базу данных;
- проверить расположение SQLite-базы;
- сохранить конфигурацию Proxy;
- сохранить конфигурацию Zabbix Agent, если он установлен;
- подготовить новый сервер;
- предусмотреть возможность быстрого возврата на старый Proxy.
Перенос самого Zabbix Server я разбирал отдельно в статье Как перенести Zabbix на новый сервер.
Проверяем старый Zabbix Proxy
Перед установкой нового сервера посмотрим версию существующего Proxy:
zabbix_proxy --version
Также проверим операционную систему:
lsb_release -a
И определим расположение базы данных:
grep -E '^[[:space:]]*DBName=' /etc/zabbix/zabbix_proxy.conf
При использовании стандартной конфигурации SQLite результат будет примерно таким:
DBName=/var/lib/zabbix/zabbix_proxy.db
Устанавливаем Zabbix Proxy на новый сервер
На новом сервере сначала подключим репозиторий той же основной версии Zabbix, которая используется на старом Proxy.
В моём случае используется ветка Zabbix 6.0 и Ubuntu 24.04:
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_6.0+ubuntu24.04_all.deb
sudo apt update
Если у вас другая операционная система или версия Zabbix, необходимо выбрать соответствующий пакет на официальном сайте Zabbix.
Устанавливаем Zabbix Proxy с поддержкой SQLite и Zabbix Agent:
sudo apt install zabbix-proxy-sqlite3 zabbix-agent
После установки пока не запускаем новый Proxy.
Если служба была запущена автоматически, остановим её:
sudo systemctl stop zabbix-proxy
Настраиваем часовой пояс нового сервера
В моём случае сервер работает в московском часовом поясе:
sudo timedatectl set-timezone Europe/Moscow
Проверить текущие настройки времени можно командой:
timedatectl
Останавливаем старый Zabbix Proxy
Теперь возвращаемся на старый сервер и останавливаем Proxy:
sudo systemctl stop zabbix-proxy
Проверяем состояние:
systemctl status zabbix-proxy --no-pager
Служба должна находиться в состоянии:
Active: inactive (dead)
Создаём резервную копию SQLite-базы
После остановки Proxy можно безопасно скопировать файл SQLite.
Если используется стандартный путь:
sudo cp /var/lib/zabbix/zabbix_proxy.db ~/zabbix_proxy.db.backup
Проверим файл:
ls -lh ~/zabbix_proxy.db.backup
Почему не стоит хранить базу Zabbix Proxy в /tmp
В старой конфигурации я использовал путь:
DBName=/tmp/zabbix_proxy.db
Сейчас такой вариант я не рекомендую. Каталог /tmp предназначен для временных файлов и может очищаться операционной системой.
Zabbix Proxy использует локальную базу не только как технический файл конфигурации. В ней могут находиться собранные данные, которые ещё не были переданы на Zabbix Server. Если база неожиданно исчезнет, эти данные можно потерять.
Поэтому для SQLite лучше использовать стандартное постоянное расположение:
/var/lib/zabbix/zabbix_proxy.db
Сохраняем конфигурацию Zabbix Proxy
Теперь сохраним основной конфигурационный файл:
sudo cp /etc/zabbix/zabbix_proxy.conf ~/zabbix_proxy.conf.backup
Если на сервере используется классический Zabbix Agent:
sudo cp /etc/zabbix/zabbix_agentd.conf ~/zabbix_agentd.conf.backup
Если используется Agent 2:
sudo cp /etc/zabbix/zabbix_agent2.conf ~/zabbix_agent2.conf.backup
Проверим созданные файлы:
ls -lh ~/zabbix*.backup
Переносим файлы на новый сервер
Теперь необходимо перенести на новый сервер:
zabbix_proxy.db.backup;zabbix_proxy.conf.backup;- конфигурацию Zabbix Agent, если она нужна.
Я использовал для этого WinSCP, но можно воспользоваться SCP, SFTP или другим удобным способом.
Например, через scp:
scp ~/zabbix_proxy.db.backup root@NEW_PROXY_IP:/root/
scp ~/zabbix_proxy.conf.backup root@NEW_PROXY_IP:/root/
scp ~/zabbix_agentd.conf.backup root@NEW_PROXY_IP:/root/
Восстанавливаем конфигурацию на новом сервере
На новом сервере сначала убедимся, что Zabbix Proxy остановлен:
sudo systemctl stop zabbix-proxy
Восстанавливаем конфигурацию:
sudo cp ~/zabbix_proxy.conf.backup /etc/zabbix/zabbix_proxy.conf
Если переносится конфигурация агента:
sudo cp ~/zabbix_agentd.conf.backup /etc/zabbix/zabbix_agentd.conf
Восстанавливаем SQLite-базу
Для стандартного расположения базы:
sudo cp ~/zabbix_proxy.db.backup /var/lib/zabbix/zabbix_proxy.db
Назначаем правильного владельца:
sudo chown zabbix:zabbix /var/lib/zabbix/zabbix_proxy.db
И права доступа:
sudo chmod 640 /var/lib/zabbix/zabbix_proxy.db
Проверяем:
ls -l /var/lib/zabbix/zabbix_proxy.db
Результат должен выглядеть примерно так:
-rw-r----- 1 zabbix zabbix 3497984 Dec 16 18:22 /var/lib/zabbix/zabbix_proxy.db
Проверяем конфигурацию перед запуском
Перед переключением IP я рекомендую проверить основные параметры перенесённой конфигурации:
grep -E '^(Server|Hostname|DBName|TLSConnect|TLSAccept|TLSPSKIdentity|TLSPSKFile)=' /etc/zabbix/zabbix_proxy.conf
Особенно важны:
Server— адрес Zabbix Server;Hostname— имя Proxy, совпадающее с настройкой на Zabbix Server;DBName— путь к SQLite-базе;- параметры TLS/PSK, если используется шифрование.
Переносим IP-адрес старого Proxy на новый сервер
В моём случае новый сервер должен получить тот же IP-адрес, который использовался старым Zabbix Proxy. Благодаря этому не требуется менять сетевые правила и настройки устройств, которые обращаются непосредственно к Proxy по IP.
Сначала старый сервер должен быть выключен или отключён от сети, чтобы не возник конфликт IP-адресов.
На новом сервере определяем имя сетевого интерфейса:
ip link show
Например:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
link/ether 00:0c:29:bf:b8:9c
altname enp3s0
В моём случае интерфейс называется ens160.
Изменяем Netplan
Посмотрим существующие файлы:
ls -l /etc/netplan/
После этого открываем нужный YAML-файл:
sudo nano /etc/netplan/ИМЯ-ФАЙЛА.yaml
Меняем IP-адрес, шлюз и DNS в соответствии с конфигурацией сети.
Перед применением конфигурации можно проверить её более безопасным способом:
sudo netplan try
Если всё работает корректно, применяем настройки:
sudo netplan apply
После изменения IP текущая SSH-сессия, скорее всего, оборвётся. Подключитесь к серверу уже по новому адресу.
Запускаем Zabbix Proxy на новом сервере
После переноса базы, конфигурации и сетевых настроек запускаем Proxy:
sudo systemctl start zabbix-proxy
Проверяем состояние:
systemctl status zabbix-proxy --no-pager
Если всё настроено правильно, служба должна находиться в состоянии:
Active: active (running)
Проверяем журнал Zabbix Proxy
Сразу после первого запуска рекомендую открыть журнал:
sudo tail -f /var/log/zabbix/zabbix_proxy.log
Дополнительно можно посмотреть сообщения systemd:
sudo journalctl -u zabbix-proxy -n 100 --no-pager
Обращайте внимание на ошибки:
- открытия SQLite-базы;
- прав доступа;
- подключения к Zabbix Server;
- несовпадения имени Proxy;
- TLS или PSK;
- получения конфигурации;
- отправки накопленных данных.
Проверяем Zabbix Proxy в веб-интерфейсе
Теперь открываем веб-интерфейс Zabbix Server и переходим в раздел управления Proxy.
Находим перенесённый Proxy и смотрим время его последнего подключения.
В моём случае Proxy подключался к серверу 5 секунд назад.
Обновляем страницу:
Теперь последнее подключение было секунду назад. Значит, новый Proxy успешно связывается с Zabbix Server.
Что проверить после переноса
После запуска нового сервера я рекомендую проверить:
- состояние службы
zabbix-proxy; - журнал
zabbix_proxy.log; - подключение Proxy к Zabbix Server;
- поступление свежих данных от хостов;
- отсутствие роста очереди мониторинга;
- работу активных и пассивных проверок;
- работу TLS/PSK, если используется шифрование;
- работу Zabbix Agent на самом Proxy;
- сетевую доступность устройств из новой системы.
Старый сервер лучше не удалять сразу. Оставьте его выключенным до тех пор, пока не убедитесь, что новый Proxy стабильно работает.
Обновляем Zabbix Proxy после переноса
В моём случае перенос был только первым этапом. После успешной миграции Zabbix Proxy 6.0 на Ubuntu 24.04 я отдельно обновил его до Zabbix 7.0 LTS.
Разделение этих операций сильно упрощает диагностику: если после переноса что-то перестало работать, мы точно знаем, что проблема относится к миграции сервера, а не к одновременному обновлению основной версии Zabbix.
Сам процесс обновления разобран в статье Как обновить Zabbix Proxy с версии 6.0 до 7.0.
Часто задаваемые вопросы
Нужно ли переносить базу данных Zabbix Proxy?
Если требуется максимально аккуратно перенести текущий Proxy и сохранить ещё не переданные на сервер данные, SQLite-базу лучше перенести вместе с конфигурацией. Перед копированием остановите старый Proxy.
Можно ли одновременно запустить старый и новый Zabbix Proxy?
Не следует запускать два экземпляра с одной и той же идентичностью Proxy. После создания финальной копии базы старый Proxy оставьте остановленным, а затем вводите в работу новый сервер.
Можно ли хранить SQLite-базу Zabbix Proxy в /tmp?
Лучше использовать постоянный каталог, например стандартный /var/lib/zabbix. Каталог /tmp предназначен для временных файлов и может очищаться системой, что создаёт ненужный риск потери локальных данных Proxy.
Нужно ли устанавливать PHP на Zabbix Proxy?
Нет, если на сервере работает только Zabbix Proxy и нет веб-интерфейса. Для самого процесса Proxy PHP не требуется.
Обязательно ли сохранять старый IP-адрес Proxy?
Нет. Новый сервер может использовать другой IP-адрес, если соответствующим образом изменить сетевые правила и настройки систем, которые обращаются к Proxy. Сохранение старого IP просто упрощает миграцию в инфраструктуре, где этот адрес уже используется.
Нужно ли сразу обновлять Zabbix Proxy до новой версии?
При миграции удобнее сначала перенести существующую версию и убедиться, что она работает на новом сервере. После этого обновление до новой основной версии можно выполнить отдельным этапом.
Как понять, что перенос Zabbix Proxy прошёл успешно?
Проверьте состояние службы, журнал Proxy, время последнего подключения в веб-интерфейсе Zabbix и поступление свежих данных от хостов, обслуживаемых этим Proxy.
Заключение
В этой статье мы перенесли Zabbix Proxy на новый сервер: установили ту же ветку Zabbix, остановили старый Proxy, сохранили SQLite-базу и конфигурацию, перенесли их на новую систему, настроили сеть и проверили подключение к Zabbix Server.
Главное при такой миграции — не совмещать сразу несколько серьёзных изменений. Сначала лучше перенести Proxy без изменения его основной версии, убедиться, что мониторинг работает штатно, и только затем переходить к обновлению Zabbix.
Также я больше не рекомендую размещать SQLite-базу Proxy в /tmp. Для рабочей системы безопаснее использовать постоянный каталог /var/lib/zabbix, чтобы база не зависела от механизма очистки временных файлов.
После успешного переноса можно переходить к следующему этапу: Как обновить Zabbix Proxy с версии 6.0 до 7.0.
Также рекомендую статью Как перенести Zabbix на новый сервер.