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:
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.
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.
Dejte nám Like, sdílejte nás nebo nás sledujte 😍
Ať vám nic neunikne: