👁️🗨️
【ZABBIX】バージョン6.0→7.0にアップグレードした時の記録
公式手順
事前準備
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の場合、モジュール切り替えで対応できそう。
利用可能な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アップグレード実施
事前にターミナルをもう一つ立ち上げておき、ログを流しながら実施する。
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]より
# 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 11月 7 00:34 20241107_zabbix_db.sql.gz
drwxr-xr-x. 13 root root 4096 11月 7 00:41 zabbix
drwxr-xr-x. 5 root root 52 11月 7 00:41 zabbix-sql-scripts
-rw-r--r--. 1 root root 794 11月 7 00:40 zabbix.conf
-rw-------. 1 root root 26110 11月 7 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