将 Log Analytics 用于 Azure 虚拟桌面(经典版)中的诊断功能
重要
此内容适用于不支持 Azure 资源管理器 Azure 虚拟桌面对象的 Azure 虚拟桌面(经典)。 如果要尝试管理 Azure 资源管理器 Azure 虚拟桌面对象,请参阅本文
Azure 虚拟桌面提供诊断功能,允许管理员通过单个界面识别问题。 每当分配有 Azure 虚拟桌面角色的人使用该服务时,此功能都记录诊断信息。 每个日志都包含有关活动中涉及哪些 Azure 虚拟桌面角色、会话期间出现的任何错误消息、租户信息和用户信息的信息。 诊断功能为用户和管理操作创建活动日志。 每个活动日志分为三个主要类别:
- 订阅源活动:当用户尝试通过Microsoft远程桌面应用程序连接到其订阅源时。
- 连接活动:当用户尝试通过Microsoft远程桌面应用程序连接到桌面或 RemoteApp 时。
- 管理活动:当管理员对系统执行管理操作时,例如创建主机池、将用户分配到应用程序组和创建角色分配。
无法访问 Azure 虚拟桌面的连接不会显示在诊断结果中,因为诊断角色服务本身是 Azure 虚拟桌面的一部分。 当用户遇到网络连接问题时,可能会出现 Azure 虚拟桌面连接问题。
为何应使用 Log Analytics
建议使用 Log Analytics 分析 Azure 客户端中的诊断数据,这些数据超出了单用户故障排除的范围。 由于可以将 VM 性能计数器拉入 Log Analytics,因此有一个工具来收集部署信息。
开始之前
在将 Log Analytics 与诊断功能配合使用之前,需要 创建工作区。
创建工作区后,请按照 将 Windows 计算机连接到 Azure Monitor 中的说明获取以下信息:
- 工作区 ID
- 工作区的主键
稍后在安装过程中将需要此信息。
将诊断数据推送到工作区
可以将诊断数据从 Azure 虚拟桌面租户推送到工作区的 Log Analytics 中。 首次创建租户时,可以通过将工作区链接到租户来立即设置此功能,也可以稍后使用现有租户进行设置。
若要在设置新租户时将租户链接到 Log Analytics 工作区,请运行以下 cmdlet,使用 TenantCreator 用户帐户登录到 Azure 虚拟桌面:
Add-RdsAccount -DeploymentUrl https://rdbroker.wvd.microsoft.com
如果要链接现有租户而不是新租户,请改为运行以下 cmdlet:
Set-RdsTenant -Name <TenantName> -AzureSubscriptionId <SubscriptionID> -LogAnalyticsWorkspaceId <String> -LogAnalyticsPrimaryKey <String>
需要为每个要链接到 Log Analytics 的租户运行这些 cmdlet。
注意
如果不想在创建租户时链接 Log Analytics 工作区,请改为运行 New-RdsTenant
cmdlet。
发送诊断事件的频率
诊断事件在完成后发送到 Log Analytics。
示例查询
以下示例查询显示了诊断功能如何为系统中最常见的活动生成报告:
第一个示例显示由支持远程桌面客户端的用户发起的连接活动:
WVDActivityV1_CL
| where Type_s == "Connection"
| join kind=leftouter (
WVDErrorV1_CL
| summarize Errors = makelist(pack('Time', Time_t, 'Code', ErrorCode_s , 'CodeSymbolic', ErrorCodeSymbolic_s, 'Message', ErrorMessage_s, 'ReportedBy', ReportedBy_s , 'Internal', ErrorInternal_s )) by ActivityId_g
) on $left.Id_g == $right.ActivityId_g
| join kind=leftouter (
WVDCheckpointV1_CL
| summarize Checkpoints = makelist(pack('Time', Time_t, 'ReportedBy', ReportedBy_s, 'Name', Name_s, 'Parameters', Parameters_s) ) by ActivityId_g
) on $left.Id_g == $right.ActivityId_g
|project-away ActivityId_g, ActivityId_g1
下一个示例查询显示租户上由管理员执行的管理活动:
WVDActivityV1_CL
| where Type_s == "Management"
| join kind=leftouter (
WVDErrorV1_CL
| summarize Errors = makelist(pack('Time', Time_t, 'Code', ErrorCode_s , 'CodeSymbolic', ErrorCodeSymbolic_s, 'Message', ErrorMessage_s, 'ReportedBy', ReportedBy_s , 'Internal', ErrorInternal_s )) by ActivityId_g
) on $left.Id_g == $right.ActivityId_g
| join kind=leftouter (
WVDCheckpointV1_CL
| summarize Checkpoints = makelist(pack('Time', Time_t, 'ReportedBy', ReportedBy_s, 'Name', Name_s, 'Parameters', Parameters_s) ) by ActivityId_g
) on $left.Id_g == $right.ActivityId_g
|project-away ActivityId_g, ActivityId_g1
停止将数据发送到 Log Analytics
若要停止将数据从现有租户发送到 Log Analytics,请运行以下 cmdlet 并设置空字符串:
Set-RdsTenant -Name <TenantName> -AzureSubscriptionId <SubscriptionID> -LogAnalyticsWorkspaceId <String> -LogAnalyticsPrimaryKey <String>
你需要针对每个你想要停止发送数据的租户运行此 cmdlet。
后续步骤
若要查看诊断功能可识别的常见错误方案,请参阅 识别和诊断问题。