異常が 1 分以内に回復したらアラート発生の通知が必要ない(ランブック活用版)
本稿では、ランブックと関連メッセージ機能を活用し、障害発生から一定時間経過後に回復していない場合のみ通知を送信する設定例をご紹介します。
同様の設定例として「2.7 異常が 1 分以内に回復したらアラート発生の通知が必要ない」もありますが、本設定例では短時間での状態変化にも対応できる構成となっています。
設定のポイント
従来方式との違い
従来のルール・トリガーのみを組み合わせる方法( 2.7 )では次の課題がありました。
-
短時間での状態変化(障害↔復旧の繰り返し)への対応
待機時間(1分間)の途中で「障害 → 復旧 → 再度障害」のように短時間で状態が変化した場合、従来方式では待機時間のタイマーや深刻度判定のタイミングによって、すでに復旧済みのイベントに対して誤通知をしたり、逆に再発した障害の通知が漏れてしまう可能性がありました。
-
管理の複雑化
障害用と回復用で「ルール 2 つ・トリガー 2 つ・アクション 2 つ」が必要となり、設定変更時の手動連携ミスが発生しやすくなっていました。
本設定例のアプローチ
トリガーの関連メッセージ機能とランブックの分岐処理を組み合わせることで、従来の課題(「障害→回復→再障害」といった短時間での状態変化による誤通知や通知漏れ)を解消します。
処理の流れとしては以下の通りです。
- 受信メッセージの判定・深刻度更新
- 受信スロットに紐付けたランブックでメール本文からステータス(障害/回復)を解析します。
- 障害通知メールであればスコープの深刻度を上げ、回復通知メールであれば深刻度を下げる処理を行います。
- 待機と関連メッセージの集計
- 障害が発生した(深刻度が上がった)時点から「 1 分間( 60 秒)」処理を保留します。
- その 1
分間の待機期間中に発生した「同じ深刻度の回復イベント(深刻度が下がった)」を関連メッセージ(
relatedMessageCount)として自動で集計します。
- 回復有無の判定と通知実行
- 1 分経過後、トリガーに紐づけたランブックを起動し、集計された関連メッセージの件数(
relatedMessageCount)をチェックします。 - 件数が
0(待機中に回復通知が来なかった)場合: 障害が継続しているため、障害通知アクションを実行します。 - 件数が
1 以上(待機中に回復通知が届いた)場合: 既に復旧しているため、何もせず静観(処理終了)します。
- 1 分経過後、トリガーに紐づけたランブックを起動し、集計された関連メッセージの件数(
具体的な設定内容
-
トリガーの実行条件
- 「一定時間経過後のイベントのフィールドを指定値と比較する」:
60秒経過後、最新の深刻度が1以上の値である 1
- 「一定時間経過後のイベントのフィールドを指定値と比較する」:
-
トリガーの関連メッセージ
- 「深刻度の増減を判定する」:深刻度が
減った2 - 「イベントの深刻度名を起点イベントの深刻度名と比較する」:深刻度名が起点イベントの深刻度名
と等しい
- 「深刻度の増減を判定する」:深刻度が
-
トリガーに紐づくランブックのブランチステップ
- 「フィールドを数値比較する」:もし
relatedMessageCountが0と等しい場合 3
- 「フィールドを数値比較する」:もし
受信メール(テスト用のメールの書式)
本設定例では、メール本文に含まれる status の値(障害 または 回復)のみを判定に使用します。
件名やその他の本文テキストは任意の文字列で問題ありません。
- 障害通知メール
- 件名: 任意(例:
【アラート】サーバー異常検知) - 本文:
status:障害を含める(その他の記述は任意)
- 件名: 任意(例:
- 回復通知メール
- 件名: 任意(例:
【復旧】サーバー異常解消) - 本文:
status:回復を含める(その他の記述は任意)
- 件名: 任意(例:
スコープの作成
監視対象の状態を管理するスコープを作成します。
画面横のメニューから「スコープ」をクリックし、画面右上の「+」ボタンをクリックします。
ダイアログが表示されるため、以下の通り入力します。
- 任意の表示名を入力します
- 警戒判定閾値に任意の数値を設定します
- 障害判定閾値に任意の数値を設定します
- 必要に応じて「深刻度自動復旧の有効化」にチェックを入れ、復旧時間を指定します
- 「保存」をクリックします
ランブックの作成(受信データ加工用)
受信したメール本文を解析し、スコープの深刻度をコントロールするランブックを作成します。
画面横のメニューから「ランブック」をクリックし、画面右上の「+」ボタンをクリックします。
ダイアログが表示されるため、以下の通り入力し、保存します。
- 表示名を任意に入力(ここでは「受信データ加工用」とします)
- 備考欄は必要に応じて入力
- 「保存」をクリックします
一覧から作成した「受信データ加工用」をクリックし、フロー編集画面を開きます。
オペレーターのステップ追加
ランブックのフロー編集画面が表示されます。
左上の「+」マークをクリックし、オペレーターステップの「フィールドから正規表現によって値をひとつ取り出す」を選択します。
ダイアログが表示されるため、条件判断オペレーターに以下の通り入力し、保存します。
- 表示名を指定(ここでは「ステータス取り出し」とします)
- オペレーターは以下の文章になるように設定します。
message.content.textから正規表現status:\s*(.*)によって値を一つ取り出してフィールドstatusに保存する - 「保存」をクリックします
ブランチのステップ追加
左上の「+」マークをクリックし、ブランチステップの「フィールドを文字列比較する」を選択します。
ダイアログが表示されるため、条件判断オペレーターに以下の通り入力し、保存します。
-
表示名を指定(ここでは「ステータスの内容」とします)
-
オペレーターは以下の文章になるように設定します
statusが障害と等しい場合 -
「保存」をクリックします
イベントのステップ追加
左上の「+」マークをクリックし、イベントステップの「対象スコープを直接指定して、深刻度名を直接指定」を選択します。
ダイアログが表示されるため、以下の通り入力し、保存します。
-
表示名を指定(ここでは「深刻度上昇」とします)
-
スコープに先ほど作成したスコープを指定します
-
深刻度は以下の文章になるように設定します
深刻度Aを1増やす -
「保存」をクリックします
左上の「+」マークをクリックし、イベントステップの「対象スコープを直接指定して、深刻度名を直接指定」を選択します。
ダイアログが表示されるため、以下の通り入力し、保存します。
-
表示名を指定(ここでは「深刻度下降」とします)
-
スコープに先ほど作成したスコープを指定します
-
深刻度は以下の文章になるように設定します
深刻度Aを1減らす -
「保存」をクリックします
最後に各ステップを以下の通りに並べ、黄色くハイライトされている通りに繋げます。
フローが完成したら、右上の保存ボタンをクリックします。
受信スロットの作成
画面横のメニューから受信スロットをクリックし、画面右上の「+」ボタンをクリックします。
ダイアログが表示されるため、以下の通り入力し、保存します。
- 「メール」を選択します
- 任意の表示名を入力します
- ランブック欄に先ほど作成した「受信データ加工用」を指定します
- 「保存」をクリックします
受信スロットが作成され一覧に表示されます。
表示名をクリックして受信スロットの詳細画面に遷移し、監視システムからの受信用メールアドレスを取得します。
アクションの作成
障害通知時に送信するメールアクションを作成します。
画面横のメニューから「アクション」をクリックし、画面右上の「メール」ボタンをクリックします。
ダイアログが表示されるため、以下の通り入力します。
- 表示名:任意の表示名を入力します
- メール送信先:メール送信先の名前とメールアドレスを入力します
- 名前:
サポートグループ - メール:
test@example.com
- 名前:
- 件名:
障害メールを受信しましたと入力します - 本文:任意の内容を入力します
- 「保存」をクリックします
ランブックの作成(通知判定用)
トリガーから呼び出され、待機時間中に回復通知が来ていないか(relatedMessageCount == 0)を判定してメールを送信するランブックを作成します。
画面横のメニューから「ランブック」をクリックし、画面右上の「+」ボタンをクリックします。
ダイアログが表示されるため、以下の通り入力し、保存します。
- 表示名を任意に入力(ここでは「通知判定用」とします)
- 備考欄は必要に応じて入力
- 「保存」をクリックします
作成した「通知判定用」をクリックし、フロー編集画面を開きます。
ブランチステップの追加
左上の「+」マークをクリックし、ブランチステップの「フィールドを数値比較する」を選択します。
ダイアログが表示されるため、条件判断オペレーターに以下の通り入力し、保存します。
-
表示名を任意に入力します(ここでは受信数の確認としています)
-
条件判断オペレーターは以下の文章になるよう設定し、保存します
もし
relatedMessageCountが0と等しい場合 -
「保存」をクリックします
アクションステップの追加
左上の「+」マークをクリックし、先ほど作成したアクションを選択します。
ダイアログが表示されるため、表示名を任意に入力し、保存します。
最後に各ステップを以下の通りに並べ、黄色くハイライトされている通りに繋げます。
フローが完成したら、右上の「保存」をクリックします。
トリガーの作成
スコープにトリガーを設定し、待機のための設定と関連メッセージの集約ルールを定義します。
画面横のメニューから「スコープ」をクリックし、作成したスコープをクリックします。
スコープに紐づいたトリガーの一覧画面に遷移するため、「トリガー」タブをクリックし、画面右端の「+」をクリックします。
ダイアログが表示されるため、任意の表示名を入力します。
実行条件の設定
「実行条件」の「+」をクリックします。
-
「深刻度の増減を判定する」を選択し、作成をクリックします。
編集画面でプルダウンより「増えた」を選択し、保存します。
-
再度「実行条件」の「+」をクリックし、「一定時間経過後のイベントのフィールドを指定値と比較する」を選択して作成をクリックします。
編集画面で「 60 秒経過後、最新の深刻度が 1 以上の値である」と設定します。
関連メッセージの設定
「関連メッセージ」の有効化にチェックを入れ、下部の「+」をクリックします。
-
ダイアログが表示されるため、「深刻度の増減を判定する」を選択し、作成をクリックします。
深刻度が
減ったとなるよう設定し、保存します。 -
再度「関連メッセージ」の「+」をクリックします。
ダイアログで「イベントの深刻度名を起点イベントの深刻度名と比較する」を選択し、作成をクリックします。
深刻度名が起点イベントの深刻度名
と等しいとなるよう設定し、保存します。
実行するランブックの設定
- 実行対象として「ランブック」を指定します
- 一覧の中から2つめに作成したランブック「通知判定用」を選択します
- 「保存」をクリックします
動作確認
設定完了後、受信スロットのアドレスへテストメールを送信して挙動を確認します。
-
ケース1:障害のみ(通知あり)
「設定のポイント」で指定した障害通知メールを受信スロットのアドレスへ送信すると、 1 分後に通知メールが届きます。
-
ケース2:1分以内に回復(静観・通知なし)
「設定のポイント」で指定した障害通知メールを受信スロットのアドレスへ送信したのち、1 分以内に回復通知メールを送信すると 1 分経過しても通知メールが届かない(静観された)ことを確認します。
-
ケース3:回復後に再発(通知あり)
障害通知メール → 回復通知メール → 障害通知メール の順に送信すると、2 回目の障害通知メールを送信してから 1 分後に通知メールが送られます。
障害発生から 1 分間( 60 秒)処理を保留(遅延評価)させるための設定です。
待機時間( 1 分間)の中に届いた「回復通知」を関連メッセージとして集約・カウントするための設定です。
待機時間中に回復通知を受信しなかった場合( relatedMessageCount が 0 )のみ障害通知アクションを実行し、回復通知を受信していた場合( 1 以上)は通知を行わずに処理を終了(静観)させます。