2022年7月4日 Zabbix 6.2 がリリース されました。約5ヶ月ぶりのバージョンアップです。Zabbix 6.2 は、障害イベントの抑制、機密情報の管理の強化、AWS EC2監視テンプレート、監視データ取得ボタンの改善、ホストグループとテンプレートグループを分離などなど、魅力的な機能がたくさん追加されています。そこで今回は、Zabbix 6.2 インストール手順と、Zabbix管理画面(フロントエンド)の SSL設定手順をまとめてみました。
Zabbix 6.2 はポイントリリース
Zabbix 6.2 は、ポイントリリースのため、次バージョンの 6.4 がリリースされるまでの期間のみサポートされるのが特徴です。もし長く同じバージョンを使いたい場合は、長期サポート(LTS)の Zabbix 6.0 を利用することをオススメします。
参考資料:Zabbix サポート期間とリリースポリシー | Zabbixオフィシャル日本語サイト
Zabbix 6.2 の新機能と変更点
Zabbix 6.2 の新機能は以下の公式ドキュメントをご参照ください。
What's new in Zabbix 6.2 LTS
5 What's new in Zabbix 6.2.0 | Zabbix Documentation 6.2
Zabbix 6.2 の重大な変更点
Zabbix 6.2 には2つの重大な変更点があります。
Zabbix 6.2 は、最低限必要な PHP バージョンが 7.4.0 以上になっています。RHEL8系のサーバーOSに Zabbix 6.2 をインストールする場合は、Application Streams モジュールを php:7.4 に変更する必要があることに注意してください。また、Zabbix 6.0 以降は PHP 8.0 および PHP 8.1 がサポートされていますので、パフォーマンスが向上している PHP 8.0 以上の利用をオススメします。
2 Requirements | Zabbix Documentation 6.2
Zabbix 6.2 で使うデーターベース MySQL または MariaDB のバイナリロギングが有効になっている場合は(MySQL 8.0 ではバイナリロギングはデフォルトで有効になっています)SUPER権限が無くても関数を作成できるようにlog_bin_trust_function_creators = 1
を設定する必要があります。
1 Red Hat Enterprise Linux/CentOS | Zabbix Documentation 6.2
サーバーOSの選定(RHEL系)
Zabbixサーバーを RHEL(Red Hat Enterprise Linux)系のサーバーOSにインストールする場合は、標準で PHP 8.0 がサポートされている以下の RHEL9系のサーバーOSを選定することをオススメします。
- RHEL 9
- AlmaLinux OS 9(RHELクローン)
- Rocky Linux 9(RHELクローン)
今回は、AlmaLinux OS 9 に Zabbix 6.2 をインストールした時の手順になりますが、RHEL 9 や Rocky Linux 9 など RHEL系のサーバーOSであれば同様の手順でインストールおよび設定ができると思います。
MySQL 8.0 のインストールと設定
Zabbix 6.2 のインストールの前に、下準備として MySQL 8.0 をインストールして設定しておきましょう。
MySQL 8.0 のインストール
sudo dnf -y install mysql-server
先の Zabbix 6.2 の重大な変更点 にも書きましたが、MySQL 8.0 は、デフォルトでバイナリロギングが有効になっているため、以下の設定をMySQLの設定ファイルの最後の行に以下を追加します。
sudo vi /etc/my.cnf.d/mysql-server.cnf
またデフォルト状態では MySQLのログの出力時間が UTC(協定世界時)になるため、MySQLの設定ファイルの最後の行に以下を追加します。(気にならなければそのままで構いません)
sudo vi /etc/my.cnf.d/mysql-server.cnf
MySQLの起動と自動起動設定
mysql_secure_installation の実行
初期状態では、rootユーザーがパスワードなしで MySQLに接続できるようになっていますのでパスワードを設定しておきます。
mysql_secure_installation コマンドを実行すると、root ユーザーのパスワードを変更し、不要なユーザーやDBも削除してくれます。パスワードは、8文字以上で英数大文字小文字と記号が含まれていないとポリシー違反で弾かれてしまいますので注意です。パスワードポリシーを変更したい場合は「--use-default」オプションなしで実行してください。
(略)
Please set the password for root here.
New password: <新しいパスワード>
Re-enter new password: <新しいパスワード>
(略)
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
(不要なユーザーやDBを削除)
All done!
Zabbix 6.2 のインストール
本題の Zabbix 6.2 のインストールです。
Zabbix 6.2 のリポジトリを登録します。
パッケージのキャッシュを削除しておきます。
Zabbix 6.2 関連のパッケージをインストールします。Zabbix管理画面を日本語で使う場合は zabbix-web-japanese もインストールします。動作確認用に zabbix-get もインストールしておきましょう。
sudo dnf -y install zabbix-sql-scripts
sudo dnf -y install zabbix-selinux-policy
sudo dnf -y install zabbix-agent
sudo dnf -y install zabbix-web-japanese
sudo dnf -y install zabbix-get
参考資料:Download and install Zabbix
Zabbix データベースとユーザーの作成
MySQLに、Zabbix用のデータベース「zabbix」と、ユーザー「zabbix」を作成します。
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by '<パスワード>';
grant all on zabbix.* to zabbix@localhost;
quit;
(補足)Zabbix 6.0 から MySQL(および MariaDB)の文字セット「utf8mb4」と照合順序「utf8mb4_bin」がサポートされ、将来の問題を回避するために「utf8mb4」の利用が強く推奨されています。
2 Repairing Zabbix database character set and collation | Zabbix Documentation 6.2
Zabbix 用のデータベーススキーマとデータをインポート(時間がかかります)
Enter password: ←(MySQLのユーザー「zabbix」のパスワードを入力)
SELinux の設定
SELinux を有効にしている場合は、以下のコマンドを実行してポリシーを追加します。
sudo setsebool -P httpd_can_network_connect_db on
Zabbix サーバーの設定と起動
Zabbix サーバーの設定ファイルに、先ほど作成した MySQLのユーザー「zabbix」のパスワードを登録します。
sudo vi /etc/zabbix/zabbix_server.conf
↓
DBPassword=<パスワード>
Zabbix サーバーの自動起動設定
Zabbix サーバーの起動
Zabbix サーバーが起動していることを確認します。
● zabbix-server.service - Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2022-08-07 08:37:22 JST; 4s ago
Process: 3953 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
Main PID: 3955 (zabbix_server)
(略)
Apache httpd(SSL)の設定と起動
Zabbix 公式ドキュメントのベストプラクティスでは、Zabbixの管理画面(フロントエンドと呼ばれます)の SSL設定が推奨されていますので、Apache httpd および SSLの設定を行います。
Best practices for secure Zabbix setup | Zabbix Documentation 6.2
今回の設定手順では、Zabbixサーバーのドメイン名を「zabbix.example.com」として設定していますが、ご自分の環境に合わせて設定してください。
Apache httpd の基本設定
オリジナルの設定ファイルをバックアップ
・設定ファイルを作成します。
sudo vi /etc/httpd/conf/httpd.conf
自己署名の SSLサーバー証明書の作成
今回は自己署名の SSLサーバー証明書で設定を行いますが、可能であれば Let's Encrypt など、正規の認証局が発行した SSLサーバー証明書を使うことをオススメします。
関連記事:Let's Encrypt サーバー証明書の取得と自動更新設定メモ
秘密鍵の作成
CSR(証明書署名要求)の作成(入力するのは Country Name と Common Name の2箇所だけです)
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:<空エンター>
Locality Name (eg, city) [Default City]:<空エンター>
Organization Name (eg, company) [Default Company Ltd]:<空エンター>
Organizational Unit Name (eg, section) []:<空エンター>
Common Name (eg, your name or your server's hostname) []:zabbix.example.com
Email Address []:<空エンター>
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<空エンター>
An optional company name []:<空エンター>
SSLサーバー証明書の作成(有効期限30年)
秘密鍵とSSLサーバー証明書を移動
sudo mv -i server.crt /etc/pki/tls/certs/
パーミッションを変更
sudo chmod 600 /etc/pki/tls/certs/server.crt
SELinux を有効にしている場合は、秘密鍵とSSLサーバー証明書に正しいセキュリティコンテキストをつけておきましょう。(Apache httpd 起動時にエラーが発生することがあります)
restorecon /etc/pki/tls/certs/server.crt
CSRファイルを削除
SSL の設定
Apache httpd の SSLモジュールをインストールします。
オリジナルのSSL設定ファイルをバックアッップします
SSL設定ファイルを作成します。
sudo vi /etc/httpd/conf.d/ssl.conf
Apache httpd の自動起動を設定し起動ます。
インデックスファイルの配置
今回の設定手順だとドキュメントルート直下にインデックスファイルが配置されないため、テストページが表示されてしまいます。必須ではありませんがインデックスファイルを配置しておくことをオススメします。
例えば下のようなインデックスファイルを配置しておけば、https://zabbix.example.com/ → https://zabbix.example.com/zabbix/ のようにリダイレクトしてくれるので便利です。
sudo vi /var/www/html/index.php
header('Location: /zabbix/');
PHP の設定と起動
・PHPの設定
sudo vi /etc/php.ini
expose_php = On ↓ expose_php = Off ;date.timezone = ↓ date.timezone = 'Asia/Tokyo'
php-fpm を自動起動を設定し起動します。
Zabbix エージェントの起動と動作確認
動作確認用に Zabbix エージェントも起動しておきます。
Zabbix エージェントの動作確認(Zabbixのバージョンが表示されればOKです)
6.2.1
firewalld設定
HTTP(80/tcp) と HTTPS(443/tcp) を開けておきます。
sudo firewall-cmd --add-port=443/tcp --permanent
sudo firewall-cmd --reload
・確認
sudo firewall-cmd --list-all
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client ssh
ports: 443/tcp 80/tcp ←この表示があればOK
(略)
Zabbix の初期設定
ブラウザで下記URLを開き、初期設定を開始します(ドメイン名「zabbix.example.com」はご自分の環境に読替えてください)
https://zabbix.example.com/zabbix/
今回は日本語で設定しますので Default language「Japanese(ja_JP)」を選択して(選択すると以下の表示に変わります)「次のステップ」をクリックします。
前提条件のチェックがすべて「OK」であることを確認して「次のステップ」をクリックします。
「パスワード」欄に、MySQLのユーザー(zabbix)のパスワードを入力し「次のステップ」をクリックします。
適当なサーバー名を入力、デフォルトタイムゾーン「Asia/Tokyo」を選択し、お好みのデフォルトのテーマを選択したら「次のステップ」をクリックします。
設定した内容の最終確認です。間違えがなければ「次のステップ」をクリックします。
「終了」をクリックすれば、初期設定完了です。
ユーザーパスワードの変更
初期設定が終了すると、Zabbixのログイン画面が表示されますので、下の初期ユーザーとパスワードでログインします。
ユーザー名:Admin
パスワード:zabbix
[管理]→[ユーザー] をクリックし、ユーザー名「Admin」をクリックします。
「パスワード変更」をクリックします。
パスワードの入力欄が表示されますので、パスワードを入力し、「更新」をクリックすればユーザーパスワードの変更完了です。
初期状態でZabbixサーバー自身のホストが登録されていますので、しばらくしてから [監視データ]→[最新データ] をクリックすると、Zabbixサーバー自身の監視データを閲覧することができます。
おわりに
これは Zabbix に限りませんが、同じバージョンを長く使っているとアップデートする時の影響がかなり大きく、アップデートが原因のトラブルも発生しやすくなります。Zabbix 6.2 は、ポイントリリースですが、半年ごとにリリースが予定されている次バージョンにこまめにアップデートする運用もありかと思います。
コメント