План переноса Zabbix Server
На старом сервере у меня работает Zabbix 6 на Ubuntu 20.04. Новый сервер подготовлен на Ubuntu 24.04.
Я специально разделяю миграцию и обновление Zabbix на два отдельных этапа:
- Перенести существующий Zabbix 6 на новый сервер.
- Проверить работу мониторинга.
- Только после этого обновить Zabbix 6 до Zabbix 7.0 LTS.
Такой подход значительно упрощает диагностику. Если после переноса что-то перестанет работать, будет понятно, что проблема связана именно с миграцией, а не с одновременным обновлением основной версии Zabbix.
Проверяем старый Zabbix Server
Перед переносом зафиксируем текущую конфигурацию системы.
Проверяем версию Zabbix Server:
zabbix_server --version
Версию Ubuntu:
lsb_release -a
Версию MySQL:
mysql -V
Версию PHP:
php -v
Также полезно посмотреть установленные пакеты Zabbix:
dpkg -l | grep '^ii' | grep zabbix
Это позволит установить на новом сервере аналогичный набор компонентов.
Сохраняем конфигурацию старого сервера
Перед переносом рекомендую отдельно сохранить конфигурацию Zabbix:
sudo cp /etc/zabbix/zabbix_server.conf ~/zabbix_server.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
Также сохраните конфигурацию веб-сервера, пользовательские скрипты, AlertScripts, ExternalScripts и другие файлы, которые изменялись вручную.
Устанавливаем Zabbix на новый сервер
Первым делом подключим официальный репозиторий Zabbix.
В моём случае используется 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
Устанавливаем основные компоненты:
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
Если используется Zabbix Agent 2, вместо zabbix-agent установите:
sudo apt install zabbix-agent2
Подробную установку Zabbix я разбирал отдельно в статье Как установить Zabbix 7 на Ubuntu 24.04 с использованием Apache и MySQL.
Устанавливаем MySQL
На новом сервере устанавливаем MySQL:
sudo apt install mysql-server
Проверяем состояние службы:
systemctl status mysql --no-pager
После этого открываем консоль MySQL:
sudo mysql
Создаём пустую базу данных Zabbix:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Создаём пользователя базы данных. Вместо STRONG_DB_PASSWORD укажите собственный сложный пароль:
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'STRONG_DB_PASSWORD';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
QUIT;
Настраиваем Zabbix Server
Открываем конфигурационный файл:
sudo nano /etc/zabbix/zabbix_server.conf
Указываем пароль созданного пользователя базы данных:
DBPassword=STRONG_DB_PASSWORD
Он должен совпадать с паролем пользователя zabbix, созданного в MySQL.
В моём случае сервер работает в московском часовом поясе:
sudo timedatectl set-timezone Europe/Moscow
Проверяем:
timedatectl
Создаём резервную копию базы Zabbix
Теперь необходимо перенести данные со старого сервера.
Для начала можно создать предварительный дамп работающей базы, чтобы проверить сам процесс копирования и восстановления:
mysqldump -uroot -p \
--single-transaction \
--quick \
--routines \
--triggers \
zabbix | gzip > ~/zabbix-preliminary.sql.gz
Параметр --single-transaction позволяет получить согласованный дамп InnoDB без длительной блокировки таблиц.
Делаем финальный дамп перед переключением
Предварительная копия удобна для проверки процесса, но непосредственно перед вводом нового сервера нужно получить финальное состояние базы.
На старом сервере останавливаем Zabbix Server:
sudo systemctl stop zabbix-server
Проверяем:
systemctl status zabbix-server --no-pager
После остановки создаём финальный дамп:
mysqldump -uroot -p \
--single-transaction \
--quick \
--routines \
--triggers \
zabbix | gzip > ~/zabbix-final.sql.gz
Проверяем файл:
ls -lh ~/zabbix-final.sql.gz
Переносим дамп на новый сервер
Теперь копируем файл zabbix-final.sql.gz на новый сервер.
Я обычно использую WinSCP, но можно воспользоваться scp:
scp ~/zabbix-final.sql.gz root@NEW_ZABBIX_IP:/root/
Вместо NEW_ZABBIX_IP укажите временный IP-адрес нового сервера.
Восстанавливаем базу данных Zabbix
Перед восстановлением убедимся, что новый Zabbix Server пока не работает:
sudo systemctl stop zabbix-server
Восстанавливаем базу:
gunzip -c ~/zabbix-final.sql.gz | mysql -uroot -p zabbix
После завершения можно проверить наличие таблиц:
mysql -uroot -p -e "USE zabbix; SHOW TABLES;"
Переносим пользовательские скрипты
После базы данных переносим пользовательские скрипты и остальные файлы, которые используются элементами данных или действиями Zabbix.
У меня, например, есть скрипт проверки срока действия SSL-сертификатов:
/home/zabbix/checkssl.sh
На новом сервере создаём каталог:
sudo mkdir -p /home/zabbix
Копируем туда скрипт и назначаем права:
sudo chmod 755 /home/zabbix/checkssl.sh
Также проверьте владельца файла:
ls -l /home/zabbix/checkssl.sh
Если скрипт должен выполняться от пользователя zabbix, можно назначить владельца:
sudo chown zabbix:zabbix /home/zabbix/checkssl.sh
Переносим SSL-сертификат
Если веб-интерфейс Zabbix работает через HTTPS, переносим сертификат и конфигурацию Apache.
Сначала включаем SSL-модуль Apache:
sudo a2enmod ssl
В моём случае используются три файла:
itadminlab.pem— сертификат;itadminlab_root.pem— цепочка сертификатов;itadminlab_key.pem— закрытый ключ.
Переносим только необходимые файлы сертификата на новый сервер и размещаем их в тех каталогах, которые указаны в конфигурации Apache.
Для закрытого ключа обычно следует установить ограниченные права:
sudo chmod 600 /путь/к/itadminlab_key.pem
Переносим конфигурацию Apache
На старом сервере у меня настроен VirtualHost для HTTPS. Его параметры необходимо перенести на новый сервер.
Проверьте конфигурацию в:
/etc/apache2/sites-available/
Вместо слепого копирования всего файла лучше перенести необходимые параметры VirtualHost и проверить пути к сертификатам, DocumentRoot и остальные настройки.
После изменений обязательно проверяем синтаксис Apache:
sudo apache2ctl configtest
Если всё нормально, получим:
Syntax OK
После этого можно перезапустить Apache:
sudo systemctl restart apache2
Переносим конфигурацию веб-интерфейса Zabbix
Настройки самого frontend хранятся не только в базе данных. На сервере также существует файл конфигурации подключения веб-интерфейса к базе.
В зависимости от версии и пакета это, как правило:
/etc/zabbix/web/zabbix.conf.php
Если этот файл есть на старом сервере и подходит для новой установки, его можно перенести на новый сервер, предварительно проверив параметры подключения к базе.
Проверяем новый сервер перед переключением IP
До переноса рабочего IP-адреса рекомендую ещё раз проверить:
systemctl status mysql --no-pager
systemctl status apache2 --no-pager
Проверяем конфигурацию Zabbix Server:
grep -E '^(DBHost|DBName|DBUser|DBPassword)=' /etc/zabbix/zabbix_server.conf
Переносим IP-адрес старого Zabbix Server
На завершающем этапе старый сервер необходимо выключить или изменить его IP-адрес. После этого рабочий IP можно назначить новому Zabbix Server.
Определяем имя сетевого интерфейса нового сервера:
ip link show
В моём случае:
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
link/ether 00:0c:29:8d:f3:63
altname enp3s0
Интерфейс называется ens160.
Посмотрим файлы Netplan:
ls -l /etc/netplan/
Открываем нужный YAML-файл:
sudo nano /etc/netplan/ИМЯ-ФАЙЛА.yaml
Изменяем IP-адрес, шлюз и DNS в соответствии с настройками сети.
Для безопасной проверки конфигурации можно использовать:
sudo netplan try
После проверки применяем настройки:
sudo netplan apply
Текущая SSH-сессия после изменения IP может оборваться. Подключитесь к серверу уже по рабочему адресу.
Запускаем Zabbix Server
Теперь запускаем Zabbix Server:
sudo systemctl start zabbix-server
Проверяем состояние:
systemctl status zabbix-server --no-pager
И сразу смотрим журнал:
sudo tail -f /var/log/zabbix/zabbix_server.log
В журнале не должно быть ошибок подключения к MySQL, проблем с версией базы или ошибок запуска внутренних процессов Zabbix.
Настраиваем веб-интерфейс Zabbix
Открываем веб-интерфейс. В моём случае:
https://zabbix.itadminlab.ru/zabbix
Если конфигурационный файл frontend был перенесён правильно, должна открыться обычная страница авторизации Zabbix.
Если вместо неё появился мастер первоначальной настройки, указываем параметры существующей базы данных:
- тип базы данных — MySQL;
- имя базы —
zabbix; - пользователь —
zabbix; - пароль — тот, который был задан при создании пользователя MySQL.
После завершения настройки авторизуемся под существующей учётной записью Zabbix. Пользователи, пароли, хосты, шаблоны, триггеры и остальные настройки были перенесены вместе с базой данных.
Проверяем Zabbix после переноса
Сам факт успешного входа в веб-интерфейс ещё не означает, что миграция полностью завершена.
После запуска нового сервера я рекомендую проверить:
- состояние службы
zabbix-server; - журнал
/var/log/zabbix/zabbix_server.log; - поступление свежих данных от хостов;
- очередь элементов данных;
- неподдерживаемые элементы;
- триггеры и текущие проблемы;
- отправку уведомлений;
- пользовательские скрипты;
- Zabbix Proxy, если они используются;
- работу HTTPS;
- доступность веб-интерфейса по привычному DNS-имени.
Также проверьте версию сервера:
zabbix_server --version
Что делать после переноса
В моём случае перенос на Ubuntu 24.04 был подготовительным этапом перед обновлением Zabbix 6.0 до Zabbix 7.0 LTS.
После того как новый сервер успешно отработал и я убедился, что мониторинг полностью восстановлен, можно переходить к обновлению основной версии Zabbix.
Этот процесс разобран отдельно в статье Как обновить Zabbix с версии 6.0 до 7.0 LTS.
Часто задаваемые вопросы
Нужно ли устанавливать на новом сервере ту же версию Zabbix?
Для обычной миграции это наиболее понятный и безопасный вариант: сначала перенести существующую версию и проверить работу системы, а обновление основной версии выполнить отдельным этапом.
Нужно ли останавливать старый Zabbix Server перед созданием дампа?
Предварительный согласованный дамп InnoDB можно создать с параметром --single-transaction на работающем сервере. Но перед финальным переключением удобно остановить Zabbix Server и сделать последний дамп, чтобы после его создания в старой базе больше не появлялись новые данные мониторинга.
Нужно ли импортировать стандартную схему Zabbix на новом сервере?
Нет, если вы восстанавливаете полный дамп существующей базы. В нём уже находятся таблицы, данные и конфигурация Zabbix.
Переносятся ли пользователи и пароли веб-интерфейса?
Да. Учётные записи Zabbix хранятся в базе данных и переносятся вместе с ней. После миграции используется та же учётная запись, что и на старом сервере.
Почему после восстановления базы появляется мастер установки Zabbix?
Обычно это означает, что на новом сервере отсутствует локальный конфигурационный файл frontend. Мастер создаёт настройки подключения веб-интерфейса к уже восстановленной базе данных.
Можно ли одновременно перенести сервер и обновить Zabbix?
Технически некоторые сценарии это допускают, но для рабочей системы проще разделить операции. Сначала переносим сервер и проверяем мониторинг, затем отдельно обновляем Zabbix. Это значительно упрощает диагностику и откат.
Что ещё нужно переносить кроме базы данных?
Проверьте конфигурационные файлы Zabbix, настройки Apache или Nginx, SSL-сертификаты, пользовательские скрипты, ExternalScripts, AlertScripts, UserParameter и любые другие локальные изменения, которых нет в базе данных.
Подойдёт ли mysqldump для очень большой базы Zabbix?
Для небольшой или средней базы и допустимого окна обслуживания логический дамп удобен. При очень большой базе или строгих требованиях к времени простоя стоит рассмотреть более подходящий для вашей инфраструктуры способ миграции.
Заключение
В этой статье мы перенесли Zabbix Server на новый сервер: установили ту же ветку Zabbix, подготовили MySQL, перенесли базу данных, конфигурацию, пользовательские скрипты и SSL-сертификат, переключили IP-адрес и проверили работу мониторинга.
Самое важное при такой миграции — не пытаться изменить всё одновременно. Сначала переносим существующий Zabbix на новую систему и убеждаемся, что мониторинг работает штатно. После этого можно переходить к обновлению основной версии.
Для небольшой базы данных такой вариант с финальным дампом и коротким окном простоя достаточно прост и понятен. Если база большая или простой недопустим, схему миграции необходимо проектировать отдельно.
Следующий этап — обновление Zabbix Server с версии 6.0 до 7.0 LTS.