在 Azure 虛擬桌面中使用 Log Analytics 進行診斷功能(傳統版)
重要
此內容適用於不支援 Azure Resource Manager Azure 虛擬桌面物件的 Azure 虛擬桌面(傳統版)。 如果您嘗試管理 Azure Resource Manager 中的 Azure 虛擬桌面物件,請參閱 本文。
Azure 虛擬桌面提供診斷功能,可讓系統管理員透過單一介面來識別問題。 每當有人指派 Azure 虛擬桌面角色使用服務時,此功能就會記錄診斷資訊。 每個記錄都包括有關活動中涉及哪些 Azure 虛擬桌面角色、工作階段期間出現的任何錯誤訊息、租戶資訊以及使用者資訊。 診斷功能會為使用者和系統管理動作建立活動記錄。 每個活動記錄都屬於三個主要類別:
- 摘要訂閱活動:當用戶嘗試透過Microsoft遠端桌面應用程式連線到其摘要時。
- 連線活動:當使用者嘗試透過 Microsoft 遠端桌面應用程式連線到桌面或 RemoteApp 時。
- 管理活動:當系統管理員在系統上執行管理作業時,例如建立主機集區、將使用者指派給應用程式群組,以及建立角色指派。
無法連線到 Azure 虛擬桌面的連線不會顯示在診斷結果中,因為診斷角色服務本身是 Azure 虛擬桌面的一部分。 當使用者遇到網路連線問題時,可能會發生 Azure 虛擬桌面連線問題。
為何您應該使用Log Analytics
我們建議您使用 Log Analytics來分析 Azure 客戶端中的診斷資料,以進行超越單一使用者疑難排解的分析。 由於您可以將 VM 性能計數器提取到 Log Analytics,因此您有一個工具來收集部署的資訊。
開始之前
您必須先 建立工作區,才能在診斷功能中使用 "Log Analytics"。
建立工作區之後,請遵循 將 Windows 計算機連線到 Azure 監視器中的指示,以取得下列資訊:
- 工作區標識碼
- 工作區的主鍵
稍後在安裝程式中,您將需要此資訊。
將診斷數據推送至您的工作區
您可以將診斷數據從 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。
後續步驟
若要檢閱診斷功能可為您識別的常見錯誤案例,請參閱 識別和診斷問題。