Zabbix4.2(CentOS7+PHP7.3+MySQL8)のインストール方法 - Zabbix4で作る監視システム(1)

こんにちは、さくらインターネットの大喜多です。

本記事では、オープンソースの監視ソフトウェア「Zabbix」の4.0/4.2の新機能と、インストール手順についてご紹介いたします。

Zabbixの概要

Zabbixは、ラトビアにあるZabbix SIAという企業によって開発されているオープンソースの監視ソフトウェアです。オープンソースでありながら開発・サポートはコミュニティでなく企業によって主導されており、無償版・有償版といった区分がなく、すべての機能が利用可能な点が特徴です。

Zabbixはいくつかの監視方法をサポートしており、大まかには以下のように分類されます。

・監視対象にソフトウェアをインストールせずに、HTTPやSSHなどのサービスを外部から監視する

・Zabbixエージェントと呼ばれるソフトウェアを監視対象のサーバにインストールし、CPUロード、 ネットワーク使用率、ディスク容量などのようなステータスを監視する

・SNMPエージェントを利用して監視する(サーバのほか、SNMPに対応したネットワーク機器の監視も可能)

Zabbixバージョンとサポート期間の関係

2019年4月現在、Zabbix社は1年半ごとにLTS(長期サポート: Long Term Support)をリリースし、ポイントリリースとして6ヶ月ごとに安定版をリリースするとしています。ポイントリリースは、次のバージョンがリリースされる6ヶ月の間だけサポートされるバージョンです。Zabbix4系においては4.0がLTS、4.2はポイントリリースの位置づけです。詳細はサポート期間とリリースポリシーをご参照ください。常に最新の機能を使いたい場合はポイントリリースを、長く同じバージョンを利用したい場合はLTSを選択しましょう。

4.0.0からの新機能

Zabbix4.0.0からの改良点・新機能の一部をご紹介します。

  • ダッシュボードの表示において、グラフの描画方式がよりモダンなものを採用するように改良されています。
  • 監視アイテムの手動実行機能に対応しました。これまでは更新間隔が長いものの動作確認は、一時的に間隔を短くするか、更新されるまで待つかする必要がありましたが、「監視データ取得」ボタンをクリックするだけで明示的に実行することができるようになりました。
  • これまでは予約語の関係で使用できなかったMySQL8に対応しました。
  • HTTP / HTTPSプロトコルを使用したデータポーリングを可能にする新しいHTTPアイテムタイプが導入されました。Web APIに対してデータを送信したり、値を取得したりできるようになりました。
  • マクロ対応の部分など、ローレベルディスカバリ機能が一部改良されています。

新機能の一覧は以下のURLをご参照ください(注意:英語です)。
What's new in Zabbix 4.0.0

4.2.0からの新機能

Zabbix4.2.0からの改良点・新機能の一部をご紹介します。

  • JavaScriptを使ってアイテムによる値の取得やローレベルディスカバリによる値の取得時に前処理を実行できるようになりました。
  • ZabbixでPrometheusのデータを扱うことができるようになりました。
  • Web監視において取得する値を、ヘッダのみ、ボディのみ、ヘッダとボディの両方と選べるようになりました。

新機能の一覧は以下のURLをご参照ください(注意:英語です)。
What's new in Zabbix 4.2.0

Zabbix4.2のインストール

本節ではCentOS7にZabbix4.2.0をインストールする手順について解説いたします。本記事の手順は以下の環境で動作検証しています。

サーバー さくらのVPS 1G
OS CentOS7.6.1810
Zabbix-Serverバージョン 4.2.0
Webサーバー Apache2.4.6
DBサーバー MySQL 8.0.15
PHP 7.3.4

CentOS7にデフォルトでインストールされているMariaDBを削除します。

# yum remove -y mariadb-libs.x86_64
# rm -rf /var/lib/mysql

OSを最新状態にアップデートします。

# yum -y update
# shutdown -r now

DBサーバー(MySQL8)をインストールします。

# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
# yum -y install mysql-community-server mysql-community-devel

Webサーバー・PHP等、Zabbixを動作させるために必要なプログラムをインストールします。

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum -y install --enablerepo=remi,remi-php73 php php-devel php-pdo php-mysqlnd php-mbstring php-mcrypt php-gd php-pear php-pecl-apc-devel php-bcmath zlib-devel httpd-devel

Zabbixをインストールします。zabbix-serverとzabbix-webは別のプログラムで、それぞれ別のサーバーにインストールすることもできますが、ここでは同一サーバー上に両方インストールしています。また、zabbix-agentは本来監視対象のサーバーにインストールするソフトウェアですが、自身を監視するためにインストールします(zabbix-agent動作確認の意味もあります)。

zabbix-webについてはyumコマンドを用いず、rpmファイルをダウンロードしてrpmコマンドを使ってインストールしていますが、これはzabbix-webとPHP5.4の間に依存関係があり、PHP7.3が動作する環境ですとエラーが発生してインストールができないためです。

# rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
# yum -y install zabbix-agent zabbix-server-mysql
# wget http://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-web-4.2.0-1.el7.noarch.rpm
# wget http://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-web-mysql-4.2.0-1.el7.noarch.rpm
# wget http://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-web-japanese-4.2.0-1.el7.noarch.rpm
# rpm -ivh --nodeps zabbix-web-4.2.0-1.el7.noarch.rpm zabbix-web-mysql-4.2.0-1.el7.noarch.rpm zabbix-web-japanese-4.2.0-1.el7.noarch.rpm

デフォルトの認証プラグインを変更します。

vi /etc/my.cnf
---

#default-authentication-plugin=mysql_native_password
 ↓
default-authentication-plugin=mysql_native_password

MySQLを起動し、自動起動設定をおこないます。

# systemctl start mysqld
# systemctl enable mysqld

MySQLの初回起動時に、MySQLのrootユーザーの初期パスワードが生成されます。初期パスワードは/var/log/mysqld.logファイルに書き込まれており、以下のコマンドで確認できます(赤字部分)。

# cat /var/log/mysqld.log | grep root
2019-04-10T03:03:18.756712Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ************

mysql_secure_installationコマンドを用いてrootユーザーのパスワードを変更します。パスワードを変更しておかないとMySQLコマンドが一切実行できませんのでご注意ください。

# mysql_secure_installation

MySQLにログインします。

# mysql -u root -p

zabbix-serverが使用するデータベース「zabbix」およびユーザー「zabbix」を作成します。後述するzabbix-serverの初期セットアップにおいて、zabbixユーザーを使用してzabbixデータベースにアクセスするよう設定します。MySQL8以前はgrant文でユーザーの作成と権限の付与を同時におこなうことができましたが、MySQL8からは別々に実行しなければならないよう変更されました。
※new-passwordとなっている部分は任意のパスワードに置き換えてコマンドを実行してください。

mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified  by 'new-password';
mysql> grant all on zabbix.* to 'zabbix'@'localhost' with grant option;
mysql> FLUSH PRIVILEGES;
mysql> quit;

Zabbix 用のデータベーススキーマとデータをzabbixデータベースにインポートします。

# cd /usr/share/doc/zabbix-server-mysql-4.2.0/
# zcat create.sql.gz | mysql -u zabbix -p zabbix

Zabbix サーバーの設定ファイルに、先ほど作成したzabbixユーザーのパスワードを記入します。new-passwordとなっている部分は任意のパスワードに置き換えてコマンドを実行してください。

# vi /etc/zabbix/zabbix_server.conf
---

# DBPassword=
↓
DBPassword=new-password

Apacheの設定ファイルで、タイムゾーン(日本/東京)を指定します。

# vi /etc/httpd/conf.d/zabbix.conf
---
<IfModule mod_php5.c>
↓
<IfModule mod_php7.c>

# php_value date.timezone Europe/Riga
↓
php_value date.timezone Asia/Tokyo

zabbix-serverおよびApacheの起動と自動起動設定をおこないます。

# systemctl start zabbix-server
# systemctl enable zabbix-server
# systemctl start httpd
# systemctl enable httpd

firewall-cmdコマンドでfirewalldの設定を変更し、ZabbixのWeb-UIが表示できるようにhttp(80/TCP)への通信を許可します。

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --reload

ここからはWebブラウザ上で作業をおこないます。以下のURLにアクセスします。
http://[サーバのIPアドレス]/zabbix/

以下の画面が表示されたら「Next Step」をクリックし、次に進みます。

以下の画面ですべてOKになっていれば、zabbix-serverセットアップのための要件を満たしています。NGになっている箇所があった場合は表示されるメッセージに従い修正してください。「Next Step」をクリックし、次に進みます。

MySQLにログインして作成した、zabbix-serverで使用するデータベースとユーザーを設定します。本記事ではデータベース名は「zabbix」、ユーザー名は「zabbix」として作成しています(パスワードは作成時に入力した任意の文字列です)。入力が完了したら、「Next Step」をクリックし、次に進みます。

以下の画面が表示されたら「Next Step」をクリックし、次に進みます。

以下の画面が表示されたら、内容を確認のうえ、「Next Step」をクリックし、次に進みます。

以下の画面が表示されたら「Finish」をクリックし、セットアップを完了します。

以下のログイン画面が表示されますので、usernameとpasswordを入力し、ログインします。初期状態で設定されているユーザーは、usernameが「Admin」、Passwordが「zabbix」です。ログイン後変更するようにしてください。

以下の画面(Zabbixのダッシュボード)が表示されればログインは成功です。以降はこの画面から監視設定等を行います。

さいごに

以前ご紹介した手順から大きく変わった点は、DBをMySQL8に変更したことと、PHPを5.4系から7系に変更したことです。より新しいバージョンを採用したことで、動作速度の改善が期待できます。次回はZabbix4系からの新機能を実際に使ってみる予定です。よろしくお願いいたします。