Переезд + Обновление Заббикс

Процесс установки zabbix а так же дополнительных различных вспомогательных программ
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 824
Стаж: 5 лет 5 месяцев
Откуда: Вологодская область
Поблагодарили: 36 раз
Контактная информация:

Переезд + Обновление Заббикс

Сообщение Артём Мамзиков »

Изначально заббикс 4.2.1 был собран из исходного кода
Наиболее полный перечень установки

Код: Выделить всё

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-jabber=/usr --with-ssh2 --with-openipmi --with-ldap --with-openssl --enable-java --with-libevent --with-libpcre --with-zlib --with-libpthread --with-unixodbc --with-iconv
При переезде на новое железо и ОС с Debian9 на Debian12

Установка из пакетов в дальнейшем для удобства обновления той же версии что была собрана из исходников 4.2.1
Репозиторий 4.2
Добавляем репозиторий zabbix скачиваем подходящий пакет под ОС

Код: Выделить всё

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
Пример репозиториев Debian /etc/apt/sources.list.d/zabbix.list

Код: Выделить всё

# Zabbix main repository
#deb https://repo.zabbix.com/zabbix/7.0/debian bookworm main
#deb-src https://repo.zabbix.com/zabbix/7.0/debian bookworm main
#deb https://repo.zabbix.com/zabbix/6.5/debian bookworm main
#deb-src https://repo.zabbix.com/zabbix/6.5/debian bookworm main


#deb https://repo.zabbix.com/zabbix/6.4/debian bullseye main
#deb-src https://repo.zabbix.com/zabbix/6.4/debian bullseye main
#deb https://repo.zabbix.com/zabbix/6.3/debian bullseye main
#deb-src https://repo.zabbix.com/zabbix/6.3/debian bullseye main

#deb https://repo.zabbix.com/zabbix/6.2/debian bullseye main
#deb-src https://repo.zabbix.com/zabbix/6.2/debian bullseye main
#deb https://repo.zabbix.com/zabbix/6.1/debian bullseye main
#deb-src https://repo.zabbix.com/zabbix/6.1/debian bullseye main
#deb [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/debian bullseye main
#deb-src [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/debian bullseye main


#deb https://repo.zabbix.com/zabbix/6.0/debian bookworm main
#deb-src https://repo.zabbix.com/zabbix/6.0/debian bookworm main
#deb https://repo.zabbix.com/zabbix/5.5/debian bookworm main
#deb-src https://repo.zabbix.com/zabbix/5.5/debian bookworm main


#deb http://repo.zabbix.com/zabbix/5.0/debian bullseye main
#deb-src http://repo.zabbix.com/zabbix/5.0/debian bullseye main

deb http://repo.zabbix.com/zabbix/4.4/debian buster main
deb-src http://repo.zabbix.com/zabbix/4.4/debian buster main

Обновляем список пакетов

Код: Выделить всё

apt-get update
4.2.4.2 установка (уже с libcurl4)

Код: Выделить всё

apt-get install zabbix-server-mysql zabbix-server-mysql-dbgsym zabbix-frontend-php zabbix-web-service zabbix-apache-conf zabbix-sql-scripts zabbix-js zabbix-js-dbgsym zabbix-java-gateway zabbix-sender zabbix-sender-dbgsym zabbix-get zabbix-get-dbgsym zabbix-agent2 zabbix-agent2-dbgsym
Отдельно потом напишу про некоторые моменты новой Оси дебиан 12 и заббикс 4.2.4.2 о их совместимости и настройки.

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

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

Оф. Требования
Пример версии 7.0
MySQL/Percona 8.0.30-8.2.X
MariaDB 10.5.00-11.1.X
Apache 2.4 or later
PHP 8.0.0 - 8.3.X
gd 2.0.28 or later
libXML 2.6.15 or later
OpenJDK version 11.0.8

Оф. Обновление из пакетов
Оф. Пример Изменений и заметок обновлений

Проверенные обновления
с 4.2 на 4.4
с 4.4 на 5.0
с 5.0 на 6.0
c 6.0 на 6.2
c 6.2 на 6.4
с 6.4 на 7.0

И прямые обновления рекомендуется сперва обновится до первой стабильной версии и после дальше
Прямое обновление до Zabbix 4.0.x возможно с Zabbix 3.4 .x, 3.2 .x, 3.0 .x, 2.4 .x, 2.2 .x и 2.0 .x. Для обновления с более ранних версий обратитесь к документации Zabbix для 2.0 и более ранних версий.

Прямое обновление до Zabbix 4.2.x возможно с Zabbix 4.0 .x, 3.4 .x, 3.2 .x, 3.0 .x, 2.4 .x, 2.2 .x и 2.0 .x. Для обновления с более ранних версий обратитесь к документации Zabbix для 2.0 и более ранних версий.

Прямое обновление до Zabbix 4.4.x возможно с Zabbix 4.2 .x, 4.0 .x, 3.4 .x, 3.2 .x, 3.0 .x, 2.4 .x, 2.2 .x и 2.0 .x. Для обновления с более ранних версий обратитесь к документации Zabbix для 2.0 и более ранних версий.

Прямое обновление до Zabbix 5.0.x возможно с Zabbix 4.4 .x, 4.2 .x, 4.0 .x, 3.4 .x, 3.2 .x, 3.0 .x, 2.4 .x, 2.2 .x и 2.0 .x. Для обновления с более ранних версий обратитесь к документации Zabbix для 2.0 и более ранних версий.

Прямое обновление до Zabbix 6.0.x возможно с Zabbix 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 и 2.0 .x. Для обновления с более ранних версий обратитесь к документации Zabbix для 2.0 и более ранних версий.

Прямое обновление до Zabbix 6.4.x возможно с Zabbix 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 и 2.0 .x. Для обновления с более ранних версий обратитесь к документации Zabbix для 2.0 и более ранних версий.

Прямое обновление до Zabbix 7.0.x возможно с 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 и 2.0 .x. Для обновления с более ранних версий обратитесь к документации Zabbix для 2.0 и более ранних версий.

Останавливаем заббикс сервер

Код: Выделить всё

service zabbix-server stop
service zabbix-agent stop
Будут ли заменены шаблоны на новые ? нет шаблоны все останутся какие есть, если нужно скачиваем с официального сайта последние версии шаблонов.
У меня сделано партицирование базы данных что с ней будет (создадутся ключи к таблицам будут ли корректное удаление потом или что то заблокирует файл) Напишу позже после тестов пока вроде ничего не сломалось работает как работало партицирование.

На 4.4 Обновление только уже установленных пакетов и подтянутся зависимости обновления если это не обходимо.

Код: Выделить всё

apt-get install --only-upgrade zabbix-server-mysql zabbix-server-mysql-dbgsym zabbix-frontend-php zabbix-apache-conf zabbix-js zabbix-js-dbgsym zabbix-java-gateway zabbix-sender zabbix-sender-dbgsym zabbix-get zabbix-get-dbgsym zabbix-agent zabbix-agent-dbgsym
Пропускается zabbix-js zabbix-js-dbgsym: пакет не установлен, а запрошено только обновление.
Затем, чтобы обновить веб-интерфейс с Apache должным образом, также выполните:
установите не обходимый пакет zabbix-apache-conf zabbix-nginx-conf

Код: Выделить всё

apt-get install zabbix-apache-conf
Пакеты 4.4 версии
zabbix-frontend-php недоступен
zabbix-server-mysql недоступен


4.4 - прогоним поверх установкой должен написать что у нас уже все установлено данной версии

Код: Выделить всё

apt-get install zabbix-server-mysql zabbix-server-mysql-dbgsym zabbix-frontend-php  zabbix-apache-conf zabbix-js zabbix-js-dbgsym zabbix-java-gateway zabbix-sender zabbix-sender-dbgsym zabbix-get zabbix-get-dbgsym zabbix-agent2 zabbix-agent2-dbgsym

Код: Выделить всё

service zabbix-server start
service zabbix-agent start
Процесс Zabbix сервера после запуска автоматически обновит схему базы данных.
При запуске Zabbix сервер сообщает текущую (обязательную и опциональную) и требуемую версии базы данных.
Если текущая обязательная версия старше чем требуемая версия, Zabbix сервер автоматически выполнит требуемые патчи обновления базы данных.
Начало и прогресс (в процентах) обновления базы данных записываются в файл журнала Zabbix сервера.
Когда обновление завершится, в файл журнала запишется сообщение "database upgrade fully completed".
Если какой-либо из патчей обновления будет ошибочным, Zabbix сервер не запустится.
Zabbix сервер также не запустится, если текущая обязательная версия более новая чем требуемая.
Zabbix сервер запустится только, если текущая обязательная версия базы данных соответствует требуемой обязательной версии.

8673:20161117:104750.259 current database version (mandatory/optional): 03040000/03040000
8673:20161117:104750.259 required mandatory version: 03040000
До начала запуска процесса сервера:
Убедитесь, что пользователь базы данных имеет достаточно прав (create table, drop table, create index, drop index).
Убедитесь что у вас достаточно свободного дискового пространства.

Код: Выделить всё

tail -f zabbix_server.log
или

Код: Выделить всё

tail -f zabbix_proxy.log
во второй SSH сессии будут отображаться последние записи из файла журнала и возможные ошибки в режиме реального времени.
Такой подход может быть критичным на продуктивных серверах

Обновление завершено проверяем работу наблюдаем какое то время за логами все ли там хорошо.

Не всегда идет все так гладко....
Мои ошибки и нюансы в обновлении с которыми я столкнулся при переходе с 4.2 на 4.4
Показать
Новому веб интерфейсу не понравилась текущая кодировка базы
Details Cannot connect to the database.
Incorrect default charset for Zabbix database: "utf8mb3" instead "UTF8".
у меня база в utf8mb3_bin будем переводит в utf8mb4

Новые создаются уже так
create database zabbixdb character set utf8mb4 collate utf8mb4_bin;

Исторически, MySQL и произодные от неё использовали 'utf8' как синоним для utf8mb3 - собственная 3-байтовая реализация командой разработчиков MySQL стандарта UTF8, который является 4-байтовым.
Начиная с версии MySQL 8.0.28 и MariaDB 10.6.1, набор символов 'utf8mb3' является устаревшим и в какой-то момент его поддержка будет прекращена, в то время как 'utf8' станет ссылкой на 'utf8mb4'
Во избежание проблем в будущем, строго рекомендуется использовать 'utf8mb4'.
Другим преимуществом переключения на 'utf8mb4' является поддержка дополнительных символов Юникода
Обратите внимание, что кодировка 'utf8mb4' может занимать чуть больше места на диске, чем раньше.


Восстановление набора символов и параметров сортировки базы данных Zabbix

В PhpMyAdmin
Набор символов базы данных и сопоставление:

Код: Выделить всё

SELECT @@character_set_database, @@collation_database;
получаем ответ
utf8mb3 utf8mb3_bin у меня старая версия, где то может быть
набор символов в выводе - не 'utf8mb4', а сопоставление -не 'utf8mb4_bin', поэтому нам нужно их исправить

Остановите Zabbix.
Создайте резервную копию базы данных!
Исправьте набор символов и сопоставление на уровне базы данных:

Код: Выделить всё

ALTER DATABASE zabbixdb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Проверим

Код: Выделить всё

SELECT @@character_set_database, @@collation_database;
Ответ
utf8mb4 utf8mb4_bin вот теперь хорошо

Исправить набор символов и сопоставление на уровне таблицы и столбца
Создадим процедуру

Код: Выделить всё

DELIMITER $$

CREATE PROCEDURE zbx_convert_utf8 ()
BEGIN
    DECLARE cmd VARCHAR(255) DEFAULT "";
    DECLARE finished INTEGER DEFAULT 0;

    DECLARE cur_command CURSOR FOR 
        SELECT command
        FROM (
            SELECT table_name AS sort1, 'A' AS sort2,
                   CONCAT('ALTER TABLE ', table_schema, '.', table_name,
                          ' MODIFY COLUMN ', column_name, ' ', column_type,
                          ' CHARACTER SET utf8mb4 COLLATE utf8mb4_bin',
                       CASE
                           WHEN column_default IS NULL THEN ''
                           ELSE CONCAT(' DEFAULT ', column_default, ' ')
                       END,
                       CASE
                           WHEN is_nullable = 'NO' THEN ' NOT NULL '
                           ELSE ''
                       END,
                   ';') AS command
            FROM information_schema.columns
            WHERE table_schema = @ZABBIX_DATABASE        
              AND column_type = 'text'
            UNION
            SELECT table_name AS sort1, 'B' AS sort2,
                   CONCAT('ALTER TABLE ', table_schema, '.', table_name,
                          ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;') AS command
            FROM information_schema.tables
            WHERE table_schema = @ZABBIX_DATABASE
        ) s
        ORDER BY sort1, sort2;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;

    OPEN cur_command;
    cmd_loop: LOOP
        FETCH cur_command INTO cmd;
        IF finished = 1 THEN
            LEAVE cmd_loop;
        END IF;
        SET @value = cmd;
        PREPARE stmt FROM @value;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END LOOP cmd_loop;
    CLOSE cur_command;

END$$

DELIMITER ;

Запустим процедуру изменения кодировки

Код: Выделить всё

SET @ZABBIX_DATABASE = 'zabbixdb';
SET innodb_strict_mode = OFF;
CALL zbx_convert_utf8();
SET innodb_strict_mode = ON;
описание команд
Показать
-- Установите имя вашей базы данных
SET @ZABBIX_DATABASE = 'zabbixdb';
-- Для MariaDB временно отключите режим строгого соблюдения правил InnoDB
SET innodb_strict_mode = OFF;
-- Вызовите процедуру
CALL zbx_convert_utf8();
-- Включите режим строгого соблюдения правил InnoDB обратно для MariaDB
SET innodb_strict_mode = ON;
-- Удалите процедуру
DROP PROCEDURE zbx_convert_utf8;
Проверка что все таблицы и столбцы применились

Код: Выделить всё

SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'zabbixdb' AND CHARACTER_SET_NAME != 'utf8mb4';
Если все хорошо ответ будет пустым

Проверяем веб интерфейс и запускам заббикс сервер


Другие варианты
ошибки в веб интерфейсе - Неподдерживаемая кодовая страница или тип сравнения для таблиц.
То же самое было на английском языке в логе
character set name or collation name that is not supported by Zabbix found in 379 column(s) of database "zabbix", only character set "utf8" and collation "utf8_bin" should be used in database.

SELECT CONCAT( 'ALTER TABLE `', t.`TABLE_SCHEMA` , '`.`', t.`TABLE_NAME` , '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;' ) AS sqlcode
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = 'zabbix'
ORDER BY 1
LIMIT 0 , 180;

ИЛИ

SELECT CONCAT( 'ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;') AS sqlcode
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = 'zabbix'
ORDER BY 1
LIMIT 0, 180;

-- Изменение набора символов и сопоставления для базы данных
ALTER DATABASE zabbixdb CHARACTER SET utf8 COLLATE utf8_bin;
-- Изменение набора символов и сопоставления для всех таблиц в базе данных
SELECT CONCAT('ALTER TABLE `', table_schema, '`.`', table_name, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;')
FROM information_schema.tables
WHERE table_schema = 'zabbix';

Меняем кодировку для самой базы данных zabbix.
ALTER DATABASE zabbixdb DEFAULT CHARACTER SET utf8mb4;
Проверим кодировку в базе данных zabbix
show variables like 'character_set_database';
количество слов: 1415

Вернуться в «Установка Заббикс и Дополнений»