社内の連絡方法を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」となっている部分です。
ここまでの理解に時間がかかりました。
なので、JSONペイロードのサンプルは以下のURLにありました。
その結果以下のように「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と連携できそうです。
Comentários