ごった煮

色々な事を書いてます

Web JobsのエラーをSlackに通知する話

この記事は、Microsoft Azure Advent Calendar 2017の14日目の記事です。

今回は、Web JobsのステータスをLogic Appを使って通知する方法について簡単にまとめます。

使うサービス

今回の記事に関係するサービスは、下記のものです。

  • Web Jobs
  • Logic App
  • Slack

今回は、これらのサービスはあらかじめ用意してある前提で進めます。

通知までの流れ

今回の大まかな流れは下記になります。

  1. Logic AppでWeb hookを受け取るトリガーを追加
  2. Web Jobs完了時にWeb hookを発行する設定の追加
  3. Web Job終了時のステータスが成功以外の場合に任意のSlackに通知するコネクタをLogic Appに追加

仕組みの設定

Web hookを受け取るトリガーの設定

トリガーは、Logic Apps デザイナーで設定します。

ここで使用するトリガーは、Http要求の受信トリガーです。

image

要求のコネクタを選択するとHttp要求の受信トリガーが出てきます。

image

トリガーを選択すると、JSONスキーマを設定する項目が表示されます。

この中にWeb Jobsが発行するWeb hookJSONスキーマを定義します。

image

今回、下記のスキーマを使用します。

{
    "properties": {
        "duration": {
            "type": "string"
        },
        "end_time": {
            "type": "string"
        },
        "id": {
            "type": "string"
        },
        "job_name": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "output_url": {
            "type": "string"
        },
        "start_time": {
            "type": "string"
        },
        "status": {
            "type": "string"
        },
        "trigger": {
            "type": "string"
        },
        "url": {
            "type": "string"
        }
    },
    "required": [
        "id",
        "name",
        "status",
        "start_time",
        "end_time",
        "duration",
        "output_url",
        "url",
        "job_name",
        "trigger"
    ],
    "type": "object"
}

 

ロジックアップを保存すると、HTTP POSTのURLの項目にWeb hook用のURLが発行されます。

このURLをKuduに設定するのでどこかにメモしておきましょう。

 

Web hookの設定

Web hookの設定は、Kuduの画面から行います。

image

Tools → Web hooksから設定画面に遷移できます。

Web hook設定画面ので先ほどメモしたURLをSubscriber Urlに設定、リストボックスの項目をTriggeredJobFinishedに設定してAdd Urlを選択します。

image

Slack通知の設定

分岐条件の追加

このままWeb hookが発行されたら通知するでも問題ないですが、今回は、エラーになったら通知するようにしたいので条件分岐を行います。

Logic AppのLogic Appデザイナーから分岐条件を設定します。

新しいステップの追加 → 条件の追加 を選択します。

image

条件設定は、まず左のテキストボックスを選択して設定します。

image

選択すると、JSONのプロパティが選択できるのでStatusを選択します。

右側にSuccessを入れて、下記のように設定します。

image

これで、StatusがSuccess以外の場合にTrueになる設定ができました。

 

Slack通知の設定

True、Falseで条件分岐するので今回はTrueになったらSlack通知をするように設定します。

image

Trueの場合のアクションの追加を選択します。

テキストエリアにslackと入れるとSlackのコネクタが出てくるので、投稿メッセージを選択します。

image

選択するとサインインボタンが出てくるのでSlackにサインインします。

Slackに接続すると、チャンネルと送信するテキストを入力する画面が出てきます。

メッセージのテキストには、任意のテキストか、JSONで送られてきた値が使用できます。

image

また、詳細オプションを表示を選択すると、送信者名などの細かい設定も可能です。

設定が完了したらLogic Appを保存します。

これで完了です。

Logic Appから通知を行うとSlackでは、下記のようなメッセージになります。

image

 

まとめ

ノンコーディングでエラー通知が簡単に作れました。

複雑なメッセージを送るといったことはせず、とりあえずエラーが発生したかどうかだけでもすぐに通知したいといった場合に簡易通知システムとしてLogic Appは結構優秀かなと思いました。

Logic Appはコーディングなしで簡単に色々できるのでぜひいろいろ使ってみましょう。