ファイヤープロジェクト
異常通知の設定
2004-12-26T01:50+09:00   matsu
Spongで異常通知する設定を調査してみた.
Spongで異常通知を行うためには,大まかに以下の二つの設定が必要である.
通知設定
通知に関する全体的な設定
通知マッチングルール設定
機器監視状態が通知処理を行うべき状態か否かを判定するためのマッチングルールの設定 以降にそれぞれの設定の説明を記述する.
Spongは監視対象のシステムに異常を検知すると,メールやページャー(?)を使用して管理者に通知する.ここではメールによる通知方法を記述する.設定ファイルは以下.
/etc/spong/spong.conf
SEND_MESSAGE
メッセージを送信するタイミング.以下から選ぶ.
RED
異常時.
CHANGE
ステータス変化時.
RED_CHANGE
ステータスが異常になった時.
NONE
通知しない.
PAGE_MESSAGE
ページメッセージを使用するか否か.YESかNONEで設定
MESSAGES_PER_HOUR
一時間あたり何回までメッセージ送信するか(越えると異常を検知しても通知しない).
IDENT_MESSAGES_PER_HOUR
一時間あたりに同じメッセージを何回送信するか(越えると同じ内容のメッセージは通知しない).
前節の設定ができたら,以下の設定ファイルで記述したルールにマッチするイベントが発生した時に連絡先に通知される.
/etc/spong/spong.message
最初の設定項目は
$RULES_MATCH
である.以降で記述するルール(異常検知のルール)に対する設定である.設定値は以下.
FIRST-MATCH
最初にマッチしたルールを適用し,それ以降のルールは無視する.
ALL
全てのマッチするルールを適用する. 次の設定項目は
$MESSAGING_RULES
である.これはPerlのハッシュの配列である.各ハッシュは異常検知イベントと連絡先などからなるマッチングルールであり,そのハッシュを複数定義して配列に格納するという体裁である.以下はデフォルトの設定である.
$MESSAGING_RULES = [
        # Catch all for hosts
        {
                hosts => ['.*'],
                services => ['.*'],
                contacts    => ['root'],
        }
];
全ホスト,全サービスでの異常にマッチし,その際はroot(contactsで設定した値)に連絡するという設定である.すなわちspong-serverで検知する全ての異常はrootに連絡される.連絡先(contactsの値)は
/etc/spong/spong.hosts 
での設定項目
%HUMANS
で設定したキーである.その該当エントリでメールアドレスが設定されていれば,イベント発生時にそのアドレスにメールが送信される.MESSAGING_RULESの各要素であるハッシュには以下が設定できる.
hosts
マッチするホスト.値は
/etc/spong/spong.hosts 
の%HOSTSで設定したキーである.
host_groups
マッチするホストグループ.値は
/etc/spong/spong.groups
の%GROUPSで設定したキーである.
services
マッチするサービス.値は
/etc/spong/spong.hosts 
の%HOSTSのservicesに設定できる値と同じ.
exclude_hosts
マッチしないホスト.上記のhostsでマッチしてもexclude_hostsにマッチすれば,該当ルールにはマッチしないとみなされる.
exlcude_host_groups
マッチしないホストグループ.上記のhost_groupsでマッチしてもexclude_host_groupにマッチすれば,該当ルールにはマッチしないと見なされる.
exclude_services
マッチしないサービス.上記のservicesでマッチしてもexclude_servicesにマッチすれば,該当ルールにはマッチしないとみなされる.
times
マッチする(障害検知の)日付と時間.デフォルトは常時.当項目はハッシュの配列であり,配列要素であるハッシュは日付と時間の設定をそれぞれ持つ.
days
マッチする日付.配列表現である.
times
マッチする時間.配列表現である.
contacts
該当ルールがマッチした際(上記全項目がすべてマッチする場合)の連絡先.
/etc/spong/spong.hosts 
での設定項目
%HUMANSで設定したキーである.
各項目は(Perlでの)正規表現が可能である.異常通知の設定は次節に記述するspong-messageを使用してテストできる.
spong-messageはspong-serverに手動で異常を通知するツールで,自作プログラムなどで異常通知を行うのに使用できる.
spong-message ステータス 異常のあったホスト 異常のあったサービス 時刻 メッセージ
各パラメータは以下の通り.
ステータス
通知するステータス.green,yellow,redから選ぶ.
異常のあったホスト
任意の文字列でもそれなりに動作するが,実際に監視しているホストを記述しないと意味はない.
異常のあったサービス
任意の文字列でもそれなりに動作するが,実際に監視しているサービスを記述しないと意味はない.
時刻
spong-messageのドキュメントでは以下で指定されていた.
$(perl -e "print time()")
メッセージ
通知メッセージに記述するメッセージ.
--debugオプションをつけるとルールのマッチングチェックの様子などがわかり,先述の異常通知のテストに便利である.使用例を以下に示す.
spong-message --debug red hoge@example.com http $(perl -e "print time()") 'This is a test.'
デフォルトの設定では
/var/spool/mail/root 
にメッセージが届く.
matsu(C)
Since 2002
Mail to matsu