異常通知の設定
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で設定したキーである.
spong-messageはspong-serverに手動で異常を通知するツールで,自作プログラムなどで異常通知を行うのに使用できる.
spong-message ステータス 異常のあったホスト 異常のあったサービス 時刻 メッセージ各パラメータは以下の通り.
- ステータス
- 通知するステータス.green,yellow,redから選ぶ.
- 異常のあったホスト
- 任意の文字列でもそれなりに動作するが,実際に監視しているホストを記述しないと意味はない.
- 異常のあったサービス
- 任意の文字列でもそれなりに動作するが,実際に監視しているサービスを記述しないと意味はない.
- 時刻
- spong-messageのドキュメントでは以下で指定されていた.
$(perl -e "print time()")
- メッセージ
- 通知メッセージに記述するメッセージ.
spong-message --debug red hoge@example.com http $(perl -e "print time()") 'This is a test.'デフォルトの設定では
/var/spool/mail/rootにメッセージが届く.

