Zabbix upgrade z wersji 4 do wersji 5
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.
Zabbix Upgrade 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.