分享方式:


使用 Log Analytics 來執行 Azure 虛擬桌面 (傳統) 中的診斷功能

重要

此內容適用於 Azure 虛擬桌面 (傳統),不支援 ARM 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。

下一步

若要檢閱診斷功能可為您識別的常見錯誤案例,請參閱識別和診斷問題