将诊断数据发送到适用于 Azure 虚拟桌面的 Log Analytics
重要
本教程的内容适用于包含 Azure 资源管理器 Azure 虚拟桌面对象的 Azure 虚拟桌面。
就像使用许多其他 Azure 服务一样,Azure 虚拟桌面使用 Azure Monitor 进行监视和发出警报。 这样,管理员便可以集中通过一个界面识别问题。 该服务为用户活动和管理活动创建活动日志。 每个活动日志都会归属于以下类别:
类别 | 说明 |
---|---|
管理活动 | 使用 API 或 PowerShell 更改 Azure 虚拟桌面对象的尝试是否成功。 |
源 | 用户是否可以成功订阅工作区。 |
连接 | 在用户启动和完成到服务的连接时。 |
主机注册 | 会话主机是否在连接时成功注册了服务。 |
错误 | 用户遇到与特定活动相关的问题的位置。 |
检查点 | 已到达的某个活动生存期的特定步骤。 |
代理运行状况 | 监视每个会话主机上安装的 Azure 虚拟桌面代理的运行状况和状态。 |
网络 | 用于监视详细信息(包括估计的往返时间)的用户会话的平均网络数据。 |
连接图形 | Azure 虚拟桌面图形流中的性能数据。 |
会话主机管理活动 | 会话主机的管理活动。 |
自动缩放 | 缩放操作。 |
由于诊断角色服务本身是 Azure 虚拟桌面的一部分,因此无法访问 Azure 虚拟桌面的连接将不会显示在诊断结果中。 在用户遇到网络连接问题时,可能会出现 Azure 虚拟桌面连接问题。
利用 Azure Monitor,可以分析 Azure 虚拟桌面数据并查看虚拟机 (VM) 性能计数器,所有操作都在同一工具内进行。 本文将详细介绍如何为 Azure 虚拟桌面环境启用诊断。
先决条件
要将 Azure 虚拟桌面与 Log Analytics 配合使用,你需要:
Log Analytics 工作区。 有关详细信息,请参阅在 Azure 门户中创建 Log Analytics 工作区或使用 PowerShell 创建 Log Analytics 工作区。 在创建了工作区之后,请按照将 Windows 计算机连接到 Azure Monitor 中的说明获取以下信息:
- 工作区 ID
- 工作区的主密钥
稍后在设置过程中将会需要这些信息。
从会话主机访问特定 URL,以便诊断正常工作。 有关详细信息,请参阅 Azure 虚拟桌面的必需 URL,其中会显示“诊断输出”的条目。
请确保查看 Azure Monitor 的权限管理,使那些监视和维护你的 Azure 虚拟桌面环境的人员能够访问数据。 有关详细信息,请参阅 Azure Monitor 的角色、权限和安全入门。
将诊断数据推送到工作区
可以将诊断数据从 Azure 虚拟桌面对象推送到工作区的 Log Analytics 中。 在首次创建对象时,可以立即设置此功能。
若要为新对象设置 Log Analytics,请执行以下操作:
登录到 Azure 门户并转到 Azure 虚拟桌面。
导航到要捕获其日志和事件的对象(例如主机池、应用程序组或工作区)。
在屏幕左侧的菜单中选择“诊断设置”。
在屏幕右侧出现的菜单中选择“添加诊断设置”。
“诊断设置”页中显示的选项将会因所编辑的对象类型而异。
例如,在为应用程序组启用诊断时,你会看到用于配置检查点、错误和管理的选项。 对于工作区,这些类别会配置源,以便在用户订阅应用列表时进行跟踪。 若要详细了解诊断设置,请参阅创建诊断设置以收集 Azure 中的资源日志和指标。
重要
请记得为需要监视的每个 Azure 资源管理器对象都启用诊断。 在启用了诊断之后,数据将可用于活动。 在首次设置之后,此过程可能需要几个小时。
输入设置配置的名称,然后选择“发送到 Log Analytics”。 你使用的名称不应包含空格,并且应符合 Azure 命名约定。 作为日志的一部分,你可以选择所有想要添加到 Log Analytics 的选项,如检查点、错误、管理等。
选择“保存”。
注意
Log Analytics 提供将数据流式传输到事件中心或在存储帐户中存档的选项。 若要详细了解此功能,请参阅将 Azure 监视数据流式传输到事件中心和将 Azure 资源日志存档到存储帐户。
如何访问 Log Analytics
可以在 Azure 门户或 Azure Monito 上访问 Log Analytics 工作区。
在 Log Analytics 工作区上访问 Log Analytics
登录到 Azure 门户。
搜索 Log Analytics 工作区。
在“服务”下,选择“Log Analytics 工作区”。
从列表中选择为 Azure 虚拟桌面对象配置的工作区。
在工作区中,选择“日志”。 可以使用“搜索”功能来筛选菜单列表。
在 Azure Monitor 上访问 Log Analytics
登录到 Azure 门户。
搜索并选择“Monitor”。
选择“日志”。
请按照日志记录页中的说明来设置查询的范围。
你已准备就绪,可以查询诊断了。 所有的诊断表都有“WVD”前缀。
注意
有关 Azure Monitor 日志中存储的表的更多详细信息,请参阅 Azure Monitor 数据参考。 与 Azure 虚拟桌面相关的所有表有“WVD”前缀。
发送诊断事件的节奏
在完成之后,诊断事件会发送到 Log Analytics。
Log Analytics 只在连接活动的以下中间状态进行报告:
- 已开始:用户在远程桌面客户端中选择并连接到应用或桌面时。
- 已连接:在用户成功连接到承载应用或桌面的 VM 时。
- 已完成:在用户或服务器与发生活动的会话断开连接时。
查询示例
通过 Azure Monitor Log Analytics UI 访问示例查询:
- 转到 Log Analytics 工作区,然后选择“日志”。 该示例查询 UI 会自动显示。
- 将筛选器更改为“类别”。
- 选择“Azure 虚拟桌面”来查看可用查询。
- 选择“运行”以运行所选查询。
请在 Azure Monitor Log Analytics 中保存的查询中详细了解该示例查询界面。
下面的查询列表可用于查看某一个用户的连接信息或问题。 可以在 Log Analytics 查询编辑器中运行这些查询。 对于每个查询,将 userupn
替换为要查找的用户的 UPN。
若要查找某一个用户的所有连接:
WVDConnections
|where UserName == "userupn"
|take 100
|sort by TimeGenerated asc, CorrelationId
若要查找某个用户每天连接的次数:
WVDConnections
|where UserName == "userupn"
|take 100
|sort by TimeGenerated asc, CorrelationId
|summarize dcount(CorrelationId) by bin(TimeGenerated, 1d)
若要按用户查找会话持续时间:
let Events = WVDConnections | where UserName == "userupn" ;
Events
| where State == "Connected"
| project CorrelationId , UserName, ResourceAlias , StartTime=TimeGenerated
| join (Events
| where State == "Completed"
| project EndTime=TimeGenerated, CorrelationId)
on CorrelationId
| project Duration = EndTime - StartTime, ResourceAlias
| sort by Duration asc
若要查找某个特定用户的错误:
WVDErrors
| where UserName == "userupn"
|take 100
若要了解其他用户是否发生了某个特定错误:
WVDErrors
| where CodeSymbolic =="ErrorSymbolicCode"
| summarize count(UserName) by CodeSymbolic
注意
- 当用户启动完整桌面会话时,其在会话中的应用使用情况不会在
WVDCheckpoints
表中作为检查点被跟踪。 WVDConnections
表中的ResourcesAlias
列显示用户是连接到完整桌面还是连接到某个已发布的应用。 该列只显示他们在连接期间打开的第一个应用。 用户打开的任何已发布的应用都会在WVDCheckpoints
中被跟踪。WVDErrors
表会显示管理错误、主机注册问题以及用户订阅应用或桌面的列表时出现的其他问题。WVDErrors
表也有助于识别管理员任务可以解决的问题。 对于这些类型的问题,ServiceError
上的值应始终等于false
。 如果ServiceError
等于true
,则需要将该问题升级到 Microsoft。 请确保为升级的错误提供 CorrelationID。- 调试连接性问题时,在某些情况下,即使连接事件完成,客户端信息也可能丢失。 这适用于
WVDConnections
和WVDCheckpoints
表。
后续步骤
- 启用见解来监视 Azure 虚拟桌面。
- 若要查看诊断功能可以识别的常见错误场景,请参阅识别和诊断问题。