Zabbix 5.0 インストール手順(CentOS8 / Apache2.4 / PHP7.2 / MySQL8.0)
Contents
はじめに
2020年5月12日、Zabbix 5.0 LTSがリリースされました。久々のメジャーバージョンアップということで、各機能の大幅な変更や追加が行われています。以下公式サイトに情報がまとめられています。
今回は、ミドルウェア構成としてApache + PHP + MySQLでZabbix Server 5.0およびZabbix Agent2 5.0のインストールを検証してみました。OSはCentOS 8を使用しています。RHEL 8でも同様の設定で問題ないかと思います。
なお、今回のバージョンから動作要件としてPHPが7.2以上となっています。RHEL 7およびCentOS7向けのパッケージも引き続き提供されるものの、同OS標準のPHPは5.6のため、remiなど外部のリポジトリからPHP7系をインストールする必要があります。製品のライフサイクルを考えると、今から新たに導入するシステムにはCentOS 8またはRHEL 8を導入すべきでしょう。
技術評論社
売り上げランキング: 120,839
前提条件
以下の前提条件で検証しています。
- ハードウェア: VirtualBox上の仮想マシン
- OS: CentOS 8.1
- ミドルウェア:
- Apache: 2.4.37 (OS同梱版)
- PHP: 7.2.11 (OS同梱版)
- MySQL: 8.0.17 (OS同梱版)
- Zabbix Server: 5.0.0
- Zabbix Agent 2: 5.0.0
- 構築対象サーバはインターネットと疎通が取れること
- 各手順はroot権限を持つユーザで実施
OSは、CentOSインストールDVDのISOファイルから「最小限のインストール」を選択しインストールを行いました。
バージョン情報は以下の通りです。
# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
# uname -r
4.18.0-147.el8.x86_64
パッケージインストール
Zabbixの動作に必要となる各種パッケージをインストールします。
基本方針として、OS同梱版ソフトウェアは、dfnのmodule機能を使用して最新バージョンをインストールします。
その後、Zabbixの公式リポジトリからZabbix関連パッケージおよび依存パッケージをインストールします。
Apache
以下のコマンドを実行し、Apacheおよび関連ソフトウェアをインストールします。
# dnf -y module install httpd
PHP
以下のコマンドを実行し、PHPをインストールします。
# dnf -y module install php
MySQL
以下のコマンドを実行し、MySQLをインストールします。
# dnf -y module install mysql
Zabbix Server
Zabbixのリリース状況によっては、新しいバージョンのパッケージが公開される可能性があります。以下の公式リポジトリで、「zabbix-release-5.0-x.el8.noarch.rpm」のバージョンを確認して、新しいバージョンが公開されている場合は、インストール対象パッケージのURLを適宜変更してください。
https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/
以下のコマンドを実行し、Zabbix 5.0の公式リポジトリをインストールします。
# dnf -y install https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
以下のコマンドを実行し、Zabbix Serverの関連パッケージをインストールします。
# dnf -y install zabbix-server-mysql zabbix-web-japanese zabbix-apache-conf
Zabbix Agent 2
以下のコマンドを実行し、Zabbix Agent 2をインストールします。
# dnf -y install zabbix-agent2
設定ファイルの変更
PHP
CentOS 8では、ApacheのPHP実行環境がモジュール(mod_php)からFastCGIサーバ(PHP-FPM)に変更されました。そのため、ApacheではなくPHP-FPMの設定を変更する必要があります。
viなどのテキストエディタで、PHP-FPMのZabbix用設定ファイルを開きます。
# vi /etc/php-fpm.d/zabbix.conf
設定変更内容は以下の通りです。
最低限の設定として、PHPのタイムゾーンを変更します。
# タイムゾーン行のコメントアウトを外し、Asia/Tokyoに変更
; php_value[date.timezone] = Europe/Riga
↓
php_value[date.timezone] = Asia/Tokyo
Zabbix Server
viなどのテキストエディタで、Zabbix Serverの設定ファイルを開きます。
# vi /etc/zabbix/zabbix_server.conf
設定変更内容は以下の通りです。
最低限の設定として、DBサーバへの接続情報が必要となります。
### DB関連の設定 ###
# DBユーザ名
# 今回はデフォルトのzabbixを使用するので変更しない
DBUser=zabbix
# DBパスワード
# 項目のコメントアウトを外し、クオートやスペースを含めずに指定する
# 今回は、例としてパスワードをzabbixpassに指定
# DBPassword=
↓
DBPassword=zabbixpass
Zabbix Agent2
viなどのテキストエディタで、Zabbix Agent 2の設定ファイルを開きます。
# vi /etc/zabbix/zabbix_agent2.conf
設定変更内容は以下の通りです。
監視を受け付けるサーバに関する設定を行います。
# 監視通信を許可するサーバIPアドレス
# Zabbixサーバ自身を監視する場合は値を変更しない
# 別サーバへエージェントをインストールする場合は、ZabbixサーバのIPアドレスを指定する
Server=127.0.0.1
# アクティブチェック監視データの送信先サーバIPアドレス
# Zabbixサーバ自身を監視する場合は値を変更しない
# 別サーバへエージェントをインストールする場合は、ZabbixサーバのIPアドレスを指定する
ServerActive=127.0.0.1
# 自ホストのホスト名
# OS上のホスト名ではなく、Zabbix監視設定上のホスト名なので注意
# 以下の例では、サーバ実機設定および監視設定であるzbx01をホスト名に指定している
Hostname=Zabbix server
↓
Hostname=zbx01
DBの設定
DBの設定を行うため、以下のコマンドを実行しMySQLの自動起動設定と、サービスの起動を行います。
# systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.
# systemctl start mysqld
以下のコマンドを実行し、MySQLの初期設定を行います。
なお、MySQL 8.0ではパスワードポリシーの指定があります。Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
の箇所で、以下のポリシーを選択できます。
- 0: 8文字以上
- 1: 8文字以上、英数大文字、小文字、記号を全て含む。
- 2: 8文字以上、英数大文字、小文字、記号、辞書ファイルの指定文字列を全て含む。
設定例中のDBユーザrootのパスワードは、パスワードポリシーを0(LOW)、パスワード文字列に「zabbixpass」を指定しています。
# mysql_secure_installation
(略)
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y ←yを入力
(略)
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 ←0を入力
(略)
New password: ←DBユーザrootのパスワードを入力
Re-enter new password: ←再度DBユーザrootのパスワードを入力
(略)
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y ←yを入力
Success.
All done!
以下のコマンドを実行し、Zabbix用のデータベースとDBユーザを作成します。
設定例中の<パスワード>
は、Zabbix Serverの設定ファイルに合わせてDBユーザzabbixのパスワード文字列を「zabbixpass」を指定します。
# mysql -u root -p
Enter password: ←DBユーザrootのパスワードを入力
(略)
mysql> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.06 sec)
mysql> CREATE USER zabbix@localhost IDENTIFIED BY '<パスワード>';
Query OK, 0 rows affected (0.07 sec)
mysql> GRANT ALL ON zabbix.* TO zabbix@localhost;
Query OK, 0 rows affected (0.10 sec)
mysql> quit;
Bye
以下のコマンドを実行し、Zabbix用のDBスキーマと初期データをデータベースに読み込みます。
サーバのスペックによっては、この処理には数分かかる場合があります。
# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u zabbix -p zabbix
Enter password: ←DBユーザzabbixのパスワードを入力
なお、今回Zabbix 4.4と同様のデータベース設定をしたところ、エラーが発生しました。そのため、文字コードはutf8
を使用しています。詳細は、参考情報の「DBスキーマインポート時のエラーについて」を参照してください。
SELinuxの設定
OSのSELinux設定が有効である場合、Zabbix Serverの動作が阻害されてしまいます。
以下のコマンドを実行し、SELinuxの設定を無効化し、OSを再起動します。
# sed -i -e "s/^SELINUX=enforcing$/SELINUX=disabled/g" /etc/selinux/config
# systemctl reboot
以下のコマンドを実行し、SELinuxが無効化(Disabled)されていることを確認します。
# getenforce
Disabled
ファイアウォールの設定
Firewalldを使用する場合、外部からの通信を許可します。許可対象の通信は以下の通りです。
- 10050/tcp : Zabbix Server → Zabbix Agentのパッシブ監視通信(Zbbixサーバ自身は不要、監視対象サーバでは必要)
- 10051/tcp : Zabbix Agent → Serverのアクティブ監視通信(Zabbixサーバのみ必要)
- http : クライアント → Zabbix WebUIのHTTP通信(Zabbixサーバのみ必要)
通信許可設定を行うには以下のコマンドを実行します。
# firewall-cmd --add-port=10051/tcp --zone=public --permanent
success
# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --reload
success
Zabbix WebUIのSSL化(https)や、SNMP Trapの受信(162/udp)など、Zabbixサーバに対する上記以外のインバウンド通信要件がある場合は、適宜firewalldの設定を追加してください。
サービス起動
Apache
以下のコマンドを実行し、Apacheの自動起動設定とサービス起動を行います。
# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
# systemctl start httpd
PHP-FPM
以下のコマンドを実行し、PHP-FPMの自動起動設定とサービス起動を行います。
# systemctl enable php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
# systemctl start php-fpm
Zabbix Server
以下のコマンドを実行し、Zabbix Serverの自動起動設定とサービス起動を行います。
# systemctl enable zabbix-server
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.
# systemctl start zabbix-server
Zabbix Agent2
以下のコマンドを実行し、Zabbix Agent2の自動起動設定とサービス起動を行います。
# systemctl enable zabbix-agent2
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service → /usr/lib/systemd/system/zabbix-agent2.service.
# systemctl start zabbix-agent2
WebUIの設定
初期設定ウィザード
WebUIの初期設定を行うため、作業端末のWebブラウザを起動して以下のURLにアクセスします。
http://<ZabbixサーバIPアドレス>/zabbix/
「Next step」を押下します。
全ての項目が「OK」になっていることを確認して、「Next step」を押下します。
「Password」の箇所に、DBユーザzabbixのパスワードを入力し、「Next step」を押下します。
今回は、WebUIを動作させるPHP-FPMとZabbix Serverが1台のサーバに相乗りしているので、WebUIの接続先Zabbix Server設定の変更は特に不要です。「Next step」を押下します。
「Next step」を押下します。
「Finish」を押下します。
設定が完了すると、ログイン画面に遷移します。
初期ユーザ名「Admin」、初期パスワード「zabbix」を入力し、「Sign in」を押下します。
ダッシュボードが表示されることを確認し、WebUIの初期設定は完了です。
WebUIの日本語化
初期状態では英語表記なので、日本語化を行います。
ダッシュボード左ペインの下部にある「User settings」を押下します。
「Language」の項目を「Japanese (ja_JP)」に指定し、「Update」を押下します。
ダッシュボードへ画面遷移するので、日本語表示に切り替わっていることを確認します。
参考情報
DBスキーマインポート時のエラーについて
DBスキーマのインポート時、以下のエラーに遭遇しました。
# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u zabbix -p zabbix
Enter password:
ERROR 1071 (42000) at line 348: Specified key was too long; max key length is 3072 bytes
エラーメッセージから、キーに指定されたカラムのサイズが上限の3072バイトを超過しているようです。
今回、Zabbix 4.4までと同様に、データベースの文字コードをutf8mb4
にしていたので、この部分を疑いました。
mysql> CREATE DATABASE zabbix character set utf8mb4 collate utf8mb4_ja_0900_as_cs;
文字コードをutf8
に指定してデータベースを作り直してみたところ、今度はエラーは発生しませんでした。
mysql> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
1文字4バイトのutf8mb4
は絵文字などより多彩な文字を扱える一方、1文字3バイトのutf8
よりもサイズが大きいです。今回キーとなるカラムのサイズでエラーが発生したため、Zabbix 5.0では、utf8
を前提としたテーブル設計なのかもしれません。
Zabbixインストール時の依存パッケージについて
CentOS 8の標準パッケージ管理機能であるDNFのmodule機能を使用して、以下のミドルウェアをインストールした後、Zabbixの主要パッケージをインストールするときに要求される依存関係パッケージ一覧を採取しました。
- Apache(apache)
- PHP(php)
- MySQL(mysql)
オフライン環境でZabbixをインストールする場合、上記moduleと併せて以下のパッケージファイルを用意しておく必要があります。
zabbix
リポジトリのパッケージは、インターネット上から直接ダウンロードしてサーバに転送しておきます。BaseOS
、AppStream
リポジトリのパッケージは、インストールイメージのISOファイルをマウントしてyumリポジトリに登録することでインストールができます。
# dnf install zabbix-server-mysql zabbix-web-japanese zabbix-apache-conf
(略)
====================================================================================
パッケージ Arch バージョン Repo サイズ
====================================================================================
インストール:
zabbix-apache-conf noarch 5.0.0-1.el8 zabbix 16 k
zabbix-server-mysql x86_64 5.0.0-1.el8 zabbix 2.6 M
zabbix-web-japanese noarch 5.0.0-1.el8 zabbix 16 k
依存関係のインストール:
gd x86_64 2.2.5-6.el8 AppStream 144 k
google-noto-cjk-fonts-common
noarch 20190416-1.el8 AppStream 20 k
google-noto-sans-cjk-ttc-fonts
noarch 20190416-1.el8 AppStream 85 M
jbigkit-libs x86_64 2.1-14.el8 AppStream 55 k
libX11 x86_64 1.6.7-1.el8 AppStream 612 k
libX11-common noarch 1.6.7-1.el8 AppStream 157 k
libXau x86_64 1.0.8-13.el8 AppStream 36 k
libXpm x86_64 3.5.12-7.el8 AppStream 58 k
libjpeg-turbo x86_64 1.5.3-10.el8 AppStream 156 k
libtiff x86_64 4.0.9-15.el8 AppStream 188 k
libwebp x86_64 1.0.0-1.el8 AppStream 273 k
libxcb x86_64 1.13-5.el8 AppStream 230 k
mysql-libs x86_64 8.0.17-3.module_el8.0.0+181+899d6349 AppStream 1.2 M
php-bcmath x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff AppStream 79 k
php-gd x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff AppStream 84 k
php-ldap x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff AppStream 79 k
php-mysqlnd x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff AppStream 190 k
php-pdo x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff AppStream 122 k
unixODBC x86_64 2.3.7-1.el8 AppStream 458 k
OpenIPMI-libs x86_64 2.0.25-4.el8 BaseOS 506 k
dejavu-fonts-common noarch 2.35-6.el8 BaseOS 74 k
dejavu-sans-fonts noarch 2.35-6.el8 BaseOS 1.5 M
fontconfig x86_64 2.13.1-3.el8 BaseOS 275 k
fontpackages-filesystem
noarch 1.44-22.el8 BaseOS 16 k
libtool-ltdl x86_64 2.4.6-25.el8 BaseOS 58 k
net-snmp-libs x86_64 1:5.8-12.el8_1.1 BaseOS 822 k
zabbix-web noarch 5.0.0-1.el8 zabbix 3.0 M
zabbix-web-mysql noarch 5.0.0-1.el8 zabbix 15 k
fping x86_64 3.16-1.el8 zabbix-non-supported
51 k
トランザクションの概要
====================================================================================
インストール 32 パッケージ
ダウンロードサイズの合計: 98 M
インストール済みのサイズ: 183 M
(略)
Zabbix Agent 2は単体でインストールでき、その他依存関係にあるパッケージはありませんでした。
# dnf install zabbix-agent2
(略)
====================================================================================
パッケージ Arch バージョン リポジトリー サイズ
====================================================================================
インストール:
zabbix-agent2 x86_64 5.0.0-1.el8 zabbix 4.1 M
トランザクションの概要
====================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 4.1 M
インストール済みのサイズ: 13 M
(略)
“Zabbix 5.0 インストール手順(CentOS8 / Apache2.4 / PHP7.2 / MySQL8.0)” に対して1件のコメントがあります。