2025-05-30
クラウドを運用していると、「障害やエラーの通知」がとても重要です。
Azure Monitorはエラーを検知してメールで教えてくれる便利な機能ですが、アラートの通知メールをそのまま使っていると次のようなお悩みがでてきませんか?
実際に「アラートの通知内容をもっとわかりやすくできませんか?」というご相談をいただいたことから、今回改善に取り組みました。
Azure Monitorの通知は、標準でカスタムクエリを用いたエラー検出とアクショングループによるメール通知を行うことができますが、通知内容を整形することはできず、英文・UTCの形式で届きます。
そこで、Logic Apps(ロジックアプリ)の出番です。通知の内容を見やすく整えることができます。
今回、以下のように設計を変更しました。
1. Logic Appsのリソースを作成
2. Azure Monitorの送信先として、アクショングループにLogic Appsを登録
3. Logic Appsの中で受信したエラーログのデータを日本語・JSTのメール文に整形し、メール通知
Azureポータルから「Logic Apps」を検索・作成します。
作成後、リソースの編集から最初のトリガー When a HTTP request is received
(HTTPリクエストを受信したとき)を設定します。
このトリガーは、Azure Monitorから通知データを受け取るために必要です。
また、Request Body JSON Schemaに共通アラートスキーマのJSONを貼り付けることで、通知データの形式を認識できるようになります。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/alerts/alerts-common-schema
Azure Monitorのアクショングループを作成します。アクションタブから、通知アクションとしてLogic Appsを選択し、作成済みのLogic Appsリソースを指定します。(通知タブの標準のメール設定は今回不要なのでスキップします。)
「共通アラートスキーマを有効にする」にチェックを入れることで、Logic Appsへのデータ送信がスムーズになります。
Azure Monitorで「どんな条件のときに通知を出すか」を設定します。
Logic Appsのロジックアプリデザイナーを開きます。
ワークフロー内では、受信したアラートデータを For each
で展開し、対象のエラーごとにメール本文を構築します。
時刻のUTC -> JST変換には convertTimeZone
関数が利用できます。
convertTimeZone(triggerBody()?['data']?['essentials']?['firedDateTime'], 'UTC', 'Tokyo Standard Time', 'yyyy-MM-dd HH:mm:ss')
アクショングループから通知のテストを行います。以下のようにLogic Appsでログが整形されたメールを受信することができるようになりました。
Azure Monitorの通知が今回の改善でさらに実用的で良いものとなりました。
Logic Appsを組み合わせることで、運用現場に寄り添った通知フローを構築することができます。
もし同じような課題を抱えている方がいれば、ぜひこのアプローチを参考にしてみてください。