前回はNagiosのCoreとプラグインをインストールしたのですが、今回は周辺ツールです。
まず、周辺ツールにどういうものがあるのか、説明したいと思います。
Nagiosの公式サイトには、Nagios Exchangeというコーナーがあって、様々なNagiosの周辺ツールが紹介されています。NagiosにはスピンアウトしたIcingaを含めて世界中に多くのユーザがいるので、サードパーティの周辺ツールが集まるのですね。
NSCA
NSCAは主にパッシブ監視で使用するツールです。監視対象機器側に配置するsend_nscaコマンドで監視結果を送信すると、Nagios Core側のNSCAデーモンで受け取ります。
Nagiosを起動すると、Nagiosのインストールディレクトリ配下にvar/rw/nagios.cmdというパイプが出来ます。このパイプに対して決まった形式でテキストを書き込むとNagios Coreに対して指示を与えることが出来るのですが、NSCAデーモンはsend_nscaで送り込まれた監視結果を、このnagios.cmdに書き込むことをやってくれます。
NSCAのインストール
NSCAはsend_nsca→NSCA間の通信でSSLを使用することが出来るので、makeにはlibmcryptが必要です。
前回の記事でNagiosを/opt/nagiosにインストールしましたので、NSCAも同じprefixを指定します。
また、send_nscaは監視対象機器側にコピーする必要があります。(環境が違えばmakeも監視対象機器側で行う)
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nsca-2.7.2.tar.gz
tar xvzf nsca-2.7.2.tar.gz
cd nsca-2.7.2
sudo yum install mcrypt libmcrypt libmcrypt-devel
./configure --prefix=/opt/nagios
make all
Nagios Core側でのインストール
sudo cp src/nsca /opt/nagios/bin/
sudo cp sample-config/nsca.cfg /opt/nagios/etc
sudo cp init-script /etc/rc.d/init.d/nsca
sudo chmod 755 /etc/rc.d/init.d/nsca
sudo service nsca start
sudo chkconfig --add nsca
sudo chkconfig nsca on
監視対象機器側でのインストール
sudo cp src/send_nsca /opt/nagios/libexec/
sudo cp sample-config/send_nsca.cfg /opt/nagios/etc
NRPE
NRPEはアクティブ監視で使用するツールです。PINGやポート監視といった外部から監視できる項目には不要ですが、ディスク容量やログ監視といった監視対象機器の内部で動作させる必要がある監視にはNRPEが必要です。
監視対象機器側でNRPEデーモンを起動しておき、Nagios Core側のcheck_nrpeコマンドを使用して監視対象機器内の監視プラグインを実行します。
Nagios Core側から監視対象機器内にある監視プラグインを動作させる方法には、NRPEのほか、check_by_sshコマンドを使う方法もあります。また、ディスク容量程度であればSNMPで監視することも出来ます。
NRPEのインストール
NRPEはNSCAとは逆で、デーモンの本体が監視対象機器側に入ります。
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
tar xvzf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure --prefix=/opt/nagios
make all
Nagios Core側のインストール
sudo cp src/check_nrpe /opt/nagios/libexec
監視対象機器側のインストール
sudo cp src/nrpe /opt/nagios/bin
sudo cp init-script /etc/rc.d/init.d/nrpe
sudo chmod 755 /etc/rc.d/init.d/nrpe
sudo service nrpe start
sudo chkconfig nrpe on
NDOUtils
NDOUtilsはNagios Coreが出力するログや現在の設定情報等を、データベース等に出力するためのツールです。MySQLに出力するためのNDO2DBを使うことが多いと思うので、その方法を説明します。
ちなみに、NDOUtilsにおいては常にNagios Coreは出力側です。Nagios Coreに対する設定等をNDOUtilsで行うことは出来ません。
NDOUtilsのインストール
あらかじめmysqlとmysql-develをインストールしておきましょう。
wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.5.2/ndoutils-1.5.2.tar.gz/download
tar xvzf ndoutils-1.5.2.tar.gz
cd ndoutils-1.5.2
./configure --prefix=/opt/nagios
make
sudo cp src/file2sock src/log2ndo src/ndo2db-3x src/ndomod-3x.o src/sockdebug /opt/nagios/bin/
sudo ln -s /opt/nagios/bin/ndo2db-3x /opt/nagios/bin/ndo2db
sudo cp config/ndo2db.cfg-sample /opt/nagios/etc/ndo2db.cfg
sudo cp config/ndomod.cfg-sample /opt/nagios/etc/ndomod.cfg
sudo chown -R nagios:nagios /opt/nagios
sudo cp daemon-init /etc/rc.d/init.d/ndo2db
sudo chmod 755 /etc/rc.d/init.d/ndo2db
ndomodはNagios Coreのイベントブローカーとして動作しますので、nagios.cfgの編集が必要になります。
/opt/nagios/etc/nagios.cfg
(抜粋)
broker_module=/opt/nagios/bin/ndomod-3x.o config_file=/opt/nagios/etc/ndomod.cfg
実際にMySQLに書き込むのはndo2dbの役目です。ndomodからndo2dbに連携する方法は、ndomodとndo2dbが同じ環境で動作している場合はunixsocketを使うのが簡単です。別の環境で動作する場合はtcpを使う方法があります。また、ndo2dbは複数のNagios Coreからのログ等を1つのデータベースに保存することが出来ます。その場合は、複数の環境で動作しているndomodが、1つの環境で動作しているndo2dbデーモンに対してtcpでデータを送り込むといった形になります。(その場合、instance_nameでどのndomodからのデータかを切り分けることが出来ます)
ここではtcpを使用する場合の設定を紹介します。
/opt/nagios/etc/ndomod.cfg
(抜粋)
instance_name=nagios01
output_type=tcpsocket
output=127.0.0.1
tcp_port=5668
/opt/nagios/etc/ndo2db.cfg
(抜粋)
socket_type=tcp
#socket_name=/opt/nagios/var/ndo.sock ←コメントアウト
tcp_port=5668
db_servertype=mysql
db_host=localhost
db_port=3306
db_name=nagios
db_prefix=nagios_
db_user=nagios
db_pass=xxx
上記のDB設定に基づき、MySQLにユーザとデータベースを作成します。
その後で、作成したデータベース(上記例ではnagiosデータベース)に対して、テーブルを作成します。
mysql -u nagios -pxxx nagios < db/mysql.sql
最後にNDO2DBを起動し(自動起動の設定もしておきましょう)、Nagiosを再起動します。
sudo service ndo2db start
sudo chkconfig --add ndo2db
sudo chkconfig ndo2db on
sudo service nagios restart
以上です。お疲れ様でした。