テンプレートやGUIにより設定が容易な統合監視ツール「Zabbix」 2ページ
Zabbixのインストール
まずはZabbixのインストール手順について解説していこう。ZabbixはRHELの公式パッケージとしては提供されていないが、Red Hatが支援しているFedoraプロジェクト傘下の「Extra Packages for Enterprise Linux(EPEL)」というプロジェクトでバイナリパッケージが提供されている。EPELはRHELの公式パッケージリポジトリに含まれていないパッケージを提供するプロジェクトで、RHELだけでなくCentOSなどのRHEL互換ディストリビューションでも無償で利用可能だ。今回はこのEPELで提供されているZabbixパッケージを利用してZabbixをインストールしていく。
なお、EPELで提供されているパッケージはややバージョンが古いものになっている。もし最新版を利用したい場合、Zabbixが提供しているyumリポジトリからのインストールが可能だ。こちらについてはZabbixのWebサイトにインストール方法が掲載されているので、それをご参照いただきたい。
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)。
設定画面が表示されたら、ウィザードに従って設定を進めていこう。途中でPHPの設定を確認する「Check of pre-requisites」画面が表示される。もしPHPの各種設定が必要要件(Required)を満たしていない場合「Fail」と表示され、この先の設定を進められない(図3)。また、必要要件を満たしていても推奨設定になっていない項目は赤字でその項目が「Ok」と表示される。この場合、PHP.iniファイルをチェックして設定を確認・変更しておこう。
「Configure DB connection」画面では、使用するデータベースの情報を入力する。「Type」で使用するデータベースの種別を指定し、データベースが稼働しているホストやポート、データベース名、ユーザー名、パスワードを入力する。入力後に「Test connection」をクリックし、「Ok」と表示されることを確認しておく(図4)。
「Zabbix server details」画面では、Zabbixサーバーが稼働しているホスト名やポート番号、Zabbixサーバー名を指定する。ここで指定するZabbixサーバー名は任意のもので構わない(図5)。
最後に確認画面が表示されるので、指示に従って設定を確認し、ウィザードを進めていく。インストールが完了すると、Webフロントエンドのログイン画面が表示される(図6)。
デフォルトの設定では「Admin」というユーザーが管理用に用意されており、ユーザー名「admin」、パスワード「zabbix」でログインが可能だ。このユーザーでログインを行い、ログインできることを確認しておく(図7)。
adminユーザーでのログインに成功したら、パスワードおよびUIの言語を変更しておこう。メニューを「Administration」、「Users」の順にクリックすると、ユーザー一覧画面が表示される(図8)。Zabbixでは複数のユーザーを定義でき、それぞれに異なる権限を付与できる。デフォルトでは「Admin」および「guest」というユーザーが用意されている。
ここで「Zabbix administrators」行の「Admin」をクリックすると、Adminユーザーの設定が表示される(図9)。
「Change password」ボタンをクリックするとパスワード入力欄が表示されるので、新しいパスワードを入力する。また、「Language」で「Japanese(JP)」を選択しておこう。最後に「Save」をクリックすると設定が保存され、ユーザーインターフェイスが日本語化される(図10)。
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エージェントのインストールは完了だ。