24.11.2024

Обновление Zabbix c версии 4.0 до 7.0

Заметки в процессе обновления

Вводные данные, ОС Debian 9 версия 9.13 и Zabbix 4.0.12

План обновления

Предельно простой из-за того что используется довольно старый дистрибутив Debian будем обновлять ZABBIX по мере поддержки, можно конечно все было обновить на Debian 9, но было принято решение в процессе обновить и ОС до актуальной версии, в связи с поддержкой нужных версий ПО PHP 7.4, MariaDB – 10.5, да их можно установить на более старые версии дистрибутивов Debian, но лучше обновить сейчас пока это возможно.

  • Обновление ZABBIX до версии 4.2 на Debian 9
  • Обновление Debian 9 до Debian 10
  • Обновление ZABBIX до версии 5.0 на Debian 10
  • Обновление Debian 10 до Debian 11
  • Обновление ZABBIX до версии 6.0 на Debian 11
  • Обновление ZABBIX до версии 6.2 на Debian 11
  • Обновление ZABBIX до версии 6.4 на Debian 11
  • Обновление Debian 11 до Debian 12
  • Обновление ZABBIX до версии 7.0 на Debian 12

Обновление ОС Debian

Задача крайне простая и описана тут 

После обновления Debian до более высокой версии, PHP будет работать не корректно из-за неверной конфигурации, рекомендуется удалить все версии и библиотеки используемые PHP.

Обновление ZABBIX

Процедура обновления сервера ZABBIX одинаковая, отличия только в версии ZABBIX и ОС. Так же будут замечания при обновлении дистрибутива и версии PHP

Остановка процессов ZABBIX

service zabbix-server stop
service zabbix-agent stop

Создание резервной копии

Резервное копирование базы данных ZABBIX

mkdir /opt/zabbix-backup/
mysqldump --opt -v --databases zabbix -uzabbix -pqwerty123 | gzip -c > /opt/zabbix-backup/sql/zabbix.sql.gz

Убедитесь, что у вас имеется резервная копия вашей базы данных. Если процедура обновления закончится неудачно, она поможет восстановить работу сервиса.

Резервное копирование файлов конфигурации, PHP файлов и бинарных файлов ZABBIX

mkdir /opt/zabbix-backup/
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
Файлы PHP и бинарные файлы ZABBIX
cp -R /usr/share/zabbix/ /opt/zabbix-backup/
cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup/

Обновление репозитория

Чтобы продолжить обновление, необходимо удалить текущий репозиторий.

rm -Rf /etc/apt/sources.list.d/zabbix.list
dpkg --purge zabbix-release

Перед обновлением

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

В MySQL и MariaDB это необходимо установить GLOBAL log_bin_trust_function_creators = 1

mysql -uroot -p zabbix -e "SET GLOBAL log_bin_trust_function_creators = 1;"

После обновления вернуть в стандартное положение

mysql -uroot -p zabbix -e "SET GLOBAL log_bin_trust_function_creators = 0;"

Добавление репозитория ZABBIX нужной версии

  • ZABBIX 4.0 (Debian 8/9/10)
wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-3+$(lsb_release -c -s)_all.deb
dpkg -i zabbix-release_4.0-3+$(lsb_release -c -s)_all.deb
  • ZABBIX 4.0 (Debian 11)
wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-4+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
dpkg -i zabbix-release_4.0-4+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
  • ZABBIX 4.4 (Debian 8/9/10)
wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1+$(lsb_release -c -s)_all.deb
dpkg -i zabbix-release_4.4-1+$(lsb_release -c -s)_all.deb
  • ZABBIX 5.0 (Debian 8/9/10/11)
wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_5.0-1+$(lsb_release -c -s)_all.deb
dpkg -i zabbix-release_5.0-1+$(lsb_release -c -s)_all.deb
  • ZABBIX 5.0 (Debian 11)
wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_5.0-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
dpkg -i zabbix-release_5.0-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
  • ZABBIX 6.0 (Debian 8/9/10/11)
wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
dpkg -i zabbix-release_6.0-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
  • ZABBIX 6.2 (Debian 9/10/11)
wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
dpkg -i zabbix-release_6.2-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
  • ZABBIX 6.4 (Debian 9/10/11)
wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
dpkg -i zabbix-release_6.4-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
  • ZABBIX 7.0 (Debian 9/10/11/12)
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
dpkg -i zabbix-release_7.0-1+debian$(cut -d"." -f1 /etc/debian_version)_all.deb

Обновление сервера ZABBIX

apt update
apt install -y --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent

Запуск сервисов

service zabbix-server start 
service zabbix-agent start

Обновление версии PHP

При обновлении ОС Debian c 9 на 10 или с 10 на 11, необходимо удалить PHP и его библиотеки.

apt update
apt remove -y php*
# apt purge -y php*
apt remove -y zabbix-apache-conf
apt autoremove -y

Установить нужную версию PHP и все необходимые модули, а так же настроить Apache для текущей версии ZABBIX поможет zabbix-apache-conf

apt install -y zabbix-apache-conf

Перезапустим Apache

service apache2 restart

Проверка выполнения обновления базы ZABBIX

cat /var/log/zabbix/zabbix_server.log | grep database
15244:20221123:133217.440 current database version (mandatory/optional): 06000000/06000007
15244:20221123:133217.440 starting automatic database upgrade 15244:20221123:133217.446 completed 1% of database upgrade 15244:20221123:133217.840 completed 10% of database upgrade ********************************************************** 15244:20221123:133218.110 completed 98% of database upgrade 15244:20221123:133218.123 completed 100% of database upgrade 15244:20221123:133218.123 database upgrade fully completed 15244:20221123:133218.136 database could be upgraded to use primary keys in history tables

Проверка оповещений

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

Ошибка No media defined for user – у пользователя не указан способ оповещения

Ошибка No message defined for media type – в способе оповещения отсутствуют шаблоны сообщений

Необходимо обновить все в соответствии с новой версией ZABBIX

  • Администрирование -> Способы оповещения
    • Там будет 3 вкладки: Способ оповещений, Шаблоны сообщений и Опции, проверить необходимо все
      • Проверяем Способ оповещений, в данной вкладке настраивается способ подключения, логин, пароль  и аналогичные настройки, в зависимости от типа оповещения
      • Если во вкладке Шаблоны сообщений, то необходимо создать шаблоны для необходимых типов сообщения, обычно это Проблема, Восстановление проблемы и Обновление проблемы (если они отсутствуют вы получите ошибку No message defined for media type)
      • Во вкладке Опции, нет особых изменений
    • После нажмите обновить и выполните тестирование, используя кнопку тест
  • Администрирование -> Пользователи
    • Выбираем нужного пользователя, переходим во вкладку Оповещения
      • Проверяем что установлен нужный тип оповещения и указаны необходимые поля, например
      • Добавляем нужно количество видов оповещения, в моем случае их 2 Telegram и Email
    • После нажмите обновить
  • Настройка -> Действия-> Действия триггеров
    • Выбираем или создаем нужный триггер
      • Во вкладке Операции, указываем как и кого оповещать, при Проблеме, Восстановлении и Обновлении проблем
      • В моем случае Проблема и Восстановление

Ошибки в процессе обновления

[Z3005] query failed: [1709] Index column size too large

При обновлении с Zabbix-сервера с версии 4.0 до версии 5.0.

[Z3005] query failed: [1709] Index column size too large. The maximum column size is 767 bytes [create index items_1 on items (hostid,key_(1021))]

Решение

Добавить в mysql конфиг в секцию [mysqld]

innodb_large_prefix = ON
innodb_file_format = Barracuda

Возможно потребуется изменить формат innodb-default-row-format

innodb-default-row-format=dynamic

[Z3005] query failed: [1118] Row size too large

[Z3005] query failed: [1118] Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

Решение временно отключить режим innodb strict в MySQL/MariaDB и перезапустить сервис zabbix-server

mysql -uroot -p zabbix -e "set global innodb_strict_mode='OFF';"
service zabbix-server restart

После успешного обновления вернуть параметр в нормальное состояние

mysql -uroot -p zabbix -e "set global innodb_strict_mode='ON';"
service zabbix-server restart

[Z3005] query failed: [1419] You do not have the SUPER privilege and binary logging is enabled

[Z3005] query failed: [1419] You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variab> before insert on hosts for each row

Проверка

mysql> SHOW VARIABLES LIKE 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators |  OFF  |
+---------------------------------+-------+

Решение

mysql -uroot -p zabbix -e "set global log_bin_trust_function_creators = 1;"
service zabbix-server restart
mysql> SELECT Host,User,Super_priv FROM mysql.user;
+-----------+-------------+------------+
| Host | User | Super_priv |
+-----------+-------------+------------+
| % | admin | Y |
| localhost | zabbix | N |
| localhost | mariadb.sys | N |
| localhost | root | Y |
+-----------+-------------+------------+

Решение

UPDATE mysql.user SET Super_Priv='Y' WHERE user='zabbix' AND host='localhost';

После успешного завершения обновления log_bin_trust_function_creators можно отключить


Дополнительная информация

 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *