Azure Monitor で自動スケール操作を使用して電子メールと webhook アラート通知を送信する
[アーティクル] 2024/11/01
5 人の共同作成者
フィードバック
この記事の内容
Webhooks
電子メール
通知を構成する
Webhook での認証
自動スケール通知の Webhook ペイロード スキーマ
この記事では、Azure で自動スケール操作に基づいて特定の Web URL を呼び出すことや電子メールを送信することができるように通知を設定する方法について説明します。
Webhook を使用すると、特定のイベントまたはトリガーが発生したときに、特定の URL エンドポイント (コールバック URL) に HTTP 要求を送信できます。 Webhook を使用すると、さまざまなシステムやアプリケーション間で情報を自動的に交換できるようにすることで、プロセスを自動化および合理化できます。 Webhook を使用して、自動スケーリング イベントが発生したときに実行するカスタム コード、通知、またはその他のアクションをトリガーします。
自動スケーリング イベントが発生したときに、任意の有効なメール アドレスに電子メールを送信することができます。
注意
2024 年 4 月 3 日から、Azure 自動スケール通知の新しい共同管理者を追加することはできなくなります。 Azure クラシックの管理者は 2024 年 8 月 31 日に廃止され、2024 年 8 月 31 日より後は、管理者と共同管理者を使用して Azure 自動スケール通知を送信することができなくなります。 詳細については、「共同管理者の廃止の準備 」を参照してください
通知を構成するには、Azure portal、CLI、PowerShell、または Resource Manager テンプレートを使用します。
Azure portal を使用して通知を設定します。
[自動スケール設定] ページの [通知] タブを選択して、通知を構成します。
通知を送信するメール アドレスの一覧を入力します。
Webhook URI を入力すると、Web サービスに通知が送信されます。 Webhook 要求にカスタム ヘッダーを追加することもできます。 たとえば、ヘッダーやクエリ パラメーターに認証トークンを追加したり、要求のソースを識別するカスタム ヘッダーを追加したりすることができます。
az monitor autoscale update
または az monitor autoscale create
コマンドを用いて、Azure CLI を使用して通知を構成します。
通知を構成するには、次のパラメーターを使用します。
--add-action
- 自動スケーリング ルールがトリガーされたときに実行するアクション。 値は email
または webhook
で、その後にメール アドレスまたは Webhook URI が続く必要があります。
--remove-action
- --add-action
によって以前追加されたアクションを削除します。 値は email
または webhook
である必要があります。 このパラメーターは、az monitor autoscale update
コマンドにのみ関連します。
たとえば、次のコマンドでは、電子メール通知と Webhook 通知を既存の自動スケール設定に追加します。
az monitor autoscale update \
--resource-group <resource group name> \
--name <autoscale setting name> \
--add-action email pdavis@contoso.com \
--add-action webhook http://myservice.com/webhook-listerner-123
注意
--add-action
パラメーターを複数回使用することで、1 つ以上の電子メールまたは Webhook 通知を追加できます。 複数の Webhook 通知がサポートされており、JSON で確認できる場合でも、ポータルには最初の Webhook のみが表示されます。
詳細については、「az monitor autoscale 」を参照してください。
次の例は、Webhook と電子メール通知を構成する方法を示しています。
Webhook オブジェクトを作成します。
通知オブジェクトを作成します。
New-AzAutoscaleSetting
または Update-AzAutoscaleSetting
コマンドレットを使用して、通知オブジェクトを自動スケール設定に追加します。
# Assumining you have already created a profile object and have a vmssName, resourceGroup, and subscriptionId
$webhook=New-AzAutoscaleWebhookNotificationObject `
-Property @{"method"='GET'; "headers"= '"Authorization", "tokenvalue-12345678abcdef"'} `
-ServiceUri "http://myservice.com/webhook-listerner-123"
$notification=New-AzAutoscaleNotificationObject `
-EmailCustomEmail "pdavis@contoso.com" `
-Webhook $webhook
New-AzAutoscaleSetting -Name autoscalesetting2 `
-ResourceGroupName $resourceGroup `
-Location eastus `
-Profile $profile `
-Enabled -Notification $notification `
-PropertiesName "autoscalesetting" `
-TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"
Resource Manager テンプレート または REST API を使用する場合は、次のような notifications
要素を自動スケール設定 に追加してください。
"notifications": [
{
"operation": "Scale",
"email": {
"sendToSubscriptionAdministrator": false,
"sendToSubscriptionCoAdministrators": false,
"customEmails": [
"user1@mycompany.com",
"user2@mycompany.com"
]
},
"webhooks": [
{
"serviceUri": "https://my.webhook.example.com?token=abcd1234",
"properties": {
"optional_key1": "optional_value1",
"optional_key2": "optional_value2"
}
}
]
}
]
テーブルを展開する
フィールド
Mandatory
説明
operation
はい
値は Scale
とする必要があります。
sendToSubscriptionAdministrator
はい
サポート対象から除外されました。 値は false
とする必要があります。
sendToSubscriptionCoAdministrators
はい
サポート対象から除外されました。 値は false
とする必要があります。
customEmails
はい
値として null [] または電子メールの文字列配列を指定できます。
webhooks
はい
値として null または有効な URI を指定できます。
serviceUri
はい
有効な HTTPS URI。
properties
はい
値は空 {} にするか、キーと値のペアを指定できます。
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 呼び出しに戻すこともできます。