Как я на Debian 10 переносил Zabbix 4.4 c Debian 8 и обновлял до версии 5.0

Дано. Debian 8 + Zabbix 4.4.
Хочу. Debian 10 + Zabbix 5.х.

1. Плацдарм для нового заббикса.

Действия произвожу на свежий установленный дистрибутив Debian 10.
Для начала надо выровнять версии zabbix. На исходном сервере версия 4.4, значит на сервер назначения я буду устанавливать такую же версию.

Проверить наличие php. Если нет, то:

apt -y install php php-common
apt install php php-mysql php-mysqlnd php-ldap php-bcmath php-mbstring php-gd php-pdo php-xml libapache2-mod-php
apt -y install libapache2-mod-php

Подготовка дистрибутива:

wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1+buster_all.deb
dpkg -i zabbix-release_4.4-1+buster_all.deb
apt update
mariadb может пускать без пароля, надо проверить. Если это так, то вот как устранить - https://unix-garage.tk/mariadb-ne-prosit-parol-root-pri-vhode-ili-vypolnyaet-vhod-s-nevernym-parolem/

Настройка mariadb:

mysql_secure_installation
На очередной чистой ОС Debian 10 не оказалось никакой установленной СУБД. Я поставил MYSQL8 - https://unix-garage.tk/ustanovka-mysql-5-7-na-debian-10. При настройке первичной возникает затыка с установкой пароля для root, оно гуглится и решается через ALTER USER.

Подготовка БД для zabbix-server:

# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
Установка:
apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent
apt install zabbix-apache-conf
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Мой конфиг для MariaDB (/etc/mysql/mariadb.conf.d/50-server.cnf):

innodb_strict_mode = 0
query_cache_size = 16M
query_cache_type = 0
innodb_file_per_table = 1
innodb_log_file_size = 16M
innodb_buffer_pool_size = 13G
innodb_stats_on_metadata = 0
innodb_flush_method = O_DIRECT

Настройка конфигурации:

nano /etc/zabbix/zabbix_server.conf
DBPassword=password

Настройка часового пояса:

/etc/zabbix/apache.conf
php_value date.timezone Europe/Riga

Перезапуск сервисов и добавление в автозагрузку:

systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2

Копирование конфига для веб-интерфейса:

ln -s /etc/zabbix/apache.conf /etc/apache2/sites-enabled/

Открываем веб-интерфейс по адресу своего хоста (я на локальном тренировался) и завершаем установку:

http://10.10.10.172/zabbix/setup.php

На забываем посмотреть старый рабочий конфиг сервера, чтобы прописать все нужные параметры на новом месте. Вот пример моего старого конфига:

egrep -v '^#|^$' zabbix_server.conf

LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
DebugLevel=3
PidFile=/var/run/zabbix/zabbix_server.pid
DBName=zabbix
DBUser=zabbix
DBPassword=ххххххххх
DBSocket=/var/run/mysqld/mysqld.sock
StartPollers=20
StartPollersUnreachable=5
StartPingers=2
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
MaxHousekeeperDelete=15000
CacheSize=256M
StartDBSyncers=6
HistoryCacheSize=64M
HistoryIndexCacheSize=16M
TrendCacheSize=24M
ValueCacheSize=64M
Timeout=25
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000

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


Возможные проблемы в процессе настройки, с которыми я сталкивался.

The server requested authentication method unknown to the client

Решается вот так:

ALTER USER zabbix@localhost IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL ON zabbix.* TO zabbix@localhost;
FLUSH PRIVILEGES;

Такая ошибка:

Incorrect default charset for Zabbix database: "utf8mb3" instead "UTF8".

Решение:

zabbix.com/documentation/current/en/manual/appendix/install/db_charset_coll

https://www.zabbix.com/forum/zabbix-help/446193-zabbix-upgrade-from-5-4-to-6-0-automatic-database-upgrade-problem

Но применительно к текущей статье Zabbix 4.4 не взлетает на mysql 8, поэтому если есть эти ошибки, то лучше выбрать mysql5.7 или mariadb.

Как только веб-интерфейс пустил в настройки по логину Admin и паролю по умолчанию zabbix, система готова к переносу данные. Можно сделать её копию на случай, если что-то при переносе потом пойдёт не так и чтобы не разворачивать всё по новой.

2. Подготовка пациента.

Обновляем пациента до нужной версии, которая поедет на целевой новый сервер.

rm -Rf /etc/apt/sources.list.d/zabbix.list
cd /tmp
wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1+jessie_all.deb
dpkg -i zabbix-release_4.4-1+jessie_all.deb
apt update
service zabbix-server stop
service zabbix-agent stop
apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent
service zabbix-server start
service zabbix-agent start

tail -f /var/log/zabbix/zabbix_server.log — наблюдать за обновлением базы и должно быть в процессе сообщение database upgrade fully completed, например вот так:

7216:20201022:155130.354 completed 99% of database upgrade
7216:20201022:155131.464 completed 100% of database upgrade
7216:20201022:155131.464 database upgrade fully completed
7216:20201022:155131.472 database is not upgraded to use double precision values
7216:20201022:155131.546 server #0 started [main process]
7242:20201022:155131.550 server #1 started [configuration syncer #1]

Теперь версии у меня сравнялись: Zabbix 4.4.10.

Перенос заббикса.

Останавливаем сервер, чтобы в базу не писались данные. Копия базы:

service zabbix-server stop
mysqldump -u root -p zabbix > /var/mysqldump/zabbix.sql

Архив веб-интерфейса:

tar -czf zabbix-web.tar /usr/share/zabbix

Переношу на целевой сервер и разворачиваю дампы. Останавливаю заббикс сервер.Вливаю базу:

service zabbix-server stop
mysql -u root -p zabbix < zabbix.sql

Распаковываю и копирую новые файлы веб-интерфейса в /usr/share/zabbix

tar -xvf zabbix-web.tar

Запускаю сервер:

service zabbix-server start

Проверю что всё заработало.

Обновление до 5-й версии.

service zabbix-server stop
rm -Rf /etc/apt/sources.list.d/zabbix.list
cd /tmp
wget https://repo.zabbix.com/zabbix/5.1/debian/pool/main/z/zabbix-release/zabbix-release_5.1-1+debian10_all.deb
dpkg -i zabbix-release_5.1-1+debian10_all.deb
apt-get update
apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent

tail -f /var/log/zabbix/zabbix_server.log — наблюдать за обновлением базы

Получился у меня Zabbix 5.2.0rc2.

Добавить комментарий