Volatile サービス


イントロダクション

Nagiosは"ノーマル"なサービスと"volatile"なサービスとを区別します。サービスの定義の中でis_volatileを使用することでそのサービスを"volatile"なサービスとして設定します。大抵の監視対象はは"volatile"ではない(=ノーマル)なサービスでしょう。しかし、volatileサービスは特定の目的で非常に有用です。

どんなサービスに使うのか?

volatileサービスは次のような監視に利用します。

Volatileサービスの特別な点とは?

volatileサービスは"ノーマル"なサービスとは重要な3つの点で異なります。監視対象がハードのOK以外のステータスの場合には毎回そのOK以外のステータス(WARNING,CRITICAL,UNKNOWN)を返します(ステートの変化が生じません)。 監視対象がハードnon-OKステートの時には毎回チェックをnon-OKステートで返します(ステートの変化が発生しません)。

これらのイベントは通常OK以外のステートでハードステートチェンジが発生したときのみ発生します。言い換えれば、サービスがOK以外のステートになった最初の時だけ起こると言うことです。もし、再チェックしたときの結果が同じnon-OKステートだったら、ハードステートチェンジは起こらないですし、イベントも発生しません。(訳者注)Volatileオプションを使用すると毎回ハードステータスチェンジが発生したのと同じイベント(ログ、通知)が発生します。

2つのパワー

Volatileサービスとパッシブサービスチェックを掛け合わせると、とても使えます。たとえばSNMPトラップやセキュリティアラートをハンドリングしたりです。

なにか例を挙げると…PortSentryを稼働させて。ファイアウォールへの侵入者がやるポートスキャンをかけてみましょう。もしNagiosにポートスキャンを検知させたければ、以下のように行います・・・

Nagiosでの作業:

PortSentryでの作業:

/usr/local/nagios/libexec/eventhandlersディレクトリにsubmit_check_resultという名前のシェルスクリプトを作成します。シェルスクリプトは以下のような感じにします:

	#!/bin/sh
 
	# Write a command to the Nagios command file to cause
	# it to process a service check result
 
	echocmd="/bin/echo"
 
	CommandFile="/usr/local/nagios/var/rw/nagios.cmd"
 
	# get the current date/time in seconds since UNIX epoch
	datetime=`date +%s`
 
	# create the command line to add to the command file
	cmdline="[$datetime] PROCESS_SERVICE_CHECK_RESULT;$1;$2;$3;$4"
 
	# append the command to the end of the command file
	`$echocmd $cmdline >> $CommandFile`

PortSentryをrootで動かしている場合は、コマンドファイルをNagiosとCGIが読み書きできるようにオーナーとパーミッションをリセットさせるようにしなくてはならないでしょう。コマンドファイルのパーミッションとオーナーについての詳細はこちらを参照してください。

さて、PortSentryがこの機器でポートスキャンを検出したらどうなるのでしょう?