在虚拟桌面运维的场景中,追踪用户的登录状态和登录日志,是很多客户所要求的必须功能。客户希望通过这些日志看到那些用户在那个时间段登录到了虚拟桌面,这样既可以满足公司内部的审计需求。也可以准确的记录用户的登录历史,方便后期的问题追踪。


在Azure Virtual Desktop中,我们可以设置将虚拟桌面的诊断日志发送到Azure Log Analytics进行日志的存储和查询。通过Log Analytics我们可以准确的查询用户的登录历史和登录登录状态。默认情况下Log Analytics的数据保留周期为30天,对于需要长期保存log的客户,我们可以调整Log Analytics的数据保留周期,或者定义将日志存储到Azure Blob,从而满足长期保留的合规性需求。对于Log Analytics不熟悉的同学也可以参考我之前的Blog:https://blog.51cto.com/wuyvzhang/2470702 。


接下来我们看下如何配置使用Log Analytics查询用户的登录状态和登录历史。


创建Log Analytics 工作区

导航到Log Analytics 工作区,可以使用现有的工作区,也可以创建一个新的工作区,本次演示我创建了一个新的工作区,名称为“avdlog”:

查询 Azure Virtual Desktop 登录日志_Log Analytics


对Azure Virtual Desktop启用诊断设置

启用诊断设置即为配置Azure虚拟桌面将诊断日志发送到Log Analytics工作区,具体包括主机池日志、应用组日志、工作空间日志等。每个组件的日志下都包含若干类型的日志,如链接日志,错误日志,管理日志等,再次不做具体的阐述。对Azure虚拟桌面启用诊断日志的方式有两周,接下来我们分别看下


方式一:在创建主机池时配置诊断设置

第一中方式为在创建主机池时,对虚拟桌面启用诊断设置,此种方式的好处为配置简单,只需配置一次即可对主机池日志、应用组日志、工作空间日志等配置诊断日志,无需逐一设置,具体配置方式可参考下图:

查询 Azure Virtual Desktop 登录日志_日志_02


方式二:创建主机池后逐一对资源配置诊断设置

如果你没有在创建主机池的时候配置诊断设置也无需担心,创建主机池后我们依旧可以进行设置,只不过相对比较繁琐,我们需要对主机池、应用组、工作空间逐一进行配置,如下图所示,配置主机池日志:

查询 Azure Virtual Desktop 登录日志_日志分析_03

配置应用程序组日志:

查询 Azure Virtual Desktop 登录日志_日志_04

配置工作空间日志:

查询 Azure Virtual Desktop 登录日志_日志_05


查询用户登录状态

完成上述配置将诊断日志发送到Log Analytics以后,我们就可以通过kusto语句查看相关的登录信息啦
首先我们来查询下7天内登录过的用户有哪些,具体的kusto查询语句如下:

WVDConnections
| where TimeGenerated > ago(7d)
| where State == "Connected"
| project CorrelationId , UserName, ConnectionType , StartTime=TimeGenerated, SessionHostName
| join (WVDConnections
| where State == "Completed"
| project EndTime=TimeGenerated, CorrelationId)
on CorrelationId
| project UserName,ConnectionType,StartTime,EndTime,SessionHostName
| sort by StartTime

查询语句执行完,可以看到我们的查询结果:

查询 Azure Virtual Desktop 登录日志_IT_06

接下来我们查询下当前正在登录的用户,可以运行如下kusto查询语句:

let CompletedIDs = WVDConnections
| where State == "Completed"
| project CorrelationId;
WVDConnections
| where CorrelationId !in (CompletedIDs)
| where State != "Started"
| project UserName, State, TimeGenerated

运行完成后返回查询结果,可以看到,当前我们有一个用户正在登录

查询 Azure Virtual Desktop 登录日志_IT_07