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 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 テンプレートの自動スケーリング設定を更新して、metricNameApproximateMessageCount として使い、ストレージ キューの 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 テンプレートの自動スケーリング設定を更新して、metricNameActiveMessageCount として使い、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 などです。