将 Log Analytics 用于诊断功能

重要

本教程的内容适用于包含 Azure 资源管理器 Azure 虚拟桌面对象的 Azure 虚拟桌面。

就像使用许多其他 Azure 服务一样,Azure 虚拟桌面使用 Azure Monitor 进行监视和发出警报。 这样,管理员便可以集中通过一个界面识别问题。 该服务为用户活动和管理活动创建活动日志。 每个活动日志都会归属于以下类别:

  • 管理活动:
    • 对使用 API 或 PowerShell 更改 Azure 虚拟桌面对象的尝试是否成功进行跟踪。 例如,是否有人可以使用 PowerShell 成功创建主机池?
  • 源:
    • 用户是否可以成功订阅工作区?
    • 用户是否能看到远程桌面客户端中发布的所有资源?
  • 连接:
    • 在用户启动和完成到服务的连接时。
  • 主机注册:
    • 会话主机是否在连接时成功注册了服务?
  • 错误:
    • 用户是否遇到了与特定活动相关的任何问题? 只要这些信息与活动联接,此功能就可以生成一个跟踪活动数据的表。
  • 检查点:
    • 已到达的某个活动生存期的特定步骤。 例如,在某个会话过程中,将某个用户负载均衡到了某个特定主机,然后该用户在某个连接过程中登录了,等等。
  • 代理运行状况:
    • 监视每个会话主机上安装的 Azure 虚拟桌面代理的运行状况和状态。 例如,验证代理是否处于最新状态,或者代理是否处于正常状态并准备好接受新用户会话。
  • 连接网络数据:
    • 跟踪用户会话的平均网络数据以监视详细信息,包括估计的往返时间和整个连接中的可用带宽。

由于诊断角色服务本身是 Azure 虚拟桌面的一部分,因此无法访问 Azure 虚拟桌面的连接将不会显示在诊断结果中。 在用户遇到网络连接问题时,可能会出现 Azure 虚拟桌面连接问题。

利用 Azure Monitor,可以分析 Azure 虚拟桌面数据并查看虚拟机 (VM) 性能计数器,所有操作都在同一工具内进行。 本文将详细介绍如何为 Azure 虚拟桌面环境启用诊断。

先决条件

要将 Azure 虚拟桌面与 Log Analytics 配合使用,你需要:

将诊断数据推送到工作区

可以将诊断数据从 Azure 虚拟桌面对象推送到工作区的 Log Analytics 中。 在首次创建对象时,可以立即设置此功能。

若要为新对象设置 Log Analytics,请执行以下操作:

  1. 登录到 Azure 门户并转到 Azure 虚拟桌面。

  2. 导航到要捕获其日志和事件的对象(例如主机池、应用程序组或工作区)。

  3. 在屏幕左侧的菜单中选择“诊断设置”。

  4. 在屏幕右侧出现的菜单中选择“添加诊断设置”。

    “诊断设置”页中显示的选项将会因所编辑的对象类型而异。

    例如,在为应用程序组启用诊断时,你会看到用于配置检查点、错误和管理的选项。 对于工作区,这些类别会配置源,以便在用户订阅应用列表时进行跟踪。 若要详细了解诊断设置,请参阅创建诊断设置以收集 Azure 中的资源日志和指标

    重要

    请记得为需要监视的每个 Azure 资源管理器对象都启用诊断。 在启用了诊断之后,数据将可用于活动。 在首次设置之后,此过程可能需要几个小时。

  5. 输入设置配置的名称,然后选择“发送到 Log Analytics”。 你使用的名称不应包含空格,并且应符合 Azure 命名约定。 作为日志的一部分,你可以选择所有想要添加到 Log Analytics 的选项,如检查点、错误、管理等。

  6. 选择“保存”。

注意

Log Analytics 提供将数据流式传输到事件中心或在存储帐户中存档的选项。 若要详细了解此功能,请参阅将 Azure 监视数据流式传输到事件中心将 Azure 资源日志存档到存储帐户

如何访问 Log Analytics

可以在 Azure 门户或 Azure Monito 上访问 Log Analytics 工作区。

在 Log Analytics 工作区上访问 Log Analytics

  1. 登录到 Azure 门户。

  2. 搜索 Log Analytics 工作区。

  3. 在“服务”下,选择“Log Analytics 工作区”。

  4. 从列表中选择为 Azure 虚拟桌面对象配置的工作区。

  5. 在工作区中,选择“日志”。 可以使用“搜索”功能来筛选菜单列表。

在 Azure Monitor 上访问 Log Analytics

  1. 登录到 Azure 门户。

  2. 搜索并选择“Monitor”。

  3. 选择“日志”。

  4. 请按照日志记录页中的说明来设置查询的范围。

  5. 你已准备就绪,可以查询诊断了。 所有的诊断表都有“WVD”前缀。

注意

有关 Azure Monitor 日志中存储的表的更多详细信息,请参阅 Azure Monitor 数据参考。 与 Azure 虚拟桌面相关的所有表有“WVD”前缀。

发送诊断事件的节奏

在完成之后,诊断事件会发送到 Log Analytics。

Log Analytics 只在连接活动的以下中间状态进行报告:

  • 已开始:用户在远程桌面客户端中选择并连接到应用或桌面时。
  • 已连接:在用户成功连接到承载应用或桌面的 VM 时。
  • 已完成:在用户或服务器与发生活动的会话断开连接时。

查询示例

通过 Azure Monitor Log Analytics UI 访问示例查询:

  1. 转到 Log Analytics 工作区,然后选择“日志”。 该示例查询 UI 会自动显示。
  2. 将筛选器更改为“类别”。
  3. 选择“Azure 虚拟桌面”来查看可用查询。
  4. 选择“运行”以运行所选查询。

请在 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。
  • 调试连接性问题时,在某些情况下,即使连接事件完成,客户端信息也可能丢失。 这适用于 WVDConnectionsWVDCheckpoints 表。

后续步骤

若要查看诊断功能可以识别的常见错误场景,请参阅识别和诊断问题