Zabbix 7.0 インストールと管理画面のSSL設定メモ

Zabbix
Zabbix
スポンサーリンク

2024年6月4日 Zabbix 7.0 がリリース されました。約2年4ヶ月ぶりのメジャーバージョンアップです。Zabbix 7.0 は、長期サポート(LTS)リリースのためサポート期間が5年と長いのが特徴です。Zabbix 7.0 では、ブラウザベースのシナリオ監視、Zabbixプロキシの冗長化と負荷分散、多要素認証など魅力的な機能がたくさん追加されています。そこで今回は、Zabbix 7.0 インストール手順と、Zabbix管理画面(フロントエンド)の SSL設定手順をまとめてみました。

Zabbix 7.0 の新機能と変更点

Zabbix 7.0 の新機能や変更点は以下の公式ドキュメントをご参照ください。

What's new in Zabbix 7.0
5 What's new in Zabbix 7.0.0 | Zabbix Documentation 7.0

Zabbix 7.0 の注意すべき変更点

システム要件について大きなところで Zabbix 7.0 で注意すべき変更点が2つあります。

PHP 8.0.0 以上が必須

Zabbix 7.0 では、サポートされる PHPのバージョンが 7.4.0以上 から 8.0.0以上 に変更されました。

Oracle DB は非推奨

Zabbix 7.0 では、バックエンドデータベースとしての Oracle のサポートは非​​推奨になりました。将来のバージョンではサポートされない予定です。

サーバーOSの選定(RHEL系)

Zabbixサーバーを RHEL(Red Hat Enterprise Linux)系のサーバーOSにインストールする場合は、標準で PHP 8.0 がサポートされている以下の RHEL9系のサーバーOSを選定することをオススメします。

  • RHEL 9
  • AlmaLinux 9
  • Rocky Linux 9

今回は、AlmaLinux 9 に Zabbix 7.0 をインストールした時の手順になります。Zabbix 7.0 では AlmaLinux や Rocky Linux など RHEL系のサーバーOSには、ディストリビューションごとに専用のインストールパッケージが提供されていますので、ご自分の環境に合ったインストールパッケージからインストールしてください。

MySQL 8.0 のインストールと設定

Zabbix 7.0 のインストールの前に、下準備として MySQL 8.0 をインストールして設定しておきましょう。

MySQL 8.0 のインストール

sudo dnf -y install mysql
sudo dnf -y install mysql-server

MySQL のバージョンが、Zabbix 7.0 のシステム要件を満たす 8.0.30 以上であることを確認してください。

sudo dnf info mysql-server

Installed Packages
Name         : mysql-server
Version      : 8.0.36

デフォルト状態では MySQLのログの出力時間が UTC(協定世界時)になるため、MySQLの設定ファイルの最後の行に以下を追加します。(気にならなければそのままで構いません)
sudo vi /etc/my.cnf.d/mysql-server.cnf

log_timestamps=SYSTEM

MySQLの起動と自動起動設定

sudo systemctl enable --now mysqld

mysql_secure_installation の実行

初期状態では、rootユーザーがパスワードなしで MySQLに接続できるようになっていますのでパスワードを設定しておきます。

mysql_secure_installation コマンドを実行すると、root ユーザーのパスワードを変更し、不要なユーザーやDBも削除してくれます。パスワードは、8文字以上で英数大文字小文字と記号が含まれていないとポリシー違反で弾かれてしまいますので注意です。パスワードポリシーを変更したい場合は「--use-default」オプションなしで実行してください。

mysql_secure_installation --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 7.0 のインストール

サーバーOSの選定のところでも触れましたが、RHEL系のサーバーOSには、ディストリビューションごとに専用のインストールパッケージが用意されていますので、Zabbixのダウンロードページ でご自分の環境のインストール手順を確認してください。

Zabbix リポジトリの登録

RHEL系のサーバーOSでよく利用されている EPELリポジトリが登録されている場合は、EPELリポジトリから Zabbix をインストールしないように Zabbix 関連のパッケージを除外しておきます。[epel] セクションの最後あたりに「excludepkgs=zabbix*」を追加してください。

sudo vi /etc/yum.repos.d/epel.repo

[epel]
(略)
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
---(以下を追加)-----------------
excludepkgs=zabbix*

AlmaLinux 9 用の Zabbix 7.0 のリポジトリを登録します。

sudo rpm -Uvh rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm

Zabbix のインストール

Zabbix のインストールの前に、パッケージのキャッシュを削除しておきます。

sudo dnf clean all

Zabbix 7.0 関連のパッケージをインストールします。Zabbix管理画面を日本語で使う場合は zabbix-web-japanese もインストールします。動作確認用に zabbix-get もインストールしておきましょう。

sudo dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf
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

Zabbix データベースとユーザーの作成

MySQLに、Zabbix用のデータベース「zabbix」と、ユーザー「zabbix」を作成します。

mysql -u root -p
Enter password: ←(MySQLのユーザー「root」のパスワードを入力)
 
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by '<パスワード>';
grant all on zabbix.* to zabbix@localhost;

次のインポートの下準備として、SUPER権限が無くても関数を作成できるように「log_bin_trust_function_creators = 1」を設定してから MySQLとの接続を終了します。

set global log_bin_trust_function_creators = 1;
quit;

Zabbix 用のデータベーススキーマとデータをインポート(時間がかかります)

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz |\
mysql --default-character-set=utf8mb4 -u zabbix -p zabbix
 
Enter password: ←(MySQLのユーザー「zabbix」のパスワードを入力)

インポートが終わったら「log_bin_trust_function_creators = 0」に戻しておきましょう。

mysql -u root -p
Enter password: ←(MySQLのユーザー「root」のパスワードを入力)
 
set global log_bin_trust_function_creators = 0;
quit;

SELinux の設定

SELinux を有効にしている場合は、以下のコマンドを実行してポリシーを追加します。

sudo setsebool -P httpd_can_connect_zabbix on
sudo setsebool -P httpd_can_network_connect_db on

Zabbix サーバーの設定と起動

Zabbix サーバーの設定ファイルに、先ほど作成した MySQLのユーザー「zabbix」のパスワードを登録します。

sudo vi /etc/zabbix/zabbix_server.conf

# DBPassword=

DBPassword=<パスワード>

Zabbix サーバーの自動起動設定

sudo systemctl enable zabbix-server

Zabbix サーバーの起動

sudo systemctl start zabbix-server

Zabbix サーバーが起動していることを確認します。

sudo systemctl status zabbix-server

 zabbix-server.service - Zabbix Server
     Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2024-06-29 16:23:00 JST; 4s ago
    Process: 3444 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
   Main PID: 3446 (zabbix_server)
(略)

Apache httpd(SSL)の設定と起動

Zabbix 公式ドキュメントのベストプラクティスでは、Zabbixの管理画面(フロントエンドと呼ばれます)の SSL設定が推奨されていますので、Apache httpd および SSLの設定を行います。

2 Best practices for secure Zabbix setup | Zabbix Documentation 7.0

今回の設定手順では、Zabbixサーバーのドメイン名を「zabbix.example.com」として設定していますが、ご自分の環境に合わせて設定してください。

Apache httpd の基本設定

オリジナルの設定ファイルをバックアップ

sudo mv -i /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org

・設定ファイルを作成します。
sudo vi /etc/httpd/conf/httpd.conf

自己署名の SSLサーバー証明書の作成

今回は自己署名の SSLサーバー証明書で設定を行いますが、可能であれば Let's Encrypt など、正規の認証局が発行した SSLサーバー証明書を使うことを強くオススメします。

関連記事:Let's Encrypt サーバー証明書の取得と自動更新設定メモ

秘密鍵の作成

openssl ecparam -name prime256v1 -genkey -out server.key

SSLサーバー証明書の作成(有効期限30年)
-subjオプションで C(Country Name)に2文字の国名コード、CN(Common Name)にサイトのドメイン名(FQDN)を指定してください。

openssl req -new -x509 \
-days 10950 \
-key server.key \
-subj '/C=JP/CN=zabbix.example.com' \
-out server.crt

秘密鍵とSSL証明書を移動

sudo mv -i server.key /etc/pki/tls/private/
sudo mv -i server.crt /etc/pki/tls/certs/

パーミッションを変更

sudo chmod 600 /etc/pki/tls/private/server.key
sudo chmod 600 /etc/pki/tls/certs/server.crt
sudo chown root:root /etc/pki/tls/private/server.key
sudo chown root:root /etc/pki/tls/certs/server.crt

SELinux を有効にしている場合は、秘密鍵とSSL証明書に正しいセキュリティコンテキストをつけておきましょう。(Apache httpd 起動時にエラーが発生することがあります)

sudo restorecon /etc/pki/tls/private/server.key
sudo restorecon /etc/pki/tls/certs/server.crt

SSL の設定

Apache httpd の SSLモジュールをインストールします。

sudo dnf -y install mod_ssl

オリジナルのSSL設定ファイルをバックアッップします

sudo mv -i /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.org

SSL設定ファイルを作成します。
sudo vi /etc/httpd/conf.d/ssl.conf

Apache httpd の自動起動を設定し起動ます。

sudo systemctl enable --now httpd

インデックスファイルの配置

今回の設定手順だとドキュメントルート直下にインデックスファイルが配置されないため、テストページが表示されてしまいます。必須ではありませんがインデックスファイルを配置しておくことをオススメします。

例えば下のようなインデックスファイルを配置しておけば、https://zabbix.example.com/ → https://zabbix.example.com/zabbix/ のようにリダイレクトしてくれるので便利です。

sudo vi /var/www/html/index.php

<?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 を自動起動を設定し起動します。

sudo systemctl enable --now php-fpm

Zabbix エージェントの起動と動作確認

動作確認用に Zabbix エージェントも起動しておきます。

sudo systemctl enable --now zabbix-agent

Zabbix エージェントの動作確認(Zabbixのバージョンが表示されればOKです)

zabbix_get -s 127.0.0.1 -k agent.version
7.0.0

firewalld設定

HTTP(80/tcp) と HTTPS(443/tcp) を開けておきます。

sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --add-port=443/tcp --permanent
sudo firewall-cmd --reload

・確認
sudo firewall-cmd --list-all

public (default, active)
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)」を選択して(選択すると以下の表示に変わります)「次のステップ」をクリックします。

Zabbixのデフォルトの言語の選択画面

前提条件のチェックがすべて「OK」であることを確認して「次のステップ」をクリックします。

Zabbixの前提条件のチェック画面

「パスワード」欄に、MySQLのユーザー(zabbix)のパスワードを入力し「次のステップ」をクリックします。

データベースの接続設定画面

適当なサーバー名を入力、デフォルトタイムゾーン「Asia/Tokyo」を選択し、お好みのデフォルトのテーマを選択したら「次のステップ」をクリックします。

設定画面

設定した内容の最終確認です。間違えがなければ「次のステップ」をクリックします。

インストール事前準備概要の確認画面

「終了」をクリックすれば、初期設定完了です。

Webインターフェースのインストールの終了画面

ユーザーパスワードの変更

初期設定が終了すると、Zabbixのログイン画面が表示されますので、下の初期ユーザーとパスワードでログインします。

ユーザー名:Admin
パスワード:zabbix

Zabbixのログイン画面

メニュー下部の [ユーザー設定]→[プロファイル] をクリックします。

ユーザー設定のプロファイルをクリック

「パスワード変更」をクリックします。

Adminユーザー情報の設定画面

パスワードの入力欄が表示されますので、現在のパスワード(zabbix)と新しいパスワードを入力し、「更新」をクリックすればユーザーパスワードの変更完了です。(一度ログアウトされますので、新しいパスワードでログインし直してください)

Adminユーザーのパスワードを変更

初期状態でZabbixサーバー自身のホストが登録されていますので、しばらくしてから [監視データ]→[ホスト]→[最新データ] をクリックすると、Zabbixサーバー自身の監視データを閲覧することができます。

ホスト一覧

Zabbixサーバー自身の監視データ

以上です。設定お疲れ様でした!

コメント

タイトルとURLをコピーしました