Zabbix – aktualizace na poslední verzi 8.0 LTS

Co nás čeká?

Tentokrát si ukážeme, jak zaktualizovat Zabbix na nejnovější verzi 8.0. Budeme vycházet při aktualizaci z verze Zabbixu 7.0 a PostgreSQL 16 s jeho extenzí TimescaleDB.

Návod, jak aktualizovat PostgreSQL, naleznete v našem wiki článku. Dále zde najdete i návod na aktualizaci TimescaleDB.

Výběr operačního systému

Návod obsahuje postup pro RHEL platformy ve verzi 9 a Debian 13. Vyberte systém, na kterém již provozujete Zabbix 7.0.

Alma/CentOS/RHEL/Rocky 9
Debian 13

Vyberte také webový server, který používáte ve stávající instalaci:

Přípravné kroky

  • Přečtěte si „poznámky k vydané verzi“ (release notes) [ Official release notes for Zabbix 8.0 ]
  • Přečtěte si důkladně dokument „poznámky k aktualizaci“ (upgrade notes) [ Official upgrade notes for Zabbix 8.0 ] Poznámky k přeskočeným verzím: 7.2, 7.4.
  • Zkontrolujte a případně optimalizujte výkon současné databáze dle doporučení vendora a s ohledem na požadavky Zabbix instance
  • Zkontrolujte matici kompatibility: PHP 8.2–8.5, PostgreSQL 15–18 a při použití TimescaleDB verzi 2.20–2.29.x.
  • Zazálohujte konfigurační soubory Zabbix serveru a Zabbix proxy
  • Zázálohujte databáze Zabbix serveru, případně Zabbix proxy. Ve virtuálním prostředí můžete využít také konzistentní snapshot celé VM včetně databáze.
  • Zazálohujte veškeré možné úpravy „na míru“, které byly na úrovni Zabbix ručně provedeny
  • Tento postup je určen pro samostatný server. Pro HA použijte postup aktualizace HA clusteru.

Doporučujeme PHP 8.5 a PostgreSQL 18 v poslední opravné verzi. Obě řady Zabbix 8.0 podporuje.

Kontrola verzí

První příkaz zobrazí aktuální verzi PHP, druhý verzi databázového serveru PostgreSQL. PHP zkontrolujeme ještě před případným přepnutím na jinou verzi.

Příkazy spouštíme jako root. Název databáze a připojení upravte podle své instalace.

php-fpm -v
sudo -u postgres psql -d zabbix -c 'SHOW server_version;'

Záloha konfiguračních souborů Zabbix

Než se pustíme do dalších kroků, zazálohujeme veškeré konfigurační soubory Zabbix serveru a Zabbix Proxy. V příkazech nahraďte <backup directory> cestou ke své existující složce se zálohami.

cp -R /etc/zabbix/ /<backup directory>/
cp -R /usr/lib/zabbix/alertscripts/ /<backup directory>/
cp -R /usr/lib/zabbix/externalscripts/ /<backup directory>/
cp -R /usr/share/zabbix/ /<backup directory>/
cp /etc/httpd/conf/httpd.conf /<backup directory>/
cp /etc/httpd/conf.d/zabbix.conf /<backup directory>/

Zastavení služeb

Nejprve zastavíme Zabbix server a webserver, aby do databáze již nic nezapisovaly.

systemctl stop zabbix-server httpd php-fpm

Aktualizace databáze (Volitelně)

Doporučený přechod na PostgreSQL 18 proveďte samostatně podle odkazovaného návodu. Pro samotnou aktualizaci Zabbixu lze ponechat podporovaný PostgreSQL 16 s TimescaleDB 2.29.2, ze kterého vychází tento postup.

Detailní návod na aktualizaci PostgreSQL naleznete na naší wiki.

Aktualizace Zabbix

Vše jsme úspěšně zazálohovali a zkontrolovali požadavky nové verze Zabbixu na návazné komponenty.

Nyní přejdeme k aktualizaci samotného Zabbixu a všech jeho součástí.

Zabbix 8.0 vyžaduje PHP alespoň 8.2. Je-li výše zjištěná verze starší, následující příkazy přepnou na PHP 8.3 dodávané operačním systémem a zobrazí jeho verzi. Máte-li již podporovanou verzi PHP, přepnutí přeskočte:

dnf module switch-to php:8.3
php-fpm -v

U PHP 8.3 končí bezpečnostní podpora projektu PHP 31. 12. 2027. Distribuční balíčky mají vlastní životní cyklus; Red Hat uvádí pro stream 8.3 podporu do května 2029. Přesto doporučujeme PHP 8.5; jeho instalace vyžaduje jiný zdroj balíčků a řeší se samostatně.

Nejprve si stáhneme instalační balíčky pro repozitáře nové verze Zabbixu a smažeme instalační cache:

rpm -Uvh https://repo.zabbix.com/zabbix/8.0/release/rocky/9/noarch/zabbix-release-latest.el9.noarch.rpm
dnf clean all

Po tomto úkonu máme dostupné repozitáře nové verze a můžeme zaktualizovat balíčky Zabbix serveru. Proxy aktualizujeme postupně až po ověření serveru:

dnf upgrade zabbix-server-pgsql zabbix-web-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent2

Při dotazu na upravenou konfiguraci zachovejte vlastní databázové připojení a další nastavení. Porovnejte také soubory .rpmnew nebo .dpkg-dist a aktualizujte další skutečně nainstalované komponenty, například web service, Java gateway nebo pluginy agenta.

Po úspěšném dokončení aktualizace balíčků Zabbix serveru a všech jeho součástí můžeme Zabbix znovu spustit, aby se dokončil upgrade databázové struktury.

systemctl start zabbix-server

Postupné činnosti i celý proces aktualizace, včetně případných zásahů do struktury databázového schématu, lze sledovat v log souboru Zabbix serveru:

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

Počkejte na hlášení database upgrade fully completed. Probíhající aktualizaci nepřerušujte. Poté ukončete sledování logu pomocí Ctrl+C; Zabbix tím nezastavíte.

Zabbix 8.0 – dokončení aktualizace databáze: database upgrade fully completed
Průběh aktualizace databáze až do 100 %. Zvýrazněný řádek potvrzuje její dokončení.

V instalaci s TimescaleDB se po dokončení migrace může objevit následující chyba: Table "history_json" is not a hypertable. Execute TimescaleDB configuration step as described in Zabbix documentation to upgrade schema. Automatická migrace již doběhla, ale novou tabulku history_json je ještě potřeba převést na hypertable. Opravíme to hned následujícím krokem.

Zabbix 8.0 – chyba TimescaleDB: Table history_json is not a hypertable
Chybějící nastavení tabulky history_json po automatické migraci databáze.

Používáte-li TimescaleDB, proveďte ještě následující krok. U PostgreSQL bez TimescaleDB tento krok přeskočte:

systemctl stop zabbix-server
sudo -u zabbix psql -v ON_ERROR_STOP=1 -d zabbix -f /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql
systemctl start zabbix-server

Skript má vypsat TimescaleDB is configured successfully. Zprávy already a hypertable, skipping u stávajících tabulek jsou v pořádku.

Po opětovném spuštění Zabbix serveru hned zkontrolujte log. Chyba history_json se při tomto novém startu již nemá opakovat. Až ověříte úspěšný start, ukončete sledování pomocí Ctrl+C a pokračujte frontendem:

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

Frontend se přesunul do /usr/share/zabbix/ui. Proto před spuštěním webu upravíme původní cestu v jeho konfiguraci. Přístupové údaje v /etc/zabbix/web/zabbix.conf.php zachovejte; novou instalaci frontendu nespouštějte.

Pokud Apache stále používá původní cestu, může se zobrazit Manual intervention is required to complete upgrade!:

Zabbix 8.0 – apache – Manual intervention is required to complete upgrade!
Chyba při zachování původní cesty frontendu v Apache.

Následující příkaz opraví cestu v konfiguraci Apache, včetně vlastních virtuálních hostů. Již správnou cestu ponechá:

find -L /etc/httpd -type f -name '*.conf' -exec sed -i --follow-symlinks -E \
's#/usr/share/zabbix(/ui)?([/"[:space:]]|$)#/usr/share/zabbix/ui\2#g' {} +

Nyní zkontrolujeme konfiguraci Apache:

apachectl configtest

Kontrola musí vypsat Syntax OK. Pokud vidíte upozornění AH00558, Apache nemá nastavené jméno serveru; do /etc/httpd/conf/httpd.conf doplňte ServerName se skutečným DNS jménem serveru. Samotné toto upozornění spuštění neblokuje. Po úspěšné kontrole spustíme služby:

systemctl restart php-fpm httpd zabbix-agent2
systemctl is-active zabbix-server php-fpm httpd zabbix-agent2

Všechny kontrolované služby mají vypsat active. Poté otevřete frontend v prohlížeči na původní adrese.

Při restartu agenta se může v logu krátce objevit first network error. Po jeho spuštění má následovat connection restored. Pokud se chyby dál opakují, zkontrolujte dostupnost agenta a stav jeho služby uvedený výše.

Moduly a widgety initMAX aktualizujte přes RPM/DEB balíčky z našeho portálu. Balíčky se postarají i o nasazení do nové cesty; následující ruční kopírování pro ně nepoužívejte. Na portálu si nejprve ověřte, že používáte vydání podporující Zabbix 8.0. Pokud už máte náš repozitář nastavený, po upgradu Zabbixu aktualizujte nainstalované balíčky:

dnf upgrade 'zabbix-module-*'

Pokud jste naše moduly dosud nahrávali ručně, postupujte podle instalace přes balíčky uvedené u produktu na portálu.

Ostatní ručně instalované moduly: musí být kompatibilní se Zabbixem 8.0. Pokud zůstaly ve staré složce /usr/share/zabbix/modules, frontend vypíše například Cannot load module at: modules/upgrade_check.:

Zabbix 8.0 – Cannot load module at modules/upgrade_check před přesunem modulu
Modul zůstal ve staré složce a frontend jej nemůže načíst.

Kompatibilní modul zkopírujeme do složky, kterou již vytvořil balíček frontendu. V příkazu nahraďte upgrade_check názvem modulu z chybové hlášky. Novější verze, které jste do nové cesty již nainstalovali, starými soubory nepřepisujte. Příkaz zopakujte pro další ručně instalované moduly. Pokud je nepoužíváte, tento krok přeskočte:

cp -a /usr/share/zabbix/modules/upgrade_check /usr/share/zabbix/ui/modules/

Obnovte stránku v prohlížeči. Chyba má zmizet; v Administration → General → Modules ověřte stav a otevřete stránku modulu nebo jeho widget.

Zabbix 8.0 – modul po zkopírování do /usr/share/zabbix/ui/modules funguje
Stejný testovací modul po opravě cesty opět funguje.
Zabbix 8.0 po aktualizaci z verze 7.0 – informace o systému
Zabbix server i frontend po aktualizaci běží na nové verzi.
php -v
sudo -u postgres psql -d zabbix -c 'SHOW server_version;'

Cesty a název služby PHP-FPM níže odpovídají výchozímu PHP 8.4 z Debianu 13. Používáte-li jinou verzi PHP, upravte je podle své instalace.

Záloha konfigurace Zabbixu

Než se pustíme do dalších kroků, zazálohujeme veškeré konfigurační soubory Zabbix serveru a Zabbix Proxy. V příkazech nahraďte <backup directory> cestou ke své existující složce se zálohami.

cp -R /etc/zabbix/ /<backup directory>/
cp -R /usr/lib/zabbix/alertscripts/ /<backup directory>/
cp -R /usr/lib/zabbix/externalscripts/ /<backup directory>/
cp -R /usr/share/zabbix/ /<backup directory>/
cp -R /etc/apache2/ /<backup directory>/

Zastavení Zabbix služeb

Nejprve zastavíme Zabbix server a webserver, aby do databáze již nic nezapisovaly.

systemctl stop zabbix-server apache2

Aktualizace databázových komponent (volitelně)

Doporučený přechod na PostgreSQL 18 proveďte samostatně podle odkazovaného návodu. Pro samotnou aktualizaci Zabbixu lze ponechat podporovaný PostgreSQL 16 s TimescaleDB 2.29.2, ze kterého vychází tento postup.

Detailní návod na aktualizaci PostgreSQL naleznete na naší wiki.

Aktualizace Zabbixu

Vše jsme úspěšně zazálohovali a zkontrolovali požadavky nové verze Zabbixu na návazné komponenty.

Nyní přejdeme k aktualizaci samotného Zabbixu a všech jeho součástí.

Debian 13 dodává PHP 8.4, které požadavky Zabbixu splňuje. Pro aktualizaci Zabbixu jej není nutné měnit.

Nejprve si stáhneme instalační balíčky pro repozitáře nové verze Zabbixu a nainstalujeme je:

for file in /etc/apt/sources.list.d/zabbix.list /etc/apt/sources.list.d/zabbix.sources /etc/apt/sources.list.d/zabbix-unstable.list /etc/apt/sources.list.d/zabbix-unstable.sources; do
    if [ -f "$file" ]; then mv "$file" "$file.bak"; fi
done
wget -O /tmp/zabbix-release-8.0.deb https://repo.zabbix.com/zabbix/8.0/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_8.0+debian13_all.deb
dpkg --force-confnew -i /tmp/zabbix-release-8.0.deb
apt update

Po tomto úkonu máme dostupné repozitáře nové verze a můžeme zaktualizovat balíčky Zabbix serveru. Proxy aktualizujeme postupně až po ověření serveru:

apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent2

Pokud se instalátor zeptá na nahrazení zabbix_server.conf nebo apache.conf, zvolte N pro zachování vlastní konfigurace. Cestu frontendu upravíme níže.

Při dotazu na upravenou konfiguraci zachovejte vlastní databázové připojení a další nastavení. Porovnejte také soubory .rpmnew nebo .dpkg-dist a aktualizujte další skutečně nainstalované komponenty, například web service, Java gateway nebo pluginy agenta.

Po úspěšném dokončení aktualizace balíčků Zabbix serveru a všech jeho součástí můžeme Zabbix znovu spustit, aby se dokončil upgrade databázové struktury.

systemctl start zabbix-server

Postupné činnosti i celý proces aktualizace, včetně případných zásahů do struktury databázového schématu, lze sledovat v log souboru Zabbix serveru:

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

Počkejte na hlášení database upgrade fully completed. Probíhající aktualizaci nepřerušujte. Poté ukončete sledování logu pomocí Ctrl+C; Zabbix tím nezastavíte.

Zabbix 8.0 – dokončení aktualizace databáze: database upgrade fully completed
Průběh aktualizace databáze až do 100 %. Zvýrazněný řádek potvrzuje její dokončení.

V instalaci s TimescaleDB se po dokončení migrace může objevit následující chyba: Table "history_json" is not a hypertable. Execute TimescaleDB configuration step as described in Zabbix documentation to upgrade schema. Automatická migrace již doběhla, ale novou tabulku history_json je ještě potřeba převést na hypertable. Opravíme to hned následujícím krokem.

Zabbix 8.0 – chyba TimescaleDB: Table history_json is not a hypertable
Chybějící nastavení tabulky history_json po automatické migraci databáze.

Používáte-li TimescaleDB, proveďte ještě následující krok. U PostgreSQL bez TimescaleDB tento krok přeskočte:

systemctl stop zabbix-server
sudo -u zabbix psql -v ON_ERROR_STOP=1 -d zabbix -f /usr/share/zabbix/sql-scripts/postgresql/timescaledb/schema.sql
systemctl start zabbix-server

Skript má vypsat TimescaleDB is configured successfully. Zprávy already a hypertable, skipping u stávajících tabulek jsou v pořádku.

Po opětovném spuštění Zabbix serveru hned zkontrolujte log. Chyba history_json se při tomto novém startu již nemá opakovat. Až ověříte úspěšný start, ukončete sledování pomocí Ctrl+C a pokračujte frontendem:

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

Frontend se přesunul do /usr/share/zabbix/ui. Proto před spuštěním webu upravíme původní cestu v jeho konfiguraci. Přístupové údaje v /etc/zabbix/web/zabbix.conf.php zachovejte; novou instalaci frontendu nespouštějte.

Pokud Apache stále používá původní cestu, může se zobrazit Manual intervention is required to complete upgrade!:

Zabbix 8.0 – apache – Manual intervention is required to complete upgrade!
Chyba při zachování původní cesty frontendu v Apache.

Následující příkaz opraví cestu v konfiguraci Apache, včetně vlastních virtuálních hostů. Již správnou cestu ponechá:

find -L /etc/apache2 -type f -name '*.conf' -exec sed -i --follow-symlinks -E \
's#/usr/share/zabbix(/ui)?([/"[:space:]]|$)#/usr/share/zabbix/ui\2#g' {} +

Nyní zkontrolujeme konfiguraci Apache:

apache2ctl configtest

Kontrola musí vypsat Syntax OK. Pokud vidíte upozornění AH00558, Apache nemá nastavené jméno serveru; do /etc/apache2/apache2.conf doplňte ServerName se skutečným DNS jménem serveru. Samotné toto upozornění spuštění neblokuje. Po úspěšné kontrole spustíme služby:

systemctl restart apache2 zabbix-agent2
systemctl is-active zabbix-server apache2 zabbix-agent2

Všechny kontrolované služby mají vypsat active. Poté otevřete frontend v prohlížeči na původní adrese.

Při restartu agenta se může v logu krátce objevit first network error. Po jeho spuštění má následovat connection restored. Pokud se chyby dál opakují, zkontrolujte dostupnost agenta a stav jeho služby uvedený výše.

Moduly a widgety initMAX aktualizujte přes RPM/DEB balíčky z našeho portálu. Balíčky se postarají i o nasazení do nové cesty; následující ruční kopírování pro ně nepoužívejte. Na portálu si nejprve ověřte, že používáte vydání podporující Zabbix 8.0. Pokud už máte náš repozitář nastavený, po upgradu Zabbixu aktualizujte nainstalované balíčky:

apt install --only-upgrade 'zabbix-module-*'

Pokud jste naše moduly dosud nahrávali ručně, postupujte podle instalace přes balíčky uvedené u produktu na portálu.

Ostatní ručně instalované moduly: musí být kompatibilní se Zabbixem 8.0. Pokud zůstaly ve staré složce /usr/share/zabbix/modules, frontend vypíše například Cannot load module at: modules/upgrade_check.:

Zabbix 8.0 – Cannot load module at modules/upgrade_check před přesunem modulu
Modul zůstal ve staré složce a frontend jej nemůže načíst.

Kompatibilní modul zkopírujeme do složky, kterou již vytvořil balíček frontendu. V příkazu nahraďte upgrade_check názvem modulu z chybové hlášky. Novější verze, které jste do nové cesty již nainstalovali, starými soubory nepřepisujte. Příkaz zopakujte pro další ručně instalované moduly. Pokud je nepoužíváte, tento krok přeskočte:

cp -a /usr/share/zabbix/modules/upgrade_check /usr/share/zabbix/ui/modules/

Obnovte stránku v prohlížeči. Chyba má zmizet; v Administration → General → Modules ověřte stav a otevřete stránku modulu nebo jeho widget.

Zabbix 8.0 – modul po zkopírování do /usr/share/zabbix/ui/modules funguje
Stejný testovací modul po opravě cesty opět funguje.
Zabbix 8.0 po aktualizaci z verze 7.0 – informace o systému
Zabbix server i frontend po aktualizaci běží na nové verzi.

Dokončovací práce

  • Zkontrolujte, že správně běží Zabbix server, databázový server a mají správnou verzi
  • Zkontrolujte také, zda při startu serveru nebo proxy v systému neuvidíte následující chybu: ‚…the user limit of 1024 file descriptors is insufficient. The maximum number of concurrent checks per worker has been reduced…‘ Návod na odstranění naleznete na naší wiki.
  • Zkontrolujte, že běží všechny Zabbix proxy a mají správnou verzi. Je zajištěna zpětná kompatibilita (částečná) pro verzi 7.0. Nicméně i tak důrazně doporučujeme používat stejnou verzi, jakou má Zabbix server. Starší verze nejsou podporovány.
  • Zkontrolujte stav Zabbix serveru a Zabbix proxy (log soubory, nepodporované položky, fronty, monitorovací skripty, atd.).
  • Zkontrolujte, zda vaše servery mají přiděleny poslední verze oficiálních šablon od Zabbixu. [ Zabbix GIT ]

Po přihlášení zkontrolujte také dashboardy, Monitoring → Latest data, starší historii a příjem nových hodnot. Pokud používáte plánované reporty, ověřte vygenerování PDF. V případě potíží se vraťte k připravené záloze nebo snapshotu.

Co je nového v Zabbixu 8.0

Informace o novinkách v Zabbixu 8.0 naleznete v našem článku.

A to je vše! Nyní můžete začít využívat váš nově zaktualizovaný Zabbix ve verzi 8.0 se všemi jeho opravami i novinkami.


×Košík

Váš košík je prázdný.