「正規表現によって値を一つ取り出してフィールドに保存する」について
完了以下のような障害メールを受信します。
<メール本文>
障害の発生
検知機器 :hostname (※1)
IPアドレス:xxx.xxx.xxx.xxx
検知日 :YYYY.MM.DD
検知時刻 :hh:mm:dd
重要度 :軽度の障害
イベント内容:
Interface GigabitEthernet1/0/1(GigabitEthernet1/0/1 Interface): Link down (※2)
現在のステータス:
Current state: down
(※1):複数ホストあります
(※2):GigabitEthernet1/0/12 →ポートは複数あります 例)1/0/1、1/0/2、1/0/3、・・・、2/0/1、2/0/2、2/0/3、・・・
リンクダウンをホスト毎かつポート毎にアラート数を管理し、アラート数が2以上になったらAlertHubからメール通知をしたいです。
ランブックにて設定を行おうと思っています。
ホストは大量にあるため、下記の通り「正規表現によって値を一つ取り出してフィールドに保存する」ようにしたいです。

また、ポートについても大量にあるため、「正規表現によって値を一つ取り出してフィールドに保存する」ようにしたいです。
「正規表現によって値を一つ取り出してフィールドに保存する」を2つ使い、
ホスト毎かつポート毎にアラート数を管理することは可能なものでしょうか?
-
お問い合わせありがとうございます。
「正規表現によって値を一つ取り出してフィールドに保存する」を2つ使い、
ホスト毎かつポート毎にアラート数を管理することは可能なものでしょうか?こちらについてですが、ランブックからKompiraCloudのAPIを呼び出す方法をとることで
ホスト毎&ポート毎の深刻度を管理することが可能です。
手順としては以下の通りとなります。
1.Webhookを実行するアクションの作成
Webhookのアクションを1つ作成しておきます。設定としては以下の画面の通りとします。
※画面にあるの日本語部分についてはそれぞれお客様の環境に合わせてご指定ください
また、API tokenの発行手順はこちらにございますので、この手順で発行いただき、ご利用ください。
2.ランブックを作成
2-1 「正規表現によって値を一つ取り出してフィールドに保存する」を2つ作り、
それぞれhostnameとportの値をフィールドに取り出します。(それぞれ、hostname、portとします)
2-2 ランブックから1で作成したアクションを実行します。これにより、指定したスコープ内に【hostname】_【port】の形の深刻度名を作成し、5に設定することができます。
以上、よろしくお願いします。
-
ご担当者さま
ご教示いただいた内容を参考にすることで、ホスト毎&ポート毎の深刻度を管理する設定ができました。
スコープにて、深刻度が2以上になったらメールを送信するよう設定をしたいのですが、エラーが発生しうまくいきません。
■スコープ

■アクション

■エラー内容

failed to send email: sendgrid: 400: The subject is required. You can get around this requirement if you use a template with a subject defined or if every personalization has a subject defined.
Webhookを使用しない場合、上記スコープ設定・アクション設定で、深刻度が2以上になったら、メール通知がされます。
Webhookを使用した場合にのみ、メール通知が失敗する状況です。
大変恐れ入りますが、メール通知が失敗している要因がわかりましたら、ご教示いただけないでしょうか。
-
お世話になっております。
まず、メール送信失敗の要因についてですが、メールタイトルが{{message.content.subejct}} は「受信メールのタイトル引用」となりますので、Webhookの受信スロットでメッセージを受信した場合は引用元が空白となってしまい、アクションで送信するタイトルが空白になってしまったことが要因となります。(単語を追加したらメール通知できたのは、単語を追加したことで空白状態を解消できたからです。)
これを防ぐためにはアクション設定にてWebhook受信スロットで受信したメッセージの場合に件名とするフィールドをアクションの件名に設定する必要があります(詳細は https://fixpoint.github.io/alerthub-manual/template-reference.html をご参照ください)
なお、Webhook受信スロットで受信したメッセージとメール受信スロットで受信したメッセージで共通のアクションを使用したい場合はトリガーからランブックを呼び、その中で{{message.content.subejct}}が空かどうかを確認して空でなければ(メール受信スロットでメッセージを受信した場合) mail_title に値をコピーし、
そうでない場合(Webhook受信スロットでメッセージを受信した場合)は、Webhookのどれかのフィールドを mail_title にコピーするのはいかがでしょうか。
(この時、メールアクションのタイトルは{{mail_title}}としてください。)以上、よろしくお願いします。
-
説明が悪く申し訳ありません。
Webhookの受信スロットは使用しておりません。
現在の設定状況、動作状況、実現したいことを記載いたします。<現在の設定状況>
・メール受信スロットを使用
・ランブックを使用し、上記メール受信スロットに紐づけ
・ランブックの設定は以下の通り設定。起因となるメールがメール受信スロットに入ってきたら、指定したスコープ内に【hostname】_【port】の形の深刻度名を作成し、深刻度を1上昇させる。




・スコープの設定は以下の通りで、深刻度が2以上になったら、アクションを動作させるよう設定

・アクション設定は以下の通りで、起因となるメールから件名、本文、送信元アドレス、宛先アドレスを取り出し、メール送信

<動作状況>
・起因となるメールがメール受信スロットに入ってきた際、指定したスコープ内に【hostname】_【port】の形の深刻度名を作成され、深刻度が1上昇
・起因となるメールが2通、メール受信スロットに入ってきて、深刻度が2になり、アクションが動作

・アクションにて送信されたメールは以下の通りで、起因となるメールから件名、本文、送信元アドレス、宛先アドレスを取り出せていない状況

<実現したいこと>
アクションにて送信されるメールについて、起因となるメールから件名、本文、送信元アドレス、宛先アドレスを取り出したいです。
-
お世話になっております。
実現したい点について、承知いたしました。前回提案しましたイベント手動実行APIを使用した場合、深刻度を変化させたのがメッセージ受信ではなくAPIになるのですが、
APIが実行するとその後に発動するアクションでは元のメッセージが参照できなくなるため、今回のような事象になっております。
この事象を回避して、メッセージ内の複数要素を用いて深刻度名を作成するのと受信したメッセージ内容のメール通知の2つを実現する場合は、
受信スロットとランブックとアクションが2つずつ必要にあります。
また、これに伴い1回あたりの処理メッセージ数が2倍になりますのでご注意ください。
もし、この対応によりメッセージ数がプランで定められた上限に達しそうな場合は弊社営業まで一度ご相談いただければと思います。■作成するもの
・受信スロットA(元メールの受信用)
・受信スロットB(深刻度・メール本文連携のWebhook受信用)
・ランブックC(元メールの深刻度名取り出しと受信スロットBへの連携用)
・ランブックD(スコープの深刻度アップデート用)
・アクションE(ランブックC→受信スロットBへのWebhook連携用(※))
・アクションF(通知メール発信用)
・スコープ
(※)メール形式での送信でも可能ですが、ここではWebhookで例を記載します。■処理の動き
①受信スロットAで、元メールを受信する。
②受信スロットAからランブックCを起動し、深刻度名に使用したいhostnameとportを取り出す。
③ランブックCから別の受信スロットBにメッセージを投げるアクションEを実行する。送るものは以下の2つです。
・②で作成した深刻度名
・元メールの情報
Webhookメッセージの例としては以下の通りです。
・WebhookURL:受信スロットBのURLを指定する
・HTTPヘッダ:「Content-Type: application/json」を指定する
・リクエスト本文は以下の通り
{
"severity": "{{hostname}}_{{port}}", ★ホスト名とポート2つの要素を合成した深刻度名を指定
"mail_subject": "{{message.content.subject}}"★メールの件名
"mail_from": "{{message.metadata.from.email}}"★メールの送信元アドレス
"mail_To": "{{message.metadata.headers.To}}"★メールの宛先アドレス
"originalmsg": "{{message.content.text}}" ★元々受信したメールの全文
}
④受信スロットBでメッセージ受信し、ランブックDを起動する。
⑤ランブックDにて「対象スコープを条件指定して、深刻度名を受信データのパスで指定」を実行し、
③で送られた深刻度名を使用して、スコープの深刻度を上昇させる。
⑥スコープの深刻度が2つ上昇したらトリガー実行し、通知メールを送るアクションFを実行する。現在、ランブック内のオペレータでこの問題を解決できるよう、取り出した文字列を連結するオペレータの追加を検討中です。
実装できた場合は、深刻度名の取り出しと深刻度上昇を最初のランブックCのみで実施できるようになる予定ですので、しばらくお待ちください。以上、よろしくお願いします。
-
ご返信ありがとうございます。
APIが実行するとその後に発動するアクションでは元のメッセージが参照できなくなるため、今回のような事象になっております。
この事象を回避して、メッセージ内の複数要素を用いて深刻度名を作成するのと受信したメッセージ内容のメール通知の2つを実現する場合は、
受信スロットとランブックとアクションが2つずつ必要にあります。動作について、理解いたしました。
受信スロットとランブックとアクションが2つずつ必要になってしまうのですね。
現在、ランブック内のオペレータでこの問題を解決できるよう、取り出した文字列を連結するオペレータの追加を検討中です。
実装できた場合は、深刻度名の取り出しと深刻度上昇を最初のランブックCのみで実施できるようになる予定ですので、しばらくお待ちください。今後も、メッセージ内の複数要素を用いて深刻度名を作成したい機会があります。
実装いただければ大変助かります。
-
追加で、スコープについて質問がございます。
障害が2回以上発生した場合に、AlertHubからメールを通知する設定にしたいです。
<実現したいこと>
障害が2回以上発生、その後復旧した場合、障害回数分の障害メールと復旧メールをAlertHubから通知。
障害が1回で復旧した場合は、AlertHubからのメールは通知しない。
現状の設定は以下の通りで、障害メールのアクションはうまくいっていますが、復旧メールのアクションがうまくいきません。
<現状の設定>
・ランブックにて、以下のようにホスト名をフィールドに取り出す設定をしています。
ホスト名は複数あります。
■障害発生時
フィールドから取り出した深刻度を1上げる

■復旧時
フィールドから取り出した深刻度を0にする


・スコープにて、トリガーを2つ設定しています。

-障害トリガー

-復旧トリガー

<動作状況>
障害メール、復旧メールを受信スロットにて受信した際、深刻度は設定通り増減します。
障害メールを受信したら深刻度が1増加。復旧メールを受信したら深刻度が0になる。
ただ、復旧アクションが実現したい動作をしません。
以下①の場合(深刻度が0→1→0)、障害アクション・復旧アクションともに動作なし。(実現したい動作なのでOK)
以下②の場合(深刻度が0→1→2→0)、障害アクションは動作し、復旧アクションは動作しませんでした。(復旧アクションも動作させたいです。)

<相談事項>
復旧トリガーの作り方に誤りがあるのかと思います。
深刻度が、2→0、3→0、4→0、5→0、・・・となった場合に、アクションを動作させたいです。
設定方法をご教示いただけないでしょうか。

-
お世話になっております。
復旧トリガーには「深刻度の変化量が2以上の値である」という条件になっておりますが、この条件ですと深刻度が2以上増加したイベント(例: , )でのみ作動します。
今回のケース②の2→0の変化の場合、変化量は-2となるため、条件に該当せずトリガーは作動しませんでした。
(同じように、ケース①の場合は変化量はそれぞれ1、-1となりますので、こちらも該当しません)2以上の深刻度が0に戻った時に発動させたいのであれば、「深刻度の変化量が-2以下の値である」に設定していただけますと、復旧トリガーが作動するようになると思いますので、一度ご確認いただけますでしょうか。
以上、よろしくお願いします。
サインインしてコメントを残してください。
コメント
13件のコメント