DOC / 1525 SysAdminHub.ru

Как перенести Zabbix на новый сервер

Перенос Zabbix сервер

План переноса Zabbix Server

На старом сервере у меня работает Zabbix 6 на Ubuntu 20.04. Новый сервер подготовлен на Ubuntu 24.04.

Я специально разделяю миграцию и обновление Zabbix на два отдельных этапа:

  1. Перенести существующий Zabbix 6 на новый сервер.
  2. Проверить работу мониторинга.
  3. Только после этого обновить 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 после переноса

Сам факт успешного входа в веб-интерфейс ещё не означает, что миграция полностью завершена.

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

  1. состояние службы zabbix-server;
  2. журнал /var/log/zabbix/zabbix_server.log;
  3. поступление свежих данных от хостов;
  4. очередь элементов данных;
  5. неподдерживаемые элементы;
  6. триггеры и текущие проблемы;
  7. отправку уведомлений;
  8. пользовательские скрипты;
  9. Zabbix Proxy, если они используются;
  10. работу HTTPS;
  11. доступность веб-интерфейса по привычному 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.

ORIGINAL / ATTRIBUTION

Источник материала

Материал взят с https://sysadminhub.ru/. Оригинальная статья и авторство указаны по ссылке ниже.

Оригинал статьи на SysAdminHub.ru ↗

https://sysadminhub.ru/other/zabbix/how-to-migrate-zabbix-to-a-new-server

Материал проверен 10.10.2026. При изменении программного обеспечения сверяйтесь с актуальной документацией.
← Вернуться в базу знаний