印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux Zabbix 2.0.1 のインストール

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)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?