Azure Monitor の自動スケールの一般的なメトリック
Azure Monitor の自動スケールを使用すると、テレメトリ データまたはメトリックに基づいて、実行インスタンスの数をスケールインまたはスケールアウトできます。 スケーリングは、任意のメトリックに基づいて行うことができ、別のリソースのメトリックに基づいても可能です。 たとえば、ファイアウォールのトラフィック量に基づいて仮想マシン スケール セットをスケーリングします。
この記事では、スケール イベントをトリガーするために一般的に使用されるメトリックについて説明します。
Azure 自動スケーリングでは、多くのリソースの種類がサポートされています。 サポートされているリソースの詳細については、サポートされているリソースの自動スケーリングに関するセクションを参照してください。
すべてのリソースについて、PowerShell または Azure CLI を使用して、使用可能なメトリックの一覧を取得できます
Get-AzMetricDefinition -ResourceId <resource_id>
az monitor metrics list-definitions --resource <resource_id>
Resource Manager ベースの VM のコンピューティング メトリック
既定では、Azure Resource Manager ベースの仮想マシンと Virtual Machine Scale Sets によって基本 (ホストレベル) メトリックが出力されます。 さらに、Azure VM と Virtual Machine Scale Sets の診断データ収集を構成すると、Azure Diagnostics 拡張機能によってゲスト OS パフォーマンス カウンターも出力されます。 これらのカウンターは、一般的に "ゲスト OS メトリック" と呼ばれます。これらのメトリックはすべて自動スケーリング ルールで使います。
Virtual Machine Scale Sets を使っていて、特定のメトリックが一覧に表示されない場合は、診断拡張機能で無効になっている可能性があります。
特定のメトリックが目的の頻度でサンプリングまたは転送されていない場合は、診断の構成を更新できます。
上記のいずれかに該当する場合は、「PowerShell を使用して Windows を実行している仮想マシンで Azure Diagnostics を有効にする」を参照し、Azure VM 診断拡張機能を構成および更新してメトリックを有効にしてください。 この記事には、診断構成ファイルの例も含まれています。
Resource Manager ベースの Windows と Linux VM のホスト メトリック
以下のホストレベルのメトリックは、Windows と Linux の両方のインスタンスで Azure VM と Virtual Machine Scale Sets に既定で出力されます。 これらのメトリックは Azure VM について表していますが、ゲスト VM にインストールされているエージェントを介してではなく、Azure VM ホストから収集されます。 自動スケール ルールでは、これらのメトリックを使用できます。
- Resource Manager ベースの Windows と Linux VM のホスト メトリック
- Resource Manager ベースの Windows と Linux での Virtual Machine Scale Sets のホスト メトリック
Resource Manager ベースの Windows VM のゲスト OS メトリック
診断拡張機能を使用して Azure で VM を作成すると、診断は有効になります。 診断拡張機能では、VM 内から取得した一連のメトリックを出力します。 このことは、既定では出力されないメトリックを使用して自動スケーリングを行うことができることを意味します。
次のメトリックのアラートを作成できます。
メトリックの名前 | ユニット |
---|---|
\Processor(_Total)% Processor Time | Percent |
\Processor(_Total)% Privileged Time | Percent |
\Processor(_Total)% User Time | Percent |
\Processor Information(_Total)\Processor Frequency | Count |
\System\Processes | Count |
\Process(_Total)\Thread Count | Count |
\Process(_Total)\Handle Count | Count |
\Memory% Committed Bytes In Use | Percent |
\Memory\Available Bytes | バイト |
\Memory\Committed Bytes | バイト |
\Memory\Commit Limit | バイト |
\Memory\Pool Paged Bytes | バイト |
\Memory\Pool Nonpaged Bytes | バイト |
\PhysicalDisk(_Total)% Disk Time | Percent |
\PhysicalDisk(_Total)% Disk Read Time | Percent |
\PhysicalDisk(_Total)% Disk Write Time | Percent |
\PhysicalDisk(_Total)\Disk Transfers/sec | CountPerSecond |
\PhysicalDisk(_Total)\Disk Reads/sec | CountPerSecond |
\PhysicalDisk(_Total)\Disk Writes/sec | CountPerSecond |
\PhysicalDisk(_Total)\Disk Bytes/sec | BytesPerSecond |
\PhysicalDisk(_Total)\Disk Read Bytes/sec | BytesPerSecond |
\PhysicalDisk(_Total)\Disk Write Bytes/sec | BytesPerSecond |
\PhysicalDisk(_Total)\Avg.ディスク キューの長さ | Count |
\PhysicalDisk(_Total)\Avg.Disk Read Queue Length | Count |
\PhysicalDisk(_Total)\Avg.Disk Write Queue Length | Count |
\LogicalDisk(_Total)% Free Space | Percent |
\LogicalDisk(_Total)\Free Megabytes | Count |
ゲスト OS メトリック Linux VM
Azure で VM を作成する場合、診断拡張機能を使用すると、既定で診断が有効になります。
次のメトリックのアラートを作成できます。
メトリックの名前 | ユニット |
---|---|
\Memory\AvailableMemory | バイト |
\Memory\PercentAvailableMemory | Percent |
\Memory\UsedMemory | バイト |
\Memory\PercentUsedMemory | Percent |
\Memory\PercentUsedByCache | Percent |
\Memory\PagesPerSec | CountPerSecond |
\Memory\PagesReadPerSec | CountPerSecond |
\Memory\PagesWrittenPerSec | CountPerSecond |
\Memory\AvailableSwap | バイト |
\Memory\PercentAvailableSwap | Percent |
\Memory\UsedSwap | バイト |
\Memory\PercentUsedSwap | Percent |
\Processor\PercentIdleTime | Percent |
\Processor\PercentUserTime | Percent |
\Processor\PercentNiceTime | Percent |
\Processor\PercentPrivilegedTime | Percent |
\Processor\PercentInterruptTime | Percent |
\Processor\PercentDPCTime | Percent |
\Processor\PercentProcessorTime | Percent |
\Processor\PercentIOWaitTime | Percent |
\PhysicalDisk\BytesPerSecond | BytesPerSecond |
\PhysicalDisk\ReadBytesPerSecond | BytesPerSecond |
\PhysicalDisk\WriteBytesPerSecond | BytesPerSecond |
\PhysicalDisk\TransfersPerSecond | CountPerSecond |
\PhysicalDisk\ReadsPerSecond | CountPerSecond |
\PhysicalDisk\WritesPerSecond | CountPerSecond |
\PhysicalDisk\AverageReadTime | Seconds |
\PhysicalDisk\AverageWriteTime | Seconds |
\PhysicalDisk\AverageTransferTime | Seconds |
\PhysicalDisk\AverageDiskQueueLength | Count |
\NetworkInterface\BytesTransmitted | バイト |
\NetworkInterface\BytesReceived | バイト |
\NetworkInterface\PacketsTransmitted | Count |
\NetworkInterface\PacketsReceived | Count |
\NetworkInterface\BytesTotal | バイト |
\NetworkInterface\TotalRxErrors | Count |
\NetworkInterface\TotalTxErrors | Count |
\NetworkInterface\TotalCollisions | Count |
一般的に使用される App Service (サーバー ファーム) メトリック
HTTP キューの長さなどの一般的な Web サーバー メトリックに基づいて、自動スケーリングを実行することもできます。 そのメトリック名は HttpQueueLength です。 次のセクションに、使用できるサーバー ファーム (App Service) のメトリックを一覧表示します。
Web Apps のメトリック
Web Apps では、これらのメトリックのアラートや、これらに基づいたスケーリングを行うことができます。
メトリックの名前 | ユニット |
---|---|
CpuPercentage | Percent |
MemoryPercentage | Percent |
DiskQueueLength | Count |
HttpQueueLength | Count |
BytesReceived | バイト |
BytesSent | バイト |
一般的に使用される Storage のメトリック
Azure Storage キューの長さ (Storage キュー内のメッセージ数) に応じてスケールすることができます。 Storage キューの長さは特殊なメトリックであり、しきい値は、1 インスタンスあたりのメッセージ数です。 たとえば、2 つのインスタンスがあり、しきい値が 100 に設定されている場合、キュー内の合計メッセージ数が 200 になるとスケーリングが発生します。 この量は、インスタンスあたり 100 メッセージ、120 + 80、または合計が 200 以上になるような他の組み合わせにすることができます。
この設定は、Azure portal の [設定] ペインで構成します。 Virtual Machine Scale Sets では、Resource Manager テンプレートの自動スケーリング設定を更新して、metricName
を ApproximateMessageCount
として使い、ストレージ キューの ID を metricResourceUri
として渡すことができます。
たとえば、従来のストレージ アカウントを使うと、自動スケーリング設定 metricTrigger
は、次のようになります。
"metricName": "ApproximateMessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/SUBSCRIPTION_ID/resourceGroups/RES_GROUP_NAME/providers/Microsoft.ClassicStorage/storageAccounts/STORAGE_ACCOUNT_NAME/services/queue/queues/QUEUE_NAME"
(非従来の) ストレージ アカウントでは、metricTrigger
の設定は次のようになります。
"metricName": "ApproximateMessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/SUBSCRIPTION_ID/resourceGroups/RES_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME/services/queue/queues/QUEUE_NAME"
一般的に使用される Service Bus のメトリック
Azure Service Bus キューの長さ (Service Bus キュー内のメッセージ数) に応じてスケーリングすることができます。 Service Bus キューの長さは特殊なメトリックであり、しきい値は、1 インスタンスあたりのメッセージ数です。 たとえば、2 つのインスタンスがあり、しきい値が 100 に設定されている場合、キュー内の合計メッセージ数が 200 になるとスケーリングが発生します。 この量は、インスタンスあたり 100 メッセージ、120 + 80、または合計が 200 以上になるような他の組み合わせにすることができます。
Virtual Machine Scale Sets では、Resource Manager テンプレートの自動スケーリング設定を更新して、metricName
を ActiveMessageCount
として使い、Service Bus キューの ID を metricResourceUri
として渡すことができます。
"metricName": "ActiveMessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/SUBSCRIPTION_ID/resourceGroups/RES_GROUP_NAME/providers/Microsoft.ServiceBus/namespaces/SB_NAMESPACE/queues/QUEUE_NAME"
Note
Service Bus の場合、リソース グループの概念は存在しません。 Azure Resource Manager は、リージョンごとに既定のリソース グループを作成します。 リソース グループは通常、Default-ServiceBus-[リージョン] 形式です。 たとえば、Default-ServiceBus-EastUS、Default-ServiceBus-WestUS、Default-ServiceBus-AustraliaEast などです。