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 呼び出しに戻すこともできます。 |