• ccf代表

Microsoft 365 TeamsのWebhookとAzure Monitorの連携

社内の連絡方法をTeamsに変えたところ、色々な機能があることがわかりました。その中で、様々なシステムとの親和性が高そうなWebhook機能について、検証してみました。


Azure Monitor のメトリックによる監視をTeamsで受けてみることにしました。はじめは安易にTeamsのチームチャネルのIncoming WebhookのコネクタのURLをアクションのWebhookを直接入れれば、受けられるかも??って思ったんですが、うまく行かず、LogicAppsで受けてから、アクションのWebhookに流すことにしました。

つまり、Azure Monitor アクション → LogicApps → Teams チャネルという順番です。

 

調べるのに時間がかかった点

①メトリックアラートのJSONペイロードのサンプル探し

②ペイロードに含まれる値をTeamsに流す際の「For each」ループ設定で受け取る値と出力する値探し

 

①メトリックアラートのJSONペイロードのサンプル探し


Azureを利用する時に結構めんどくさいのが用語と用語の相関です。Azure Monitorを使って監視をするときには、色々なパターンがあって、今回はホストVM監視(Virtual Machine Host Monitor)を使用します。そのため、メトリックアラートになります。

※下の図では「Platform Metrics」となっている部分です。

出典(https://docs.microsoft.com/ja-jp/azure/azure-monitor/insights/monitor-vm-azure


ここまでの理解に時間がかかりました。


なので、JSONペイロードのサンプルは以下のURLにありました。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/alerts-metric-near-real-time


その結果以下のように「HTTP要求の受信時」のスキーマを定義できました。


 

②ペイロードに含まれる値をTeamsに流す際の「for each」ループ設定で受け取る値と出力する値探し


実際にペイロードがあっているかよくわからないのと、Logic Apps自体もよくわからないので、そもそもどうやってデータを受けるのかにも苦労しましたが、頭を悩ませたのは、JSON形式で受けたデータをメッセージ欄に出す方法です。

よく理由はわかりませんが、JSONのデータをメッセージに書くときには自動的に「For each」ループが呼び出されます。


ユーザに紐付けずに「フローボット」ととして、出力させます。そして、チーム名とチャネルをしています。メッセージのチェックボックスを有効にします。


「MetricValue」が実際の監視データなんですが、表示されません。


しかし、よくわかりませんが、検索すると出てきます。


以下のような感じになります。なぜか、「For each」ループが2つ出来上がります。「allOf」はJSONデータのすべてを指していると思うのですが、「dimensions」が入れ子で選択されています。何かの配列を処理しているのでしょうか。不明です。

 

以下のようにTeamsに表示されます。概念的にはAzureに限らずWebhookを投稿できるアプリや外部コマンド(curl等を呼び出す)が使用できる環境であれば、Teamsに投稿できるんでそうです。


Azure上では特別なプログラムを使わなくても、Mircosoft 365と連携できそうです。





閲覧数:519回0件のコメント