ZABBIXのインストール-1 サーバ編(MySQL4.0.20)
- 2008.05.04
- Linux
Miracle Linux 4 に Zabbix 1.4.6 をインストールした。
Zabbix 1.6.1をインストールしようとしたら、make install時にエラーが発生した。
db.c:87: error: `CLIENT_MULTI_STATEMENTS’ が宣言されていません (この関数内で最初に利用)
いま使っているMySQL 4.0.xだとダメっぽい。4.1以上のMySQLを用意するのが面倒だったので、Zabbix 1.4.6をインストールした。
- 1. ■ZABBIXの大雑把なしくみを理解しておく
- 2. ■今回の設定を確認しておく
- 3. ■マニュアルのインストール情報に目を通しておく
- 4. ■NET-SNMPをバージョンアップして起動する
- 5. ■ZABBIXスーパーユーザのアカウントを作成する
- 6. ■ZABBIXソースを解凍する
- 7. ■ZABBIXデータベースを作成する
- 8. ■ZABBIXサーバのコンパイルとインストールを実行する
- 9. ■設定ファイル/etc/zabbix/zabbix_server.confを用意する
- 10. ■pidファイルとログファイル用のディレクトリを作成する
- 11. ■起動スクリプト/etc/init.d/zabbix_serverを用意する
- 12. ■起動できなかった
- 13. ■Webフロントエンド用のPHPをインストールする
- 14. ■ブラウザで接続する
- 15. ■ブラウザからアクセスしたけれど…
■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
■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が利用できる。今回は、MySQLを使用する。
$ mysql -u root -p mysql> create database zabbix; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
スキーマを作り、初期データとイメージをインポートする。
$ cd /usr/local/src/zabbix-1.4.6 $ cat create/schema/mysql.sql | mysql -uzabbix -p zabbix $ cat create/data/data.sql | mysql -uzabbix -p zabbix $ cat create/data/images_mysql.sql | mysql -uzabbix -p zabbix
念のため、ネットワーク経由でMySQLへ接続できるようにしておいた。
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'password';
■ZABBIXサーバのコンパイルとインストールを実行する
英語のPDFマニュアルでインストールでは、ZABBIXアラートを受け取るために–with-Jabberを指定しているが、自分の環境では利用しない。
複数のMySQLがインストールされている環境なので、ZABBIXで利用するMySQLのmysql_configを指定する。
$ cd /usr/local/src/zabbix-1.4.6 $ ./configure --enable-server --with-mysql=/usr/local/mysql4/bin/mysql_config \ --with-net-snmp # 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 #DBHost=localhost データベースがlocalhost以外のときは設定する。 DBName=zabbix DBUser=zabbix DBPassword=password DBSocket=/tmp/mysql4.sock
■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に変更した。
起動する。
# /etc/init.d/zabbix_server start
■起動できなかった
ライブラリが見つけられなくて、zabbix_serverを起動出来なかった。
# ldd /usr/local/sbin/zabbix_server libnetsnmp.so.5 => /usr/lib/libnetsnmp.so.5 (0x0033b000) libcrypto.so.4 => /lib/libcrypto.so.4 (0x0013e000) libelf.so.1 => /usr/lib/libelf.so.1 (0x00c6b000) libm.so.6 => /lib/tls/libm.so.6 (0x00435000) libmysqlclient.so.12 => not found libcurl.so.4 => not found libresolv.so.2 => /lib/libresolv.so.2 (0x003f5000) libc.so.6 => /lib/tls/libc.so.6 (0x00855000) libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00d81000) libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00d97000) libcom_err.so.2 => /lib/libcom_err.so.2 (0x00cf9000) libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x0025a000) libdl.so.2 => /lib/libdl.so.2 (0x00e3a000) libz.so.1 => /usr/lib/libz.so.1 (0x00a40000) /lib/ld-linux.so.2 (0x00809000)
libmysqlclient.so.12の場所を調べる。
# ldd /usr/local/mysql4/bin/mysql libmysqlclient.so.12 => /usr/local/mysql4/lib/mysql/libmysqlclient.so.12 (0x0032f000)
libcurl.so.4の場所を調べる。
# ldd /usr/local/bin/curl libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0x00729000)
一時的に対処する。(LD_LIBRARY_PATHで指定する)
# LD_LIBRARY_PATH=/usr/local/mysql4/lib/mysql:/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/
■ブラウザで接続する
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に変更して再度インストールすることにした。
-
前の記事
メールを受信できない 2008.04.17
-
次の記事
Oracleの実行結果をPHPで表示する 2008.05.13