ApplicationInsightsのアラートをTeamsに送信する(シンプルなWebhook)
ApplicationInsights には特定のログや Metrics を検知するとメールや SMS 、Webhook で通知するアラートの機能があります。Webhook 送信時の Body はカスタマイズ可能なので、 Teams のシンプルな方の Webhook に対してアラートを送信してみます。
アラートルールを定義する
ApplicationInsightsでクエリを作成する
Azure Portal でアラートルールを定義する ApplicationInsights を開きます。続いて画面左のタブにある「ログ(Analytics)」をクリックしてクエリ入力画面を開きます。
続いてこの画面でアラートルールの条件とするクエリを入力します。今回はサーバー上で発生した例外に対してアラートルールを作成してみたいと思いますので、 exceptions | where client_Type == "PC"
と入力します。クエリの文法や関数は こちら を参照してください。
アラートルールを作成する
アラートルールの作成画面ではまずクエリの実行条件を指定します。画面上の「条件」の下に表示されている文字をクリックしてアラート発砲の閾値と単位時間を設定します。
今回は実験目的のため閾値として 0回以上 、 5分毎5分間隔 を指定しました。
続いてアラートルールの通知先を指定します。
通知先はアクショングループとして管理され、このアラートルールに指定したアクショングループに含まれる通知先全てにアラートが送信されます。
Teams に Webhook を送信するには予め Teams 上で Incoming Webhook コネクターを作成し URL を取得します。作成方法はこちらを参考にして下さい。
アクショングループの作成画面ではアクションの種類として「Webhook」を選択して、 URL に Teams の Incoming Webhook の URL を設定することで、アラートを Teams に送信することができます。
Teams が受け取り可能なアラート本文の作成
最後にアクションのカスタマイズにある「webhook用のカスタムJsonペイロードを含む」にチェックを入れて、Webhook に対して標準のアラート JSON ではなく独自の JSON を送信するようにします。
Teams の Webhook が受け取ることが出来るフォーマットは2種類あり、そのうちシンプルな方は JSON の プロパティとして text
プロパティを1つだけ定義します。ですので、カスタム JSON ペイロードを text
プロパティ1つだけとして、そのテキストに通知したい情報を設定します。
{ "text": "#alertrulename が検知されました。 #linktosearchresults" }
この設定を行うと、サーバー上で何らかの Exception が検知されると Teams に対してアラートが送信されるようになります。