Перенос и обновление Zabbix Server 5.0 LTS на 7.0 LTS

В данной статье рассмотрим перенос и обновление Zabbix Server 5.0 LTS до 7.0 LTS. Разберем ключевые этапы подготовки, резервного копирования, обновления базы данных и конфигурации. Также рассмотрим возможные ошибки, способы их устранения и преимущества новой версии, чтобы обеспечить стабильную работу системы мониторинга.

В нескольких компаниях, которые у меня на обслуживании, имеются сервера на Ubuntu 18.04 и мониторингом на Zabbix 5.0 LTS. Появилась необходимость обновить его до версии 7.0 LTS.

Проблема только в том, что версия Zabbix 5.0 поддерживает максимум Ubuntu 20.04, а Zabbix 7.0 поддерживает минимум Ubuntu 22.04 и обновить Zabbix 5.0 на 7.0 на Ubuntu 18.04 не получится.

Поэтому план наших действий будет такой:

  • Устанавливаем Ubuntu 20.04 и туда устанавливаем Zabbix 5.0
  • Переносим с Ubuntu 18.04 Zabbix 5.0 на Ubuntu 20.04
  • Далее на Ubuntu 20.04 обновляем Zabbix 5.0 на версию 6.0
  • После этого устанавливаем Ubuntu 24.04 и туда устанавливаем Zabbix 6.0
  • Переносим с Ubuntu 20.04 Zabbix 6.0 на Ubuntu 24.04
  • На Ubuntu 24.04 обновляем Zabbix 6.0 на версию 7.0

Оглавление:

Подготовка к переносу и обновлению Zabbix Server

Главное что нам нужно сделать, чтобы корректно прошел перенос и обновление Zabbix Server — это установить точно такую же версию Zabbix Server на новый сервер Ubuntu. В нашем случае это Zabbix Server 5.0. Так же необходимо перенести все конфигурационные файлы и скрипты со старого сервера на новый, а так же создать базу данных (в нашем случае MySQL) с таким же именем базы, пользователем и паролем, как на старом сервере. Можно конечно задать другие имена, но тогда эти данные придется прописывать и в конфигурации сервера.

Установка Zabbix 5.0 на Ubuntu 20.04

После того, как вы установили чистую систему Ubuntu 20.04, давайте на нее установим Zabbix 5.0

Подключаем необходимые репозитории:

# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_5.0+ubuntu20.04_all.deb
# dpkg -i zabbix-release_latest_5.0+ubuntu20.04_all.deb
# apt update

Устанавливаем Zabbix Server 5.0 LTS и его компоненты, а так же mariadb в качестве mysql сервера:

# apt install mariadb-server zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent zabbix-sql-scripts

Создайте базу данных

Задаем пароль root для mysql с помощью скрипта предварительной настройки:

# mysql_secure_installation

Подключаемся к MySQL под root-ом:

# mysql -uroot -p

Указываем пароль, который задавали ранее и создаем пользователя и базу данных последовательно введя команды:

> create database zabbix character set utf8 collate utf8_bin;
> create user zabbix@localhost identified by 'password';
> grant all privileges on zabbix.* to zabbix@localhost;
> set global log_bin_trust_function_creators = 1;
> quit;

Внимание!

В строке create user zabbix@localhost identified by ‘password’; password замените на свой пароль.

Импортируем схему базы и начальные данные:

# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Внимание!

Пароль указываем тот же самый, что и на предыдущем шаге.

Выключите опцию log_bin_trust_function_creators после импорта схемы базы данных:

# mysql -uroot -p
Enter password:
> set global log_bin_trust_function_creators = 0;
> quit;

Теперь, если еще не перенесли конфигурационные файлы со старого сервера на новый, сделайте это. Либо отредактируйте текущие файлы.

Отредактируйте файл /etc/zabbix/zabbix_server.conf:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password

Внимание!

В параметре DBPassword задайте свой пароль.

После этого можете запустить Zabbix Server 5.0 LTS:

# systemctl enable --now zabbix-server

Чтобы проверить работу Zabbix Server, используйте команду:

# systemctl status zabbix-server

Должно выдать как на картинке ниже:

Отредактируйте файл /etc/zabbix/nginx.conf:

listen          80 default_server;
server_name     zabbix;

Внимание!

Если в файле /etc/zabbix/nginx.conf указываете listen 80 default_server, то обязательно закомментируйте данные строки в файле /etc/nginx/sites-available/default

Отредактируйте файл /etc/zabbix/php-fpm.conf раскомментируйте строку и укажите свой часовой пояс:

; php_value[date.timezone] = Europe/Riga

Запустите процессы Zabbix сервера и агента и настройте их запуск при загрузке ОС:

# systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
# systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm

Все, после этого можете подключаться браузером к Zabbix Server и провести первоначальную настройку, для того чтобы убедиться что все работает без проблем.

Перенос Zabbix Server 5.0 LTS

Переходим к переносу Zabbix Server 5.0 LTS. Для этого останавливаем старый сервер на Ubuntu 18.04:

# systemctl stop zabbix-server zabbix-agent

Делаем дамп базы данных:

# /usr/bin/mysqldump --opt -v --databases zabbix -uzabbix -p'password' > ~/zabbix.sql

Пояснения по команде выше:

—databases zabbix
Эта опция указывает, что нужно создать дамп базы данных с именем zabbix. --databases говорит о том, что будет дамп не отдельных таблиц, а целой базы данных. Указывая имя базы данных, вы также включаете команду CREATE DATABASE в дамп, так что база данных будет воссоздана при восстановлении.

-uzabbix
Эта опция указывает пользователя, под которым нужно выполнить дамп. В данном случае это пользователь zabbix. Он должен иметь необходимые привилегии для чтения базы данных.

-p’password’
Тут, между кавычками, указываете свой пароль для пользователя zabbix.

После создания дампа, перенесите его на новый сервер с Ubuntu 20.04 например командой ниже:

# scp ~/zabbix.sql root@192.168.1.6:~/zabbix.sql

192.168.1.6 — это адрес нового сервера с установленным Ubuntu 20.04 куда мы переносим Zabbix. На старом сервере службу zabbix-server больше не запускаем.

Переходим на новый сервер и открываем консоль MySQL:

# mysql -u root -p

Далее восстанавливаем дамп в базу данных Zabbix Server:

> use zabbix;
> source ~/zabbix.sql;

После загрузки дампа можно открыть веб-интерфейс нового сервера и проверить, что данные успешно восстановлены, а система выглядит так же, как на предыдущем сервере. Если всё в порядке, отключите старый сервер мониторинга и больше не используйте его с этим IP-адресом. Затем настройте новый сервер на старый IP-адрес и перезагрузите его для надёжности.

Когда новый сервер с перенесённым Zabbix запустится, агенты автоматически начнут передавать данные, поскольку для них ничего не изменилось. Если все в порядке, тогда переходим к следующему шагу — Обновление Zabbix Server 5.0 LTS на 6.0 LTS.

Обновление Zabbix Server 5.0 LTS на 6.0 LTS

Теперь, после того, как мы установили Zabbix Server 5.0 LTS на Ubuntu 20.04 и перенесли туда базу с Ubuntu 18.04, давайте обновим Zabbix на версию 6.0 LTS.

Для этого останавливаем сервер и агент:

# systemctl stop zabbix-server zabbix-agent

Удалите старый репозиторий Zabbix 5.0:

# rm -Rf /etc/apt/sources.list.d/zabbix.list

Добавьте репозиторий Zabbix 6.0:

# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest+ubuntu20.04_all.deb
# dpkg -i zabbix-release_latest+ubuntu20.04_all.deb
# apt update

Запустите обновление пакетов Zabbix:

# apt install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent

После окончания обновления запустите Zabbix Server и агент:

# systemctl start zabbix-server zabbix-agent

Теперь можете подключиться к веб-интерфейсу Zabbix Server и убедиться, что сервер корректно обновился. Должно получиться примерно как на картинке ниже:

Если все в порядке, переходим к следующему шагу — установке Zabbix Server 6.0 LTS на Ubuntu 24.04

Установка Zabbix 6.0 LTS на Ubuntu 24.04

Если у вас еще не установлен сервер Ubuntu 24.04, то рекомендую воспользоваться статьей на сайте Установка Ubuntu Server 24.04, а так же статьей Настройка Ubuntu Server 24.04 после установки.

После того, как вы установили чистую систему Ubuntu 24.04, давайте на нее установим Zabbix 6.0 LTS.

Подключаем необходимые репозитории:

# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu24.04_all.deb
# dpkg -i zabbix-release_latest_6.0+ubuntu24.04_all.deb
# apt update

Устанавливаем Zabbix Server 6.0 LTS и его компоненты, а так же mariadb в качестве mysql сервера:

# apt install mariadb-server zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent zabbix-sql-scripts

Задаем пароль root для mysql и удаляем тестовые базы с помощью скрипта предварительной настройки:

# mysql_secure_installation

Подключаемся к MySQL под root-ом:

# mysql -uroot -p

Указываем пароль, который задавали ранее и создаем пользователя и базу данных последовательно введя команды:

> create database zabbix character set utf8 collate utf8_bin;
> create user zabbix@localhost identified by 'password';
> grant all privileges on zabbix.* to zabbix@localhost;
> set global log_bin_trust_function_creators = 1;
> quit;

Внимание!

В строке create user zabbix@localhost identified by ‘password’; password замените на свой пароль.

Импортируем схему базы и начальные данные:

# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

Внимание!

Пароль указываем тот же самый, что и на предыдущем шаге.

Выключите опцию log_bin_trust_function_creators после импорта схемы базы данных:

# mysql -uroot -p
Enter password:
> set global log_bin_trust_function_creators = 0;
> quit;

Отредактируйте файл /etc/zabbix/zabbix_server.conf:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password

Внимание!

В параметре DBPassword задайте свой пароль.

После этого можете запустить Zabbix Server 6.0 LTS:

# systemctl enable --now zabbix-server

Чтобы проверить работу Zabbix Server, используйте команду:

# systemctl status zabbix-server

Отредактируйте файл /etc/zabbix/nginx.conf:

listen          80 default_server;
server_name     zabbix;

Внимание!

Если в файле /etc/zabbix/nginx.conf указываете listen 80 default_server, то обязательно закомментируйте данные строки в файле /etc/nginx/sites-available/default

Запустите процессы Zabbix сервера и агента и настройте их запуск при загрузке ОС:

# systemctl restart zabbix-server zabbix-agent nginx php8.3-fpm
# systemctl enable zabbix-server zabbix-agent nginx php8.3-fpm

Все, после этого можете подключаться браузером к Zabbix Server и провести первоначальную настройку, для того чтобы убедиться что все работает без проблем.

Перенос Zabbix Server 6.0 LTS

Переходим к переносу Zabbix Server 6.0 LTS. Для этого останавливаем старый сервер на Ubuntu 20.04:

# systemctl stop zabbix-server zabbix-agent

Делаем дамп базы данных:

# /usr/bin/mysqldump --opt -v --databases zabbix -uzabbix -p'password' > ~/zabbix.sql

После создания дампа, перенесите его на новый сервер с Ubuntu 24.04 например командой ниже:

# scp ~/zabbix.sql root@192.168.1.7:~/zabbix.sql

192.168.1.7 — это адрес нового сервера с установленным Ubuntu 24.04 куда мы переносим Zabbix. На старом сервере службу zabbix-server больше не запускаем.

Переходим на новый сервер и открываем консоль MySQL:

# mysql -u root -p

Далее восстанавливаем дамп в базу данных Zabbix Server:

> use zabbix;
> source ~/zabbix.sql;

После загрузки дампа можно открыть веб-интерфейс нового сервера и проверить, что данные успешно восстановлены, а система выглядит так же, как на предыдущем сервере. Если всё в порядке, отключите старый сервер мониторинга и больше не используйте его с этим IP-адресом. Затем настройте новый сервер на старый IP-адрес и перезагрузите его для надёжности.

Когда новый сервер с перенесённым Zabbix запустится, агенты автоматически начнут передавать данные, поскольку для них ничего не изменилось. Если все в порядке, тогда переходим к следующему шагу — Обновление Zabbix Server 6.0 LTS на 7.0 LTS.

Обновление Zabbix Server 6.0 LTS на 7.0 LTS

Теперь, после того, как мы установили Zabbix Server 6.0 LTS на Ubuntu 24.04 и перенесли туда базу с Ubuntu 20.04, давайте обновим Zabbix на версию 7.0 LTS.

Для этого останавливаем сервер и агент:

# systemctl stop zabbix-server zabbix-agent

Удалите старый репозиторий Zabbix 6.0:

# rm -Rf /etc/apt/sources.list.d/zabbix.list

Добавьте репозиторий Zabbix 7.0:

# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
# dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
# apt update

Далее для успешного обновления включим опцию log_bin_trust_function_creators:

# mysql -u root -p -e "SET GLOBAL log_bin_trust_function_creators = 1;"

После ввода команды, укажите пароль к MySQL под root-ом.

После этого обновляем все компоненты Zabbix:

# apt install --only-upgrade 'zabbix-*' -y

На данном этапе, на одном из серверов Zabbix при обновлении у меня вылезла ошибка ниже:

 2945:20250130:175148.690 Starting Zabbix Server. Zabbix 7.0.9 (revision 05b8b05eefe).
  2945:20250130:175148.690 ****** Enabled features ******
  2945:20250130:175148.691 SNMP monitoring:           YES
  2945:20250130:175148.691 IPMI monitoring:           YES
  2945:20250130:175148.691 Web monitoring:            YES
  2945:20250130:175148.691 VMware monitoring:         YES
  2945:20250130:175148.691 SMTP authentication:       YES
  2945:20250130:175148.691 ODBC:                      YES
  2945:20250130:175148.691 SSH support:               YES
  2945:20250130:175148.692 IPv6 support:              YES
  2945:20250130:175148.692 TLS support:               YES
  2945:20250130:175148.692 ******************************
  2945:20250130:175148.692 using configuration file: /etc/zabbix/zabbix_server.conf
  2945:20250130:175148.699 current database version (mandatory/optional): 06010083/06010083
  2945:20250130:175148.699 required mandatory version: 07000000
  2945:20250130:175148.699 mandatory patches were found
  2945:20250130:175148.700 starting automatic database upgrade
  2945:20250130:175148.797 [Z3005] query failed: [1452] Cannot add or update a child row: a foreign key constraint fails (zabbix.#sql-alter-35d-64, CONSTRAINT c_functions_1 FOREIGN KEY (itemid) REFERENCES items (itemid)) [alter table functions add constraint c_functions_1 foreign key (itemid) references items (itemid)]
  2945:20250130:175148.797 database upgrade failed on patch 06010084, exiting in 10 seconds

Ошибка «Cannot add or update a child row: a foreign key constraint fails» указывает, что в таблице functions присутствуют записи с itemid, которых нет в таблице items. Это происходит из-за нарушения целостности данных во время обновления базы данных Zabbix.

Решение проблемы такое, подключаемся к базе данных Zabbix:

# mysql -u zabbix -p zabbix
Enter password:

И удаляем «битые» записи из functions:

DELETE FROM functions WHERE itemid NOT IN (SELECT itemid FROM items);

Перезапускаем сервер Zabbix, чтобы снова запустить миграцию базы:

# systemctl restart zabbix-server

Следить за состоянием обновления можно с помощью команды:

# tail -f /var/log/zabbix/zabbix_server.log

По окончании обновления, возвращаем базу данных в безопасный режим:

# mysql -u root -p -e "set global log_bin_trust_function_creators = 0;"

И запускаем Zabbix Server и агент:

# systemctl start zabbix-server zabbix-agent

Теперь можете подключиться к веб-интерфейсу Zabbix Server и убедиться, что сервер корректно обновился. Должно получиться примерно как на картинке ниже:

На этом перенос Zabbix Server 6.0 и обновление на Zabbix Server 7.0 завершен.

Заключение

Перенос и обновление Zabbix Server с версии 5.0 LTS до 7.0 LTS требует тщательной подготовки, соблюдения порядка шагов и внимательности при работе с базой данных и конфигурационными файлами. В ходе данной статьи мы рассмотрели поэтапный процесс обновления, начиная с установки промежуточных версий Ubuntu и Zabbix, переноса данных и завершения обновления на последнюю версию 7.0 LTS.

Следование данному плану позволяет минимизировать риски, связанные с потерей данных или сбоем мониторинговой системы. Основные рекомендации при обновлении:

  1. Создание резервных копий – всегда делайте бэкапы баз данных и конфигурационных файлов перед началом любого обновления.
  2. Обновление в несколько этапов – сначала перенос на промежуточную версию ОС и Zabbix, затем обновление до целевой версии.
  3. Тестирование после каждого шага – проверка корректности работы сервера и его компонентов после каждого этапа обновления.
  4. Соблюдение совместимости – при обновлении убедитесь, что используемые плагины, настройки и агенты соответствуют новой версии Zabbix.

Обновление Zabbix до последней версии 7.0 LTS открывает доступ к новым возможностям системы мониторинга, улучшенной производительности и обновлённым механизмам безопасности. Следуя приведённым инструкциям, вы сможете успешно выполнить перенос и обновление, обеспечивая стабильную и эффективную работу системы мониторинга в вашей инфраструктуре.

Помогла статья? Подписывайся на Telegram канал автора.

Анонсы всех статей, много другой полезной и интересной информации, которая не попадает на сайт.

Если у вас имеются вопросы, задавайте их в комментариях.

Оставьте комментарий