前回のNagios集中講座から日が開いてしまいました。今日から復活です。
前回まででNagiosの特徴、インストール方法、設定ファイルといったNagios本体のひととおりの説明が出来たと思っています。今回からは、Nagiosの周囲にあるものたちを説明していこうと思います。
まずは、Nagiosの監視結果をMySQLなどのデータベースに格納するNDOUtilsについてです。
NDOUtilsとは?
NDOUtilsは先述のとおり、Nagiosとデータベースのインタフェースです。使用できるデータベースはMySQLですが、PostgreSQLについてもベータ版扱いでサポートしています。
上図のとおり、NDOUtilsはNagiosからのアウトプットしか扱うことが出来ません。つまり、監視結果ファイルをファイルではなくてMySQLに格納できるというだけです。
設定ファイルのかわりにMySQLに設定内容を書いておいたら、それをNagiosに反映してくれるという機能はありません。設定については相変わらず、テキストファイルといて書く必要があるのです。但し、設定ファイルの内容をMySQLに吐き出す機能はあります。他にもログやら何やら、Nagiosが吐き出すものなら何でも対応しているので、NDOUtilsが格納したMySQLのデータを見れば、Nagiosの動作状況についてはすべて把握することが出来ます。
また、NDOUtilsの重要な機能として、複数のNagiosの動作状況を1つのMySQLデータベースにまとめておけることがあります。監視対象となる機器が増えたときに、まず行うのはNagiosを中央〜分散構造にして、アクティブチェックを分散サーバに任せて、中央サーバは分散サーバからの報告を処理するだけにするという方法があります。この場合は、中央サーバを見ればすべての監視対象の監視状況が分かります。しかし、中央サーバが複数になってくるとすべての監視対象の監視状況を一度に把握する方法がありません。そこでNDOUtilsを使えば、1つのデータベースにまとめることが出来るのです。(それを見るためのアプリ開発は必要ですが。)
NDOUtilsのインストール
それでは、NDOUtilsのインストールを始めましょう。ソースコードからのインストールです。
NDOUtilsのmakeにはmysql-devel
が必要なので、あらかじめインストールしておきます。
yum install mysql-devel
wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.5/ndoutils-1-5.tar.gz/download
tar xvzf ndoutils-1-5.tar.gz
./configure
make
MySQLにndoutils用のユーザとデータベースを作成します。これはMySQLのコンソールやphpMyAdminを使って手動で行う必要があります。(ここでは、MySQLにnagios
というユーザを作り、nagios
というデータベースを作りました。
テーブル構造はSQLを流し込むだけです。
mysql -u nagios -p nagios < db/mysql.sql
それではコンパイルしたNDOUtilsをインストールします。make install
という方法ではありませんので、注意が必要です。
NDOUtilsをコンパイルすると、Nagios2.x用と3.x用の2つのバイナリが出来ます。ndomod-3x.o
がNagios3.x用のバイナリです。
また、ndomod以外にもバイナリが出来ますが、とりあえず、ndomodだけ。
設定ファイルのサンプルもコピーしておきましょう。
cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
cp config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
次に、nagios.cfg
を編集して、Nagiosのイベントブローカーモジュールとして、ndomodを使うように登録します。
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
で設定ミスがないか確認し、
service nagios restart
でnagiosを再起動しましょう。
次に、ndo2dbをインストールします。ndomodとの違いですが、ndomodはNagiosの監視状況データを受け止めるモジュールであり、それをMySQLに出力するのがndo2dbです。ndomodはNagiosのイベントブローカーモジュールとして登録されるだけですが、ndo2dbはデーモンとして起動する必要があります。
複数のNagiosの出力を1つのMySQLにまとめる場合は、各Nagiosサーバにはndomodだけを導入し、MySQLのあるサーバにだけndo2dbを導入するということになります。この場合、ndomodとndo2dbの間の通信はTCPで行われます。
cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db
cp config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
chown nagios.nagios /usr/local/nagios/etc/ndo*
/usr/local/nagios/etc/ndo2db.cfg
を編集
・DB名、DBユーザ名、DBパスワードを書き換える
cp daemon-init /etc/rc.d/init.d/ndo2db
chmod +x /etc/rc.d/init.d/ndo2db
chkconfig --add ndo2db
chkconfig ndo2db on
service nagios stop
service ndo2db start
service nagios start
これでインストール完了です。おそらく、MySQLのnagiosデータベースにデータが書き込まれているはず。
結構長くなったので、NDOUtilsを使う上でのTipsは次回の記事に書くことにします。