Zabbixをインストールして簡単に動作確認を行う

Updated: / Reading time: 8 minutes

ちょっと長めの前置き

自分用のWebアプリケーションをいくつか動作させていて、それらが正常動作しているかの確認にAlertMeを利用しています。定期的にアプリにHTTPアクセスを行い、時間がかかりすぎると障害としてメールが飛んできます。

AlertMeは簡単に設定できて非常に便利に使っていますが、CPU使用率、ディスク容量など他の項目も柔軟に監視したいと思い、別の監視サービスを利用しようと思います。自宅ではRaspberry Piを動作させているので、これのCPU温度やHDD健康状態も監視したいですね。

私はOpenShiftをよく使っており、dkanbier/openshift-zabbix-quickstartを使ってZabbix Serverをインストールし、RPi側にはZabbix Agentをインストールして監視しようとしましたが、どうにも「Zabbix agent on {HOST_NAME} is unreachable for 5 minutes」というエラーが解消できませんでした。 OpenShiftにZabbix Serverを建てる方向は諦めました。後述。

そこで、とりあえず普通にインストールした場合にZabbixをどのように設定すればよいのかを試すため、VagrantにZabbix ServerとZabbix Agentをセットアップして動作を確認したいと思います。

前提

Zabbixのインストールは、4 ソースからのインストール [Zabbix Documentation 2.2]の手順で行います。

Vagrantを使用するので、あらかじめ使用可能にしてください。

PCはMacBookProを使用していますが、Windowsでも適宜読み替えれば問題無いはずです。

NOTE: vagrant-vbox-snapshot

Vagrantで作業する時は、vagrant-vbox-snapshotを使うと便利。各ステップごとにスナップショットを取得しておくと、手順を間違えたりした時にすぐに戻せます。

VagrantでCentOSを使用する

ここではchef/centos-6.5を使用しますが、好きなOSを使用すれば良いです。

$ vagrant init chef/centos-6.5

ゲストOS側の80番ポートをホストOSの10080番ポートにフォワードする設定をVagrantfileに追記します。

config.vm.network "forwarded_port", guest: 80, host: 10080

Vagrantを起動します。

$ vagrant init chef/centos-6.5

起動したCentOSにsshでログインします。

$ vagrant ssh

NOTE: Windowsの場合、sshコマンドが無いため失敗するはずです。Cygwinを入れるとか、TeraTermで接続するとかしてください。

前提パッケージのインストール

インストール済みのパッケージを最新化します。

$ sudo yum -y update

開発ツールをインストールします。

$ sudo yum -y groupinstall "Development tools"

DBエンジンとしてMySQLを使用したいので、開発用ファイルも含めてインストールします。DBとしては他にPostgreSQL、Oracle、DB2、SQLiteが使えるようです。

$ sudo yum -y install mysql-server mysql-devel
$ sudo chkconfig mysqld on
$ sudo service mysqld start

Zabbixが必要とするソフトウェアをインストールします。これは、後で行う./configureのエラーを見ながらつどインストールしたほうが良いかもしれません。

$ sudo yum -y install libxml2 libxml2-devel net-snmp net-snmp-devel curl libcurl libcurl-devel

Zabbixソースコードのダウンロード

インストールパッケージが提供されていますが、今回はソースコードからインストールすることにします。ソースコードはSourceForge.netで提供されているので、そこからダウンロードリンクを取得して、wgetなどでダウンロードします。

$ wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.8/zabbix-2.2.8.tar.gz?r=http%3A%2F%2Fwww.zabbix.com%2Fdownload.php&ts=1424460111&use_mirror=tcpdiag

NOTE: zabbix-2.2.8.tar.gzというファイル名になれば良いですが、クエリパラメータも含めた変なファイル名になってしまうことがあるので、リネームします。

展開します。

$ tar zxvf zabbix-2.2.8.tar.gz

Zabbix用ユーザーを作成する

Zabbixが使用するユーザーを作成します。とりあえずここではzabbixというユーザーを作成しますが、セットアップ手順に注意事項が書いてあるので、それを熟読したほうが良いです。

$ sudo groupadd zabbix
$ sudo useradd -g zabbix zabbix

DBを作成する

DBを作成し、zabbixに用意されているSQLスクリプトを実行します。

まず、DBを作成します。

mysql> create database zabbix character set utf8 collate

次にzabbixに用意されているSQLスクリプトを実行します。

$ mysql -u root -p zabbix < database/mysql/schema.sql
$ mysql -u root -p zabbix < database/mysql/images.sql
$ mysql -u root -p zabbix < database/mysql/data.sql

ソースを設定し、インストールする

./configureを実行し、ソースを設定します。インストールするソフトウェアや使用するDBエンジンによって設定方法が異なりますが、ここではZabbix ServerとZabbix AgentをインストールしてMySQLを使用するよう設定します。

$ ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

関連ソフトウェアが揃っていれば、エラーが表示されず終了します。

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************

設定が成功しました。言われた通り、make installを実行します。

$ sudo make install

インストールが完了しました。

NOTE: 関連ソフトウェアがインストールされていない場合

関連ソフトウェアがインストールされていないと、エラーになります。

configure: error: LIBXML2 library not found

LIBXML2が見つからないため、yum search libxml2を実行してそれっぽいパッケージを探し、インストールします。

$ sudo yum -y install libxml2 libxml2-devel

./configureを再実行します。

configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config

Net-SNMPが見つからないため、yum search net-snmpを実行してそれっぽいパッケージを探し、インストールします。

$ sudo yum -y install net-snmp net-snmp-devel

./configureを再実行します。

configure: error: Curl library not found

Curlライブラリが見つからないため、yum search curlを実行してそれっぽいパッケージを探し、インストールします。

$ sudo yum -y install curl libcurl libcurl-devel

./configureを再実行します。

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************

設定が成功しました。

設定ファイルの編集

Zabbix Serverの設定ファイルは/usr/local/etc/zabbix_server.confにあります。

Zabbix Agentの設定ファイルは/usr/local/etc/zabbix_agentd.confにあります。

とりあえず今回は編集することがないので、そのままにしておきます。

NOTE: zabbix_agent.confというファイルもありますが、こちらは使用しないようです。

Zabbix ServerとZabbix Agentを起動

Zabbix Serverを起動します。

$ zabbix_server

Zabbix Agentを起動します。

$ zabbix_agentd

コンソールには何も出力されないですが、これで起動します。ps aux | grep zabbixで起動していることが確認できます。

Webインターフェイスをインストール

Zabbix ServerはWebインターフェイスを持ちますが、これは何らかのWebサーバーでPHPアプリケーションとして動作します。なので、まずApache HTTP ServerとPHPをインストールします。

$ sudo yum -y install httpd php
$ sudo chkconfig httpd on
$ sudo service httpd start

Webインターフェイスをインストールします。単にWeb公開フォルダに配置するだけです。

$ sudo mkdir /var/www/html/zabbix
$ cd frontends/php/
$ sudo cp -a . /var/www/html/zabbix/
$ sudo chown -R apache:apache /var/www/html/zabbix/

Webブラウザからhttp://localhost:10080/zabbix/にアクセスします。

Zabbix Web Interface Installation 1

「Next」をクリックします。

Zabbix Web Interface Installation 2

必要要件がチェックされます。要件を満たしていない場合、「Fail」が表示されます。「Fail」にカーソルをポイントすると、どうすれば良いかが表示されます。

Zabbix Web Interface Installation 3

ここでは、以下の項目が「Fail」になりました。

  • PHP option post_max_size
  • PHP option max_execution_time
  • PHP option max_input_time
  • PHP time zone
  • PHP databases support
  • PHP bcmath
  • PHP mbstring
  • PHP gd
  • PHP gd PNG support
  • PHP gd JPEG support
  • PHP gd FreeType support
  • PHP xmlwriter
  • PHP xmlreader

これを解消します。

まずPHPオプションを設定するため、/var/www/html/zabbix/.htaccessファイルを作成し、内容を以下のようにします。

php_value post_max_size 16M
php_value max_execution_time 300
php_value max_input_time 300
php_value date.timezone Asia/Tokyo

.htaccessが禁止されている場合、/etc/httpd/conf/httpd.confを編集します。

AllowOverride All

次に、PHPモジュールをインストールします。不足しているモジュールを「Fail」をクリックして調べて、yumでインストールしていきます。

$ sudo yum -y install php-mysql php-bcmath php-mbstring gd gd-devel php-gd php-xml

Apache HTTP Serverを再起動します。

$ sudo service httpd graceful

Webブラウザに戻り、「Retry」ボタンをクリックします。必要要件を満たしていれば、全て「OK」になります。まだ「Fail」が表示されている場合、個別に解消方法を調べてください。

Zabbix Web Interface Installation 4

「Next」をクリックします。

Zabbix Web Interface Installation 5

DB接続を設定します。設定を入力し、「Test connection」をクリックすることでDB接続を確認できます。ここは変更はしません。設定に問題が無ければ、「OK」が表示されます。

Zabbix Web Interface Installation 6

「Next」をクリックします。

Zabbix Web Interface Installation 7

Zabbix Serverの設定を入力します。ここでは何も変更しませんので、そのまま「Next」をクリックします。

Zabbix Web Interface Installation 8

「Next」をクリックします。

Zabbix Web Interface Installation 9

設定ファイルが作成され、問題無ければ「OK」が表示されます。「Finish」をクリックすることで、インストールが完了します。

Zabbixにログインし、Zabbix Server自体の監視を開始

Login

インストールが完了すると、ログインページが表示されます。初期ユーザーは「Admin」、パスワードは「zabbix」になっていますので、入力して「Sign in」をクリックします。

Dashboard

ログインすると、ダッシュボードが表示されます。すぐにAdminユーザーのパスワード変更や、作業ユーザーの作成などを行うべきですが、ここではとりあえずスキップします。

Zabbix Server自体の監視を有効にするため、メニューの「Configuration」→「Hosts」をクリックします。

Hosts

リストに「Zabbix server」が表示されますので、クリックします。

Hosts

「Status」を「Monitored」に変更して、「Save」をクリックして設定を保存します。

Hosts

リストの「Zabbix server」の「Status」が「Monitored」に変わっていることがわかります。

メニューの「Monitoring」→「Graphs」をクリックして、「Graph」を適当に、例えば「CPU load」に設定すると、グラフが表示されて監視できていることがわかります。

Graph

おわりに

これでZabbixの簡単な動作が確認できたので、次はOpenShiftにZabbix Server、RPiにZabbix Agentをセットアップして監視をしたいと思います。

NOTE: Zabbix Server on OpenShiftを諦めたわけ

OpenShiftではポートを開けられないっぽい。rhc port-forwardはローカル→OpenShiftのsshフォワーディングであり用途が違うし…

AWSかDigitalOceanにZabbix Serverを建てる方向で検討します。