本記事の目的
本記事では、具体的なアラートを集約する要件に対して、 AlertHub で実現するための設定方法を案内しています。
1. 夜間に自動で再起動しているので、00:00 から 01:00 についてはアラート発生時のメール送信が不要
設定
静観スケジュール
対象:再起動で発生するアラートが影響を与えるスコープの静観スケジュール 表示名:「日次夜間再起動の静観」など 開始:設定日の00:00 終了:設定日の01:00 繰り返し設定:チェック 曜日:全ての曜日をチェック
解説
AlertHub ではスコープに静観スケジュールを設定でき、 設定した期間においてはそのスコープのトリガーによるアクションが動作しなくなります。 アラートメッセージによってスコープの深刻度は変化しますが、 その結果としてのアクションは動作せず、アクションとして指定したメール送信などが行われません。
2. 日中帯と夜間帯で、アラート発生をメール送信と電話と切り替えて通知したい
設定
スコープ
日中帯用と、夜間帯用の2つのスコープを作成する
静観スケジュール
対象:日中帯用スコープの静観スケジュール 表示名:「夜間帯の静観」など 開始:設定日の18:00 終了:設定日の24:00 繰り返し設定:チェック 曜日:全ての曜日をチェック 対象:夜間帯用スコープの静観スケジュール 表示名:「日中帯の静観」など 開始:設定日の00:00 終了:設定日の18:00 繰り返し設定:チェック 曜日:全ての曜日をチェック
ルール
イベントにおいて、日中帯用スコープと夜間帯用スコープの両方に対して同様の深刻度変化をさせる
トリガー
日中帯用スコープと夜間帯用スコープで、それぞれ同様の条件を持つトリガーを設定し、 アクションには時間帯毎に適用したいアクションをそれぞれ指定する
解説
AlertHub では時間帯による制御が可能な要素はスコープの静観スケジュールのみです。 本来は1つのスコープで設定するものを、アクションを変化させるためにスコープを2つに分けて実現します。
3. 30分以内に10件以上アラートが発生したらメール送信してほしい
設定
ルール
イベント:深刻度を「1」「増やす」
トリガー
実行条件:過去「1800」秒間に「深刻度の変化量」が「1」「と等しい」イベントが「10」「以上の」回数発生した
解説
トリガーはイベント(スコープの深刻度の変化)が発生したタイミングで動作して判定を行いますが、動作時より過去のイベントの発生状態も実行条件とすることができます。
4. アラート発生の初報のみメール送信してほしい
設定
ルール
イベント:深刻度を「10」「にする」
トリガー
実行条件1:「深刻度」が「10」「と等しい」値である 実行条件2:「変化前の深刻度」が「10」「より小さい」値である
解説
まず、連続してアラートメッセージを受信した場合でも無闇に深刻度を上昇させないために、 ルールのイベントでは深刻度を絶対的な変化としています。 その上で、トリガーの実行条件は深刻度の絶対値を指定しています。 変化前の深刻度を条件に含めているのは、初報によって深刻度が上がったことを条件とするためです。
5. 同種のアラート発生は、初報から1時間は通知が必要ない
設定
トリガー
実行条件:過去「3600」秒間に、アクションが「0」「と等しい」回数発生した
解説
通知を送るアクションを実行する条件を満たした場合に、1時間(3600秒間)以内に初報を送るアクションが実行されていないことを確認する条件としています。
6. 異常が1分以内に回復したらアラート発生の通知が必要ない
設定
スコープ
警戒判定閾値:「1」
ルール
対象:異常アラートを捉えるルール イベント:深刻度を「1」「増やす」 対象:回復アラートを捉えるルール イベント:深刻度を「0」「にする」
トリガー
対象:障害通知を行うトリガー 実行条件1:スコープステータスが「正常」「と等しくない」 実行条件2:「60」秒経過後、スコープステータスが「正常」「と等しくない」 アクション:障害通知 対象:回復通知を行うトリガー 実行条件1:スコープステータスが「正常」「と等しい」 実行条件2:過去「60」秒間に「深刻度の変化量」が「1」「以上の」イベントが「0」「と等しい」回数発生した アクション:回復通知
解説
異常アラートが発生した後、60秒後もスコープの深刻度が変化していない場合に障害通知を送信するものとしています。 異常アラートが続発する可能性を考慮して実行条件はスコープステータスで判断しています。 また、回復通知は異常アラートの発生から60秒以内に回復した場合は送信しないようにしたいため、 回復前の60秒間に異常が発生しなかった(=異常が発生したのは60秒より前である)ことを条件としています。
7. アラートメッセージの中に「error」の文字列があったらメール送信が必要だが、「error.html」であれば送信は必要ない
設定
ルール
処理フロー:もし「[任意のフィールド]」が「.*error([^\.]|$).*」とマッチ「した」場合
解説
アラートメッセージの文字列中に特定文字列などが含まれることを条件としたい場合は、 ルールの処理フローにおいて正規表現による条件を加えます。 AlertHub では正規表現の否定先読みが使用できないため、この例では同等の条件を満たすパターンを使用しています。 要件によっては処理フローに正規表現による条件を複数設定することで実現できる場合もあります。