Всем привет.
Историческая необходимость заставила нас пойти на апгрейд 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
Я его не использовал ибо у меня не так много свободных серверов под эксперименты. На ваш риск и удачу.
sudo apt-get install software-properties-common
ReplyDeletesudo apt-add-repository ppa:ondrej/php
sudo apt update
sudo apt-get install --only-upgrade zabbix-frontend-php