Обновление Zabbix 5.0 до 6.0 на Ubuntu 20.04 amd64
Дано:
Ubuntu 20.04 x64_86
Zabbix 5.0
Apache2
MariaDB 10.03.39
Резервное копирование
Обновление необходимо начать с резервного копирования базы данных и всех файлов:
1. Так же необходимо остановить службы
service zabbix-server stop service zabbix-proxy stop
2. Резервная копия базы данных zabbix, с пользователем zabbix,
mkdir /opt/zabbix-backup/ mariadb-dump -u zabbix-p zabbix -f --log-error=/opt/zabbix-backup/zabbixdb/opt/zabbix-backup/.sql.gz.log | gzip > /opt/zabbix-backup/zabbixdb/opt/zabbix-backup/.sql.gz
3. Резервная копия скриптов оповещения, внешних скриптов, конфиги, конфиги apache, web-интерфейс и документация
tar -czf /opt/zabbix-backup/alertscripts/opt/zabbix-backup/.tar.gz /usr/lib/zabbix/alertscripts/ tar -czf /opt/zabbix-backup/externalscripts/opt/zabbix-backup/.tar.gz /usr/lib/zabbix/externalscripts/ tar -czf /opt/zabbix-backup/etczabbixx/opt/zabbix-backup/.tar.gz /etc/zabbix/ tar -czf /opt/zabbix-backup/apache2/opt/zabbix-backup/.tar.gz /etc/apache2/ tar -czf /opt/zabbix-backup/sharezabbix/opt/zabbix-backup/.tar.gz /usr/share/zabbix/ tar -czf /opt/zabbix-backup/sharedoc/opt/zabbix-backup/.tar.gz /usr/share/doc/zabbix-*
Подготовка к обновлению
1. Необходимо удалить старый репозиторий
rm -Rf /etc/apt/sources.list.d/zabbix.list
2.Скачать и установить необходимо Ubuntu, так как Ubuntu (arm64), не устанавливается корректно:
N: Пропускается получение настроенного файла «main/binary-amd64/Packages», так как репозиторий «https://repo.zabbix.com/zabbix/6.0/ubuntu-arm64 focal InRelease» не поддерживает архитектуру «amd64»
Скачивание и установка нового репозитория Zabbix 6.0 i386
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb
Судя по выводу информации о пакетах, архитектуры установились все и amd64:
dpkg -l zabbix\* ||/ Имя Версия Архитектура Описание +++-===================-======================-============-======================================================================= ii zabbix-agent 1:6.0.30-1+ubuntu18.04 amd64 Zabbix network monitoring solution - agent ii zabbix-apache-conf 1:6.0.30-1+ubuntu18.04 all Zabbix network monitoring solution - apache configuration for front-end ii zabbix-frontend-php 1:6.0.30-1+ubuntu18.04 all Zabbix network monitoring solution - PHP front-end ii zabbix-get 1:6.0.30-1+ubuntu18.04 amd64 Zabbix network monitoring solution - get un zabbix-nginx-conf <нет> <нет> (описание недоступно) ii zabbix-release 1:6.0-4+ubuntu18.04 all Zabbix official repository configuration ii zabbix-server-mysql 1:6.0.30-1+ubuntu18.04 amd64 Zabbix network monitoring solution - server (MySQL) un zabbix-server-pgsql <нет> <нет> (описание недоступно) ii zabbix-sql-scripts 1:6.0.30-1+ubuntu18.04 all Zabbix network monitoring solution - sql-scripts
Установка нового Zabbix 6.0
apt update apt install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent
Проблема с обновлением. Устранение конфликта зависимостей
На этом этапе у меня произошла ошибка зависимостей
При обновлении Zabbix 5.0 до Zabbix 6.0 возникла ошибка:
Следующая информация, возможно, вам поможет: Следующие пакеты имеют неудовлетворённые зависимости: zabbix-server-mysql : Зависит: libevent-2.1-6 (>= 2.1.8-stable) но он не может быть установлен Зависит: libmysqlclient20 (>= 5.7.11) но он не может быть установлен Зависит: libsnmp30 (>= 5.7.3+dfsg-1.8ubuntu3.6~dfsg) но он не может быть установлен
Для разрешения конфликта, необходимо поставить пакеты вручную:
wget http://launchpadlibrarian.net/355862127/libevent-2.1-6_2.1.8-stable-4build1_amd64.deb dpkg -i libevent-2.1-6_2.1.8-stable-4build1_amd64.deb echo 'deb http://security.ubuntu.com/ubuntu xenial-security main' | sudo tee /etc/apt/sources.list.d/xenial-security.list sudo apt update sudo apt install libmysqlclient20 wget http://launchpadlibrarian.net/447334332/libsnmp30_5.7.3+dfsg-5ubuntu6_amd64.deb dpkg -i libsnmp30_5.7.3+dfsg-5ubuntu6_amd64.deb
Обновление веб-интерфеса
apt install zabbix-apache-conf
Запуск служб (в большинстве случаев сервер и агент)
service zabbix-server start service zabbix-proxy start service zabbix-agent start service zabbix-agent2 start
Проблема со старой версией MariaDB
Но меня и здесь подстерегала проблема, Zabbix не может запуститься так как версия MariaDB старая, в логах видим /var/log/zabbix/zabbix_server.log:
Unable to start Zabbix server due to unsupported MariaDB database version (10.03.39). Must be at least (10.05.00). Use of supported database version is highly recommended.
Необходимо остановить службы
Для обновления, надо зайти на сайт https://mariadb.org/download/?t=repo-config, я выбрал установку используя репозиторий:
1. Выбирать дистрибутив 20.04 «focal»
2. Я выбрал версию 11.3, можно и старее, до 10.05
3. Выполнить в терминале:
sudo apt install apt-transport-https curl sudo mkdir -p /etc/apt/keyrings sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
4. В файл /etc/apt/sources.list.d/mariadb.list, записать:
# MariaDB 11.3 repository list # https://mariadb.org/download/ # deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details. # deb [signed-by=/etc/apt/keyrings/mariadb-keyring.pgp] https://deb.mariadb.org/11.3/ubuntu focal main deb [signed-by=/etc/apt/keyrings/mariadb-keyring.pgp] https://mirror.docker.ru/mariadb/repo/11.3/ubuntu focal main # deb-src [signed-by=/etc/apt/keyrings/mariadb-keyring.pgp] https://mirror.docker.ru/mariadb/repo/11.3/ubuntu focal main
5. Обновление MariDB
apt update apt install mariadb-server
Проблема с кодировкой
К сожалению, у меня возникла проблема с кодировкой, сразу не посмотрел свою.
Database error Server sent charset unknown to the client. Please, report to the developers
1. Надо проверить и исправить кодировку в конфигах MariaDB
Сразу укажу и другие настройки БД (максимальное количество подключений, включение логгировния ошибок, кодировка)
Добавляем или редактируем файл /etc/mysql/mariadb.conf.d/50-server.cnf
[mariadbd] max_connections = 768 log_error = /var/log/mysql/error.log character-set-server = utf8mb4 collation-server = utf8mb4_general_ci
Перезапуск
service mariadb restart
2. Возможно этого будет достаточно, но сразу я этого не сделал начал ломать голову с кодировкой.
Самый простой и возможно долгий способ — это создать новую базу и восстановить резервную копию и она уже будет нужной кодировкой, для этого выполнить:
mariadb -uroot -p create database zbx character set utf8mb4 collate utf8mb4_bin; create user zbx@localhost identified by 'passWoRD'; grant all privileges on zbx.* to zbx@localhost; quit; zcat /opt/zabbix-backup/zabbixdb/opt/zabbix-backup/.sql.gz | mariadb --default-character-set=utf8mb4 -uzbx -p zbx
3. Но даже здесь у меня возникла проблема, я не смог дать права новому пользователю, не хватило прав
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation
Поскольку сервер установлен внутри мизерной компании и никто кроме меня туда не заходит, то у root пользователя MariaDB не было пароля. Перепробовав различные способы установки пароля и выдачи прав root пользователю, не увенчались успехом. Поэтому пришлось удалить MariaDB и установить заново
При удалении, так же удалятся и некоторые пакеты Zabbix, поэтому установим их заново. Так же во время удаления, необходимо указать, что базы данных оставить и не удалять
apt purge mariadb* apt install mariadb-server apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent zabbix-apache-conf
4. Теперь можно установить пароль на root пользователя, отключить анонимных пользователей и удалить тестовую базу данных:
mariadb-secure-installation
5. Необходимо вернуться к пункту 2, и выполнить назначение привилегий пользователю zbx. Раз у пользователя не было прав, значит и база данных тоже не восстановилась, её тоже восстановить:
mariadb -uroot -p grant all privileges on zbx.* to zbx@localhost; quit; zcat /opt/zabbix-backup/zabbixdb/opt/zabbix-backup/.sql.gz | mariadb --default-character-set=utf8mb4 -uzbx -p zbx
6. Дополнительную информацию по другим проблемам со старой базой на новом Zabbix, укажу внизу статьи
7. После успешного восстановление базы данных, надо исправить путь к базе, пользователя и пароль, в конфиге /usr/share/zabbix/conf/zabbix.conf.php:
$DB['TYPE'] = 'MYSQL'; $DB['SERVER'] = 'localhost'; $DB['PORT'] = '0'; $DB['DATABASE'] = 'zbx'; $DB['USER'] = 'zbx'; $DB['PASSWORD'] = 'passWoRD';
В конфиге /etc/zabbix/zabbix_server.conf:
DBHost=localhost DBName=zbx DBUser=zbx DBPassword=passWoRD
8. Так же MariaDB жаловался на:
[Warning] Could not increase number of max_open_files to more than 32768 (request: 32801)
Для исправления, необходимо в службе изменить ограничения открытых файлов, для этого отредактировать службу, /usr/lib/systemd/system/mariadb.service, найти и исправить или добавить:
[Service] LimitNOFILE=32768
9. Перезагрузить зависимые службы:
systemctl daemon-reload systemctl restart mariadb systemctl restart apache systemctl restart zabbix-server systemctl restart zabbix-proxy systemctl restart zabbix-agent systemctl restart zabbix-agent2
Долгожданный и успешный запуск Zabbix 6.0
При заходе в веб-интерфес Zabbix, появится предупреждение, что версия базы данных Zabbix, не соответствует требованиям. Zabbix сам обновит версию, это можно наблюдать как при обновлении страницы, меняются цифры версии. Если очень долго зависло на обновлении, необходимо изучить логи на ошибки (/var/log/zabbix/zabbix_server.log)
Database error The Zabbix database version does not match current requirements. Your database version: 5000000. Required version: 6000000. Please contact your system administrator.
P.S.
Как оказалось старая база, очень плохо дружится с новым Zabbix 6.0
1. Неправильная кодировка
2. Database could be upgraded to use primary keys in history tables
3. Database is not upgraded to use double precision values
Решая одну проблему, натыкался на другую, поэтому я выбрал самое простое решение — сразу правильно выполнить импорт базы данных из резервной копии.
Но и с текущей базой тоже можно провести манипуляции, после чего должно всё заработать. Укажу ссылки, а вам решать, какой способ выбрать:
- https://www.zabbix.com/documentation/6.0/ru/manual/appendix/install/db_primary_keys — в документации zabbix, имеет смысл выбирать английский язык, он бывает более правильный и без ошибок указаны команды терминала
- https://www.zabbix.com/forum/in-russian/439786-проблема-обновления-базы-данных-при-обновлении-с-5-0-до-6-0
- https://www.zabbix.com/forum/zabbix-troubleshooting-and-problems/401004-upgrade-to-zabbix-5-0-database-is-not-upgraded-to-use-double-precision-values
- https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/database/mysql?at=6.0.8 — Если по какой-то причине нет скриптов в указанной директории
Полезные ссылки:
- https://www.zabbix.com/documentation/6.0/ru/manual/installation/upgrade/packages/debian_ubuntu — обновление до Zabbix 6.0
- https://master-server.pro/blog/import-export-bd-ssh — dump и restore сжатой базы данных
- https://serverspace.ru/support/help/installing-mariadb/ — установка MariaDB
- https://timeweb.cloud/tutorials/mariadb/ustanovka-mariadb-v-ubuntu-20-04 — установка MariaDB
- https://www.zabbix.com/forum/zabbix-help/47654-error-connecting-to-database-access-denied-for-user-zabbix-localhost-to-database — Проблема с доступом к базе Zabbix
- https://ixnfo.com/en/zabbix-upgrading-the-database-to-primary-keys.html — Обновление базы данных primary keys
- https://seo-ale.ru/poleznoe/it-kurilka/zabbix-focal-inrelease-doesnt-support-architecture-i386.html — проблемы с архитектурой i386 / amd64
- https://sky.pro/wiki/sql/kak-opredelit-kodirovku-v-my-sql-baza-tablitsa-pole/ — определение кодировки базы данных
Добавить комментарий