Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

【Azure Monitor】デプロイ失敗の通知をLogic Appsを使ってやってみる

adventar.org

こんにちは、エンジニアの馬場です!
この記事はオルターブース Advent Calendar 2024の17日目の記事です。
昨日は角田さんの「AIの進化に触れる:Microsoft Copilot Studioの魅力」でした~!

aadojo.alterbooth.com


今回は最近起こったこととその解決方法についてブログ記事にしたいと思います。
ざっくりあらすじを言うと、「デプロイをIaCで自動化したのはいいが、そのデプロイが失敗した場合に何か通知が欲しい」ということです。

IaC非常に便利ですよね!わたしも最近Bicepに触れる機会がありまして、その便利さに感動していました。何らかの方法でデプロイ自動化をやってみた方はわかると思うんですが、Azureでデプロイに失敗した場合は「リソースができているように見える(一覧に表示されている)が、よく見るとステータスが失敗になってる」という状態になります。つまりいらない、使えないリソースなわけです。
使えないならそもそも一覧に表示しないでほしい、作らないでほしい気持ちもちょこっとありますが。Bicep等をローカルで実行した場合は実行コマンドが失敗したらエラーが出るので失敗したことがわかりますが、例えばアプリ上で自動実行している場合などはすぐデプロイの失敗を見つけられるかはわかりません(アプリの作り方次第であるということはさておき)。最終的にはAzureのポータル上からリソースを確認しなければいけないのかなというところです。

やっぱりいちいちポータルを見に行って確認するのも手間なので、デプロイの失敗通知を作成しようと思いました。いろいろ方法はあると思いますが、今回はLogic Appsを使って通知する仕組みを構築していきたいと思います!

Logic Appsの作成

それでは早速リソースを作っていきましょう。

  1. Azure PortalからLogic Appsを検索
  2. Logic Appsのプランを選択(今回は従量課金を選択)
  3. サブスクリプションやリソースグループを選択or作成、リソース名を入力して作成

Logic Appsリソースが作成できたら[ロジック アプリ デザイナー]を開き、トリガー[When a HTTP request is received]を選択します。
そして以下のJSONを[Request Body JSON Schema]に貼り付けましょう。

{
    "type": "object",
    "properties": {
        "schemaId": {
            "type": "string"
        },
        "data": {
            "type": "object",
            "properties": {
                "essentials": {
                    "type": "object",
                    "properties": {
                        "alertId": {
                            "type": "string"
                        },
                        "alertRule": {
                            "type": "string"
                        },
                        "severity": {
                            "type": "string"
                        },
                        "signalType": {
                            "type": "string"
                        },
                        "monitorCondition": {
                            "type": "string"
                        },
                        "monitoringService": {
                            "type": "string"
                        },
                        "alertTargetIDs": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "originAlertId": {
                            "type": "string"
                        },
                        "firedDateTime": {
                            "type": "string"
                        },
                        "resolvedDateTime": {
                            "type": "string"
                        },
                        "description": {
                            "type": "string"
                        },
                        "essentialsVersion": {
                            "type": "string"
                        },
                        "alertContextVersion": {
                            "type": "string"
                        }
                    }
                },
                "alertContext": {
                    "type": "object",
                    "properties": {}
                }
            }
        }
    }
}

アラートを通知しよう

通知の方法もいろいろありますが、今回はTeamsの任意のチャンネルに通知メッセージを送ります。

  1. ロジックアプリデザイナーの[+]マークから[アクションの追加]を選択
  2. [Microsoft Teams][チャットまたはチャネルでメッセージを投稿する] を選択
  3. サインインして任意の投稿先を選択
  4. 送信したいメッセージを入力して完了

※メッセージにデプロイID等含めたい場合はこちらをご覧ください

これでひとまずLogic Appsの設定はおしまいです。

アクショングループを作成する

今回はAzure Monitorを使用してデプロイの失敗を監視します。よってLogic Appsをトリガーするためのアクショングループというものを作成します。

  1. Azure PortalからAzure Monitorを検索
  2. [アラート] > [アクショングループ] > [作成]をクリック
  3. サブスクリプション、リソース グループ、リージョンを選択
  4. [アクション グループ名] [表示名]を入力
  5. [アクション] > [アクションタイプ][ロジックアプリ]を選択し、先ほど作成したLogic Appsを選択
  6. [アクション] > [名前]には任意の名前を入力
  7. 作成

これでAzure MonitorとLogic Appsの接続が完了です。うまく接続できたかどうかは[テスト]を実行してみましょう。

アクション グループからルールを作成

最後にこのアクショングループがどういうルールに則って実行されるのか、ルールを作成していきます。
今回は特定のリソースグループにデプロイされたリソースについてアラートを設定します。

  1. Azure Monitorリソース > [アラート] > [アラートルール] > [作成]をクリック
  2. [スコープ]を絞り込む(リソースグループを選択します)
  3. [条件] > [シグナル]を選択(シグナル名は[Create Deployment (Deployment)]を選択します)
  4. [アラートロジック][失敗]にのみチェック
  5. [アクション] > [アクション グループの使用]を選択し、先ほど作成したアクショングループを選択
  6. [詳細] > [アラートルール名]を入力
  7. 作成

以上で設定は完了です!

まとめ

Azure Monitorを使用してさっくり通知を作成することができました。
調べてみるとAzure Monitorのシグナルルールはとんでもない量のルールを検知できることがわかります。
ご自身の運用に見合ったシグナルを見つけて簡単に通知設定してみましょう!

参考

learn.microsoft.com


サービス一覧 www.alterbooth.com cloudpointer.tech www.alterbooth.com