你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
排查 Azure Monitor 自动缩放问题
Azure Monitor 自动缩放可帮助你运行适当数量的资源来处理应用程序的负载。 在负载增加时,可以通过自动缩放添加资源来处理增加的负载;在资源处于空闲状态时,可以通过自动缩放删除资源来节省资金。 可以根据你选择的计划、固定的日期时间或资源指标进行缩放。 有关详细信息,请参阅自动缩放概述。
自动缩放服务提供了指标和日志,帮助你了解发生了哪些缩放操作,它还可以评估导致执行这些操作的条件。 你可以找到下面所述的问题的答案:
- 为何横向扩展或横向缩减了我的服务?
- 我的服务为何未缩放?
- 自动缩放操作为何失败?
- 自动缩放操作为何花费了很长时间?
Flex 虚拟机规模集
为一组特定的虚拟机操作将手动缩放操作应用于 Flex Microsoft.Compute/virtualMachineScaleSets (VMSS) 资源后,自动缩放操作会延迟最多数小时。
例如,Azure VM CLI Delete 或 Azure VM Rest API Delete,当操作在单个 VM 上执行时。
在这些情况下,自动缩放服务不知道各个 VM 操作。
若要避免这种情况,请使用相同的操作,但在虚拟机规模集级别执行。 例如,Azure VMSS CLI Delete instance 或 Azure VMSS Rest API Delete Instance。 自动缩放可检测虚拟机规模集中的实例计数更改,并执行相应的缩放操作。
自动缩放指标
自动缩放提供了四个指标,以便你了解其操作:
- 观察到的指标值:你选择针对其执行缩放操作的指标的值,由自动缩放引擎查看或计算。 由于一个自动缩放设置可以包含多个规则(因而也包含多个指标源),你可以使用“指标源”作为维度进行筛选。
- 指标阈值:设置的阈值,达到该阈值即会执行缩放操作。 由于一个自动缩放设置可以包含多个规则(因而也包含多个指标源),你可以使用“指标规则”作为维度进行筛选。
- 观察到的容量:自动缩放引擎显示的目标资源的活动实例数。
- 启动的缩放操作数:自动缩放引擎启动的横向扩展和横向缩减操作的数目。 可按横向扩展与横向缩减操作进行筛选。
可以使用指标资源管理器在一个位置绘制上述所有指标的图表。 该图表应显示:
- 实际指标。
- 自动缩放引擎看到/计算的指标。
- 缩放操作的阈值。
- 容量变化。
示例 1:分析自动缩放规则
虚拟机规模集的自动缩放设置:
- 如果某个规模集的平均 CPU 利用率百分比持续 10 分钟大于 70%,则横向扩展。
- 如果该规模集的 CPU 利用率百分比持续 10 分钟以上小于 5%,则横向缩减。
让我们查看自动缩放服务提供的指标。
下图显示了虚拟机规模集的“CPU 百分比”指标。
下一个图表显示自动缩放设置的“观察到的指标值”指标。
最后的图表显示“指标阈值”和“观察到的容量”指标。 横向扩展规则顶部的“指标阈值”指标为 70。 底部“观察到的容量”指标显示活动实例数,当前为 3。
注意
可以按指标触发器规则维度横向扩展(增加)规则筛选“指标阈值”来查看横向扩展阈值,也可以按横向缩减规则(减少)进行筛选。
示例 2:虚拟机规模集的高级自动缩放
可以使用自动缩放设置来使虚拟机规模集资源能够根据其自己的“出站流”指标进行横向扩展。 将选择指标阈值的“将指标除以实例计数”选项。
缩放操作规则是,如果“每个实例的出站流”值大于 10,则应将自动缩放服务横向扩展 1 个实例。
在这种情况下,自动缩放引擎的“观察到的指标值”的计算方式是将实际指标值除以实例数。 如果观察到的指标值小于阈值,则不启动横向扩展操作。
以下屏幕截图显示了两个指标图表。
“平均出站流”图表显示“出站流”指标的值。 实际值为 6。
下图显示了几个值:
如果有多个缩放操作规则,则可以使用指标资源管理器图表中的“拆分”或“添加筛选器”选项,按特定的源或规则查看指标。 有关拆分指标图表的详细信息,请参阅指标图表的高级功能 - 拆分。
示例 3:了解自动缩放事件
在自动缩放设置屏幕上,转到“运行历史记录”选项卡查看最近的缩放操作。 该选项卡还会显示“观察到的容量”在一段时间内的变化。 若要查找有关所有自动缩放操作(包括更新/删除自动缩放设置等操作)的更多信息,请查看活动日志并按自动缩放操作进行筛选。
自动缩放资源日志
自动缩放服务提供资源日志。 有两种类别的日志:
- 自动缩放评估:自动缩放引擎每次执行检查时,都会针对每一条件评估记录相应的日志条目。 该条目包含有关所观察到的指标值、评估的规则以及该评估是否导致发生缩放操作的详细信息。
- “自动缩放”缩放操作:引擎将会记录自动缩放服务发起的缩放操作事件,以及这些缩放操作的结果(成功、失败,以及自动缩放服务看到的缩放量)。
与在 Azure Monitor 支持的任何服务中一样,你可以使用诊断设置将这些日志:
- 路由到 Log Analytics 工作区进行详细分析。
- 路由到 Azure 事件中心,然后再到非 Azure 工具。
- 路由到 Azure 存储帐户进行存档。
前面的屏幕截图显示了 Azure 门户自动缩放“诊断设置”窗格。 在其中可以选择“诊断/资源日志”选项卡,并启用日志收集和路由。 你还可以使用 REST API、Azure CLI、PowerShell 和 Azure 资源管理器模板,通过选择“Microsoft.Insights/AutoscaleSettings”作为资源类型,对诊断设置执行相同的操作。
使用自动缩放日志进行故障排除
为了获得最佳的故障排除体验,建议在创建自动缩放设置时,通过工作区将日志路由到 Azure Monitor 日志 (Log Analytics)。 上一部分的屏幕截图已演示了此过程。 使用 Log Analytics 可以更好地验证评估和缩放操作。
将自动缩放日志配置为发送到 Log Analytics 工作区后,可以执行以下查询来检查日志。
若要开始,请尝试使用此查询来查看最近的自动缩放评估日志:
AutoscaleEvaluationsLog
| limit 50
或者尝试使用以下查询来查看最近的缩放操作日志:
AutoscaleScaleActionsLog
| limit 50
如果遇到任何问题,请参考以下部分。
发生了意料之外的缩放操作
首先对缩放操作执行查询,找到你所关注的缩放操作。 如果它是最新的缩放操作,请使用以下查询:
AutoscaleScaleActionsLog
| take 1
在缩放操作日志中选择 CorrelationId
字段。 使用 CorrelationId
查找正确的评估日志。 执行以下查询会显示已评估并导致该缩放操作的所有规则和条件。
AutoscaleEvaluationsLog
| where CorrelationId = "<correliationId>"
哪个配置文件导致发生了缩放操作?
发生了缩放操作,但你的规则和配置文件重叠,需要追查到哪一个配置文件导致发生了该操作。
查找缩放操作的 CorrelationId
,如示例 1 中所述。 然后对评估日志执行查询,了解有关配置文件的详细信息。
AutoscaleEvaluationsLog
| where CorrelationId = "<correliationId_Guid>"
| where ProfileSelected == true
| project ProfileEvaluationTime, Profile, ProfileSelected, EvaluationResult
也可以使用以下查询来更好地了解整个配置文件评估:
AutoscaleEvaluationsLog
| where TimeGenerated > ago(2h)
| where OperationName contains == "profileEvaluation"
| project OperationName, Profile, ProfileEvaluationTime, ProfileSelected, EvaluationResult
未发生缩放操作
你预期会发生某个缩放操作,但它并未发生。 可能没有缩放操作事件或日志。
如果你使用的是基于指标的缩放规则,请查看自动缩放指标。 “观察到的指标值”或“观察到的容量”值可能不符合预期,因此未触发缩放规则。 你仍然可以看到评估,但看不到横向扩展规则。 此外,冷却时间也可能会阻止发生缩放操作。
查看你预期会发生缩放操作的时间段内的自动缩放评估日志。 查看自动缩放服务执行的所有评估,确定它为何决定不触发缩放操作。
AutoscaleEvaluationsLog
| where TimeGenerated > ago(2h)
| where OperationName == "MetricEvaluation" or OperationName == "ScaleRuleEvaluation"
| project OperationName, MetricData, ObservedValue, Threshold, EstimateScaleResult
缩放操作失败
在某些情况下,自动缩放服务会执行缩放操作,但系统决定不进行缩放或者无法完成缩放操作。 使用此查询来查找失败的缩放操作:
AutoscaleScaleActionsLog
| where ResultType == "Failed"
| project ResultDescription
创建警报规则,以便在发生自动缩放操作或者失败时获得通知。 创建警报规则还可以在发生自动缩放事件时获得通知。
自动缩放资源日志的架构
有关详细信息,请参阅自动缩放资源日志。
后续步骤
阅读有关自动缩放最佳做法的信息。