Zabbix 5.4 インストールメモ(CentOS Stream 8)

Zabbix
Zabbix
スポンサーリンク

2021年5月14日、Zabbix 5.4 がリリース されました。約7ヶ月ぶりのバージョンアップです。Zabbix 5.4 では、トリガーの構文が新しくなり、計算項目における制限が解除されるなど、多くの新機能が追加されています。また、現時点では実験的な状態ですが、ダッシュボードの情報を定期的にPDFにしてメールで送信できるようになっています。そこで今回は CentOS Stream 8 に Zabbix 5.4 をインストールする手順をまとめてみました。

Zabbix 5.4 の新機能と変更点

冒頭にも書きましたが、Zabbix 5.4 では定期PDFレポート機能、新しいトリガー構文のほか、複数ページのダッシュボード機能、有効期限のある名前付きAPIトークンの導入、グローバルスクリプトの JavaScript サポートなど多くの機能が追加および改善されています。

参考資料:
What's new in Zabbix 5.4
5 What's new in Zabbix 5.4.0 | Zabbix Documentation 5.4

また、Zabbix 5.4 ではデーターベースマネジメントシステムのサポートバージョンが変更になっています。MySQL の場合はバージョン 5.7.28 以上をサポート、推奨バージョンは 8.0.X です。

2 Requirements | Zabbix Documentation 5.4

CentOS 8 にインストールする場合の注意点

CentOS 8 には、「CentOS Linux 8」と「CentOS Stream 8」の2種類があり、これまでサーバーOSとしてよく利用されてきた「CentOS Linux 8」は、2021年末でサポートが終了します。

関連記事:CentOS Linux 8 終了!今後の対応方法まとめ

そのため、CentOS に Zabbix をインストールする場合は、「CentOS Stream 8」もしくは「CentOS Linux 7」を利用することをオススメします。(どちらも 2024年中旬頃までサポートされます)

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

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

MySQL 8.0 のインストール

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

・標準では 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 5.4 のインストール

本題の Zabbix 5.4 のインストールです。

Zabbix 5.4 のリポジトリを登録します。

sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm

パッケージのキャッシュを削除しておきます。

sudo dnf clean all

Zabbix 5.4 関連のパッケージをインストールします。

sudo dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf
sudo dnf -y install zabbix-web-japanese
sudo dnf -y install zabbix-sql-scripts
sudo dnf -y install zabbix-agent
sudo dnf -y install zabbix-get

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

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

mysql -u root -p
 
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
CREATE USER zabbix@localhost IDENTIFIED BY '<パスワード>';
GRANT ALL ON zabbix.* TO zabbix@localhost;
quit;

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

zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: ←(MySQLのユーザー「zabbix」のパスワードを入力)

SELinux の設定

セキュリティ要件などによりどうしても SELinux が必要な場合以外は、Zabbixサーバーでは SELinux を無効にすることをオススメします。

SELinux を有効にしている場合、Zabbixサーバーの構築時はうまく動作していても、運用開始後に Zabbixサーバーが突然停止するなどのトラブルが発生することがあります。

無効にする場合

・下記を変更
sudo vi /etc/sysconfig/selinux

SELINUX=enforcing
 ↓
SELINUX=disabled

OSを再起動します

sudo shutdown -r now

有効にする場合

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

SELinux を有効にしている場合は、Zabbix サーバーの起動に失敗し以下のようなメッセージが表示されます。

(略)
Job for zabbix-server.service failed because the control process exited with error code.
See "systemctl status zabbix-server.service" and "journalctl -xe" for details.

以下のコマンド(audit2allow)を実行して SELinux のログを元に解決方法を表示します。

sudo grep zabbix_server /var/log/audit/audit.log | audit2allow -M zabbix-policy
******************** 重要 ***********************
このポリシーパッケージを有効にするには、以下を実行して下さい:
 
semodule -i zabbix-policy.pp

表示されたコマンドを実行します。

sudo semodule -i zabbix-policy.pp

再度 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 Fri 2021-06-04 18:47:30 EDT; 12s ago (←起動している)
Process: 17475 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=0/SUCCESS)
(略)

Apache httpd と PHP-FPM の起動

Zabbix サーバーが起動したら Apache httpd と PHP-FPM を起動します。

Apache httpd の起動と自動起動設定

sudo systemctl enable --now httpd

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
5.4.0

SELinux の追加設定

SELinux を有効にしている場合、しばらくすると以下のようなエラーにより Zabbix サーバーの停止→起動を繰り返します。

tail -n 100 /var/log/zabbix/zabbix_server.log
(略)
16518:20210604:180203.701 server #42 started [history poller #5]
16515:20210604:180203.707 server #39 started [history poller #2]
16487:20210604:180204.665 Zabbix agent item "system.cpu.util[,guest_nice]" on host "Zabbix server" failed: first network error, wait for 15 seconds
16491:20210604:180219.703 Zabbix agent item "system.cpu.util[,guest]" on host "Zabbix server" failed: another network error, wait for 15 seconds
16486:20210604:180303.717 Zabbix agent item "system.cpu.switches" on host "Zabbix server" failed: first network error, wait for 15 seconds
16508:20210604:180304.044 cannot connect to lld manager service: Cannot connect to service "lld": [13] Permission denied.
16505:20210604:180304.047 cannot connect to preprocessing service: Cannot connect to service "preprocessing": [13] Permission denied.
16507:20210604:180304.049 cannot connect to lld manager service: Cannot connect to service "lld": [13] Permission denied.
16504:20210604:180304.051 cannot connect to preprocessing service: Cannot connect to service "preprocessing": [13] Permission denied.
16500:20210604:180304.053 cannot connect to alert manager service: Cannot connect to service "alerter": [13] Permission denied.
16503:20210604:180304.055 cannot connect to preprocessing service: Cannot connect to service "preprocessing": [13] Permission denied.
16509:20210604:180304.056 cannot initialize alert loader: Cannot connect to service "alerter": [13] Permission denied.
16499:20210604:180304.058 cannot connect to alert manager service: Cannot connect to service "alerter": [13] Permission denied.
16501:20210604:180304.059 cannot connect to alert manager service: Cannot connect to service "alerter": [13] Permission denied.
16472:20210604:180304.060 One child process died (PID:16508,exitcode/signal:1). Exiting ...
zabbix_server [16472]: Error waiting for process with PID 16499: [10] No child processes
16472:20210604:180304.078 syncing trend data...
16472:20210604:180304.078 syncing trend data done
16472:20210604:180304.078 Zabbix Server stopped. Zabbix 5.4.0 (revision 5059e20a75).
16537:20210604:180314.325 Starting Zabbix Server. Zabbix 5.4.0 (revision 5059e20a75).
16537:20210604:180314.326 ****** Enabled features ******
16537:20210604:180314.326 SNMP monitoring: YES
16537:20210604:180314.326 IPMI monitoring: YES

再度 audit2allow コマンドを実行して、表示されたコマンドを実行します。

sudo grep zabbix_server /var/log/audit/audit.log | audit2allow -M zabbix-policy
******************** 重要 ***********************
このポリシーパッケージを有効にするには、以下を実行して下さい:
 
semodule -i zabbix-policy.pp

表示されたコマンドを実行します。

sudo semodule -i zabbix-policy.pp

Zabbix サーバーを再起動します。

sudo systemctl restart zabbix-server

起動できない場合は、再度 audit2allow コマンドを実行して、表示されたコマンドを実行してください。

sudo grep zabbix_server /var/log/audit/audit.log | audit2allow -M zabbix-policy

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を開き、初期設定を開始します(IPアドレスはご自分の環境に読替えてください)
http://<IPアドレス>/zabbix/

今回は日本語で設定しますので Default language「Japanese(ja_JP)」を選択して(選択すると以下の表示に変わります)「次のステップ」をクリックします。

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

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

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

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

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

そのまま「次のステップ」をクリックします。

Zabbixサーバーの詳細設定画面

GUIのデフォルト設定です。デフォルトタイムゾーン「Asia/Tokyo」を選択し、お好みのデフォルトのテーマを選択したら「次のステップ」をクリックします。

GUI設定画面

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

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

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

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

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

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

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

Zabbixのログイン画面

[管理]→[ユーザー] をクリックし、ユーザー名「Admin」をクリックします。(以前はエイリアスと表記されていましたが、Zabbix 5.4 からユーザー名と表示されるようになりました)

ユーザー設定画面 Adminユーザーをクリック

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

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

パスワードの入力欄が表示されますので、パスワードを入力し、「更新」をクリックすればユーザーパスワードの変更完了です。

Adminユーザーのパスワードを入力 使用言語の変更

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

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

おわりに

Zabbix 公式ドキュメントのベストプラクティスにもありますが、実際の運用では、Zabbixの管理画面(フロントエンドと呼ばれます)の SSL/TLS設定をすることをオススメします。

Best practices for secure Zabbix setup | Zabbix Documentation 5.4

コメント

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