Azure Monitorのエラー通知をわかりやすく改善する

はじめに

クラウドを運用していると、「障害やエラーの通知」がとても重要です。
Azure Monitorはエラーを検知してメールで教えてくれる便利な機能ですが、アラートの通知メールをそのまま使っていると次のようなお悩みがでてきませんか?

  • 通知が英語で届くので内容がすぐにわかりにくい
  • エラー発生時刻がUTC(協定世界時)のままで対応しづらい
  • 通知の中身がシンプルすぎてエラーの場所や影響範囲がわかりづらい

実際に「アラートの通知内容をもっとわかりやすくできませんか?」というご相談をいただいたことから、今回改善に取り組みました。

Logic Appsを使って通知をカスタマイズ

Azure Monitorの通知は、標準でカスタムクエリを用いたエラー検出とアクショングループによるメール通知を行うことができますが、通知内容を整形することはできず、英文・UTCの形式で届きます。
そこで、Logic Apps(ロジックアプリ)の出番です。通知の内容を見やすく整えることができます。

今回、以下のように設計を変更しました。

1. Logic Appsのリソースを作成

2. Azure Monitorの送信先として、アクショングループにLogic Appsを登録

3. Logic Appsの中で受信したエラーログのデータを日本語・JSTのメール文に整形し、メール通知

実際にやったこと

1. Logic Apps の作成

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

2. Azure Monitor のアクショングループと連携

Azure Monitorのアクショングループを作成します。アクションタブから、通知アクションとしてLogic Appsを選択し、作成済みのLogic Appsリソースを指定します。(通知タブの標準のメール設定は今回不要なのでスキップします。)
「共通アラートスキーマを有効にする」にチェックを入れることで、Logic Appsへのデータ送信がスムーズになります。

3. アラートルールの設定

Azure Monitorで「どんな条件のときに通知を出すか」を設定します。

  • スコープで監視対象のリソースを選択
  • 条件に「カスタムログ検索」を使って、特定のエラーログを検索
  • アクションで作成したアクショングループを選択して保存

4. Logic Apps内で通知メールを整形

Logic Appsのロジックアプリデザイナーを開きます。

ワークフロー内では、受信したアラートデータを For each で展開し、対象のエラーごとにメール本文を構築します。

時刻のUTC -> JST変換には convertTimeZone 関数が利用できます。

convertTimeZone(triggerBody()?['data']?['essentials']?['firedDateTime'], 'UTC', 'Tokyo Standard Time', 'yyyy-MM-dd HH:mm:ss')

Gmailの場合:

  • アクション「Gmail: メールの送信(V2)」を追加
  • 件名:エラーの種類やリソース名を含める
  • 本文:アラート説明、日本語変換済みの発生時刻(JST)などを記載
  • 初回はGoogleアカウント連携が必要

SendGridの場合:

  • アクション「SendGrid: メールの送信(V4)」を追加
  • APIキーを入力し、Gmailの場合と同様に件名や本文をカスタマイズ

5. メール内容の確認

アクショングループから通知のテストを行います。以下のようにLogic Appsでログが整形されたメールを受信することができるようになりました。

おわりに

Azure Monitorの通知が今回の改善でさらに実用的で良いものとなりました。
Logic Appsを組み合わせることで、運用現場に寄り添った通知フローを構築することができます。

もし同じような課題を抱えている方がいれば、ぜひこのアプローチを参考にしてみてください。

「Azure」に関連する記事

株式会社ウィズワンダー 採用情報 - エンゲージで詳細をご確認ください