Logic Appsのトリガーが「失敗」したらSlackに通知する方法を試した話(簡易版)

Pocket


何かの理由でLogic Appsのトリガーが「失敗」している場合、特に何も設定していない場合はAzureポータルを見ないと結果はわかりません…。
いちいちポータル見るのって大変だし気づかないこと多いから何とかならないかな?と聞かれまして。
実行時の詳細情報やイベントを使用した高度なデバッグの場合は、Azure Log Analytics を使用して診断ログを設定することが推奨されていますが、もっと手軽に「トリガーが失敗したら通知する方法」があったので試してみました、な話。
色々なやり方があると思うのですが、今回は非エンジニアでも簡単にできる方法ということで、Webhookも使うこと無く「Logic Appsのデフォルト機能+通知用Logic AppsでSlackに通知する」ようにしてみました。

アラート通知をしたいLogic Appsの設定

まずはトリガーが「失敗」したときに通知をしたいLogic Appsに設定します。


「アラートルール」をクリックして上部の「メトリックアラートの追加」を選択。


「規則の追加」というブレードが開くので、必要事項を入力していきます。(しきい値や期間はいい感じに)
ここで「通知手段」にチェックを入れると、サブスクリプションの管理者にトリガーが失敗するとメール通知が来るようになります。
簡易的な通知であればこの部分の設定だけでもOKかな?とも思うのですが「自分がサブスクリプションの管理者ではない(別のメアドに通知)・Slackにアラート通知」をするようにしてみます。
「追加する管理者の電子メール」に追加すれば他のメアドにも通知メールが飛ぶようになります。

Slackに通知用のLogic Appsを作成


アラート通知のメールはこのような内容です。単純にこの本文をSlackに投稿するようにします。
トリガーが失敗したときに通知をしたい場合なので、念のため別のリージョンで作っておくといいかなと。


全体のワークフローはこんな感じ。アラート通知のメールアドレスは決まっているので、特定のメアドからメールが来たらSlackに本文を投稿するようにしています。
このワークフローは「トリガーの失敗」がない限り動かないものなので、今回はメール着信時に発火するOffice 365 Outlookコネクタの「新しいメールが届いたとき(Webhook)」を利用します。


ポイントはトリガーの直下のアクションに「メールの取得(Office 365 Outlookコネクタ)」を持ってくること。
「新しいメールが届いたとき(Webhook)」はメールの着信があったかどうかしか判定できないので、このコネクタのみでメールの中身を判定&持ってくることはできません。
メールIDは持ってこれるので、それを利用してメールの内容を取得するようにして、条件判定します。


Slackの設定はこのような感じ。メール本文のプレビューを投稿するようにします。(本文だとHTMLタグも含んだものになってエラーを起こすので…)

結果を見てみる


Slackに投稿される内容はこのような感じ。
ものすごく完結な内容ですが、一応Logic Appsの名前とRULE NAMEは通知されるので「どのトリガーが止まったか」はわかるかな?と。

最後に

簡易的な方法ではありますが、トリガーが失敗した場合を考えてこの設定を入れておくのはいいかもしれないなと思います。
あとは「アラートルール」を色々試していくのがオススメ。
とはいえ、業務で使うLogic Appsの場合はAzure Log Analytics を使用して診断ログを設定することが現実的かなと…。
重要度によって使い分けがいいかな?と個人的に思ったところです。

参考サイト

Azure Logic Apps の状態の監視、診断ログの設定、アラートの有効化
https://docs.microsoft.com/ja-jp/azure/logic-apps/logic-apps-monitor-your-logic-apps

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です