フリーのネットワーク監視ツール「ZABBIX」。
オープンソースで開発されており、全ての設定・管理をブラウザからできるようになっている。グラフ作成機能も標準で搭載。各ノードの情報収集、異常検知、障害/復旧通知、詳細なアラート通知機能あり。SNMPv1、v2、v3をサポートし、Unix、Linux、BSD、Windows、MacOS X、NetWareなどで動作。CPU、メモリ、ディスク、ネットワーク、プロセスの状態などの監視が可能で、Apache、Tomcat、Oracleなどのアプリケーションの監視も可能。なかなか強力。
日本語版があるのだが、インストール手順は日本語探したけど見つける事が出来ず。公式サイトの英語を元にインストールしてみた。試行錯誤の末無事インストールできたので、その手順を記録として書いておく。
【重要】(2009/05/29追記)
この手順は古いです。最近のバージョンはインストールがかなり楽になっています。なので、今となってはあまり参考になりません。
また、フリーのネットワーク監視をお探しなら、ZABBIXよりNTTデータが開発したオープンソースの「Hinemos」の方がセットアップ・運用管理ともに楽でおすすめです。国産なので、手順書もすべて日本で豊富に用意されており、OSはRHEL推奨だがCentOS5で動きます。
Hinemos:コンピュータ、システム、ネットワークの運用管理を実現するオープンソースソフトウェア(OSS)
ちなみにインストールしたサーバは以下のスペック。
- OS:Redhat Linux Fedora 5(インストーラに従ってインストール・カスタマイズは特にない)
- httpd:Apache2(標準インストールのまま)
- PHP:Version5
- MySQL
基本的には、英語版のインストールガイドに沿って進めていった。
管理サーバ(親)側の設定手順
ユーザ作成
まず、ZABIIX動作用に、ローカルに「zabbit」というユーザを作成する。これは、とりあえず存在すれば動くようなので、root権限などは与えず、「ログイン禁止ユーザ」などでとりあえず作成すればよい。
ダウンロード&展開
ZABBIXの日本語サイトより「ソースファイル」をダウンロード。
の「ダウンロード」→「ソースファイル zabbix-1.1.tar.gz」の先にあるファイルのURLを
shell> wget http://nchc.dl.sourceforge.net/sourceforge/zabbix/zabbix-1.1.tar.gz
といった感じで取得。保存先はどこでもよい。
ダウンロードしたら、ファイルを展開する。
shell> tar -xzf zabbix-1.1.tar.gz
展開したフォルダに移動する。
cd zabbix-1.1
データベース作成
必要なデータベース作成のコマンドを実行。今回はMySQL。
shell> mysql -u-p mysql> create database zabbix; mysql> quit;
データベースが作成されたら、初期テーブルと初期データを登録するため、zabbixの展開フォルダの「create」フォルダにあるSQL文を読み込ませ、登録する。
shell> cd create/mysql shell> cat schema.sql |mysql -u-p zabbix shell> cd ../data shell> cat data.sql |mysql -u -p zabbix
configureとインストール(およびnet-snmpの追加)
展開したフォルダ内で、configureを実行。
./configure --enable-server --with-mysql --with-net-snmp
今回は「MySQL」「netSNMP」を使うので、「--with-mysql --with-net-snmp」としている。ただ、自分のサーバに「net-snmp」が入っていなかったので、
yum install net-snmp-devel
で自動インストールを実行。その後はconfigureも成功。そして、makeとインストール。
shell> make install
この時点で、僕の環境では「/usr/local/bin」に必要なバイナリがコピーされていた。
- zabbix_agent
- zabbix_agentd
- zabbix_get
- zabbix_sender
サービスとxinetdへの登録(およびxinetdのインストール)
次に、「/etc/services」の編集。
shell> vi /etc/services
で開き、最後の行に
shell> zabbix_agent 10050/tcp shell> zabbix_trap 10051/tcp
を追加し、保存。
その次、「/etc/inetd.conf」の編集だが、Fedora5にはinetdがなく、「xinetd」に変わったらしいのでそっちで設定する事に。
まず、xinetdのインストール。
shell> yum install xinetd
入れたら、「/etc/xinetd.d/」にzabbit用のファイルを作成。
shell> cd /etc/xinetd.d/ shell> vi zabbix
ファイルに記載する内容は以下の通り。(今後のために、コメントも追加)
service zabbix_agent { # このサービスを有効/無効を設定 no/yes disable = no # ソケットの種類を指定 # stream/dgramraw/seqpacket/tli socket_type = stream # プロトコルの指定 # TCP/UDP protocol = tcp # waitステータス:プログラム終了前に同一ポートへのコネクション要求を受け付けるかどうか # nowait/wait = no/yes wait = no # サーバプログラムを実行するユーザ名を指定 user = zabbix # サーバプログラムを絶対パスで指定 server = /usr/local/bin/zabbix_agent # 成功時の log に記述する内容 DURATION は接続期間 log_on_success += DURATION USERID # 失敗時の log に記録する内容 log_on_failure += USERID # サーバプログラムの実行優先順位を指定 値が大きいほど優先順位が高い nice = 10 }
保存して終了し、xinetdの再起動。
shell> service xinetd restart
念のため、xinetdが動いてるか確認する。
shell> chkconfig --list
「zabbix: off」となっていたら、動いていないので
shell> chkconfig zabbix on
で動かし、再度xinetdを再起動する。また、xinetdをインストールしたばかりなので、次回PC起動時以降も動くよう
shell> chkconfig xinetd on
を実行しておく。
ZABBIX本体の設定
次に、zabbixの設定ファイルを作成する。「/etc/zabbix」に保存するので、まずはフォルダ作成。
shell> mkdir /etc/zabbix/ shell> cd /etc/zabbix/
「/etc/zabbix/」内に、ダウンロード&展開したフォルダ「/展開フォルダ/misc/conf/」にある
- zabbix_agent.conf
- zabbix_agentd.conf
の2つをコピーする。
shell> cp -pf /展開フォルダ/misc/conf/zabbix_agent.conf /etc/zabbix/zabbix_agent.conf shell> cp -pf /展開フォルダ/misc/conf/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf
そのあと、これら2つのファイルを編集し、設定をするのだが、とりあえずはこのままでも動く。
shell> vi /etc/zabbix/zabbix_agent.conf shell> vi /etc/zabbix/zabbix_agentd.conf
サーバープロセス起動
zabbixのサーバを起動する。インストール先にある「zabbix_server」を実行。僕の環境では、前記の通り「/usr/local/bin」にある。
shell> /usr/local/bin/zabbix_server
エージェントの起動
zabbixのエージェントを起動する。インストール先にある「/usr/local/bin/zabbix_agentd」を実行。
shell> /usr/local/bin/zabbix_agentd
ここで、
User zabbix does not exist.
Cannot run as root !
というエラーが出たら、「zabbit」というユーザIDが存在していない意味なので、一番上に記載した内容に従って作成する。(ここに少しはまった)
Webページ
あとは、ZABBIXの日本語サイトより「日本語Webインターフェース」をダウンロード。
ダウンロード後展開し、Apacheの公開フォルダに置いて(ディレクトリ名は自由)アクセスすればOK。ただし、展開したフォルダ内にある「frontends/php/include/db.inc.php」のみ、データベース設定の為開いて編集する。(今回はMySQL)
$DB_TYPE = "MYSQL"; $DB_SERVER = "localhost"; $DB_DATABASE ="zabbix"; $DB_USER = "{ユーザ名:rootなど}"; $DB_PWD = "{上記ユーザのパスワード}";
これでログイン・データの登録・設定変更が可能になる。
ちなみに初期ログインIDは、ユーザID「admin」・パスワードなし、である。ここでログインできなかった場合、上記手順の「データベース作成」で失敗している可能性がある。
監視される側の設定手順
エージェントのインストールおよび起動
管理サーバは上記で完了だが、監視される側のサーバには、それぞれエージェントをインストールしなければならない。
上記の管理サーバ手順と構築において違うところは、
- データベースは必要ない
- configureの引数が「--enable-agent」のみ
- 「make」のみで、「make install」は行わない
- 「zabbix_server」は起動しない
などで、より簡単である。ただ、管理される側にもエージェントのインストールが必要という点だけ。
あとは、管理サーバのWeb管理画面で設定していけばよい。
もちろん、環境によって入れるもの/入れないもの、入った場所等変わってくると思うので、参考までに。