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 | パーセント |
| \Processor(_Total)% Privileged Time | パーセント |
| \Processor(_Total)% User Time | パーセント |
| \プロセッサ情報(合計)\プロセッサ周波数 | カウント |
| \システム\プロセス | カウント |
| \Process(_Total)\スレッド数 | カウント |
| \Process(_Total)\Handle Count | カウント |
| \Memory% Committed Bytes In Use | パーセント |
| \メモリ\使用可能バイト数 | バイト |
| \メモリ\コミットメントされたバイト数 | バイト |
| \メモリ\コミット制限 | バイト |
| \Memory\Pool Paged Bytes | バイト |
| \Memory\Pool Nonpaged Bytes | バイト |
| \PhysicalDisk(_Total)% Disk Time | パーセント |
| \PhysicalDisk(_Total)% ディスク読み取り時間 | パーセント |
| \PhysicalDisk(_Total)% ディスク書き込み時間 | パーセント |
| \PhysicalDisk(_Total)\ディスク転送数/秒 | 秒あたりのカウント |
| \PhysicalDisk(_Total)\ディスク読み取り回数/秒 | 秒あたりのカウント |
| \PhysicalDisk(_Total)\ディスク書き込み数/秒 | 秒あたりのカウント |
| \物理ディスク(_Total)\ディスクバイト/秒 | バイト/秒 |
| \PhysicalDisk(_Total)\ディスク読み込みバイト/秒 | バイト/秒 |
| \PhysicalDisk(_Total)\ディスク書き込みバイト数/秒 | バイト/秒 |
| \PhysicalDisk(_Total)\平均ディスク キューの長さ | カウント |
| \PhysicalDisk(_Total)\Avg.ディスク読み取りキューの長さ | カウント |
| \PhysicalDisk(_Total)\平均ディスク書き込みキュー長 | カウント |
| \LogicalDisk(_Total)% Free Space | パーセント |
| \LogicalDisk(_Total)\空きメガバイト | カウント |
ゲスト OS メトリック Linux VM
Azure で VM を作成する場合、診断拡張機能を使用すると、既定で診断が有効になります。
次のメトリックのアラートを作成できます。
| メトリックの名前 | ユニット |
|---|---|
| \メモリ\利用可能メモリ | バイト |
| \メモリ\使用可能メモリの割合 | パーセント |
| \メモリ\使用済みメモリ | バイト |
| \メモリ\使用済メモリの割合 | パーセント |
| \メモリ\キャッシュ使用率割合 | パーセント |
| \Memory\PagesPerSec | 秒あたりのカウント |
| \メモリ\毎秒読み取りページ数 | 秒あたりのカウント |
| \Memory\PagesWrittenPerSec | 秒あたりのカウント |
| \Memory\AvailableSwap | バイト |
| \Memory\PercentAvailableSwap | パーセント |
| \Memory\UsedSwap | バイト |
| \Memory\PercentUsedSwap | パーセント |
| \Processor\PercentIdleTime | パーセント |
| \Processor\PercentUserTime | パーセント |
| \プロセッサー\パーセントナイスタイム | パーセント |
| \プロセッサ\特権時間の割合 | パーセント |
| \Processor\PercentInterruptTime | パーセント |
| \Processor\PercentDPCTime | パーセント |
| \プロセッサ\プロセッサ稼働時間パーセント | パーセント |
| \Processor\PercentIOWaitTime | パーセント |
| \PhysicalDisk\BytesPerSecond | バイト/秒 |
| \PhysicalDisk\毎秒読み取りバイト数 | バイト/秒 |
| \PhysicalDisk\WriteBytesPerSecond | バイト/秒 |
| \PhysicalDisk\TransfersPerSecond(物理ディスクの1秒あたりの転送数) | 秒あたりのカウント |
| \PhysicalDisk\ReadsPerSecond(秒当たりのディスク読み取り数) | 秒あたりのカウント |
| \物理ディスク\毎秒の書き込み回数 | 秒あたりのカウント |
| \PhysicalDisk\平均読み取り時間 | 秒数 |
| \PhysicalDisk\平均書き込み時間 | 秒数 |
| \PhysicalDisk\平均転送時間 | 秒数 |
| \物理ディスク\平均ディスクキュー長 | カウント |
| \ネットワークインターフェース\送信バイト数 | バイト |
| \ネットワークインターフェース\受信バイト数 | バイト |
| ネットワークインターフェース\パケット送信済み | カウント |
| \ネットワークインターフェース\受信パケット数 | カウント |
| \ネットワークインターフェイス\BytesTotal | バイト |
| \NetworkInterface\TotalRxErrors | カウント |
| \NetworkInterface\TotalTxErrors | カウント |
| \ネットワークインターフェース\合計衝突数 | カウント |
一般的に使用される App Service (サーバー ファーム) メトリック
HTTP キューの長さなどの一般的な Web サーバー メトリックに基づいて、自動スケーリングを実行することもできます。 そのメトリック名は HttpQueueLength です。 次のセクションに、使用できるサーバー ファーム (App Service) のメトリックを一覧表示します。
Web Apps のメトリック
Web Apps では、これらのメトリックのアラートや、これらに基づいたスケーリングを行うことができます。
| メトリックの名前 | ユニット |
|---|---|
| CPU使用率 | パーセント |
| メモリ使用率 | パーセント |
| ディスクキューの長さ | カウント |
| HttpQueueLength | カウント |
| 受信バイト数 | バイト |
| 送信済みバイト数 | バイト |
一般的に使用される 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"
メモ
Service Bus の場合、リソース グループの概念は存在しません。 Azure Resource Manager は、リージョンごとに既定のリソース グループを作成します。 リソース グループは通常、Default-ServiceBus-[リージョン] 形式です。 たとえば、Default-ServiceBus-EastUS、Default-ServiceBus-WestUS、Default-ServiceBus-AustraliaEast などです。