Zenn
👁️‍🗨️

【ZABBIX】バージョン6.0→7.0にアップグレードした時の記録

に公開

公式手順

https://www.zabbix.com/documentation/current/en/manual/installation/upgrade

事前準備

https://www.zabbix.com/documentation/current/en/manual/installation/requirements
https://blog.usize-tech.com/zabbix7-upgrade-requirement/

Zabbix、MariaDB、PHP、Apacheのバージョン確認

### ZABBIX ###
sudo yum list installed | grep zabbix
### MariaDB 必須10.5.00-11.5.X 推奨10.5 ###
sudo yum list installed | grep mariadb
### PHP 必須8.0.0 - 8.3.X ###
sudo yum list installed | grep php
### Apache 必須2.4以降 ###
sudo yum list installed | grep httpd

今回はPHPのバージョンを7.2→8.0に上げれば要件を満たせることが分かった。
RockyLinux8.8の場合、モジュール切り替えで対応できそう。
https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/assembly_using-the-php-scripting-language_installing-and-using-dynamic-programming-languages
 
利用可能なPHPバージョンを確認

sudo dnf module list php
メタデータの期限切れの最終確認: 1:19:11 前の 2024年11月06日 22時14分29秒 に実施しました。
Rocky Linux 8 - AppStream
Name          Stream              Profiles                            Summary
php           7.2 [d][e]          common [d], devel, minimal          PHP scripting language
php           7.3                 common [d], devel, minimal          PHP scripting language
php           7.4                 common [d], devel, minimal          PHP scripting language
php           8.0                 common [d], devel, minimal          PHP scripting language
php           8.2                 common [d], devel, minimal          PHP scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

 
切り替え実施

# モジュール切り替え可能か事前確認
sudo yum distro-sync
メタデータの期限切れの最終確認: 0:01:16 前の 2024年11月06日 23時35分56秒 に実施しました。
依存関係が解決しました。
行うべきことはありません。
完了しました!

# ストリームの変更
sudo yum module reset php
sudo yum module enable php:8.0

# 新しいバージョンのphpをインストール
sudo yum distro-sync

# phpのバージョン確認(8.0になっていればOK)
sudo yum list installed | grep php

ZABBIXアップグレード実施

https://www.zabbix.com/documentation/current/en/manual/installation/upgrade/packages/rhel

事前にターミナルをもう一つ立ち上げておき、ログを流しながら実施する。

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

 
root切り替えとZABBIX停止

sudo su -
systemctl stop zabbix-server zabbix-agent
systemctl status zabbix-server zabbix-agent

 
事前にDBの設定変更をしないと正しく起動しないらしいので実施。
※[7 Upgrade procedure]より

https://www.zabbix.com/documentation/current/en/manual/appendix/install/db_scripts#mysql

# DBバイナリログ有効化
mysql -uroot -p<password>
SET GLOBAL log_bin_trust_function_creators = 1;
quit;

 
各種バックアップ実施

# 空き容量確認
df -h

# DB
mkdir /opt/zabbix-backup
mysqldump -u root -p zabbix | gzip > 20241107_zabbix_db.sql.gz
mv 20241107_zabbix_db.sql.gz /opt/zabbix-backup/

# 設定ファイル
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
cp /etc/httpd/conf.d/zabbix.conf  /opt/zabbix-backup/
# PHPファイルとZabbixバイナリ
cp -R /usr/share/zabbix/ /opt/zabbix-backup/
cp -R /usr/share/zabbix-* /opt/zabbix-backup/

# ファイルの存在を確認
ll /opt/zabbix-backup/
合計 25668
-rw-rw-r--.  1 root  root 26245609 117 00:34 20241107_zabbix_db.sql.gz
drwxr-xr-x. 13 root  root      4096 117 00:41 zabbix
drwxr-xr-x.  5 root  root        52 117 00:41 zabbix-sql-scripts
-rw-r--r--.  1 root  root       794 117 00:40 zabbix.conf
-rw-------.  1 root  root     26110 117 00:40 zabbix_server.conf

 
リポジトリ設定パッケージを更新・インストールし、新バージョンで起動

# RHEL8
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/8/x86_64/zabbix-release-latest.el8.noarch.rpm
dnf clean all
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent
# フロントエンド
dnf install zabbix-apache-conf
systemctl restart httpd

# 起動
systemctl start zabbix-server
systemctl start zabbix-agent
systemctl status zabbix-server zabbix-agent

 
ブラウザで正常性確認後、DBバイナリログ設定を元に戻す。

mysql -uroot -p<password>
SET GLOBAL log_bin_trust_function_creators = 0;
quit;

 
SELinuxに弾かれる場合、ポリシー再構築を実施する。

# 監査ログにて、SELinuxによる拒否(AVC denied)を確認
cat /var/log/audit/audit.log | grep denied | tail -5

# 必要な権限を確認
cat /var/log/audit/audit.log | grep denied | audit2allow

# 新ポリシー作成
cat /var/log/audit/audit.log | grep denied | audit2allow -M 20241107_01_zabbixpolicy
semodule -i 20241107_01_zabbixpolicy.pp

# 再度ZABBIX WEBUIにアクセスし、問題があればポリシー再構築を繰り返す。
# 今回は最終的に以下で落ち着いた。
cat /var/log/audit/audit.log | grep denied | audit2allow

#============= zabbix_agent_t ==============
#!!!! This avc is allowed in the current policy
allow zabbix_agent_t rpm_exec_t:file execute_no_trans;
#============= zabbix_t ==============
#!!!! This avc is allowed in the current policy
allow zabbix_t var_log_t:file { open read };

 
取得データを正しく閲覧できればOK(画像はサンプルです)

 
以上

Discussion

ログインするとコメントできます