Kompira AlertHub ランブック操作マニュアル 目次

Kompira AlertHub ランブック操作マニュアル

株式会社フィックスポイントの Kompira AlertHub ランブック操作マニュアルです。

Kompira AlertHub 全体の操作方法については、「Kompira AlertHub 基本マニュアル」を参照してください。

最終更新日: 2024/02/28

ランブックとは

ランブックは、AlertHub で行う条件判断やアクション実行を柔軟に行うための機能です。

ランブックは、受信スロットでメッセージ受信した後の条件判断と、トリガー判断を行った後のアクション実行にて利用することができます。

AlertHub メニュー上のアクションやルールに比べてより詳細かつ複雑なフローの設定が可能です。

ランブックを活用することにより、以下のような処理を実現できます。

具体例

  • 1つのアラートを契機にして通知とインシデント起票を連続して行う
  • 状況に応じて電話通知をする場合としない場合に分岐させる
  • Webhook やメールで取得した情報を条件にしてインシデント起票の有無を判断させる
  • 発生したアラートの情報に加えて Webhook やメールで取得した情報を通知内容に記載する
  • ルールを設定していない想定外のアラートについても通知させる

構成要素

ランブックにおける構成要素について説明します。

全体像

完成したランブックの全体像の例です。

図内の要素について、以下に説明を記載します。

ステップ

下図のうち、赤枠で囲われているものが「ステップ」と呼ばれる要素です。

ステップの種類によって異なった役割を持ち、複数のステップを組み合わせることにより AlertHub での様々な処理が可能になります。

4Dqamaq0MJ

ステップには「ステップ ID」というものがあり、各ステップに個別の ID が割り振られています。

下図赤枠の通り、作成したステップを選択すると出現するステップ情報に記載があります。


ステップ ID を指定することにより、他のステップにて取得した情報を活用することができます。

詳細は、 他のステップで取得した情報の活用方法 項を参照してください。

開始ステップ

ランブックの開始地点です。

最初に作動させたいステップと繋げることにより、ランブックを正常に動作させます。

開始ステップのアイコンは下図の赤枠にて囲われた部分です。

skeocpu73Z

アクションステップ

アクションステップでは、AlertHub にて設定したアクション(メールや webhook による通知)をランブックにて実行することが可能です。

アクションステップのアイコンは下図の赤枠にて囲われた部分です。

詳しい設定方法は、アクションステップ 項を参考にしてください。

mXImvo9sfO

イベントステップ

イベントステップでは、AlertHub にて設定してあるスコープを指定して深刻度の増減を行うことができます。

イベントステップによるイベントが発生した場合、対象のスコープに設定してあるトリガーが作動するきっかけとなります。

トリガーの条件に一致すると、設定中のアクションもしくはランブックが実行されます。

イベントステップのアイコンは下図の赤枠にて囲われた部分です。

詳しい設定方法は、イベントステップ 項を参考にしてください。

V7cbLUnRTJ

オペレーターステップ

オペレーターでは、ランブックに渡された情報や Webhook により取得した情報を JSON パースや正規表現により加工することができます。

オペレーターステップのアイコンは下図の赤枠にて囲われた部分です。

詳しい設定方法は、オペレーターステップ 項を参考にしてください。

Y8p3KlPFYd

ブランチステップ

ブランチステップでは、ランブックが受け取った情報やオペレーターステップにて加工された情報を判断し、処理を分岐させることができます。

ブランチステップのアイコンは下図の赤枠にて囲われた部分です。

詳しい設定方法は、ブランチステップ 項を参考にしてください。

5gjZinvBHf

コネクション

下図の黄色くハイライトされている矢印部分がコネクションです。

コネクションによって各ステップを繋げることにより、フローを作成します。

完成したフローは矢印の向きに処理が進みます。

Dn6PhCJGfK

ランブックの役割

ランブックは、使用目的に応じてスコープやトリガー等と組み合わせることにより、様々な処理を担うことができます。

下記に、その代表的な例を記載します。

メッセージを一定時間内で集約したい場合

アラートの通知は欲しいものの、アラート内容によって分けた上でさらに通知頻度を少なくしたい場合、スコープの直前にランブックを設定します。

全体の流れとしては下図の通りです。

ランブックのフローにおいて、オペレーターステップブランチステップにより条件判断を行い、イベントステップでスコープの深刻度を変化させトリガーに繋げます。

トリガーでは通知の集約ができるため、アラート内容によって条件分岐した上で必要な通知のみ受け取ることが可能になります。

既存のルール設定を整理してランブックに置き換えたい場合

ルール設定を整理してランブックに置き換える場合、ランブックにルールの役割を与え、後続処理は残すように設定します。

全体の流れとしては下図の通りです。

ランブックのフローにおいて、オペレーターステップブランチステップを組み合わせることにより情報の加工や切り分けを行うことができるため、ルールとしての機能を担うことが可能です。

メッセージを1件ずつ条件判断し、アクションのみ実行させたい場合

メッセージの内容を条件判断しアクションのみを実行させる場合、受信スロットからランブックを挟んですぐにアクションが発生するように設定します。

また、最小限の設定でメッセージ処理を行いたい場合もこのパターンでの設定となります。

全体の流れとしては下図の通りです。

ランブックのフローにおいて、受信スロットで受信した情報を直接オペレーターステップブランチステップに繋ぎ、条件判断を行います。

その上で、アクションステップによりランブック上で直接アクションを起こすことが可能です。

メッセージの取捨選択を行って、条件判断からアクションを切り替えたい場合

大量に受信するメッセージの取捨選択を行い条件判断によってアクションを切り替えたい場合、トリガーのあとにランブックを配置するように設定します。

全体の流れとしては下図の通りです。

AlertHub 上で、通常通り受信スロットからトリガー実行までの設定を行った上で、トリガーの実行先をランブックに設定します。

ランブックのフロー上ではブランチステップによりさらに処理を分岐させることができるため、より重要なアラートは架電とし、逆に軽微な内容であればメール通知とする、といった切り分けが可能です。

アクセス方法

WEBGUI より、以下の方法にてランブックを利用することが可能です。

  • トップページ内オレンジ部分の「ランブック」をクリック
  • 左側メニュー領域にて「AlertHub」をドリルダウンし「ランブック」をクリック

前者はトップページでしか利用できませんが、後者はどのページからでも利用可能です。

「ランブック」をクリックすると、下画面に遷移します。

ここでは、作成したランブックの一覧を見ることができます。

設定手順

ランブックの設定手順を説明します。

ランブックの新規作成

ランブック一覧画面の右上にある「+」をクリックします。

出現したダイアログに任意の表示名を入力して保存をクリックします。


すでに作成済みのランブックを流用したい場合は、該当のランブックの右にある「︙」をクリックします。

表示されたメニューから「コピー」をクリックします。


ダイアログが表示されるため、必要に応じて編集し保存ボタンをクリックします。

備考に記載がある場合、備考欄も併せてコピーされます。

コピー元のフローを流用先のランブックで使用しない場合は「フロー」のチェックを外します。

フローの作成

ランブックの新規作成を行うとフロー画面に遷移します。

続けて左上の「+」をクリックしステップを追加します。

画面右に「ステップを追加」が表示されるため、追加したいステップをクリックします。

追加したステップを左上の開始ステップから接続します。

開始ステップの右端からマウスでドラッグするとコネクションを繋げることができます。

また、作成したステップを左クリックしてドラッグすると表示位置の変更が可能です。

接続を削除したい場合は、コネクションをクリックします。

下図のようにポップアップが表示されるため、「OK」をクリックします。

すでに作成したステップについて編集や削除を行いたい場合は、ステップを右クリックします。

「編集・削除・ID をコピー」という選択肢が表示されるため、必要な項目を選択します。


ランブックを保存する場合は、右上の保存ボタンをクリックします。

下のようにフローが長くなってしまい画面に収まりきらない場合などは、左上の「+/-」をクリックするかパーセンテージを選択することで表示倍率を変更できます。

表示倍率は、ctrl ボタン押下+マウスホイールの操作でも変更が可能です。

また、ステップのない場所にて左クリックしてドラッグするとフロー全体の表示位置を動かすことができ、見切れている部分も確認可能となります。

表示中のランブックを編集前の状態に戻したい場合は、左上のリロードボタンをクリックします。

各ステップの詳細な説明と設定方法については、次項以降を参照してください。

アクションステップの設定

ステップの追加より、アクションステップの一覧を表示します。

アクション一覧と同じ内容がアクションステップの一覧にも表示されます。


ステップの追加より、アクションステップ中の追加したい項目をクリックします。


アクションステップ一覧の中に該当するものが見当たらない場合は、右上のリロードボタンをクリックします。

また、アクションを新規作成したい場合は、右上の新規作成マークをクリックします。

別タブよりアクションの設定が可能になるため、 「Kompira AlertHub 基本マニュアル > 設定の流れ > アクションの作成」 を参照し新規作成を行ってください。

ダイアログが表示されるため、任意の表示名を入力し、保存をクリックします。

「アクションの実行完了を待つ」は、アクションの実行結果をランブック内で利用するための機能です。

webhook の送信が完了したことが確認できてから次のステップへ進む場合、「アクションの実行完了を待つ」にチェックを入れます。

下図の通り、アクションステップが追加されます。


アクションステップでは、webhook によるアクションを利用して外部から情報を取得することも可能です。

「アクションの実行完了を待つ」にチェックが入っている場合のみ利用可能となります。

アクションステップにて取得した情報は、そのステップの出力値としてsteps.[ステップID] 以下に保存されます。

取得した情報はステップの実行履歴の出力値(「実行履歴 > 該当日時 > 情報を取得したステップの表示名」)から確認ができます。

詳しい活用方法は、「他のステップで取得した情報の活用方法」を参照してください。

イベントステップの設定

ステップの追加より、イベントステップの一覧から指定したい内容を選択します。

各イベントステップの設定方法について、下記にて説明します1

対象スコープを直接指定して深刻度名を直接指定

深刻度を増減させたいスコープを指定した上で、深刻度名も名前によって指定したい場合に使用します。

イベントステップの一覧より「対象スコープを直接指定して深刻度名を直接指定」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

YmKxmjPEb4
  1. 任意の表示名を入力します。
  2. プルダウンより、設定してあるスコープの中から指定したいものを選択します。
  3. 任意の深刻度名を入力し、深刻度の増減を指定します。
  4. 保存ボタンをクリックします。

対象スコープを直接指定して深刻度名を受信データのパスで指定

深刻度を増減させたいスコープを指定した上で、深刻度名は受信するデータの内容によって指定したい場合に使用します。

イベントステップの一覧より「対象スコープを直接指定して深刻度名を受信データのパスで指定」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

aSe5AqjaFy
  1. 任意の表示名を入力します。
  2. プルダウンより、設定してあるスコープの中から指定したいものを選択します。
  3. 深刻度名に取得したいフィールド値を入力し1、深刻度の増減を指定します。
  4. 保存ボタンをクリックします。

対象スコープを条件指定して深刻度名を直接指定

スコープを属性により指定し2、深刻度名を直接指定したい場合に使用します。

イベントステップの一覧より「スコープを条件指定して深刻度名を直接指定」をクリックします。

下の通りダイアログが表示されるため、真ん中の「+」をクリックします。

さらに現れたダイアログにて、属性の指定方法について「直接指定」もしくは「受信データのパスにより指定」を選択し作成をクリックします。

属性を直接指定する場合

下のように必要事項を入力します。

cEslJyb5al
  1. 任意の表示名を入力します。
  2. 指定したいスコープ属性と値を入力します。
    ※今回は「host」という属性が付いているもののうち、「01」の値が登録されているものは一律で深刻度を変化させる設定になっています。
  3. 任意の深刻度名を入力し、深刻度の増減を指定します。
  4. 保存ボタンをクリックします。
属性を受信データのパスで指定する場合

下のように必要事項を入力します。

yLqyIbBdOc
  1. 任意の表示名を入力します。
  2. 指定したいスコープ属性と取得したいフィールド値2を入力します。
    ※今回は「host」という属性が付いているもののうち、「message.content.data.host」によって取得できた値が登録されているものについて深刻度を変化させる設定になっています。
  3. 任意の深刻度名を入力し、深刻度の増減を指定します。
  4. 保存ボタンをクリックします。

対象スコープを条件指定して深刻度名を受信データのパスで指定

スコープを属性により指定し3、深刻度名を受信するデータの内容によって指定したい場合に使用します。

イベントステップの一覧より「スコープを条件指定して深刻度名を受信データのパスで指定」をクリックします。

下の通りダイアログが表示されるため、真ん中の「+」をクリックします。

さらに現れたダイアログにて、属性の指定方法について「直接指定」もしくは「受信データのパスにより指定」を選択し作成をクリックします。

属性を直接指定する場合

下のように必要事項を入力します。

FTrCj9GZ5V
  1. 任意の表示名を入力します。
  2. 指定したいスコープ属性と値を入力します。
    ※今回は「host」という属性が付いているもののうち、「web」の値が登録されているものは一律で深刻度を変化させる設定になっています。
  3. 深刻度名に取得したいフィールド値を入力し1、深刻度の増減を指定します。
  4. 保存ボタンをクリックします。
属性を受信データのパスで指定する場合

下のように必要事項を入力します。

dItYsuL4el
  1. 任意の表示名を入力します。
  2. 指定したいスコープ属性と取得したいフィールド値1を入力します。
    ※今回は「host」という属性が付いているもののうち、「message.content.data.host」によって取得できた値が登録されているものについて深刻度を変化させる設定になっています。
  3. 深刻度名に取得したいフィールド値を入力し1、深刻度の増減を指定します。
  4. 保存ボタンをクリックします。

イベントステップでは、アクションステップと同様に発行したイベントの情報がそのステップの出力値として steps.[stepId] 以下に保存されます。

スコープの指定方法により、保存される内容が異なります。

スコープを直接指定する場合

以下の通り、イベントにより変化した深刻度名(severityName)が保存されます。

"steps": {
    "adeaebcd-7a9d-402e-b17c-XXXXXXXXXX": {
      "result": {
        "severityName": "深刻度名abc"
      }
    }
スコープを条件指定する場合

以下の通り、イベントにより変化した深刻度名(severityName)、イベントの対象となったスコープID(targetScopeIds)、イベントの対象となったスコープの数(numOfTargetScopes)が保存されます。

"steps": {
    "284c8767-0c77-4882-8c0c-XXXXXXXXXX": {
      "result": {
        "severityName": "深刻度名def",
        "targetScopeIds": [
          "bd542351-2ce9-410d-a2b7-XXXXXXXXXX",
          "e3866325-4ca8-4334-bf6f-XXXXXXXXXX"
        ],
        "numOfTargetScopes": 2
      }
    }

取得した情報はステップの実行履歴の出力値(「実行履歴 > 該当日時 > 情報を取得したステップの表示名」)から確認ができます。

1

AlertHub でのイベント設定を参考にしたい場合は、「Kompira AlertHub 基本マニュアル > 設定の流れ > ルールの作成 > イベントの設定」を参照してください。

2

receiveSlotKind に応じて受信した内容を取得します。
詳細は、APIドキュメントの alerthub 内「/api/apps/alerthub/message/detail/{messageId}メッセージ詳細の取得」を参考に設定してください。

3

スコープ属性については、「Kompira AlertHub 基本マニュアル > 設定の流れ > スコープの作成」を参照してください。

オペレーターステップの設定

ステップの追加より、オペレーターステップの一覧から指定したい内容を選択します。

各オペレーターステップの設定方法について、下記にて説明します。

日時に対して加減算を行う

特定のフィールドの日時1について、指定した秒数の加減算を行う場合に使用します。

オペレーターステップの一覧より「日時に対して加減算を行う」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

Z6gKiQgSYN
  1. 任意の表示名を入力します。
  2. 特定のフィールドを入力します。2
  3. 任意の秒数を入力します。
  4. 指定のフィールドの日時から前か後かを選択します。
  5. 保存先のフィールドについて任意の名前を入力します。
  6. 保存ボタンをクリックします。

あるフィールドから別のフィールドに値をコピーする

値を保存してある特定のフィールドから別のフィールドに情報をコピーしたい場合に使用します。

オペレーターステップの一覧より「あるフィールドから別のフィールドに値をコピーする」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

DuPGZkiHD0
  1. 任意の表示名を入力します。
  2. コピー元のフィールドの名前を入力します。
  3. コピー先のフィールドについて任意の名前を入力します。
  4. 保存ボタンをクリックします。

2つの日時の差分を計算する

2つのフィールドの日時1について、差分の秒数を計算する場合に使用します。

差分結果がマイナスとなった場合、マイナス値が保存されます。

オペレーターステップの一覧より「2つの日時の差分を計算する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

Z6gKiQgSYN
  1. 任意の表示名を入力します。
  2. 差分計算で引く側のフィールドの値を入力します。2
  3. 差分計算で引かれる側のフィールドの値を入力します。2
  4. 保存先のフィールドについて任意の名前を入力します。
  5. 保存ボタンをクリックします。

フィールドから正規表現によって値をひとつ取り出す

特定のフィールドから正規表現を使用して必要な情報を取得する際に使用します。

オペレーターステップの一覧より「フィールドから正規表現によって値をひとつ取り出す」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

opZYPMKt0I
  1. 任意の表示名を入力します。
  2. 情報を取得したいフィールドの値を入力します。2
  3. 取得したい情報について、正規表現により指定します。
  4. 保存先のフィールドについて任意の名前を入力します。
  5. 保存ボタンをクリックします。

日時を特定の書式の文字列に変換する

特定のフィールドにおける日時1の情報を特定の文字列の形式に変換する場合に使用します。

オペレーターステップの一覧より「日時を特定の書式の文字列に変換する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

Z6gKiQgSYN
  1. 任意の表示名を入力します。
  2. 日時が保存されている特定のフィールドの値を入力します。2
  3. 変換後の日時の文字列について形式を選択します。
  4. 保存先のフィールドについて任意の名前を入力します。
  5. タイムゾーンを選択します。
  6. 保存ボタンをクリックします。

現在の日時を取得する

現在の日時1を取得したい場合に使用します。

オペレーターステップの一覧より「現在の日時を取得する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

Z6gKiQgSYN
  1. 任意の表示名を入力します。
  2. 保存先のフィールドについて任意の名前を入力します。
  3. 保存ボタンをクリックします。

フィールドを日時に変換する

特定のフィールドの文字列を AlertHub で使用できる日時1の情報に変換する場合に使用します。

オペレーターステップの一覧より「フィールドを日時に変換する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

Z6gKiQgSYN
  1. 任意の表示名を入力します。
  2. 日時に変換したいフィールドの値を入力します。2
  3. 変換元となる日時の文字列の形式を選択します。
  4. 保存先のフィールドについて任意の名前を入力します。
  5. 保存ボタンをクリックします。

フィールドを JSON としてパースする

特定のフィールドから情報を JSON パースによって加工し必要な情報を取得する際に使用します。

オペレーターステップの一覧より「フィールドを JSON としてパースする」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

Z6gKiQgSYN
  1. 任意の表示名を入力します。
  2. 情報を加工したいフィールドの値を入力します。2
  3. コピー先のフィールドについて任意の名前を入力します。
  4. 保存ボタンをクリックします。
1

AlertHub では、RFC3339 の書式(例:2022-01-02T15:04:05.123456789+09:00)で表現された日時の文字列を日時の情報として扱っています。日時を表す文字列は、「フィールドを日時に変換する」を使用することで RFC3339 に変換でき、日時の情報として扱うことが可能です。
日時の情報についての詳細は、「AlertHub 基本マニュアル > 設定の流れ > フィールドの種類と操作」を参照してください。

2

フィールドを指定して任意の AlertHub の情報を使うことができます。フィールドの指定について、詳しい設定方法は「AlertHub 基本マニュアル > 設定の流れ > フィールドの指定」を参照してください。
ランブックをアクションとして使用する際は、APIドキュメントの alerthub 内、「/api/apps/alerthub/actions アクションの作成」の内容と同様に利用が可能です。埋め込むことのできる内容は、下表の通りです。

表記内容
messageアクションを引き起こしたメッセージの情報
relatedMessageCount関連メッセージの件数
relatedMessages関連メッセージの配列
eventアクションを引き起こしたイベントの情報
scopeアクションが起こったスコープの情報
scopeSeveritiesアクションが起こったスコープが持つ全ての深刻度の情報
spaceスペースの情報
stepsランブック内のステップの情報

ブランチステップの設定

ステップの追加より、ブランチステップの一覧から指定したい内容を選択します。

各ブランチステップの設定方法について、下記にて説明します。

フィールドを真偽値比較する

特定のフィールドについて、API の返り値等に記載されている真偽値(「true」もしくは「false」)によって処理を分けたい場合に使用します。

ブランチステップの一覧より「フィールドを真偽値比較する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

iZNuJiOkWN
  1. 任意の表示名を入力します。
  2. 指定したいフィールドを入力します。1
  3. プルダウンより、「true」もしくは「false」を選択します。
  4. 保存ボタンをクリックします。

フィールドを数値比較する

特定のフィールドについて、数値によって比較した結果に基づき処理を分けたい場合に使用します。

ブランチステップの一覧より「フィールドを真偽値比較する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

ZS0f1GIfH4
  1. 任意の表示名を入力します。
  2. 指定したいフィールドを入力します。1
  3. 任意の数値を入力します。
  4. プルダウンより、数値がどうなった場合に処理を行うかを選択します。
  5. 保存ボタンをクリックします。

フィールドが正規表現にマッチするかどうか判断する

特定のフィールドについて、数値によって取得した内容がマッチするか否かによって処理を分けたい場合に使用します。

ブランチステップの一覧より「フィールドが正規表現にマッチするかどうか判断する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

8wQdl8aXV0
  1. 任意の表示名を入力します。
  2. 指定したいフィールドを入力します。1
  3. 取得したい情報について、正規表現により指定します。
  4. プルダウンより、マッチした場合か否かを選択します。
  5. 保存ボタンをクリックします。

フィールドを文字列比較する

特定のフィールドについて、指定する文字列と等しいか否かによって処理を分けたい場合に使用します。

ブランチステップの一覧より「フィールドを文字列比較する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

GbiCPHTRUB
  1. 任意の表示名を入力します。
  2. 指定したいフィールドを入力します。1
  3. 任意の文字列を指定します。
  4. プルダウンより、等しい場合か否かを選択します。
  5. 保存ボタンをクリックします。

フィールドが文字列を含むかどうか確認する

特定のフィールドについて、指定する文字列を含むか否かによって処理を分けたい場合に使用します。

ブランチステップの一覧より「フィールドが文字列を含むかどうか確認する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

WXMZCRdaaN
  1. 任意の表示名を入力します。
  2. 指定したいフィールドを入力します。1
  3. 任意の文字列を指定します。
  4. プルダウンより、含む場合か否かを選択します。
  5. 保存ボタンをクリックします。

日時が指定した曜日における時刻の範囲内であるか確認する

特定のフィールドの日時2が、指定した曜日且つ時間の範囲内でイベントが発生したかによって処理を分けたい場合に使用します。

ブランチステップの一覧より「日時が指定した曜日における時刻の範囲内であるか確認する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

WXMZCRdaaN
  1. 任意の表示名を入力します。
  2. 指定したいフィールドを入力します。1
  3. 曜日のボタンをクリックして指定したい曜日を選択します。
  4. 指定したい範囲の開始時刻を hh:mm:ss (時:分:秒) の形式で入力します。3
  5. 指定したい範囲の終了時刻を hh:mm:ss (時:分:秒) の形式で入力します。3
  6. 指定した時間範囲のタイムゾーンを選択します。
  7. 保存ボタンをクリックします。

日時が指定した時刻の範囲内であるか確認する

特定のフィールドの日時2が、指定した時間の範囲内かによって処理を分けたい場合に使用します。

ブランチステップの一覧より「日時が指定した時刻の範囲内であるか確認する」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

WXMZCRdaaN
  1. 任意の表示名を入力します。
  2. 指定したいフィールドを入力します。1
  3. 指定したい範囲の開始時刻を hh:mm:ss (時:分:秒) の形式で入力します。3
  4. 指定したい範囲の終了時刻を hh:mm:ss (時:分:秒) の形式で入力します。3
  5. 指定した時間範囲のタイムゾーンを選択します。
  6. 保存ボタンをクリックします。

フィールドが存在するかどうか確認する

指定したフィールド1が存在するか確認したい場合に使用します。

フィールドの値が 0,false,空文字等であってもフィールドは「存在する」扱いとなります。
ただし、フィールドの値が null の場合は「存在しない」扱いとなります。

  1. 任意の表示名を入力します。
  2. 「F1」に存在の有無を確認したいフィールドを指定します。1
  3. 「F1」のフィールドが存在する場合か存在しない場合かを選択します。
  4. 保存ボタンをクリックします。
WXMZCRdaaN
1

フィールドを指定して任意の AlertHub の情報を使うことができます。フィールドの指定について、詳しい設定方法は「AlertHub 基本マニュアル > 設定の流れ > フィールドの指定」を参照してください。
ランブックをアクションとして使用する際は、APIドキュメントの alerthub 内、「/api/apps/alerthub/actions アクションの作成」の内容と同様に利用が可能です。埋め込むことのできる内容は、下表の通りです。

表記内容
messageアクションを引き起こしたメッセージの情報
relatedMessageCount関連メッセージの件数
relatedMessages関連メッセージの配列
eventアクションを引き起こしたイベントの情報
scopeアクションが起こったスコープの情報
scopeSeveritiesアクションが起こったスコープが持つ全ての深刻度の情報
spaceスペースの情報
stepsランブック内のステップの情報
2

AlertHub では、RFC3339 の書式(例:2022-01-02T15:04:05.123456789+09:00)で表現された日時の文字列を日時の情報として扱っています。日時を表す文字列は、オペレーターステップの「フィールドを日時に変換する」を使用することで RFC3339 に変換でき、日時の情報として扱うことが可能です。
日時の情報についての詳細は、「AlertHub 基本マニュアル > 設定の流れ > フィールドの種類と操作」を参照してください。

3

時間の指定について、秒数(SS 部分)は省略可能です。

他のステップで取得した情報の活用方法

下図のように、アクションの webhook で取得した情報を後続のステップにて使用する場合の設定方法について説明します。

アクションステップより、事前に設定した情報取得用の webhook を選択します。

この時、レスポンスを利用するために「アクションの実行完了を待つ」にチェックを入れたままにします。

PESQStDebB

このアクションは、レスポンスボディとして下記のような JSON 文字列が返ってくる想定です。

{
  "ID":"ID-example",
  "host":"XXX.X.XXX.X",
  "status":"error",
  "trigger":"cpu"
}

アクションのレスポンスは下記のように取得されます。

{
  "steps": {
    "アクションステップのID": {
      "output": {
        "statusCode": 200,
        "headers": {
          "Cache-Control": "no-cache, no-store, no-transform, must-revalidate, private, max-age=0",
          "Content-Length": "29",
          "Content-Type": "application/json; charset=utf-8",
          "Date": "Sun, 24 Apr 2022 02:50:19 GMT"
        },
        "isBodyEncoded": false,
        "body": "{ \"ID\": \"ID-example\", \"host\": \"XXX.X.XXX.X\", \"status\": \"error\", \"trigger\": \"cpu\"}"
      }
    }
  }
}

上記の通りレスポンスボディは文字列の状態のため、次のオペレータステップにおいてレスポンスボディを JSON としてパースし、個々の値を扱えるように情報を加工します。

レスポンスの情報はステップの実行履歴の出力値(「実行履歴 > 該当日時 > 情報を取得したステップの表示名」)から確認ができます。

オペレーターステップより、「フィールドを JSON としてパースする」を選択します。

この時、指定したいステップの情報をフィールド値に入力します。

今回は、アクションステップのレスポンスボディを JSON パースするため、steps.[アクションステップのステップID].output.body を指定します1

ステップ ID は、作成したアクションステップを右クリックし、表示されたメニューより「ID をコピー」をクリックして取得します。

a1TSlU4NJT

JSON パースした後の値について、任意のフィールドを指定して保存します。

chrome_UeUFMmZvv1

指定したフィールドの内容を指定して、内容に基づいて行いたい処理を設定します(数値比較や文字列比較等)。

この時点で、最初に文字列として取得されたリクエストボディの "body": "{ \"ID\": \"ID-example\", \"host\": \"XXX.X.XXX.X\", \"status\": \"error\", \"trigger\": \"cpu\"}" を指定して JSON パースし、個々の値として扱える状態になった上で任意のフィールド webhook に保存されたことになります。

実際にランブック上では下記の通り値が保存されています。

{
 "webhook": {
    "ID":"ID-example",
    "host":"XXX.X.XXX.X",
    "status":"error",
    "trigger":"cpu"
  }
}

保存された内容は、ステップの実行履歴の出力値(「実行履歴 > 該当日時 > JSON パースしたステップの表示名」)から確認ができます。

最後に、ブランチステップにて指定したフィールドの内容を指定して、内容に基づいて行いたい処理を設定します(数値比較や文字列比較等)。

chrome_owWKe0NIdk

以上のような流れで、webhook 等にて取得した情報を後続のステップにて使用することができます。

1

フィールドの指定方法についての詳細は、「Kompira AlertHub 基本マニュアル > 設定の流れ > フィールドの指定方法」 を参照してください。

ランブックにおける情報の利用

ランブックでは、各ステップにて取得した情報が実行しているランブック上でステップの出力値として保持されます。

あるステップで取得した情報は、後続のどのステップにおいてもその情報を使用することが可能です。

下図のフローを例に説明します。

まず、①「情報取得」のアクションステップで外部から webhook により情報を取得します。

続いて②「レスポンスをJSONパース」にて ①で受け取った情報を使用しやすい形式に加工します。

この処理は、①で取得した出力値を後続の②にて使用しています。

次の段階では、前のステップの②で加工した情報の出力値に ping という文字列が含まれるかを後続の③「ping を含むか判断」のブランチステップで判断しています。

さらに、再度②で加工した情報の出力値を活用し後続の④「host 異常か確認」にて host の異常が発生しているかを確認しています。

以上のように、フロー上の前工程にあるステップの出力値を後続のステップにて活用することが可能です。

ランブック呼び出しの設定

ランブックを呼び出すための設定について説明します。

アクションとして利用する場合

スコープメニューから設定したいスコープの詳細画面を開きます。

続けてトリガーのタブを選択し、右端の「+」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

0P6kKJMReX
  1. 任意の表示名を入力します。
  2. 「ランブック」を選択します。
  3. プルダウンより、使用したいランブックを選択します。
  4. 保存をクリックします。

ルールとして利用する場合

受信スロットメニューを開き、右上の「+」をクリックします。

下のようなダイアログが表示されるため、必要事項を入力します。

gOo8MNbEj1
  1. 作成したい受信スロットの形式を選択します。
  2. 任意の表示名を入力します。
  3. プルダウンより、使用したいランブックを選択します。
  4. 保存をクリックします。

すでに作成済みの受信スロットにランブックを設定したい場合は、受信スロットメニューから設定したい受信スロットの詳細画面を開きます。

右上の「︙」をクリックし、編集を選択します。

下の通り編集画面が表示されるため、プルダウンより使用したいランブックを選択し、保存をクリックします。

ZTZ58TovCS

注意

ランブックを指定した受信スロットは普通のルールで指定できなくなります。

また、普通のルールで使われている受信スロットはランブックを指定できません。

実行履歴の確認

ランブックの実行履歴を確認する方法について説明します。

ランブックメニューより確認

ランブックメニュー画面より、履歴を確認したいランブックの画面を開きます。

画面右上の「︙」をクリックすると、メニューが表示されるため「実行履歴」をクリックします。

下図のように実行履歴が表示されます。

「実行要求時刻」をクリックすると、下のように実行されたランブックの処理について詳細が表示され、以下の内容が確認できます。

  1. 実行時間:ランブック全体の実行時間
  2. ステップ実行履歴:ステップごとの実行状況と実行時間
  3. 入力値:実行時にランブックに渡された AlertHub の情報
  4. 関連データ:ランブック実行に関わる AlertHub の各要素へのリンク
r90mIQOL6r

アクションとして利用した場合

アクションとしてランブックを利用した場合、スコープの詳細画面から実行履歴の確認が可能です。

スコープ詳細画面の「概要」タブを下にスクロールします。

「実行履歴」があるため「ランブック」タブを選択するとアクションとして実行された場合のランブックが確認できます。

r90mIQOL6r

ルールとして利用した場合

ルールとしてランブックを利用した場合、メッセージメニューから実行履歴の確認が可能です。

メッセージメニューを開くと、直近の受信したメッセージ一覧が表示されます。

右横にある「ランブック実行」という項目より、ルールとして実行された場合のランブックが確認できます。

設定例

ランブックの具体的な設定例を提示します。

ランブックアクションとランブックルールについて具体例を一つずつ紹介します。

アクションとして利用

以下の通りアラート一次対応を行うランブックの設定例を示します。

  • アラートが発生した機器の上位機器に該当するスコープの深刻度をチェックする
  • 深刻度が「0」の場合にインシデント起票をし、それ以外の場合は起票せずに Slack への通知を行う
  • インシデント起票した後にはメール通知を行う
  • 通知するメールの文面にはアラートの内容とインシデントへのリンクを記載する

ランブックの全体は下図のようになります。

以下より、各ステップの設定やアクションの内容の詳細について説明します。

上位機種のスコープの深刻度を取得

アクション内容

同じスペースの特定のスコープの深刻度を Kompira cloud の API /api/apps/alerthub/scopes/{scopeId}/severities/{severityName} により取得します。1

アクションのレスポンス

深刻度は以下のような形式でレスポンスとして返却されます。

{
  "name": "test",
  "severity": 0
}

深刻度取得のレスポンスを JSON パース

JSON パースを挟むことにより、後続のステップで情報を扱いやすい形に加工して保存します。

steps.[ステップID].output.body でステップIDが示すステップのレスポンスボディを指定してレスポンスを JSON パースします。

chrome_pOxXrPyj58

深刻度「0」と一致しているか判断

直前のステップにて JSON パースされた深刻度の情報が body.severity フィールドに保存されたため、その値を数値比較します。

比較結果により、処理を分岐させます。

chrome_oClhxnYObB

インシデントを起票

アクション内容

ランブックが実行される起因となったメッセージの情報を含めて Webhook アクションによりインシデント起票をします。

アクションのレスポンス

ここでは、正常にインシデントが起票された場合、以下のような形式でレスポンスが返却されるイメージとしています。

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx",
  "url": "https://example.com/incident/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/"
}

インシデント起票のレスポンスをJSONパース

直前のステップにて返ってきたレスポンス内容を後続のステップにて扱いやすい形に加工して保存します。

steps.[ステップID].output.body でステップIDが示すステップのレスポンスボディを指定してレスポンスを JSON パースします。

chrome_NIKpXVYIpk

メール通知

ランブックが実行される起因となったメッセージの情報と直前のステップで起票したインシデントにアクセスするための URL を記載しメールを送信します。

chrome_NIKpXVYIpk

Slack通知

ランブックが実行される起因となったメッセージの情報を記載し Webhook アクションにて Slack 通知をします。

chrome_NIKpXVYIpk
1

詳細は Kompira cloud 共通メニューの API ドキュメントを参照してください。

ルールとして利用

以下の通りアラート一次対応を行うランブックの設定例を示します。

  • アラートの webhook から取得した内容により段階的に処理を分岐させる
  • 内容によってイベント・アクションを発生させる
  • 事前に登録していなかったアラートの項目があった場合、Pigeon による架電を行う

ランブックの全体は下図のようになります。

注意

ランブックを指定した受信スロットは普通のルールで指定できなくなります。

また、普通のルールで使われている受信スロットはランブックを指定できません。


以下より、各ステップの設定やルールの内容の詳細について説明します。

Ping に関する通知の切り分け

受信した webhook に ping という文字列がある場合とそれ以外を切り分けます。

chrome_zO6oBScHFc

Ping 異常

「Ping に関する通知の切り分け」 条件に当てはまった場合、イベントを発生させます。

今回は、事前に作成したスコープについて深刻度名 ping error を10にするよう設定しました。

chrome_F9Sxxm6acb

ホスト異常かを確認

「Ping に関する通知の切り分け」にて条件に当てはまらなかった場合、ホスト異常であるかの確認を行います。

webhook 上の message.content.data.hosterror となっているか否かにより処理を切り分けます。

chrome_n2IZyEBpCI

ホスト異常

「ホスト異常かを確認」 にて条件に当てはまった場合、イベントを発生させます。

今回は、スコープ属性 host が webhook 上の値と一致するスコープを対象に、host error について深刻度を5増やす設定としました。

chrome_ZWhodPJraY

ステータス異常かを確認

「ホスト異常かを確認」 にて条件に当てはまらなかった場合、さらにステータス異常かの確認を行います。

webhook 上の message.content.data.statuswarning となっているか否かにより処理を切り分けます。

chrome_Ie1TTVDg0Z

Slack 通知

「ステータス異常かを確認」 にて条件に当てはまった場合、元の webhook 通知とステータスの状態を記載し Slack 通知をします。

Pigeon 通知

「ステータス異常かを確認」 にて条件に当てはまらなかった場合、Pigeon 通知を行います。

事前に Pigeon にて作成したコールフローを AlertHub のアクションに追加しておくことにより設定が可能です。

chrome_KH3QdjFlJJ