Opublikowany już jakiś czas temu Zabbix 5.0 wnosi wiele nowości w stosunku do wersji 4. O zmianach można poczytać między innymi tutaj -> What’s New in Zabbix 5.0

Wśród nowości należy wymienić:

  • możliwość wdrożenia lokalnie lub w chmurze
  • poprawione bezpieczeństwo
  • poprawiona skalowalność i wydajność
  • nowy, lepszy agent Zabbixa
  • automatyzacja i wykrywanie
  • zaawansowane wizualizacje

Zabbix Server 5.0 do działania wymaga minimum PHP 7.2 oraz najnowsze dystrybucje Linuxa.

Poniższy opis pokazuje jak przeprowadzić upgrade z Debian 9 z zainstalowanym Zabbix 4 do Debian 10 (buster) i Zabbix 5.0

Backup

W pierwszym kroku należy zadbać o zrobienie backupu serwera Zabbix. Jeżeli serwer Zabbix mamy na maszynie wirtualnej robimy jej snpashot. W przeciwnym wypadku musimy zadbać o prawidłowy backup całego systemu, serwera Zabbix i baz danych.

Instalacja PHP 7.4

Ponieważ Zabbix 5 wymaga do działania PHP w wersji minimum 7.2 to musimy zadbać by w naszym systemie była zainstalowana taka wersja. Proponuję od razu przeprowadzić od razu instalację PHP 7.4

Zaczynamy od dodania repozytoriów:

apt -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

Następnie instalujemy PHP 7.4 oraz rozszerzenia

apt update
apt -y install php7.4
apt-get install php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip}

W kolejnym kroku musimy wyłączyć obecną wersję PHP i włączyć PHP 7.4 oraz zrestartować Apache

a2dismod php7.0
a2enmod php7.4
systemctl restart apache2

Sprawdzamy czy frontend Zabbixa jest dostępny i działa 🙂

Upgrade Debian 9 do 10

Przystępujemy do aktualizacji Debiana z wersji 9 do 10 (buster). Wykonujemy to w kilku prostych krokach

apt update
apt upgrade -y
apt --purge autoremove -y

następnie wykonujemy reboot by zastosować nowy kernel czy inne aktualizacje

W kolejnym kroku musimy edytować /etc/apt/sources.list i zmienić stretch na buster

Warto sprawdzić czy w lokalizacji /etc/apt/sources.list.d/ są dodatkowe pliki ze źródłami, w których również należy dokonać zmian

Następnie ponownie wykonujemy aktualizację

apt update
apt upgrade -y

W trakcje aktualizacji możemy zostać poproszeni o udzielenie kilku odpowiedzi, np czy chemy pozwolić na restarty usług bez pytania:

lub czy chcemy zachować istniejące pliki konfiguracyjne pakietów

Należy wybrać odpowiednią dla nas opcję.

Następnie wykonujemy pełny upgrade oraz restart systemu

apt full-upgrade -y
reboot

Po restarcie sprawdzamy czy zabbix działa poprawnie.

Upgrade Zabbix 4 do 5

W pierwszej kolejności zatrzymujemy serwer Zabbix

systemctl stop zabbix-server

Następnie usuwamy stare repozytora i dodajemy nowe oraz instalujemy wersję 5.0

dpkg --purge zabbix-release
wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
dpkg -i zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
apt update
apt install -y --only-upgrade zabbix-server-mysql zabbix-frontend-php
apt install -y zabbix-apache-conf

W tym momencie warto w kolejnej sesji włączyć sobie podgląd pliku log zabbix servera

tail -f /var/log/zabbix/zabbix-server.log

Uruchamiamy usługę zabbix server i podglądamy co nam się pojawia w logu

systemctl start zabbix-server

Przy pierwszym uruchomieniu zabbix będzie próbował wykonać aktualizację bazy danych do wersji 5.0

 starting automatic database upgrade
completed 0% of database upgrade
completed 1% of database upgrade

Jeżeli aktualizacja przebiegnie pomyślnie zabbix powinien się uruchmić.

niestety w trakcie aktualizacji bazy danych może pojawić się błąd jak poniżej

[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 [alter table `media_type` add `event_menu_name` varchar(255) default ” not null] database upgrade failed

Aby naprawić ten błąd musimy wyłączyć innodb strict mode co wykonujemy następującym poleceniem

mysql -uroot -p'password' zabbix -e "set global innodb_strict_mode='OFF';"

i restartujemy usługę zabbix server i ponownie podglądamy co nam się pojawia w logu

systemctl restart zabbix-server

Jeżeli proces aktualizacji przebiegł pomyślnie, powinniśmy zobaczyć nowy interfejs webowy zabbixa. Jeżeli wszystko działa poprawnie włączamy innodb strict mode

mysql -uroot -p'password' zabbix -e "set global innodb_strict_mode='ON';"

Warto dodać, że w zależności od wielkości bazy danych proces aktualizacji może potrwać nawet kilka minut. W tym czasie interfejs webowy zabbixa będzie niedostępny i będzie wyświetlał komunikat

The frontend does not match zabbix database. current database version (mandatory/optional): 4040000/4040002. required mandatory version: 5000000. contact your system administrator.

Proces aktualizacji możemy podejrzeć w pliku log

Ostatnim krokiem jest aktualizacja agentów Zabbixa na monitorowanych systemach. Aktualne wersje można pobrać ze strony https://www.zabbix.com/download_agents

Zakończenie

Zachęcam wszystkich do aktualizacji Zabbix do wersji 5.0 LTS, a jeżeli obawiacie się przejść przez ten proces samemu to zapraszam do kontaktu. Przygotujemy dla was atrakcyjną ofertę na aktualizację lub wdrożenie Zabbixa jeżeli jeszcze go nie posiadacie.