Zabbix – aktualizace na poslední verzi 6.0

V tomto článku si ukážeme, jak zaktualizovat Zabbix na poslední verzi 6.0 a naplno tak využít jeho potenciál, se všemi novými funkcemi, které přináší.

Přípravné kroky

  • Přečtěte si „poznámky k vydané verzi“ (release notes) [ Official release notes for Zabbix 6.0 ]
  • Přečtěte si důkladně dokument „poznámky k aktualizaci“ (upgrade notes) [ Official upgrade notes for Zabbix 6.0 ]
  • Zkontrolujte a případně optimalizujte výkon současné databáze dle doporučení vendora a s ohledem na požadavky Zabbix instance
  • Zkontrolujte, zda verze OS i veškerých návazných komponent odpovídají matici kompatiblity nové verze Zabbix
  • Zazálohovat konfigurační soubory Zabbix serveru a Zabbix proxy
  • Zázálohovat databáze Zabbix serveru, případně Zabbix proxy
  • Zazálohovat veškeré možné úpravy „na míru“, které byly na úrovni Zabbix ručně provedeny

Kontrola verzí

Nejprve zkontrolujeme verzi Operačního Systému, jakož i verze všech komponent, na kterých je běh Zabbixu a jeho součástí závislý tak, aby přesně odpovídal oficiální matici kompatibility pro Zabbix 6.0.

httpd -V
php-fpm -v
mysql -V
cat /etc/redhat-release

Záloha konfiguračních souborů Zabbix

Než se pustíme do dalších kroků, zazálohujte si pro jistotu i veškeré konfigurační soubory Zabbix serveru a Zabbix Proxy.

Případně zvažte také zálohu konfiguračních souborů web serveru.

cp /etc/zabbix/zabbix_server.conf /<backup directory>/
cp /etc/zabbix/zabbix_agentd.conf /<backup directory>/
cp /usr/share/zabbix/alertscripts/* /<backup directory>/
cp /usr/share/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>/
cp /etc/zabbix/web/zabbix.conf.php /<backup directory>/

Zastavení služeb

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

systemctl stop zabbix-server

Pokud jako backend Zabbix proxy používáme SQLite, pak zastavíme i jednotlivé Zabbix proxy, jelikož jejich databáze se po aktualizaci v tomto případě bude muset smazat.

systemctl stop zabbix-proxy

V případě, že chceme, aby data a aktivní konfigurace ze Zabbix serveru byla na Zabbix proxy serverech zachována, pak před aktualizací doporučujeme změnit konfiguraci Zabbix proxy a převést je na MySQL nebo PostgreSQL databázi. Tento postup je dopodrobna popsán v oficiální dokumentaci Zabbix.

Po tomto zásahu nebude nutné jednotlivé Zabbix proxy servery po dobu aktualizace Zabbix serveru vypínat a můžeme je nechat sbírat a ukládat data i v době nedostupnosti Zabbix serveru.

Služby jednotlivých Zabbix proxy bude třeba zastavit až přímo před aktualizací repozitářů a balíčků zabbix-proxy.

Záloha databáze

Následně spustíme zálohu databáze (následující příklady se týkají MySQL).

V případě, že je databáze malá (do desítek GB) a nepoužíváte partitioning, pak záloha nebude trvat tak dlouho.

V tomto případě provedem zálohu celé databáze Zabbix:

screen -S backup
mysqldump -uroot -p zabbix --extended-insert --single-transaction | bzip2 -9 > /<backup directory>/zabbix_db_backup-$(date "+%Y-%m-%d_%H.%M.%S").sql.bz2

Pokud je databáze větší anebo používáte partitioning, pak nejprve z databáze zazálohujeme pouze konfigurační tabulky:

mysqldump –uroot -p zabbix --ignore-table=zabbix.history \
--ignore-table=zabbix.history_uint --ignore-table=zabbix.history_str \
--ignore-table=zabbix.history_log --ignore-table=zabbix.history_text \
--ignore-table=zabbix.trends --ignore-table=zabbix.trends_uint > zabbix_config_dump-$(date "+%Y-%m-%d_%H.%M.%S")sql

A následně až zazálohujeme zbytek databázových dat, a to s pomocí ‚innobackupex‘, který zálohuje i transakční logy a umožňuje tak dělat inkrementální zálohy:

screen -S backup
innobackupex -p<password> /<backup directory>/
innobackupex -p<password> --apply-log --use-memory=4G /<backup directory>/`date`/

Pro značné urychlení procesu aktualizace je také možné smazat veškeré předchozí události (events), v případě MySQL např. takto:

mysql -uroot -p zabbix
mysql> DELETE from events where source > 0 limit 10000;

Aktualizace OS

V tomto kroku zaktualizujeme Operační Systém z již nepodporovaného CentOS 8.5 na podporovaný Rock Linux 8.

Níže můžeme vidět spuštění přípravného skriptu, který se o celý proces migrace na Rocky Linux postará za nás.

curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky.sh
chmod u+x migrate2rocky.sh
./migrate2rocky.sh -r

Aktualizace databáze

Stáhneme instalační balíčky pro repozitáře nové verze MySQL a smažeme instalační cache.

rpm -i https://repo.mysql.com//mysql80-community-release-el8-3.noarch.rpm
dnf clean all

Obsahem nově vzniklého konfigurační souboru s repozitářem nahradíme nastavení repozitáře stávajícího tak, aby to dnf bral v potaz.

cat /etc/yum.repos.d/mysql-community.repo.rpmnew > /etc/yum.repos.d/mysql-community.repo

Zastavíme službu databázového serveru MySQL:

systemctl stop mysqld.service

A nyní již můžeme spustit upgrade z nových repozitářů.

dnf upgrade

Po úspěšné aktualizaci MySQL tento databázový server spustíme a zkontrolujeme aktuální verzi.

systemctl start mysqld.service
mysql -V

Aktualizace Zabbix

Potom, co jsme vše úspěšně zazálohovali a zaktualizovali všechny verze návazných komponent dle oficiální matice kompatibility nové verze Zabbixu, přejdeme k aktualizaci samotného Zabbixu a všech jeho součástí.

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/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
dnf clean all

Nyní nainstalujeme balíček zabbix-web-service ve verzi pro Zabbix 6.0 a nastavíme této službě automatické spouštění po startu:

dnf install zabbix-web-service
systemctl enable zabbix-web-service --now

Otevřeme konfigurační soubor Zabbix serveru, upravíme v něm následující řádky tak, jak vidíte níže, soubor uložíme a můžeme zavřít.

nano /etc/zabbix/zabbix_server.conf
StartReportWriters=1
WebServiceURL=http://localhost:10053/report

Nyní můžeme zaktualizovat veškeré další komponenty, a to postupně i na všech Zabbix Proxy:

dnf upgrade zabbix*

Po úspěšném dokončení aktualizace Zabbix serveru a všech jeho součástí můžeme službu znovu spustit:

systemctl start zabbix-server

Pokud je jako backend pro Zabbix proxy použita databáze SQLite, pak nejprve obsah současné databáze smažeme následujícím příkazem:

rm /tmp/zabbix_proxy.db

V opačném případě lze po úspěšném dokončení aktualizace Zabbix proxy opětovně spustit i tuto službu:

systemctl start zabbix-proxy

Postupné činnosti i celý proces aktualizace, včetně změn databázového schématu lze sledovat v log souboru Zabbix serveru:

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

Případně pro jednotlivé Zabbix proxy zase v souboru:

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

Aktualizace databáze pro primární klíče

Od verze Zabbix 6.0 jsou v rámci značného navýšení databázového výkonu použity pro tabulky primární klíče.

Na následujícím odkazu z oficiální dokumentace se dozvíte více: https://www.zabbix.com/documentation/6.0/en/manual/appendix/install/db_primary_keys

Pro toto nejprve zastavíme Zabbix server.

systemctl stop zabbix-server

Následně nainstalujeme MySQL shell a nový balíček obsahující databázové skripty pro Zabbix, který obsahuje i tutu samotnou aktualizaci.

dnf install mysql-shell zabbix-sql-scripts

Nyní do databáze aplikujeme SQL patch určený k přípravě právě pro tuto aktualizaci, který nám jednotlivé tabulky přejmenuje.

Pozor! V novějších verzích Zabbix je tato cesta jiná, a to /usr/share/zabbix-sql-scripts/ !

mysql -uzabbix -p zabbix < /usr/share/doc/zabbix-sql-scripts/mysql/history_pk_prepare.sql

Databázovému serveru povolíme vytváření lokálních souboru. To nastavíme následujícím příkazem:

mysql -p -e "set global local_infile=ON;"

Pomocí nainstalované utility mysql shell se připojíme k databázi Zabbix.

mysqlsh --mysql -u root -h localhost -Dzabbix

Výsledkem by měl být „shell“ odpovídající tomuto obrázku:

Připojení k databázi Zabbix pomocí nainstalované utility mysql shell

Stále připojení do Zabbix databáze z tohoto mysql shell spustíme následující SQL skript:

CSVPATH="/var/lib/mysql-files"; 

util.exportTable("history_old", CSVPATH + "/history.csv", { dialect: "csv" }); 
util.importTable(CSVPATH + "/history.csv", {"dialect": "csv", "table": "history" });

util.exportTable("history_uint_old", CSVPATH + "/history_uint.csv", { dialect: "csv" }); 
util.importTable(CSVPATH + "/history_uint.csv", {"dialect": "csv", "table": "history_uint" });

util.exportTable("history_str_old", CSVPATH + "/history_str.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_str.csv", {"dialect": "csv", "table": "history_str" });

util.exportTable("history_log_old", CSVPATH + "/history_log.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_log.csv", {"dialect": "csv", "table": "history_log" });

util.exportTable("history_text_old", CSVPATH + "/history_text.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_text.csv", {"dialect": "csv", "table": "history_text" });

Tímto jsme dokončili aktualizaci databázového schématu a můžeme opětovně nastartovat Zabbix server.

systemctl start zabbix-server

Dokončovací práce

  • Zkontrolujte, že správně běží Zabbix server, databázový server a mají správnou verzi
  • Zkontrolujte, že běží všechny Zabbix proxy a mají správnou verzi
  • Zkontrolujte výkon 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 ]

Konfigurace Zabbix pro reporting

Pro potřeby funkcí reportingu nejprve musíme nainstalovat Google Chrome.

Nejprve stáhneme instalační balíček, který následně také nainstalujeme:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
dnf localinstall google-chrome-stable_current_x86_64.rpm

V konfiguraci Zabbix frontendu pak upravíme parametr „Frontend URL“ na aktuálně platnou hodnotu, toto nastavení se nachází v následující cestě v menu:

Administration -> General -> Other

Příklad nastavení můžete vidět na obrázku níže.

Aktualizace - Konfigurace reportingu Zabbix 6.0

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