Vine Linux 4.2 のサーバに統合監視ソフトウェア Zabbix 2.0.1 をインストールする。
■ ■ ■
ネットワーク機器の統合監視ソフトウェアである Zabbix がなかなかいいらしいので,自宅サーバに導入してみる。Nagios という監視ソフトウェアもあるが,これよりも優れているようだ (@IT:あなたの運用管理が十分にうまくいかないワケ(3/3))
動作環境は Vine Linux 4.2 (Kernel 2.6.16), MySQL 5.0.27, PHP 5.2.9 である。
情報をデータベースに保存する仕組みになっていることもあり,インストールには手順を沢山踏む必要がある。Vine Linux 用の RPM は用意されていないため,ソースからビルドする。本当はソースからビルドして RPM パッケージを作ってからインストールすればいいんだけども。
手順としては,本家 Zabbix 1.8.x on CentOS using source (manual) を基本として,Zabbixのインストール(RPM編) | ZABBIX-JP と @IT:ZABBIXのインストール(1/4) のいいとこ取りで行くことにする。
ソースのダウンロードは Homepage of Zabbix :: An Enterprise-Class Open Source Distributed Monitoring Solution から。
コンパイル
本来の流れとしては,zabbix 専用のユーザを作って,それからソースをコンパイルしてインストールということになるのだが,そもそも上手くコンパイルできるかどうかが分からないので,最初にこれを試すことにする。上手くいったら,それから環境を整えていくという手順にする。
盛り込む機能は以下のとおり。
- Zabbix Server (for gathering data)
- Zabbix Agent (for monitoring)
- Net-SNMP (for SNMP Support)
- cURL (for web monitoring)
configure と追加パッケージの導入
ソースを解凍したら configure を起動する。途中で発生した問題への対処法としては VineにZABBIXをインストール - isolの日記 by あみだく の情報が役に立った。
$ ./configure --with-mysql --enable-server --enable-agent --with-net-snmp --with-libcurl
何事もなく終わればいいのだが,大体はそう上手くはいかないものだ。
configure: error: Curl library not found
Crul ライブラリがないらしい。インストールする。
# apt-get install curl-devel
次のエラーで止まる。
configure: error: Invalid NET-SNMP directory - unable to find net-snmp-config
net-snmp-config がないという。インストールする。
# apt-get install net-snmp-devel
またエラーで止まる。
configure: error: Not found NET-SNMP library
net-smnp ライブラリは net-smnp-devel でインストールされたはず。このエラーの場合は,カレントディレクトリにできている config.log から情報を得ることができる。
$ vi config.log
/usr/bin/ld: cannot find -lrpm
librpm がないということなので,rpm-devel パッケージをインストールする。
# apt-get install rpm-devel
しかし,またエラーで止まる。先ほどと同じエラーだ。
configure: error: Not found NET-SNMP library
これも config.log を見て,
$ vi config.log
/usr/bin/ld: cannot find -lbz2
libbz2 がないということなので,bzip2-devel パッケージをインストールする。
# apt-get install bzip2-devel
そしてついに,
$ ./configure --with-mysql --enable-server --enable-agent --with-net-snmp --with-libcurl
...
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
ようやく成功。おめでとうございました。
# make install
これでコンパイルとインストールは完了。
データベースの作成と初期化
デフォルトの文字コードを MySQL のコンフィグレーションファイル /etc/my.cnf に書いてしまうのは抵抗があるので,データベースに対して設定することにする。もし文字化けしても,頑張れば対処できるらしい (Windowsのイベントログ文字化けの対応 - ksaitoの日記)。
# mysqladmin create zabbix --default-character-set=utf8
パスワードを設定する。ここでは「zabbixpassword」としたので,これは適当に。
# mysql -u root
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbixpassword';
mysql> flush privileges;
mysql> exit
データベースに初期データをインポートする。
# mysql -u root zabbix < database/mysql/schema.sql
# mysql -u root zabbix < database/mysql/data.sql
ERROR 1452 (23000) at line 2690: Cannot add or update a child row: a foreign key constraint fails (`zabbix/sysmaps_elements`, CONSTRAINT `c_sysmaps_elements_2` FOREIGN KEY (`iconid_off`) REFERENCES `images` (`imageid`))
data.sql のインポートで上のエラーが出る。これは問題としてすで話題に上がっている ([#ZBX-4678] Need disable check foreign keys for new installation - ZABBIX SUPPORT)。data.sql を編集して,トランザクション開始直後と終了直前に行を挿入する。
$ vi database/mysql/data.sql
START TRANSACTION;
SET foreign_key_checks = 0;
...
SET foreign_key_checks = 1;
COMMIT;
これで上手くいくので,最後に images.sql をインポートする。
# mysql -u root zabbix < database/mysql/images.sql
データベースについては終了。
Zabbix サーバとエージェントの設定
ユーザ zabbix とグループ zabbix を作成する。本家手順にしたがって,UID と GID はともに「130」に設定。zabbix ユーザでのログインはしない設定にする。
# groupadd -g 130 zabbix
# useradd -u 130 -g zabbix -c 'Zabbix monitoring' -d /etc/zabbix -s /sbin/nologin -M zabbix
よくあるインストール例に,「/etc/zabbix ディレクトリを作って,その中に設定ファイルをコピーする」というのがあるが,設定ファイルが /etc/zabbix/zabbix_server.conf と /usr/local/etc/zabbix_server.conf の2つ存在する場合,/usr/local/etc/zabbix_server.conf が (後から読み込まれるため?) 優先されるので,注意が必要である。zabbix_agentd.conf についても同様。そこで,ここでは /etc/zabbix を作らずに,/usr/local/etc/zabbix_*.conf を使うことにする。
設定ファイルの一部を編集する。PidFile の場所は Vine Linux 標準の場所に合わせてある。これは後で出てくる init.d 内に置く起動ファイルにも反映する必要がある。
サーバの設定は,
# vi /usr/local/etc/zabbix_server.conf
PidFile=/var/run/zabbix/zabbix_server.pid
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpassword
エージェントの設定も基本はデフォルトで,PidFile と LogFile を明示的に指定するくらいで。
# vi /usr/local/etc/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
ディレクトリを作る。
# mkdir /var/run/zabbix
# chown zabbix.zabbix /var/run/zabbix
# mkdir /var/log/zabbix
# chown zabbix.zabbix /var/log/zabbix
これで Zabbix サーバとエージェントの設定は終了。
起動スクリプトの設定
起動スクリプトは,Fedora Core 用のものを流用する。
# cp misc/init.d/fedora/core/zabbix_server /etc/init.d/
# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
サーバ起動用,エージェント起動用のそれぞれについて,PIDファイルのディレクトリを変更する。
# vi /etc/init.d/zabbix_server /etc/init.d/zabbix_agentd
# PID file
# PIDFILE=/tmp/$BINARY_NAME.pid
PIDFILE=/var/run/zabbix/$BINARY_NAME.pid
Linux 起動時に有効になるように設定する。
# setup (または ntsysv)
これで起動スクリプトは終了。
Web インターフェイスの設定
ディレクトリを作り,そこに PHP のソースをコピーする。
# mkdir /home/httpd/html/zabbix
# cp -r frontends/php/* /home/httpd/html/zabbix/
# chown -R apache.apache /home/httpd/html/zabbix/
この状態で,Web ブラウザでアクセスすると,ブラウザの上の方に次の警告が表示される。
date() [<a href='function.date'>function.date</a>]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead [include/page_header.php:184]
タイムゾーンが設定されていないのが原因である。このメッセージはひとまず無視。Zabbix インストールの Web 画面にしたがって進めると,設定のチェックが入る。
「Fail」となっている部分を設定する必要がある。/etc/php.ini に設定する方法もあるが,ここでは Apache の設定ファイルに記述することにする (Kozupon.com - Vine Linux 5 へZabbix導入する!)。
# vi /etc/apache2/conf/httpd.conf
<Directory "/home/httpd/html/zabbix">
... # 他のオプション
php_value memory_limit 128M
php_value max_execution_time 300
php_value max_input_time 300
php_value date.timezone Asia/Tokyo
</Directory>
これで Web インターフェイスの設定は終了。Web 画面の指示にしたがって進めれば OK。
動作確認
Web ブラウザで動作を確認する。忘れてはいけないのは,デフォルトのユーザは
- Login name: admin
- Password: zabbix
だということだ。その他,ハマりそうな箇所は,サーバ自身にエージェントを入れて監視する場合,Web インターフェースでのホスト名を,zabbix_agentd.conf で設定した「Hostname」の値 (上記では 「Zabbix server」) と同一にしなければならないという点である。
2012年12月5日追記:
当初は,設定ファイルの場所を /etc/zabbix/ としていましたが,/etc/zabbix/ と /usr/local/etc/ の両方に設定ファイルを置いた場合 /usr/local/etc/ が優先されるため,関連する記述を書き換え ,/usr/local/etc/ に統一しました (ディレクトリの変更は 1.8→2.0 の際に行われたようです 7 Upgrade notes for 2.0.0 [Zabbix])。
Posted by n at 2012-07-27 02:13 | Edit | Comments (0) | Trackback(0)