Обновление Zabbix 6.0 до 7.0

Обновление Zabbix 6.0 до 7.0

На днях  вышла новая версия сервера Zabbix 7.0. Сегодня я расскажу, как обновить предыдущую LTS версию Zabbix 6.0 до актуальной 7.0. Делать это рано или поздно придётся в обязательном порядке всем, так как срок полной поддержки 6-й версии заканчивается 28 февраля, 2025. Осталось не так много времени. Потом будут ещё 2 года ограниченной поддержки только по вопросам безопасности.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Введение

Традиционно предупрежу о том, что обновление потенциально небезопасная процедура. Данные потерять в результате обновления вероятность небольшая, а вот получить простой мониторинга из-за каких-то ошибок, которые могут возникнуть в процессе, вполне вероятно. Случается это не так уж и редко. Так что рекомендую попробовать обновиться сначала на копии виртуальной машины, если для вас простой критический. Если же нет, то достаточно сделать бэкап перед обновлением и приступать.

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

Подготовка к обновлению

Судя по информации в документации Zabbix, обновиться до 7.0 можно практически с любой более ранней версии. Привожу дословно: «Direct upgrade to Zabbix 7.0.x is possible from Zabbix 6.4.x, 6.2.x, 6.0.x, 5.4.x, 5.2.x, 5.0.x, 4.4.x, 4.2.x, 4.0.x, 3.4.x, 3.2.x, 3.0.x, 2.4.x, 2.2.x and 2.0.x.». Не забудьте учесть, что более новая версия Zabbix Server требует более высоких версий php. То есть не достаточно просто обновить сам мониторинг. Нужно обновить и всё сопровождающее его веб окружение и СУБД.

Перед обновлением, сделаем на всякий случай бэкап базы данных. Для этого предварительно остановим сервер с агентом.

# systemctl stop zabbix-server zabbix-agent

Дальше в зависимости от используемой СУБД, делаем дамп базы данных, если её объём позволяет это сделать. Если нет, и у вас большая база, то используйте тот инструмент, которым вы обычно бэкапите базу данных.

Бэкапим MySQL базу заббикса:

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

Бэкапим PostgreSQL базу заббикса:

# sudo -u postgres pg_dump -U postgres zabbix | /usr/bin/gzip > ~/zabbix.sql.gz

На всякий случай сохраним php скрипты админки и все файлы конфигурации, чтобы можно было оперативно запустить старую версию в случае нештатной ситуации. Можно просто сделать snapshot витуалки перед обновлением, чтобы откатиться назад в случае проблем.

# mkdir /opt/zabbix-backup/
# cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
# cp /etc/httpd/conf.d/zabbix.conf /opt/zabbix-backup/
# cp -R /usr/share/zabbix/ /opt/zabbix-backup/
# cp -R /usr/share/zabbix-* /opt/zabbix-backup/

Установка обновления Zabbix 6 до 7

Подключаем репозитории новой версии Zabbix. В зависимости от используемой системы, дальнейшие действия будут различаться. Вам нужно будет скачать пакет под свою версию системы из Zabbix Official Repository. Для написания этой статьи я использовал один из своих серверов, работающих на базе системы Oracle Linux Server 8.10. Ставлю репозиторий для неё:

# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/oracle/8/x86_64/zabbix-release-7.0-1.el8.noarch.rpm
# dnf clean all
# dnf makecache

Подключение репозитория Zabbix 7.0

Для Debian 12 репозиторий подключаем так (предварительно удалив прошлый):

# rm -Rf /etc/apt/sources.list.d/zabbix.list
# wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1+debian12_all.deb
# dpkg -i zabbix-release_7.0-1+debian12_all.deb
# apt update

Для других версий систем действуйте по аналогии. Отличаться будет только ссылка на файл с репозиторием.

Обновляю установленные пакеты. В случае с использованием MySQL сервера это такой набор:

# dnf upgrade zabbix-server-mysql zabbix-web-mysql zabbix-agent

Обновление Zabbix Server

Для PostgreSQL сервера команда будет такая:

# dnf upgrade zabbix-server-pgsql zabbix-web-pgsql zabbix-agent

Возможно, у вас были установлены какие-то дополнительные пакеты. Посмотрите их командой:

# rpm -qa | grep zabbix
zabbix-get-6.0.30-release1.el8.x86_64
zabbix-web-mysql-6.0.30-release1.el8.noarch
zabbix-release-7.0-1.el8.noarch
zabbix-agent-6.0.30-release1.el8.x86_64
zabbix-web-deps-6.0.30-release1.el8.noarch
zabbix-server-mysql-6.0.30-release1.el8.x86_64
zabbix-web-6.0.30-release1.el8.noarch
zabbix-sender-6.0.30-release1.el8.x86_64

Все установленные в системе пакеты Zabbix

И обновите, если таковые найдутся.

# dnf upgrade zabbix-get zabbix-sender

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

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

Если использовался веб сервер Apache с mod_php, то обновить их можно вот так:

# apt-get install zabbix-apache-conf

После обновления серверной части будет происходить обновление базы данных. В это время в логе /var/log/zabbix/zabbix_server.log будут следующие строки:

1760570:20240605:213728.147 using configuration file: /etc/zabbix/zabbix_server.conf 
1760570:20240605:213728.155 current database version (mandatory/optional): 06000000/06000044 
1760570:20240605:213728.155 required mandatory version: 07000000 
1760570:20240605:213728.155 mandatory patches were found 
1760570:20240605:213728.156 starting automatic database upgrade 
1760570:20240605:213728.171 completed 0% of database upgrade 
1760570:20240605:213734.917 slow query: 5.256752 sec, "alter table `triggers` modify `description` varchar(255) default '' not null" 
1760570:20240605:213735.456 completed 1% of database upgrade 
1760570:20240605:213738.829 completed 2% of database upgrade 
1760570:20240605:213740.318 completed 3% of database upgrade 
1760570:20240605:213741.663 completed 4% of database upgrade 
1760570:20240605:213742.397 completed 5% of database upgrade 
1760570:20240605:213743.041 completed 6% of database upgrade 
1760570:20240605:213743.797 completed 7% of database upgrade 
1760570:20240605:213745.197 completed 8% of database upgrade 
1760570:20240605:213746.708 completed 9% of database upgrade 
1760570:20240605:213747.953 completed 10% of database upgrade

Процесс обновления базы данных

и т.д. Процесс должен завершиться удачно. Об этом будут символизировать следующие строки:

1760570:20240605:214049.375 completed 100% of database upgrade 
1760570:20240605:214049.445 database upgrade fully completed

Есть ненулевой шанс, что будет какая-то ошибка с базой. Чаще всего возникают проблемы с какой-то нестандартной записью в таблице. Туда может попасть какой-то необычный символ, или с кодировкой проблемы. В этих случаях удаляйте проблемные записи, меняйте кодировку базы zabbix.

После обновления переходите в web интерфейс и проверяйте версию Zabbix. Должна быть 7.0. На всякий случай очистите кэш браузера. Иногда могут возникать ошибки в новом веб интерфейсе, если этого не сделать.

Напоминаю, что для Zabbix Server 7.0 необходима версия PHP не ниже 8.0. Если она ниже, то получите вместо веб интерфейса ошибку:

Minimum required PHP version is 8.0.0.

В этом случае обновите PHP. Этот процесс будет сильно зависеть от типа вашей системы и способа его настройки в момент установки сервера Zabbix. В моём случае я использую веб сервер Nginx и Php-fpm. Чтобы обновить последний, мне пришлось подключить дополнительный репозиторий Remi:

# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

И из него установить нужную версию php:

# dnf module reset php
# dnf module enable php:remi-8.0
# dnf upgrade

Обновление php до 8.0 для Zabbix 7

После этого веб интерфейс обновлённого Zabbix Server 7.0 заработал.

Обновлённый Zabbix Server 7.0

Если у вас более свежая система, типа форка RHEL9 или Debian 12, там php 8.0+ ставится из базовых репозиториев.


Отдельно отмечу, что связь с Grafana через плагин Zabbix plugin for Grafana версии 4.4.6 (у меня не самая свежая версия) продолжил работать. Обновление ему не потребовалось.

Обновление шаблонов Zabbix Server

После обновления серверной части, обновлять и шаблоны не обязательно. Всё будет благополучно, как и прежде, работать на старых шаблонах. Это большой плюс, так как система после обновления ведёт себя предсказуемо в плане сбора метрик.

Если же вы хотите обновить и шаблоны, то делать это придётся вручную. Сначала нужно скачать и импортировать в систему новую версию шаблона. Ссылку на репозиторий я привёл в начале статьи. После этого новый шаблон можно применить к хостам. Для этого нужно открепить старый шаблон с удалением всех айтемов и прикрепить новый. Если не удалить старый с удалением всех айтемов, то при добавлении нового он не сможет прикрепиться, если на хосте уже есть айтемы с теми же именами, что и в шаблоне. А при обновлении старой версии одного и того же шаблона на новую такие пересечения обязательно будут.

Так что статистику по хосту вы потеряете при обновлении шаблона. Это неудобно, но простого пути с обновлением шаблона нет. Если вам категорически нельзя терять статистику, то придётся вручную старый шаблон дорабатывать до нового. В целом, это выполнимая задача, но немного муторная. В итоге решаемая тем или иным путём.

Заключение

В целом, процесс обновления одиночного сервера Zabbix представляет из себя простую задачу. Если у вас используются proxy, то сначала обновляем сервер, а потом прокси. Обновлять прокси не обязательно, но крайне рекомендуется. Полная поддержка прокси сервером возможна только в рамках одной релизной ветки. Прокси прошлого релиза поддерживаются в ограниченном формате.

Все способы оповещений, как и интеграции, обновляются вручную, как и шаблоны. Автоматически они не приедут на сервер вместе с обновлением. Обновляется только серверная часть. Всё, что касается внешних сущностей, добавляемых через импорт конфигурационных yaml или xml файлов (в старых версиях), обновляются вручную и отдельно.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

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

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

Zabbix
Обновление Zabbix 6.0 до 7.0