2010 7月 4

NSCAとは、Nagios Service Check Acceptorの略で、監視対象サーバにインストールされた監視エージェント(send_nsca)から送られてくる監視結果をNagios側にインストールされたNSCAデーモンで受信するという監視形態をとるためのアドオンだ。
Nagiosでは、今までのようにNagios側から監視対象サーバにアクセスする監視のことをアクティブ監視といい、NSCAのように監視対象サーバ側から監視結果を送ってくるような監視をパッシブ監視という。
今回は、このパッシブ監視を行うためのアドオンであるNSCAのインストール方法を紹介する。
NSCAは、NRPEと同様にNSCAデーモンと監視エージェント(send_nsca)間の通信を暗号化できる。
このブログを書いている現在時点でのNSCAの最新版は2.7.2 だ。
以前、インストールしたNagios(3.1.0)にインストールを行う。
サーバOSは、CentOS 5.3 である。

NSCAを使用したパッシブ監視の仕組みは以下の通りだ。
 
図1:NSCAとパッシブ監視
図1:NSCAとパッシブ監視

 
①監視結果を渡す
 自作のシェルなどをcronで定期的に起動し、監視を行う。
 監視結果をsend_nscaに引数として渡し、send_nscaを実行する。
②監視結果を送信
 ①の自作シェルでsend_nscaを実行することで監視結果をNSCAへ送信する。
③監視結果を登録
 NSCAで受信した監視結果を外部コマンドファイル(/usr/local/nagios/var/rw/nagios.cmd)に登録(書き込み)する。
④パッシブ監視
 Nagios側から外部コマンドファイルに監視結果が登録されたかを定期的にチェックする。
 登録されていれば、その監視結果をNagiosに取り込む。
 


 

ダウンロード

今回必要なものは以下の通りだ。
 
●NSCA : nsca-2.7.2.tar.gz (本家Nagiosサイトのダウンロードページ
 
ダウンロードしたtarballは、/usr/local/src に置くものとする。
 

インストールマニュアル

NSCAのインストールマニュアルは、ダウンロードしたtarballに含まれている。
tarballを、解凍すると以下にインストールマニュアルがある。

./nsca-2.7.2/README
 
また、全ての作業は特に断りがない限りrootアカウントで行うものとする。
 

システム要求

通信の暗号化を行う場合は、libmcryptが必要となる。
今回、libmcryptはインストール済みだが、libmcrypt-develがインストールされていないため、libmcrypt-develをインストールする。
 

# yum install libmcrypt-devel

<省略>

==========================================================================================
 Package                  Arch          Version                     Repository       Size
==========================================================================================
Installing:
 libmcrypt-devel          i386          2.5.8-4.el5.centos          extras           10 k

<省略>

 

NSCAのインストール

NSCAは、inetdやxinetd配下で起動させることも出来るが、ここではデーモンモードで起動させることとする。
インストールは必要となるファイルをコピーすることで行う。
まずは、tarballの解凍からmakeまでを行う。
 

# cd /usr/local/src
# tar xvfz nsca-2.7.2.tar.gz
# cd nsca-2.7.2
# ./configure

<省略>
 

*** Configuration summary for nsca 2.7.2 07-03-2007 ***:

 General Options:
 -------------------------
 NSCA port:  5667
 NSCA user:  nagios
 NSCA group: nagios


Review the options above for accuracy.  If they look okay,
type 'make all' to compile the NSCA daemon and client.

# make all

<省略>
 

*** Compile finished ***

If the compile finished without any errors, you should
find client and server binaries in the src/ subdirectory.

Read the README file for more information on installing
the binaries, creating configuration files, and using
the server and client.

 
実は、ここまでは、send_nscaも同様に行うのだ。
次に、ファイルをコピーしてインストールを行う。
また、nsca.cfgでは、Nagiosのコマンドファイルの設定とsend_nscaとの通信方式の設定を行う。
send_nscaとの通信方式の設定では、パスワードと暗号化方式の設定を行うが、NSCAとsend_nscaを同じ設定にする必要がある。
通常はNSCA側の設定にsend_nsca側を合わせるといいだろう。
ここでは以下のように設定することとする。
 

# cp src/nsca /usr/local/nagios/bin/
# cp sample-config/nsca.cfg /usr/local/nagios/etc/
# cp init-script /etc/init.d/nsca
# chmod 755 /etc/init.d/nsca
# cd /usr/local/nagios/etc/
# vi nsca.cfg

<省略>
 
  81 command_file=/usr/local/nagios/var/rw/nagios.cmd
 
<中略>
 
 144 password=nagios
 
<中略>
 
 189 decryption_method=3

 
最後に、chkconfigに追加して、NSCAを起動する。
 

# chkconfig --add nsca
# chkconfig --list nsca
nsca            0:off   1:off   2:on    3:on    4:on    5:on    6:off
# service nsca start
Starting nsca:                                             [  OK  ]

 

send_nscaのインストール

send_nscaは、NSCAの監視エージェントだ。
send_nscaのインストールは、システム要求からtarballの解凍、makeまでは、NSCAと全く一緒だ。
ここでは、必要なファイルをコピーしてインストールを行うところから記述する。
send_nsca.cfgの設定は、NSCAの設定に合わせる必要がある。
 

# cp src/send_nsca /usr/local/nagios/libexec/
# cp sample-config/send_nsca.cfg /usr/local/nagios/etc/
# cd /usr/local/nagios/etc/
# chmod 644 send_nsca.cfg
# chown nagios:apache send_nsca.cfg
# vi send_nsca.cfg

<省略>
 
  17 password=nagios
 
<中略>
 
  62 encryption_method=3

 

動作確認

動作確認には、Nagios側にパッシブ監視を行うサービス監視を追加する必要がある。
監視対象サーバから登録内容を送信して、Nagiosがステータスを表示することが出来れば成功だ。
今回は、監視対象サーバからCRITICALが送られてくるケースを想定する。

まずは、Nagios側にパッシブ監視を行うサービス監視を追加する。
ポイントは以下の通りだ。
①チェックコマンドは必須項目なのでダミーを設定する
②アクティブ・チェックをオンにして、チェック間隔をnoneにする
③パッシブ・チェックをオンにする。
 
最初にダミー用のチェックコマンドを設定する。
これは、引数でステータスを渡し、意図的にダミー・ステータスを表示させるためのものだ。
図2のようにNagiosQLで設定する。
 
図2:パッシブ監視テスト(1)
図2:パッシブ監視テスト(1)

 
次に、テスト用のサービス監視を追加する。
図3のようにチェックコマンドには、先ほど作ったダミー用のチェックコマンドを指定する。
今回はサービス監視名にPASSIVE_TESTとしてみた。
 
図3:パッシブ監視テスト(2)
図3:パッシブ監視テスト(2)

 
図4のように、チェックの設定では、アクティブ・チェックをオンにして、チェック間隔をnoneにする。
本来はパッシブ監視を行い、アクティブ監視はしないため、アクティブ・チェックをオフにしてよい。
しかし、Nagiosのメイン設定でアラート音を鳴らす設定をしていた場合、アクティブ・チェックをオフにしてしまうとアラート音が鳴らなくなる。
このため、上記のような設定にしておけば、アクティブ監視はされないが、パッシブ監視でアラートを検知したらアラート音が鳴るようになる。
最大チェック回数は1にしておけばいいだろう。
もちろん、パッシブ・チェックもオンにしておく。
 
図4:パッシブ監視テスト(3)
図4:パッシブ監視テスト(3)

 
きちんと設定すれば、図5のPASSIVE_TESTのようになる。
 
図5:パッシブ監視テスト(4)
図5:パッシブ監視テスト(4)

 
それでは早速NSCAのテストを行う。
監視対象サーバから以下のようにsend_nscaを使って、Nagios側のNSCAに監視結果を送信する。
 

# /usr/bin/printf "%s\t%s\t%s\t%s\n" "監視対象ホスト名" "PASSIVE_TEST" 2 "passive test critical" | /usr/local/nagios/libexec/send_nsca NSCAデーモンのIPアドレス -c /usr/local/nagios/etc/send_nsca.cfg
1 data packet(s) sent to host successfully.

 
printfでsend_nscaに渡すテキストのフォーマットは以下の通りだ。
 
監視対象ホスト名[TAB]サービス監視名[TAB]ステータスコード[TAB]プラグインのOUTPUT
 
図6のようにNagiosがPASSIVE_TESTのCRITICALを検知できればOKだ。
 
図6:パッシブ監視テスト(5)
図6:パッシブ監視テスト(5)

 
 

 


Categories: Nagios ,NSCA


Leave a Reply