Azure Monitor 自动缩放常用指标

利用 Azure Monitor 自动缩放,可以根据遥测数据或指标增加或减少正在运行的实例数。 可以根据任何指标,甚至是来自不同资源的指标进行缩放。 例如,根据防火墙的流量缩放虚拟机规模集。

本文介绍用于触发缩放事件的常见指标。

Azure 自动缩放支持许多资源类型。 有关支持的资源的详细信息,请参阅自动缩放支持的资源

对于所有资源,可以使用 PowerShell 或 Azure CLI 获取可用指标的列表

Get-AzMetricDefinition -ResourceId <resource_id> 
az monitor metrics list-definitions --resource <resource_id>

基于 资源管理器 的 VM 的计算指标

默认情况下,基于 Azure 资源管理器的虚拟机和虚拟机规模集发出基本(主机级)指标。 此外,当你为 Azure VM 和虚拟机规模集配置诊断数据收集时,Azure 诊断扩展还会输出来自来宾操作系统的性能计数器。 这些计数器通常称为“来宾操作系统指标”。所有这些指标都可用于自动缩放规则。

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

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

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

基于 资源管理器 的 Windows 和 Linux VM 的主机指标

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

基于 资源管理器 的 Windows 虚拟机的来宾操作系统指标

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

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

指标名称 单位
\处理器(_总计)% 处理器时间 百分比
\处理器(_Total)% 特权时间 百分比
\Processor(_Total)% 用户时间 百分比
\处理器信息(_Total)\处理器频率 计数
\系统\进程 计数
\进程(_Total)\线程计数 计数
\进程(_总计)\句柄计数 计数
\Memory% 已承诺字节的使用情况 百分比
\内存\可用字节 字节
\内存\已提交字节 字节
\Memory\提交限额 字节
\Memory\Pool 分页字节数 字节
\Memory\非分页内存池字节 字节
\PhysicalDisk(_Total)% 磁盘时间 百分比
\PhysicalDisk(_Total)% 磁盘读取时间 百分比
\PhysicalDisk(_Total)% 磁盘写入时间 百分比
\物理磁盘(_Total)\磁盘传输次数/秒 每秒计数
\物理磁盘(_总计)\磁盘读取次数/秒 每秒计数率
\物理磁盘(_总计)\磁盘写入次数/秒 每秒计数
\物理磁盘(_Total)\磁盘字节/秒 每秒字节数
\PhysicalDisk(_Total)\磁盘读取字节数/秒 每秒字节数
\物理磁盘(_Total)\磁盘写入字节/秒 每秒字节数
\PhysicalDisk(_Total)\平均磁盘队列长度 计数
\PhysicalDisk(_Total)\平均磁盘读取队列长度 计数
\PhysicalDisk(_Total)\平均磁盘写入队列长度 计数
\LogicalDisk(_Total)% 可用空间 百分比
\LogicalDisk(_Total)\空闲兆字节 计数

Linux 虚拟机的来宾操作系统指标

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

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

指标名称 单位
\内存\可用内存 字节
\内存\可用内存百分比 百分比
\内存\已用内存 字节
\内存\已用内存百分比 百分比
\内存\缓存使用百分比 百分比
\Memory\PagesPerSec 每秒计数
\Memory\PagesReadPerSec(内存每秒读取页数) 每秒计数率
\内存\每秒写入页数 每秒计数
\内存\可用交换 字节
\Memory\PercentAvailableSwap 百分比
\Memory\UsedSwap 字节
\Memory\已用交换空间百分比 百分比
\处理器\空闲时间百分比 百分比
\Processor\PercentUserTime 百分比
\Processor\PercentNiceTime 百分比
处理器\特权时间百分比 百分比
\处理器\中断时间百分比 百分比
\Processor\PercentDPCTime 百分比
\处理器\处理器时间百分比 百分比
\处理器\百分比I/O等待时间 百分比
\物理磁盘\字节每秒 (\PhysicalDisk\BytesPerSecond) 每秒字节数
\PhysicalDisk\ReadBytesPerSecond 每秒字节数
\PhysicalDisk\WriteBytesPerSecond 每秒字节数
\PhysicalDisk\TransfersPerSecond 每秒计数
\物理磁盘\每秒读取次数 每秒计数
\物理磁盘\每秒写入次数 每秒计数
\物理磁盘\平均读取时间
\物理磁盘\平均写入时间
\物理磁盘\平均传输时间
\物理磁盘\平均磁盘队列长度 计数
\网络接口\已传输字节 字节
\NetworkInterface\接收字节数 字节
网络接口\数据包已传输 计数
\网络接口\接收的数据包 计数
\网络接口\总字节数 字节
\NetworkInterface\TotalRxErrors 计数
\NetworkInterface\TotalTxErrors 计数
\NetworkInterface\总碰撞次数 计数

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

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

Web 应用指标

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

指标名称 单位
CPU使用率 百分比
内存百分比 百分比
磁盘队列长度 计数
HttpQueueLength (HTTP队列长度) 计数
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-ChinaEast2 等。