統合監視ツール「Zabbix」によるサーバー監視

サーバーを監視するためのツールにはさまざまなものがあるが、その1つに「Zabbix」がある。Zabbixはオープンソースで開発されている多機能な監視ツールで、設定を容易に行えるテンプレート機能やWebブラウザ上で操作できるGUIが特徴だ。本記事ではZabbixの概要と、ZabbixによるLinuxサーバーの監視方法について紹介する。

テンプレート機能や豊富な監視設定が特徴のZabbix

サーバー運用において重要なのが、サーバーやそこで動作しているアプリケーションが正常に動作しているかを監視することだ。監視方法としてはさまざまなものがあるが、多くの場合専用の監視用ツールを利用するのが一般的である。監視用ツールとしては「Nagios」や「MRTG」などが有名であるが、今回は豊富な監視機能を持つ「Zabbix」という統合監視ツールを使ってLinuxサーバーを監視する方法について紹介しよう。

Zabbixは、ラトビアのZabbix SIAが開発するオープンソースの統合監視ツールである(ライセンスはGPL)。「Zabbixエージェント」と呼ばれるソフトウェアを監視対象にインストールすることで詳細な監視が行えるほか、SNMPを使った監視や監視対象サーバーの各種ポートにアクセスして監視を行うポーリング監視機能も備えている。

ZabbixではさまざまなOSや機器向けの設定項目がまとめられた「テンプレート」が多数用意されており、監視したいサーバーを登録してテンプレートを選択するだけですぐに一通りの監視が行える。監視や設定はWebブラウザを使ったGUIで行えるため、OSやデバイスを問わずに監視や設定作業が可能だ。

Zabbixの構成

Zabbixは「Zabbix Server(サーバー)」および「Zabbix Agent(エージェント)」、そしてWebフロントエンドというコンポーネントから構成されている。Zabbixサーバーは監視および監視データの収集、設定などの管理を行うコンポーネントだ。後述のZabbixエージェントからの情報収集などはこのZabbixサーバーが実行する。

Zabbixエージェントは監視対象とするサーバーにインストールするソフトウェアで、ZabbixサーバーはZabbixエージェントを通じて監視対象サーバーの状態を取得する。WebフロントエンドはPHPで実装されたWebアプリケーションで、Zabbixサーバーが収集したデータを表示したり、各種設定を行う機能を持つ。

今回は監視を行う構成として、図1のような環境を想定している。ここではZabbixサーバーとWebフロントエンドを同じサーバー上で動作させているが、これらを別のサーバーで動作させることも可能だ。

図1 Zabbixによるサーバー監視構成例

 なお、以下では監視対象サーバーおよびZabbixサーバーのOSにRed Hat Enterprise Linux(RHEL) 6.4互換のLinuxディストリビューション「CentOS 6.4」を使用して環境構築方法を紹介している。

Zabbixのインストール

まずはZabbixのインストール手順について解説していこう。ZabbixはRHELの公式パッケージとしては提供されていないが、Red Hatが支援しているFedoraプロジェクト傘下の「Extra Packages for Enterprise Linux(EPEL)」というプロジェクトでバイナリパッケージが提供されている。EPELはRHELの公式パッケージリポジトリに含まれていないパッケージを提供するプロジェクトで、RHELだけでなくCentOSなどのRHEL互換ディストリビューションでも無償で利用可能だ。今回はこのEPELで提供されているZabbixパッケージを利用してZabbixをインストールしていく。

EPELを利用できるように設定する

EPELを利用するには、まず次のようにしてepel-releaseパッケージをインストールする。

# rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm

これで/etc/yum.repos.dディレクトリ以下にEPELリポジトリの設定ファイルが追加され、EPELリポジトリが利用可能となる。ただし、不用意にEPEL内のパッケージがインストールされることを防ぐため、EPELリポジトリはデフォルトではパッケージの検索対象外に設定されている。EPELリポジトリをyumから利用するには「--enablerepo=epel」オプション付きでyumコマンドを実行するか、もしくは/etc/yum.repos.d/epel.repoファイル内で「enabled=0」となっている部分を「enable=1」に変更すれば良い。

Zabbixサーバーのインストールと設定

続いて、監視を行うサーバーにZabbixサーバーをインストールする。ZabbixサーバーはデータベースとしてMySQLもしくはPostgreSQL、SQLiteを利用するので、こちらの準備も必要だ。今回はMySQLを使用することにする。

まず、EPELリポジトリからZabbixサーバー関連パッケージをインストールする。

# yum --enablerepo=epel install zabbix-server zabbix-server-mysql

なお、MySQL以外のデータベースを使用する場合はzabbix-server-mysqlパッケージではんなく、使用するデータベースに対応するパッケージをインストールする。

次に、MySQLにZabbix用のユーザーおよびデータベースを作成する。ここではユーザー名として「zabbix」を指定している。

$ mysql -u root -p


mysql> CREATE USER zabbix;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE zabbix;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY '<パスワード>';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

データベースの準備ができたら、次のようにしてZabbixが使用する初期データをデータベースに投入しておく。

$ mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-1.8.15/create/schema/mysql.sql
$ mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-1.8.15/create/data/data.sql
$ mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-1.8.15/create/data/images_mysql.sql

Zabbixサーバーの設定ファイルは、/etc/zabbix/ディレクトリ以下に用意されている。このディレクトリ内にある「zabbix_server.conf」をエディタで開き、環境に応じて設定を変更しておく。最低限確認と変更が必要なのは以下の3点だ。

  • DBName:使用するデータベース名
  • DBUser:データベースのユーザー名
  • DBPassword:データベースのパスワード

これらには先ほど作成したデータベース名やユーザー名、パスワードを指定しておく。

### Option: DBName
# Database name.
# For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored.
#
# Mandatory: yes
# Default:
# DBName=

DBName=zabbix
*g[:」
*g[:」
### Option: DBUser
# Database user. Ignored for SQLite.
#
# Mandatory: no
# Default:
# DBUser=

DBUser=zabbix

### Option: DBPassword
# Database password. Ignored for SQLite.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=

DBPassword=設定したパスワード

以上で設定は完了だ。最後にserviceコマンドでZabbixサーバーを起動しておく。

# service zabbix-server start
# chkconfig zabbix-server on

Webフロントエンドのインストール

Zabbixの設定や監視などを行うためのWebフロントエンドは、Zabbixサーバーとは別のパッケージとして提供されている。先に述べたとおり、ここではZabbixサーバーをインストールしたのと同じサーバーにWebフロントエンドをインストールしていくことにする。

まず、yunコマンドでEPELリポジトリからWebフロントエンドが含まれるパッケージである「zabbix-web-mysql」をインストールする。

# yum --enable-repo=epel install zabbix-web-mysql

これによりWebフロントエンドおよびWebサーバー(Apache HTTP Server)の設定ファイルがインストールされる。また、WebフロントエンドはPHPを使用しており、PHPの設定によっては正しく動作しない場合がある。これについては後述の設定画面で確認できるが、今回はPHP.iniの下記の個所をあらかじめ太字のように変更しておいた。

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = Asia/Tokyo
; Maximum size of POST data that PHP will accept.
; http://www.php.net/manual/en/ini.core.php#ini.post-max-size
post_max_size = 32M
; Maximum execution time of each script, in seconds
; http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time
max_execution_time = 600
; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://www.php.net/manual/en/info.configuration.php#ini.max-input-time
max_input_time = 600
; Maximum amount of memory a script may consume (128MB)
; http://www.php.net/manual/en/ini.core.php#ini.memory-limit
memory_limit = 256M
; Maximum allowed size for uploaded files.
; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
upload_max_filesize = 16M

最後にWebサーバーを再起動しておく。

# service httpd restart

Webサーバーが起動したら、Webブラウザで「http://<Webフロントエンドが動作しているホストのIPアドレス>/zabbix/」にアクセスする。ZabbixのWebフロントエンドの初期設定画面が表示されるはずだ(図2)。

図2 ZabbixのWebフロントエンド初期設定画面

 設定画面が表示されたら、ウィザードに従って設定を進めていこう。途中でPHPの設定を確認する「Check of pre-requisites」画面が表示される。もしPHPの各種設定が必要要件(Required)を満たしていない場合「Fail」と表示され、この先の設定を進められない(図3)。また、必要要件を満たしていても推奨設定になっていない項目は赤字でその項目が「Ok」と表示される。この場合、PHP.iniファイルをチェックして設定を確認・変更しておこう。

図3 PHPの設定を確認する「Check of pre-requisites」画面

 「Configure DB connection」画面では、使用するデータベースの情報を入力する。「Type」で使用するデータベースの種別を指定し、データベースが稼働しているホストやポート、データベース名、ユーザー名、パスワードを入力する。入力後に「Test connection」をクリックし、「Ok」と表示されることを確認しておく(図4)。

図4 「Configure DB connection」画面

 「Zabbix server details」画面では、Zabbixサーバーが稼働しているホスト名やポート番号、Zabbixサーバー名を指定する。ここで指定するZabbixサーバー名は任意のもので構わない(図5)。

図5 「Zabbix server details」画面

 最後に確認画面が表示されるので、指示に従って設定を確認し、ウィザードを進めていく。インストールが完了すると、Webフロントエンドのログイン画面が表示される(図6)。

図6 Webフロントエンドのログイン画面

 デフォルトの設定では「Admin」というユーザーが管理用に用意されており、ユーザー名「admin」、パスワード「zabbix」でログインが可能だ。このユーザーでログインを行い、ログインできることを確認しておく(図7)。

図7 ログインに成功するとWelcome画面が表示される

 adminユーザーでのログインに成功したら、パスワードおよびUIの言語を変更しておこう。メニューを「Administration」、「Users」の順にクリックすると、ユーザー一覧画面が表示される(図8)。Zabbixでは複数のユーザーを定義でき、それぞれに異なる権限を付与できる。デフォルトでは「Admin」および「guest」というユーザーが用意されている。

図8 ユーザーおよびユーザーグループの設定画面

 ここで「Zabbix administrators」行の「Admin」をクリックすると、Adminユーザーの設定が表示される(図9)。

図9 Adminユーザーの設定画面

 「Change password」ボタンをクリックするとパスワード入力欄が表示されるので、新しいパスワードを入力する。また、「Language」で「Japanese(JP)」を選択しておこう。最後に「Save」をクリックすると設定が保存され、ユーザーインターフェイスが日本語化される(図10)。

図10 日本語化されたWebインターフェイス

Zabbixエージェントのインストール

Zabbixではサーバーを監視する方法が複数提供されているが、今回は最も簡単なものとして、Zabbixエージェントを対象のサーバーにインストールして監視を行う方法を紹介する。

ZabbixエージェントについてもEPELリポジトリからのインストールが可能だ。監視対象とするサーバーでEPELを利用できるように設定したうえで、次のようにyumコマンドを実行する。

# yum --enablerepo=epel install zabbix-agent

続いてZabbixエージェントの設定ファイルである「/etc/zabbix/zabbix_agentd.conf」を環境に応じて編集する。最低限確認や修正が必要なのは以下の項目だ。

  • Server:ZabbixサーバーのIPアドレス
  • Hostname:監視対象ホスト、つまり自ホストのホスト名
  • ListenIP:Zabbixエージェントが待ち受け(Listen)をするIPアドレス。ホストに複数のIPアドレスが振られている場合、Zabbixサーバーと通信できるIPアドレスをここに指定する

たとえばZabbixサーバーが192.168.100.20というIPアドレスを持つホストで稼働しており、Zabbixエージェントをインストールしたホストのホスト名が「sakura-sata」、IPアドレスが「192.168.100.21」の場合、設定は以下のようになる。

### Option: Server
# List of comma delimited IP addresses (or hostnames) of Zabbix servers.
# No spaces allowed. If ServerActive is not specified, the first entry is used
# for receiving list of and sending active checks.
# If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
#
# Mandatory: yes
# Default:
# Server=

Server=192.168.100.20

### Option: Hostname
# Unique, case sensitive hostname.
# Required for active checks and must match hostname as configured on the server.
# Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=

Hostname=sakura-sata

### Option: ListenIP
# List of comma delimited IP addresses that the agent should listen on.
#
# Mandatory: no
# Default:
# ListenIP=0.0.0.0

ListenIP=192.168.100.21

また、ZabbixエージェントはZabbixサーバーとの通信に10050番ポートを使用する。このポートにZabbixサーバーからアクセスできるよう、ファイアウォールの設定を行っておこう。

最後に、serviceコマンドでZabbixエージェントを起動する。

# service zabbix-agent start
# chkconfig zabbix-agent on

これでZabbixエージェントのインストールは完了だ。

>>次ページ:Zabbixによる監視設定

おしらせ