ZABBIXのインストール-1 サーバ編(SQLite)
- 2008.12.31
- Linux
Miracle Linux 4 に Zabbix 1.4.6 をインストールした。
Zabbix 1.4.6 + MySQL 4.2.20 の組み合わせで稼働させるには時間がかかりそうだったので、SQLite3を使うことにした。
- 1. ■ZABBIXの大雑把なしくみを理解しておく
- 2. ■今回の設定を確認しておく
- 3. ■マニュアルのインストール情報に目を通しておく
- 4. ■SQLiteをインストールする
- 5. ■NET-SNMPをバージョンアップして起動する
- 6. ■ZABBIXスーパーユーザのアカウントを作成する
- 7. ■ZABBIXソースを解凍する
- 8. ■ZABBIXデータベースを作成する
- 9. ■ZABBIXサーバのコンパイルとインストールを実行する
- 10. ■設定ファイル/etc/zabbix/zabbix_server.confを用意する
- 11. ■pidファイルとログファイル用のディレクトリを作成する
- 12. ■起動スクリプト/etc/init.d/zabbix_serverを用意する
- 13. ■起動できなかった
- 14. ■Webフロントエンド用のPHPをインストールする
- 15. ■ブラウザで接続する
- 16. ■ブラウザからアクセスしたけれど…
■ZABBIXの大雑把なしくみを理解しておく
- ZABBIXサーバ(いわゆる観測所。測定値をここに集める)
- ZABBIXエージェント(観測される側。測定値を観測所へ渡す。1台〜複数台)
- ブラウザ(観測所で集計したデータをブラウザで見る。手元のMacのSafari等で見る)
■今回の設定を確認しておく
- ZABBIXサーバ Miracle Linux 4
- ZABBIXエージェント Miracle Linux 4, Asianux Server3, その他
■マニュアルのインストール情報に目を通しておく
▼PDFマニュアル(英語)をダウンロードして眺めておく。
このマニュアルに従って、サーバ側のインストールから始める。
↓Zabbix 1.4 39ページからインストールの説明。
http://www.zabbix.com/downloads/ZABBIX%20Manual%20v1.4.pdf
↓Zabbix 1.6 42ページからインストールの説明。
http://www.zabbix.com/downloads/ZABBIX%20Manual%20v1.6.pdf
http://www.zabbix.jp/modules/download1/
▼ThinkITの記事
http://www.thinkit.co.jp/cert/article/0611/19/1/2.htm
■SQLiteをインストールする
http://www.sqlite.org/download.html
$ tar zxvf sqlite-3.6.7.tar.gz $ cd sqlite-3.6.7 $ ./configure $ make # make install
インストールされたバイナリとライブラリを確認する。
$ ldd /usr/local/bin/sqlite3 libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x00745000) libreadline.so.4 => /usr/lib/libreadline.so.4 (0x00111000) libncurses.so.5 => /usr/lib/libncurses.so.5 (0x00bb1000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00654000) libc.so.6 => /lib/tls/libc.so.6 (0x004e9000) /lib/ld-linux.so.2 (0x004d0000) $ ls /usr/local/lib/ | grep sqlite libsqlite3.a libsqlite3.la libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6
■NET-SNMPをバージョンアップして起動する
Miracle Linux 4.0のNET-SNMPがアップデートされていたので、rpm -Fvhでインストールしておく。(2008年12月時点)
http://www.miraclelinux.com/support/index.php?q=node/99&errata_id=1364
snmpdとsnmptrapdが、Linux起動時にスタートするようにしておく。
# chkconfig --list | grep snmp # chkconfig snmpd on # chkconfig snmptrapd on
現在、起動していなかったらスタートさせる。
# service snmpd start # service snmptrapd start
▼参考情報:ITmedia SNMP
http://www.itmedia.co.jp/enterprise/articles/0705/31/news042.html
▼ソースからインストールする場合は本家から。
http://net-snmp.sourceforge.net/
■ZABBIXスーパーユーザのアカウントを作成する
ZABBIXサーバプロセスをrootで実行するのはセキュリティリスクがあるので、専用のユーザを作る。
# useradd zabbix
■ZABBIXソースを解凍する
$ tar zxvf zabbix-1.4.6.tar.gz
■ZABBIXデータベースを作成する
設定や観測値を保存するためのデータベースを用意する。
MySQL, Oracle, PostgreSQL, SQLiteが利用できる。今回は、SQLite3を使用する。
データベースの保存場所はマニュアルでは /var/lib/sqlite/ をサンプルとして記述しているが、特にそのディレクトリを使う必然性が無いので、zabbixユーザのホームディレクトリにデータベースを作成、保存した。
# su - zabbix $ pwd /home/zabbix $ cat /usr/local/src/zabbix-1.4.6/create/schema/sqlite.sql | sqlite3 zabbix.db $ cat /usr/local/src/zabbix-1.4.6/create/data/data.sql | sqlite3 zabbix.db $ cat /usr/local/src/zabbix-1.4.6/create/data/images_sqlite3.sql | sqlite3 zabbix.db
1台のサーバでZABBIXを運用するなら、、、複数のMySQLをインストールしているなら、、、MySQLのバージョンを気にしたくなければ、、、SQLiteで十分な気がする。
ZABBIXのソースはきちんと調べていないのだけど、PHPプログラム関連の多くはMySQLのソケット、ポート番号、複数バージョンのMySQLクライアントプログラムを柔軟に扱えないんだなぁという経験が多い。
(ネットワーク経由で接続できるのがMySQLやPostgreSQLのメリットなので、その辺りは自分の環境を考えて適切なものを選ぶとよいかな)
■ZABBIXサーバのコンパイルとインストールを実行する
英語のPDFマニュアルでインストールでは、ZABBIXアラートを受け取るために–with-Jabberを指定しているが、自分の環境では利用しない。
複数のMySQLがインストールされている環境なので、ZABBIXで利用するMySQLのmysql_configを指定する。
$ cd /usr/local/src/zabbix-1.4.6 $ ./configure --enable-server --with-sqlite3 --with-netdnmp --with-libcurl $ make # make install
/usr/local/sbin/zabbix_serverが出来ている事を確認した。
■設定ファイル/etc/zabbix/zabbix_server.confを用意する
# mkdir /etc/zabbix # cp /usr/local/src/zabbix-1.4.6/misc/conf/zabbix_server.conf /etc/zabbix/
/etc/zabbix/zabbix_server.confを設定する。
PidFile=/var/run/zabbix/zabbix_server.pid LogFile=/var/log/zabbix/zabbix_server.log DBName=/home/zabbix/zabbix.db
■pidファイルとログファイル用のディレクトリを作成する
# mkdir /var/run/zabbix # mkdir /var/log/zabbix # chown zabbix:zabbix /var/run/zabbix # chown zabbix:zabbix /var/log/zabbix
■起動スクリプト/etc/init.d/zabbix_serverを用意する
# cp /usr/local/src/zabbix-1.4.6/misc/init.d/fedora/core/zabbix_server /etc/init.d/
fedora, redhat, suse用などが用意されている。
/etc/init.d/zabbix_serverを編集する。
BASEDIR=/usr/local FULLPATH=$BASEDIR/sbin/$BINARY_NAME PIDFILE=/var/run/zabbix_server/$BINARY_NAME.pid
/usr/local/binではなく、/usr/local/sbinにzabbix_serverがインストールされていたので、FULLPATHのbinをsbinに変更した。
ZABBIXサーバーを起動する。
# /etc/init.d/zabbix_server start
■起動できなかった
ライブラリが見つけられなくて、zabbix_serverを起動出来なかった。
# ldd /usr/local/sbin/zabbix_server libsqlite3.so.0 => not found libcurl.so.4 => not found libm.so.6 => /lib/tls/libm.so.6 (0x00616000) libresolv.so.2 => /lib/libresolv.so.2 (0x00668000) libc.so.6 => /lib/tls/libc.so.6 (0x004e9000) /lib/ld-linux.so.2 (0x004d0000)
libsqlite3.so.0 の場所を調べる。
# ldd /usr/local/bin/sqlite3 libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x004ea000)
libcurl.so.4の場所を調べる。
# ldd /usr/local/bin/curl libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0x00729000)
一時的に対処する。(LD_LIBRARY_PATHで /usr/local/lib を指定する)
# LD_LIBRARY_PATH=/usr/local/lib:/lib:/usr/lib # export LD_LIBRARY_PATH
恒久的に対処する場合は、/etc/ld.so.conf または、/etc/ld.so.conf.d/に記述する。(他のアプリへの影響を配慮する必要あり)変更後は、ldconfigコマンドを忘れずに実行する。
一時対処を起動スクリプト/etc/init.d/zabbix_serverの2行目に書いておくことにした。
LD_LIBRARY_PATH=/usr/local/mysql4/lib/mysql:/usr/local/lib:/lib:/usr/lib export LD_LIBRARY_PATH
■Webフロントエンド用のPHPをインストールする
$ mkdir /path/to/html/zabbix $ cp -a /usr/local/src/zabbix-1.4.6j/frontends/php/* /path/to/html/zabbix/
/path/to/html/zabbix/include/config.inc.phpを編集する。
■ブラウザで接続する
http://zabbix-server/zabbix/
1. Introduction
そのまま次へ進む。
2. Licence Agreement
アグリーして次へ進む。
3. Check of pre-requisites
Failが表示された項目を修正してリトライする。
◎PHP max execution time: 300 seconds
memory_limit = 128M post_max_size = 8M max_execution_time = 300
◎BC math
PHP自体を –enable-bcmathでコンパイルする必要があるので、再コンパイルしてインストールした。
PHPインストール時のconfigureオプションは、php -iで確認する。
4. Configure DB connection
MySQLへの接続情報を入力する。
Type: MySQL
Host: localhost
Port: 3307(デフォルトは0。このサーバは複数のMySQLを持っているので指定した)
Name: zabbix(データベース名)
User: zabbix(ユーザ名)
Password: password
5. Pre-Installation Summary
確認して次へ進む。
6. Install
確認して次へ進む。
7. Finish
「Congratulation with succesfull instalation of ZABBIX frontend.」
このメッセージが表示された問題ないのでFinishボタンで完了する。
/path/to/html/zabbix/zabbix.conf.php として情報が保存される。
(Asianux Server3でZABBIXをRPMでインストールしたとき、設定ファイルは、/etc/zabbix/zabbix.conf.php だった)
zabbix.conf.phpに書き込まれているデータベース接続情報。
$DB_TYPE = "MYSQL"; $DB_SERVER = "localhost"; $DB_PORT = "3307"; $DB_DATABASE = "zabbix"; $DB_USER = "zabbix"; $DB_PASSWORD = "password";
パスワードが書き込まれたファイルなので、zabbix.conf.php ファイルのオーナーとアクセス権限をチェックしておく。
■ブラウザからアクセスしたけれど…
http://zabbix-server/zabbix/
Login name: admin
Password: 空白のまま
で、エラーメッセージが表示された。
Error in query [select u.* from users u where u.alias=’guest’ and (u.userid div 100000000000000) in (0) ] [You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘div 100000000000000) in (0)’ at line 1]
mysql_fetch_array(): supplied argument is not a valid MySQL result resource[/usr/local/apache/htdocs/zabbix/include/db.inc.php:411]
[ERROR: Database corrupted, missed default user ‘guest’]
MySQLのログを見てみた。
# tail /usr/local/mysql4/var/ホスト名.err 081231 14:02:32 Aborted connection 271842 to db: 'zabbix' user: 'zabbix' host: `localhost' (Got an error reading communication packets)
Got an error reading communication packetsを調べてみる。
http://dev.mysql.com/doc/refman/4.1/ja/error-returns.html
Error: 1158 SQLSTATE: 08S01 (ER_NET_READ_ERROR) ということなので、さらに調べてみる。
シェルでは、MySQLのzabbixデータベースへ問題なくアクセスできている。
$ mysql -u zabbix -p 問題なし。 $ mysql -h localhost -u zabbix -p 問題なし。 $ mysql -h 127.0.0.1 -u zabbix -p 問題なし。
再度、設定を変更したり、ログファイルを眺めたりした。
/etc/zabbix/zabbix_server.conf 設定ファイル
/var/log/zabbix/zabbix_server.log ログファイル
/etc/init.d/zabbix_server restart ZABBIXの再起動
/path/to/html/zabbix/zabbix.conf.php 変更または削除する
で、結局面倒くさくなったので、あきらめた。
英語のPDFマニュアルのSoftware Requimentsを見るとMySQL 3.22 or later と書いてあるし、ZABBIX may work on previous versions of Apache, MySQL とも書いてあるんだけど、とにかく自分の環境では上手く動かすためには時間がかかりそう。
MySQL 4.0 に接続させるための時間をかける理由も無いので、SQLiteに変更して再度インストールすることにした。
-
前の記事
PHP4.4.9 make時にmysql_create_db mysql_drop_dbエラー 2008.12.31
-
次の記事
Solaris cronがある日を境に突然実行されなくなった 2009.01.13