Azure Monitor で自動スケール操作を使用して電子メールと webhook アラート通知を送信する

この記事では、Azure で自動スケール操作に基づいて特定の Web URL を呼び出すことや電子メールを送信することができるように通知を設定する方法について説明します。

Webhooks

Webhook を使用すると、特定のイベントまたはトリガーが発生したときに、特定の URL エンドポイント (コールバック URL) に HTTP 要求を送信できます。 Webhook を使用すると、さまざまなシステムやアプリケーション間で情報を自動的に交換できるようにすることで、プロセスを自動化および合理化できます。 Webhook を使用して、自動スケーリング イベントが発生したときに実行するカスタム コード、通知、またはその他のアクションをトリガーします。

電子メール

自動スケーリング イベントが発生したときに、任意の有効なメール アドレスに電子メールを送信することができます。

Note

2024 年 4 月 3 日から、Azure 自動スケール通知の新しい共同管理者を追加することはできなくなります。 Azure クラシックの管理者は 2024 年 8 月 31 日に廃止され、2024 年 8 月 31 日より後は、管理者と共同管理者を使用して Azure 自動スケール通知を送信することができなくなります。 詳細については、「共同管理者の廃止の準備」を参照してください

通知を構成する

通知を構成するには、Azure portal、CLI、PowerShell、または Resource Manager テンプレートを使用します。

Azure portal を使用して通知を設定します。

[自動スケール設定] ページの [通知] タブを選択して、通知を構成します。

通知を送信するメール アドレスの一覧を入力します。

Webhook URI を入力すると、Web サービスに通知が送信されます。 Webhook 要求にカスタム ヘッダーを追加することもできます。 たとえば、ヘッダーやクエリ パラメーターに認証トークンを追加したり、要求のソースを識別するカスタム ヘッダーを追加したりすることができます。

[自動スケール設定] ページの [通知] タブを示すスクリーンショット。

Webhook での認証

webhook はトークンベースの認証を利用して認証できます。クエリ パラメーターとしてトークン ID を使用し、webhook URI を保存します。 たとえば、「 https://mysamplealert/webcallback?tokenid=123-abc456-7890&myparameter2=value123 」のように入力します。

自動スケール通知の Webhook ペイロード スキーマ

自動スケール通知が生成されると、次のメタデータが Webhook ペイロードに含まれます。

{
    "version": "1.0",
    "status": "Activated",
    "operation": "Scale Out",
    "context": {
        "timestamp": "2023-06-22T07:01:47.8926726Z",
        "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-001/providers/microsoft.insights/autoscalesettings/AutoscaleSettings-002",
        "name": "AutoscaleSettings-002",
        "details": "Autoscale successfully started scale operation for resource 'ScaleableAppServicePlan' from capacity '1' to capacity '2'",
        "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
        "resourceGroupName": "rg-001",
        "resourceName": "ScaleableAppServicePlan",
        "resourceType": "microsoft.web/serverfarms",
        "resourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-001/providers/Microsoft.Web/serverfarms/ScaleableAppServicePlan",
        "portalLink": "https://portal.azure.com/#resource/subscriptions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourceGroups/rg-001/providers/Microsoft.Web/serverfarms/ScaleableAppServicePlan",
        "resourceRegion": "West Central US",
        "oldCapacity": "1",
        "newCapacity": "2"
    },
    "properties": {
        "key1": "value1",
        "key2": "value2"
    }   
}
フィールド Mandatory 説明
status はい 自動スケール操作が生成されたことを示す状態。
operation はい インスタンスの増加の場合は "Scale Out"、インスタンスの減少の場合は "Scale In" です。
context はい 自動スケール操作のコンテキスト。
timestamp はい 自動スケール操作がトリガーされたときのタイム スタンプ。
id はい 自動スケール設定の Resource Manager ID。
name はい 自動スケール設定の名前。
details はい 自動スケール サービスが実行した操作とインスタンス数の変更の説明。
subscriptionId はい スケールされるターゲット リソースのサブスクリプション ID。
resourceGroupName はい スケールされるターゲット リソースのリソース グループ名。
resourceName はい スケールされるターゲット リソースの名前。
resourceType はい "microsoft.classiccompute/domainnames/slots/roles" (Azure Cloud Services ロール)、"microsoft.compute/virtualmachinescalesets" (Azure 仮想マシン スケール セット)、"Microsoft.Web/serverfarms" (Azure Monitor の Web アプリ機能) の 3 つの値がサポートされています。
resourceId はい スケールされるターゲット リソースの Resource Manager ID。
portalLink はい ターゲット リソースの概要ページへの Azure portal のリンク。
oldCapacity はい 自動スケールによってスケール操作が実行された時点の (以前の) インスタンス数。
newCapacity はい 自動スケールによってリソースがスケールされた後の新しいインスタンス数。
properties いいえ 省略可能。 <Key, Value> ペアのセット (例: Dictionary <String, String>)。 properties フィールドは省略可能です。 カスタム ユーザー インターフェイスまたはロジック アプリ ベースのワークフローでは、ペイロードを使用して渡すことのできるキーと値を入力できます。 Webhook URI 自体を (クエリ パラメーターとして) 使用して、カスタム プロパティを送信 Webhook 呼び出しに戻すこともできます。