А АTuesday 25 January 2022

Обновление Zabbix 4.4 до 5.0.


Всем привет. 

Историческая необходимость заставила нас пойти на апгрейд Zabbix-а до версии 5.  Но я вам настоятельно рекомендую ознакомиться со статьей одного автора прежде чем обновляться самим. Обязательно сначала прочитайте всю статью до конца, более того, загляните в комментарии к той статье, там много полезного, важные замечания, шишки и боль.

В 5-й версии очень много изменений, как в настройках, так и в интерфейсе. Обновлять без подготовки не рекомендую. Если у вас несколько серверов, начните с самого простого и незанятого.

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

Последний нюанс - минимальные системные требования к версии PHP для Zabbix 5 - 7.2 Так что прежде чем обновлять сам сервер мониторинга, убедитесь, что у вас стоит подходящая версия php. Обращаю ваше внимание на это ибо у меня один сервер уперся именно в версию PHP и хотя сам zabbix продолжал работать доступ к фронтенду был утерян. 

Приступаем к обновлению сервера мониторинг Zabbix версии 4.4 до 5.0. Итак имеем Centos 8 и zabbix 4.4.7.

Подключаем репозиторий версии zabbix 5.0:

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm

Старый репозиторий от версии 4.4 будет автоматически удален.

Очищаем и пересоздаем кэш yum:

# yum clean all

# yum makecache

Устанавливаем само обновление zabbix на сервер Centos следующей командой:

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

Это список пакетов заббикса для общего случая. Если у вас установлено что-то еще, лучше обновить все сразу. Посмотреть список установленных пакетов zabbix можно командой:

rpm -qa | grep zabbix

Обновляем все сразу:

# yum upgrade zabbix-server-mysql zabbix-web zabbix-agent zabbix-get zabbix-sender zabbix-nginx zabbix-web-mysql

После завершения обновления, запускаем сервер:

# systemctl start zabbix-server

Следить за ним можно с помощью просмотра лог файла zabbix сервера.

# tail -f /var/log/zabbix/zabbix_server.log

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

# systemctl start zabbix-agent

В логах агента и сервера можно посмотреть версию запущенных сервисов.

Starting Zabbix Agent [Zabbix server]. Zabbix 5.0.19 (revision 9665d62db0).

Starting Zabbix Server. Zabbix 5.0.19 (revision 9665d62db0).

Теперь можно идти в веб интерфейс и смотреть на обновленную версию zabbix server. Перед этим почистите кэш браузера и удалите куки от страницы заббикса. Если этого не сделать, то могут быть проблемы и ошибки, с чем я не раз сталкивался. Если у вас в качестве веб сервера используется nginx, не забудьте поменять владельца директории /etc/zabbix/web на nginx, в том случае, если веб сервер работает от него. После обновления он будет принадлежать apache, а web интерфейс не заработает:

# chown -R nginx:nginx /etc/zabbix/web


Тут все прошло отлично, без сучка и задоринки.

А вот на сервере Ubuntu 16.04 я получил следующее:
The frontend does not match Zabbix database. Current database version (mandatory/optional): 5050000/5050000. Required mandatory version: 4040000. Contact your system administrator.

Смотрим пакеты dpkg -l | grep zabbix

ii zabbix-agent 1:5.0.19-1+xenial amd64 Zabbix network monitoring solution - agent
ii zabbix-apache-conf 1:5.0.19-1+xenial all Zabbix network monitoring solution - apache configuration for front-end
ii zabbix-frontend-php 1:4.4.10-1+xenial all Zabbix network monitoring solution - PHP front-end
ii zabbix-get 1:5.0.19-1+xenial amd64 Zabbix network monitoring solution - get
ii zabbix-java-gateway 1:5.0.19-1+xenial all Zabbix network monitoring solution - java-gateway
ii zabbix-release 1:5.0-1+xenial all Zabbix official repository configuration
ii zabbix-sender 1:5.0.19-1+xenial amd64 Zabbix network monitoring solution - sender
ii zabbix-server-mysql 1:5.0.19-1+xenial

Замечаем нашего гадкого утенка 1:4.4.10-1+xenial.

Однако на попытку его обновить он нам радостно кричит: zabbix-frontend-php is already the newest version (1:4.4.10-1+xenial). Т.е. нужно будет поиграться именно с предварительным обновлением php. 

Как видите, обновление смежных версий Zabbix возможно, но фактор везения все таки присутствует. Если вам некогда  с этим  возиться и вас особо не волнуют возможные проблемы, то вот такой скрипт может вам помочь сделать это за раз:

chmod +x upgrade_zabbix.sh
sudo ./upgrade_zabbix.sh mysql 5.4 1
systemctl restart zabbix-server
 
#!/usr/bin/env bash
detect_os=$(cat /etc/os-release)
db=$1
zbx_ver=$2
pack_ver=$3

if [ "$db" != "mysql" ] && [ "$db" != "pgsql" ] ; then
    echo "Error: missing script argument for the database type (mysql or pgsql)"
echo "Script usage example: sudo ./upgrade_zabbix.sh mysql 5.2 1"
exit 0
fi
if [ -z "$zbx_ver" ]; then
    echo "Error: missing script argument for the version of Zabbix you are upgrading to."
echo "Script usage example: sudo ./upgrade_zabbix.sh mysql 5.2 1"
exit 0
fi
if [ -z "$pack_ver" ]; then
    echo "Error: missing script argument for the package version, usually it is a number 1 or 2"
echo "Script usage example: sudo ./upgrade_zabbix.sh mysql 5.2 1"
exit 0
fi

#RHEL / CentOS
if  [[ "$detect_os" == *"rhel"* ]];
then
echo "Downloading and installing package for RHEL/CentOS"
if [ -z `command -v yum` ]; then
    pktm="dnf"
else
    pktm="yum"
fi
rpm -Uvh https://repo.zabbix.com/zabbix/$zbx_ver/rhel/$(rpm -E %{rhel})/x86_64/zabbix-release-$zbx_ver-$pack_ver.el$(rpm -E %{rhel}).noarch.rpm
$pktm clean all
$pktm  upgrade -y zabbix-server-$db zabbix-web-$db
#Ubuntu
elif [[ "$detect_os" == *"ubuntu"* ]];
then
echo "Downloading and installing package for Ubuntu"
dpkg --purge zabbix-release
wget https://repo.zabbix.com/zabbix/$zbx_ver/ubuntu/pool/main/z/zabbix-release/zabbix-release_$zbx_ver-$pack_ver+ubuntu$(lsb_release -rs)_all.deb
dpkg -i zabbix-release_$zbx_ver-$pack_ver+ubuntu$(lsb_release -rs)_all.deb
apt update
apt install -y --only-upgrade zabbix-server-$db zabbix-frontend-php

#Raspberry Pi
elif [[ "$detect_os" == *"rasbian"* ]];
then
echo "Downloading and installing package for Raspberry Pi OS"
dpkg --purge zabbix-release
wget https://repo.zabbix.com/zabbix/$zbx_ver/raspbian/pool/main/z/zabbix-release/zabbix-release_$zbx_ver-$pack_ver+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
dpkg -i zabbix-release_$zbx_ver-$pack_ver+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
apt update
apt install -y --only-upgrade zabbix-server-$db zabbix-frontend-php 

# Debian
elif [[ "$detect_os" == *"debian"* ]];
then
echo "Downloading and installing package for Debian"
dpkg --purge zabbix-release
wget https://repo.zabbix.com/zabbix/$zbx_ver/debian/pool/main/z/zabbix-release/zabbix-release_$zbx_ver-$pack_ver+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
dpkg -i zabbix-release_$zbx_ver-$pack_ver+debian$(cut -d"." -f1 /etc/debian_version)_all.deb
apt update
apt install -y --only-upgrade zabbix-server-$db zabbix-frontend-php 
fi

Я его не использовал ибо у меня не так много свободных серверов под эксперименты. На ваш риск и удачу.

1 comment:

Anonymous said...

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ondrej/php
sudo apt update
sudo apt-get install --only-upgrade zabbix-frontend-php

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное