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 资源管理器的虚拟机和虚拟机规模集发出基本(主机级)指标。 此外,为 Azure VM 和虚拟机规模集配置诊断数据集合时,Azure 诊断扩展也会发出来宾 OS 性能计数器。 这些计数器通常称为“来宾 OS 指标”。在自动缩放规则中使用所有这些指标。

如果使用虚拟机规模集,并发现特定指标未列出,可能是其在诊断扩展中已禁用

如果特定指标未采样或以所需的频率传输,可以更新诊断配置。

如果发生上述任一情况,请参阅使用 PowerShell 在运行 Windows 的虚拟机中启用 Azure 诊断,配置和更新 Azure VM 诊断扩展以启用该指标。 文章还包含一个诊断配置文件示例。

基于 Resource Manager 的 Windows 和 Linux VM 的主机指标

默认情况下,将向 Windows 和 Linux 实例中的 Azure VM 和虚拟机规模集发出以下主机级指标。 这些指标可描述 Azure VM,但这些指标是从 Azure VM 主机而不是通过来宾 VM 上安装的代理收集的。 可在自动缩放规则中使用这些指标。

基于资源管理器的 Windows VM 的来宾 OS 指标

在 Azure 中创建 VM 时,使用诊断扩展会启用诊断。 诊断扩展会发出一组从 VM 内部获取的指标。 这意味着可以使用不是在默认情况下发出的指标进行自动缩放。

可以针对下列指标创建警报:

指标名称 计价单位
\Processor(_Total)% Processor Time 百分比
\Processor(_Total)% Privileged Time 百分比
\Processor(_Total)% User Time 百分比
\Processor Information(_Total)\Processor Frequency 计数
\System\Processes 计数
\Process(_Total)\Thread Count 计数
\Process(_Total)\Handle Count 计数
\Memory% Committed Bytes In Use 百分比
\Memory\Available Bytes 字节
\Memory\Committed Bytes 字节
\Memory\Commit Limit 字节
\Memory\Pool Paged Bytes 字节
\Memory\Pool Nonpaged Bytes 字节
\PhysicalDisk(_Total)% Disk Time 百分比
\PhysicalDisk(_Total)% Disk Read Time 百分比
\PhysicalDisk(_Total)% Disk Write Time 百分比
\PhysicalDisk(_Total)\Disk Transfers/sec 每秒计数
\PhysicalDisk(_Total)\Disk Reads/sec 每秒计数
\PhysicalDisk(_Total)\Disk Writes/sec 每秒计数
\PhysicalDisk(_Total)\Disk Bytes/sec 每秒字节数
\PhysicalDisk(_Total)\Disk Read Bytes/sec 每秒字节数
\PhysicalDisk(_Total)\Disk Write Bytes/sec 每秒字节数
\PhysicalDisk(_Total)\Avg.磁盘队列长度 计数
\PhysicalDisk(_Total)\Avg.磁盘读取队列长度 计数
\PhysicalDisk(_Total)\Avg.磁盘写入队列长度 计数
\LogicalDisk(_Total)% Free Space 百分比
\LogicalDisk(_Total)\Free Megabytes 计数

Linux VM 的来宾 OS 指标

在 Azure 中创建 VM 时,使用诊断扩展会默认启用诊断。

可以针对下列指标创建警报:

指标名称 计价单位
\Memory\AvailableMemory 字节
\Memory\PercentAvailableMemory 百分比
\Memory\UsedMemory 字节
\Memory\PercentUsedMemory 百分比
\Memory\PercentUsedByCache 百分比
\Memory\PagesPerSec 每秒计数
\Memory\PagesReadPerSec 每秒计数
\Memory\PagesWrittenPerSec 每秒计数
\Memory\AvailableSwap 字节
\Memory\PercentAvailableSwap 百分比
\Memory\UsedSwap 字节
\Memory\PercentUsedSwap 百分比
\Processor\PercentIdleTime 百分比
\Processor\PercentUserTime 百分比
\Processor\PercentNiceTime 百分比
\Processor\PercentPrivilegedTime 百分比
\Processor\PercentInterruptTime 百分比
\Processor\PercentDPCTime 百分比
\Processor\PercentProcessorTime 百分比
\Processor\PercentIOWaitTime 百分比
\PhysicalDisk\BytesPerSecond 每秒字节数
\PhysicalDisk\ReadBytesPerSecond 每秒字节数
\PhysicalDisk\WriteBytesPerSecond 每秒字节数
\PhysicalDisk\TransfersPerSecond 每秒计数
\PhysicalDisk\ReadsPerSecond 每秒计数
\PhysicalDisk\WritesPerSecond 每秒计数
\PhysicalDisk\AverageReadTime
\PhysicalDisk\AverageWriteTime
\PhysicalDisk\AverageTransferTime
\PhysicalDisk\AverageDiskQueueLength 计数
\NetworkInterface\BytesTransmitted 字节
\NetworkInterface\BytesReceived 字节
\NetworkInterface\PacketsTransmitted 计数
\NetworkInterface\PacketsReceived 计数
\NetworkInterface\BytesTotal 字节
\NetworkInterface\TotalRxErrors 计数
\NetworkInterface\TotalTxErrors 计数
\NetworkInterface\TotalCollisions 计数

常用的应用服务(服务器场)指标

也可以根据常用的 Web 服务器指标(如 HTTP 队列长度)执行自动缩放。 其指标名称为 HttpQueueLength。 以下部分列出了可用的服务器场(应用服务)指标。

Web 应用指标

如果是 Web 应用,可以针对这些指标发出警报或以其为缩放依据。

指标名称 计价单位
CpuPercentage 百分比
MemoryPercentage 百分比
DiskQueueLength 计数
HttpQueueLength 计数
BytesReceived 字节
BytesSent 字节

常用的存储指标

可以按 Azure 存储队列长度进行缩放,该长度是存储队列中的消息数。 存储队列长度是一个特殊指标,阈值是每个实例的消息数。 例如,如果有两个实例并且阈值设置为 100,则当队列中的消息总数为 200 时会进行缩放。 这两个实例的消息数可能各为 100,或分别为 120 和 80,或者为其他相加大于等于 200 的数字组合。

在 Azure 门户的“设置”窗格中配置此设置。 若使用虚拟机规模集,可以将资源管理器模板中的自动缩放设置更新为将 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"

常用的服务总线指标

可以按 Azure 服务总线队列的长度进行缩放,该长度是服务总线队列中的消息数量。 服务总线队列长度是一个特殊指标,阈值是每个实例的消息数。 例如,如果有两个实例并且阈值设置为 100,则当队列中的消息总数为 200 时会进行缩放。 这两个实例的消息数可能各为 100,或分别为 120 和 80,或者为其他相加大于等于 200 的数字组合。

若使用虚拟机规模集,可以将资源管理器模板中的自动缩放设置更新为将 metricName 用作 ActiveMessageCount,并传递服务总线队列的 ID 作为 metricResourceUri

"metricName": "ActiveMessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/SUBSCRIPTION_ID/resourceGroups/RES_GROUP_NAME/providers/Microsoft.ServiceBus/namespaces/SB_NAMESPACE/queues/QUEUE_NAME"

注意

对于服务总线,不存在资源组这一概念。 Azure 资源管理器会为每个区域创建一个默认资源组。 此资源组通常采用“Default-ServiceBus-[region]”的格式。 示例有“Default-ServiceBus-ChinaNorth”、“Default-ServiceBus-ChinaEast”,等等。