この記事は、Microsoft Azure Advent Calendar 2017の14日目の記事です。
今回は、Web JobsのステータスをLogic Appを使って通知する方法について簡単にまとめます。
使うサービス
今回の記事に関係するサービスは、下記のものです。
- Web Jobs
- Logic App
- Slack
今回は、これらのサービスはあらかじめ用意してある前提で進めます。
通知までの流れ
今回の大まかな流れは下記になります。
- Logic AppでWeb hookを受け取るトリガーを追加
- Web Jobs完了時にWeb hookを発行する設定の追加
- Web Job終了時のステータスが成功以外の場合に任意のSlackに通知するコネクタをLogic Appに追加
仕組みの設定
Web hookを受け取るトリガーの設定
トリガーは、Logic Apps デザイナーで設定します。
ここで使用するトリガーは、Http要求の受信トリガーです。
要求のコネクタを選択するとHttp要求の受信トリガーが出てきます。
トリガーを選択すると、JSONスキーマを設定する項目が表示されます。
この中にWeb Jobsが発行するWeb hookのJSONスキーマを定義します。
今回、下記のスキーマを使用します。
{ "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の画面から行います。
Tools → Web hooksから設定画面に遷移できます。
Web hook設定画面ので先ほどメモしたURLをSubscriber Urlに設定、リストボックスの項目をTriggeredJobFinishedに設定してAdd Urlを選択します。
Slack通知の設定
分岐条件の追加
このままWeb hookが発行されたら通知するでも問題ないですが、今回は、エラーになったら通知するようにしたいので条件分岐を行います。
Logic AppのLogic Appデザイナーから分岐条件を設定します。
新しいステップの追加 → 条件の追加 を選択します。
条件設定は、まず左のテキストボックスを選択して設定します。
選択すると、JSONのプロパティが選択できるのでStatusを選択します。
右側にSuccessを入れて、下記のように設定します。
これで、StatusがSuccess以外の場合にTrueになる設定ができました。
Slack通知の設定
True、Falseで条件分岐するので今回はTrueになったらSlack通知をするように設定します。
Trueの場合のアクションの追加を選択します。
テキストエリアにslackと入れるとSlackのコネクタが出てくるので、投稿メッセージを選択します。
選択するとサインインボタンが出てくるのでSlackにサインインします。
Slackに接続すると、チャンネルと送信するテキストを入力する画面が出てきます。
メッセージのテキストには、任意のテキストか、JSONで送られてきた値が使用できます。
また、詳細オプションを表示を選択すると、送信者名などの細かい設定も可能です。
設定が完了したらLogic Appを保存します。
これで完了です。
Logic Appから通知を行うとSlackでは、下記のようなメッセージになります。
まとめ
ノンコーディングでエラー通知が簡単に作れました。
複雑なメッセージを送るといったことはせず、とりあえずエラーが発生したかどうかだけでもすぐに通知したいといった場合に簡易通知システムとしてLogic Appは結構優秀かなと思いました。
Logic Appはコーディングなしで簡単に色々できるのでぜひいろいろ使ってみましょう。