【Azure】App Serviceで500エラーが発生したらメールを通知する アラートルール/アクショングループ/アラート処理ルール
概要
AppServiceにデプロイしたWeb APIで、特定のエラーが発生したときにメールを通知するように設定します。
Azure Monitorのアラートには、アラートルール
,アクショングループ
,アラート処理ルール
という3つのコンポーネントがあります。このハンズオンを通して、この3つについても理解を深めていきたいと思います。
前提
簡単なWebAPIが作成済みで、App Serviceにデプロイされていることが前提です。
また、わざと例外を発生させるためのエンドポイントを追加しています。アラートを発生させる際にはこのエンドポイントを叩きます。
// Warn / Error 系のログを出力するテストエンドポイントを追加
[HttpGet("test-exception")]
public IActionResult TestException()
{
try
{
_logger.LogInformation("Information: About to throw an exception for testing purposes.");
throw new InvalidOperationException("テスト例外");
}
catch (Exception ex)
{
_logger.LogWarning("Warning: 例外が発生しました。");
_logger.LogError(ex, "Error: 例外が発生しました。");
_logger.LogCritical("Critical: 例外が発生しました。");
return StatusCode(500, "時間を置いて試してください。");
}
}
App Serviceの作成やApp Serviceへのデプロイは、下記の記事をご覧ください。
アラートに関する用語の整理
まずは、アラートルール
,アクショングループ
,アラート処理ルール
について整理します。
アラートルール
ある条件が満たされたときにアラートを発生させるためのルールです。
アクショングループと紐付けることで、アラート発生時に指定したアクションを実行することができます。例えば、特定のHTTPエラーが発生したときにメール通知するなどです。
条件にはさまざまなメトリクスが使用できます。
アクショングループ
アラートがトリガーされたときに実行するアクションのセットのことを指します。
指定できるアクションは2種類あります。
1つは通知タイプ(メール/SMS/プッシュ通知/音声)で、もう1つはアクションタイプ(Automation Runbook/Azure関数/ITSM/Webhook/イベントハブ/ロジックアプリ)です。
アクショングループは、アラートルールやアラート処理ルールと紐付ける形で使用します。
アラート処理ルール
アラートルールにより発生したアラートに対して、さらに追加条件やアクションを適用するためのルールです。発生したアラートをさらにカスタマイズするためのルールというイメージでしょうか。
例えば、「計画メンテナンス中や夜間ははアラートを通知しない」、「重要度の高いエラーを特定のチームやメンバーに追加で通知する」などを実現できます。
アラートルールを作成する
では、実際にアラートルールを作成していきましょう。
前述の通り、App ServiceにデプロイしているAPIで500エラーが発生したら、メール通知をするように設定してきます。
Azure Portalのモニター
> アラートルール
> 作成
を選択し、アラートルールを作成します。
まず、スコープタブで、対象のApp Serviceを選択します。
つづいて、条件タブでアラートを発生させる条件を選択します。
条件 | ||
---|---|---|
シグナル名 | Http Server Errors | |
しきい値 | Static | |
集計の種類 | 合計 | 平均/最大値/最小/合計/カウントのいずれから選択 |
演算子 | 次の値より大きい | |
しきい値 | 1 |
次に、アクショングループを指定します。ここでは新規でメール送信のためのアクショングループを作成します。
既にアクショングループを作成していれば、既存のアクショングループを選択することも可能です。
アクショングループの作成: 基本 | ||
---|---|---|
リージョン | グローバル | |
アクショングループ名 | email-notification-group | |
表示名 | email-noti-g | メールやSMS内で使用されるアクショングループ名 |
アクショングループの作成: 通知 | |
---|---|
通知タイプ | 電子メール/SMS メッセージ/プッシュ/音声 |
電子メール | 任意のメールアドレス |
名前 | 任意 |
アクショングループの作成: アクション | ||
---|---|---|
アクションタイプ | Automation Runbook/Azure関数/ITSM/Webhook/イベントハブ/セキュリティで保護されたWebhook/ロジックアプリ から選択 | 通知以外のアクションをトリガーしたい場合はこちらから選択します。 |
今回はメール送信のみのため選択しません |
上記の設定でアクショングループを作成します。
今作成したアクショングループが選択された状態となりました。
最後に詳細タブの内容を入力します。
詳細 | |
---|---|
重大度 | 1 - エラー |
アラートルール名 | az104-test-api-server-error-rule |
上記の設定で、アラートルールを作成します。
アラートや通知が発生するかを確認する
実際に、API側で500エラーを起こします。
テスト用に500エラーを発生させるためのエンドポイントがありますので、ブラウザにこのエンドポイントを打ち込みます。
Azure Portalのモニター
> アラート
を確認すると、先ほど設定したルールによるアラートが出ていることが確認できました。
また、メール通知も来ています。
アラート処理ルールを作成する
続いて、アラート処理ルールを作成し、毎日20時〜翌朝7時の時間帯にメール通知を行わないようにしていきます。
Azure Portalのモニター
> アラート処理ルール
> 作成
を選択し、対象のAppServiceを指定します。
次に、ルールの設定タブで通知を表示しない
を選択します。
スケジュールタブで、アラートが発生しても通知をしない時間帯(毎日20時〜翌朝7時)を指定します。
詳細タブでリソースグループやこのアラート処理ルールの名前を指定します。
上記の設定で、アラート処理ルールを作成します。
20時〜7時はメール通知されないことを確認する
今設定したアラート処理ルールにより、20時〜7時の間は通知がされないはずです。
20時〜7時の時間帯に、例外を発生させるエンドポイントをブラウザのアドレスバーに打ち込みます。
しばらく時間を置いて確認しましたが、アラートも発生せず、メール通知もされませんでした。
7時以降に再度例外を発生させてみると、今度はアラートが発生し、通知メールもちゃんと届きました。
以上、Azureにおけるアラート、特にアラートルール
、アクショングループ
、アラート処理ルール
を理解するためのハンズオンでした。
Discussion