你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 虚拟桌面中的见解监视自动缩放操作

使用自动缩放可以按照日程安排纵向扩展或纵向缩减主机池中的会话主机虚拟机 (VM),以优化部署成本。 自动缩放诊断数据与 Azure 虚拟桌面中的见解集成,使你能够监视缩放操作、识别需要修复的问题,并找到优化缩放计划配置的机会来节省成本。

若要详细了解自动缩放,请参阅自动缩放缩放计划和示例方案;有关 Azure 虚拟桌面中的见解的信息,请参阅启用见解来监视 Azure 虚拟桌面

注意

只能使用共用主机池通过见解监视自动缩放操作。 对于个人主机池,请参阅在 Azure 虚拟桌面中设置自动缩放诊断

先决条件

在使用见解监视自动缩放操作之前,需要:

  • 一个已分配缩放计划的共用主机池。 不支持个人主机池。

  • 为主机池及其相关工作区配置的见解。 若要了解如何配置见解,请参阅启用见解来监视 Azure 虚拟桌面

  • 一个根据方案分配了以下基于角色的访问控制 (RBAC) 角色的 Azure 帐户:

    场景 RBAC 角色 范围
    配置诊断设置 桌面虚拟化参与者 在主机池、工作区和会话主机的资源组或订阅上分配。
    查看和查询数据 桌面虚拟化读取者

    Log Analytics 读者
    - 在主机池、工作区和会话主机所在的资源组或订阅上分配的桌面虚拟化读取者角色。

    - 在用于 Azure 虚拟桌面见解的任何 Log Analytics 工作区上分配的 Log Analytics 读取者角色。1

    1.还可以创建自定义角色来缩小 Log Analytics 工作区的分配范围。 有关详细信息,请参阅管理对 Log Analytics 工作区的访问权限

配置诊断设置并验证见解工作簿配置

首先,需要确保诊断设置配置为将所需日志从主机池和工作区发送到 Log Analytics 工作区。

为主机池启用自动缩放日志

除了已发送到 Log Analytics 工作区的现有主机池日志之外,还需要发送主机池的自动缩放日志:

  1. 登录 Azure 门户

  2. 在搜索栏中,键入“Azure 虚拟桌面”,然后选择匹配的服务条目。

  3. 在 Azure 虚拟桌面概述页中选择“主机池”,然后选择要为其启用自动缩放日志的共用主机池

  4. 在主机池概述页中,选择“诊断设置”

  5. 选择“添加诊断设置”,或选择要编辑的现有诊断设置

  6. 至少选择以下类别。 如果已为此主机池选择了其中一些类别作为此诊断设置或现有设置的一部分,请不要再次选择它们,否则在保存诊断设置时会出现错误。

    • Checkpoint
    • 错误
    • Management
    • Connection
    • HostRegistration
    • AgentHealthStatus
    • 共用主机池的自动缩放日志
  7. 对于“目标详细信息”,请选择“发送到 Log Analytics 工作区”

  8. 选择“保存”。

验证工作区日志

验证是否已将工作区的所需日志发送到 Log Analytics 工作区:

  1. 在 Azure 虚拟桌面概述页中选择“工作区”,然后选择与你正在监视的主机池相关的工作区

  2. 在工作区概述页中,选择“诊断设置”

  3. 选择“编辑设置”

  4. 请确保已启用以下类别。

    • Checkpoint
    • 错误
    • Management
    • Feed
  5. 对于“目标详细信息”,请确保将数据发送到与主机池相同的 Log Analytics 工作区

  6. 如果您进行了更改,请选择保存

验证见解工作簿配置

需要验证是否为主机池正确配置了见解工作簿:

  1. 在 Azure 虚拟桌面概述页中选择“主机池”,然后选择你正在监视的共用主机池

  2. 在主机池概述页中,如果你在会话主机上使用 Azure Monitor 代理,请选择“见解”;如果在会话主机上使用 Log Analytics 代理,请选择“见解(旧版)”

  3. 确保不存在未解决的配置问题。 如果存在,你会看到如下消息:

    • 未为会话主机配置 Azure Monitor
    • 未为所选 AVD 主机池配置 Azure Monitor
    • 某些会话主机未将数据发送到预期的 Log Analytics 工作区

    需要完成相关工作簿中的配置来解决这些问题。 有关详细信息,请参阅启用见解来监视 Azure 虚拟桌面。 如果不存在配置问题,见解应如下图所示:

    显示适用于主机池的见解概述的屏幕截图。

查看自动缩放见解

配置诊断设置并验证见解工作簿配置后,可以查看自动缩放见解:

  1. 在 Azure 虚拟桌面概述页中选择“主机池”,然后选择要查看其自动缩放见解的共用主机池

  2. 在主机池概述页中,如果你在会话主机上使用 Azure Monitor 代理,请选择“见解”;如果在会话主机上使用 Log Analytics 代理,请选择“见解(旧版)”

  3. 在选项卡行中选择“自动缩放”。 根据显示器的宽度,可能需要选择省略号“...”按钮才能显示包含“自动缩放”的完整列表

    显示适用于主机池的见解概述选项卡的屏幕截图,其中选择了省略号按钮以显示包含“自动缩放”的完整列表。

  4. 见解会显示有关针对主机池的自动缩放操作的信息,例如主机池中会话主机的电源状态随时间变化的图形,以及摘要信息。

    显示适用于主机池的见解的“自动缩放”选项卡的屏幕截图。

查询 Log Analytics 中的自动缩放数据

如需自动缩放操作的其他信息,可以对 Log Analytics 中的数据运行查询。 数据将写入 WVDAutoscaleEvaluationPooled 表。 以下部分包含架构和一些示例查询。 若要了解如何在 Log Analytics 中运行查询,请参阅 Log Analytics 教程

WVDAutoscaleEvaluationPooled 架构

下表详细说明了 WVDAutoscaleEvaluationPooled 表的架构,其中包含主机池的自动缩放缩放计划评估结果。 这些信息包括自动缩放对会话主机执行的操作(例如启动或解除分配会话主机),以及执行这些操作的原因。 以 Config 开头的条目包含自动缩放计划阶段的缩放计划配置值。 如果 ResultType 值为 Failed,请使用 CorrelationId 联接到 WVDErrors 表以获取更多详细信息

名称 Type 说明
ActiveSessionHostCount int 接受用户连接的会话主机数。
ActiveSessionHostsPercent 双精度 主机池中被自动缩放视为处于活动状态的会话主机的百分比。
ConfigCapacityThresholdPercent 双精度 容量阈值百分比。
ConfigMinActiveSessionHostsPercent 双精度 应处于活动状态的会话主机的最小百分比。
ConfigScheduleName 字符串 评估中使用的计划名称。
ConfigSchedulePhase 字符串 评估时的计划阶段。
CorrelationId 字符串 为此自动缩放评估生成的 GUID。
ExcludedSessionHostCount int 从自动缩放管理中排除的会话主机数。
MaxSessionLimitPerSessionHost int 在主机池上定义的 MaxSessionLimit 值。 此值是每个会话主机允许的最大用户会话数。
Properties 动态 其他信息。
ResultType 字符串 此评估事件的状态。
ScalingEvaluationStartTime DateTime 自动缩放评估开始时的时间戳 (UTC)。
ScalingPlanResourceId 字符串 自动缩放缩放计划的资源 ID。
ScalingReasonMessage 字符串 自动缩放决定执行的操作以及执行这些操作的原因。
SessionCount int 用户会话数;仅包括会话主机中被自动缩放视为处于活动状态的用户会话。
SessionOccupancyPercent 双精度 用户会话占用的会话主机容量百分比。
TimeGenerated DateTime 生成此事件时的时间戳 (UTC)。
TotalSessionHostCount int 主机池中会话主机数。
UnhealthySessionHostCount int 处于故障状态的会话主机数。

数据示例

以下查询返回自动缩放的最近 10 行数据:

WVDAutoscaleEvaluationPooled
| take 10

评估失败并出现 WVDErrors

以下查询将表 WVDAutoscaleEvaluationPooledWVDErrors 关联起来,并返回 WVDErrors 中的 ServiceError 列为 false 的条目:

以下查询返回失败的自动缩放评估,包括部分失败的评估。 该查询还联接到 WVDErrors 以提供更多的失败详细信息(如果有)。 WVDErrors 中的相应条目仅包含 ServiceError 为 false 的结果:

WVDAutoscaleEvaluationPooled
| where ResultType != "Succeeded"
| join kind=leftouter WVDErrors
    on CorrelationId
| order by _ResourceId asc, TimeGenerated asc, CorrelationId, TimeGenerated1 asc

启动、解除分配和强制注销操作

以下查询按主机池、计划名称、计划阶段和日期返回尝试的会话主机启动、会话主机解除分配和用户会话强制注销操作次数:

WVDAutoscaleEvaluationPooled
| where ResultType == "Succeeded"
| extend properties = parse_json(Properties)
| extend BeganStartVmCount = toint(properties.BeganStartVmCount)
| extend BeganDeallocateVmCount = toint(properties.BeganDeallocateVmCount)
| extend BeganForceLogoffOnSessionHostCount = toint(properties.BeganForceLogoffOnSessionHostCount)
| summarize sum(BeganStartVmCount), sum(BeganDeallocateVmCount), sum(BeganForceLogoffOnSessionHostCount) by _ResourceId, bin(TimeGenerated, 1d), ConfigScheduleName, ConfigSchedulePhase
| order by _ResourceId asc, TimeGenerated asc, ConfigScheduleName, ConfigSchedulePhase asc

最大会话占用率和活动会话主机数

以下查询按主机池、计划名称、计划阶段和日期返回最大会话占用率百分比、会话计数、活动会话主机数百分比和活动会话主机计数:

WVDAutoscaleEvaluationPooled
| where ResultType == "Succeeded"
| summarize max(SessionOccupancyPercent), max(SessionCount), max(ActiveSessionHostsPercent), max(ActiveSessionHostCount) by _ResourceId, bin(TimeGenerated, 1d), ConfigScheduleName, ConfigSchedulePhase
| order by _ResourceId asc, TimeGenerated asc, ConfigScheduleName, ConfigSchedulePhase asc

有关日志数据在收集后可供使用的时间的详细信息,请参阅 Azure Monitor 中的日志数据引入时间