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

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

Webhooks

Webhook を使用すると、後処理やカスタム通知のために、Azure アラート通知を他のシステムにルーティングすることができます。 たとえば、受信 Web 要求を処理して SMS を送信する、バグをログに記録する、チャットやメッセージング サービスを使用してチームに通知するなどのサービスにアラートをルーティングできます。 Webhook URI は有効な HTTP または HTTPS エンドポイントである必要があります。

電子メール

任意の有効なメール アドレスにメールを送信できます。 このルールが実行されているサブスクリプションの管理者と共同管理者にも通知されます。

Cloud Services と App Service

Azure portal から Azure Cloud Services とサーバー ファーム (Azure App Service) をオプトインできます。

  • [スケールの基準] メトリックを選択します。

    自動スケーリングの設定ウィンドウを示すスクリーンショット。

仮想マシン スケール セット

Azure Resource Manager で作成された比較的新しい仮想マシン (仮想マシン スケール セット) の場合、REST API、Resource Manager テンプレート、PowerShell、Azure CLI を使用して構成できます。 Azure portal インターフェイスはまだ使用できません。

REST API または Resource Manager テンプレートを使用する場合は、次のオプションを使用して自動スケーリング設定に通知要素を追加してください。

"notifications": [
      {
        "operation": "Scale",
        "email": {
          "sendToSubscriptionAdministrator": false,
          "sendToSubscriptionCoAdministrators": false,
          "customEmails": [
              "user1@mycompany.com",
              "user2@mycompany.com"
              ]
        },
        "webhooks": [
          {
            "serviceUri": "https://foo.webhook.example.com?token=abcd1234",
            "properties": {
              "optional_key1": "optional_value1",
              "optional_key2": "optional_value2"
            }
          }
        ]
      }
    ]
フィールド Mandatory 説明
operation はい 値は "Scale" にする必要があります。
sendToSubscriptionAdministrator はい 値は "true" または "false" にする必要があります。
sendToSubscriptionCoAdministrators はい 値は "true" または "false" にする必要があります。
customEmails はい 値として null [] または電子メールの文字列配列を指定できます。
webhooks はい 値として null または有効な URI を指定できます。
serviceUri はい 有効な HTTPS URI。
properties はい 値は空 {} にするか、キーと値のペアを指定できます。

Webhook での認証

webhook はトークンベースの認証を利用して認証できます。クエリ パラメーターとしてトークン ID を使用し、webhook URI を保存します。 例: https://mysamplealert/webcallback?tokenid=sometokenid&someparameter=somevalue。

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

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

{
        "version": "1.0",
        "status": "Activated",
        "operation": "Scale In",
        "context": {
                "timestamp": "2016-03-11T07:31:04.5834118Z",
                "id": "/subscriptions/s1/resourceGroups/rg1/providers/microsoft.insights/autoscalesettings/myautoscaleSetting",
                "name": "myautoscaleSetting",
                "details": "Autoscale successfully started scale operation for resource 'MyCSRole' from capacity '3' to capacity '2'",
                "subscriptionId": "s1",
                "resourceGroupName": "rg1",
                "resourceName": "MyCSRole",
                "resourceType": "microsoft.classiccompute/domainnames/slots/roles",
                "resourceId": "/subscriptions/s1/resourceGroups/rg1/providers/microsoft.classicCompute/domainNames/myCloudService/slots/Production/roles/MyCSRole",
                "portalLink": "https://portal.azure.com/#resource/subscriptions/s1/resourceGroups/rg1/providers/microsoft.classicCompute/domainNames/myCloudService",
                "oldCapacity": "3",
                "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 呼び出しに戻すこともできます。