Sep 26 2022 03:43 PM - edited Sep 26 2022 03:55 PM
Graphics data logs for Azure Virtual Desktop are in public preview! You can now set up the diagnostics table in Azure Log Analytics and collect graphics data for your Azure Virtual Desktop connections. The graphics data table generates information whenever end-to-end delay and dropped frames percentages fall below a healthy threshold for Azure Virtual Desktop. This table helps administrators understand factors across the server, client, and network that could be contributing to slow or choppy experiences for a user.
Set up
To start collecting graphics data, you’ll need to ensure your Azure Virtual Desktop host pools have diagnostics enabled and that the Connection Graphics Data Logs Preview table is selected. You can check and modify these settings in the Azure Portal:
Sample queries
You can run these sample Kusto queries in the Log Analytics query editor. For each query, replace alias@domain, start_time, end_time, VmName, or HostPoolName with the information you would like to search for.
Search graphics data by a specific user or users
// Query for a specific user or group of users
let Users = datatable(User:string)
[
"alias@domain.com",
"alias@domain.com"
];
WVDConnectionGraphicsDataPreview
| join kind = leftouter
(
WVDConnections
| extend Protocol = iff(UdpUse in ("<>", "0"), "TCP", "UDP")
| extend GatewayRegion = iff(GatewayRegion in ("<>", ""), "Unknow", GatewayRegion)
| summarize GatewayRegion = take_anyif(GatewayRegion, GatewayRegion != "Unknown") by CorrelationId, UserName, SessionHostName, Protocol
) on CorrelationId
| where UserName in (Users)
| project-away CorrelationId1
| project-reorder TimeGenerated, UserName, Protocol, GatewayRegion, SessionHostName
Search graphics data in a specific time range
// Query for a specific time range
let start_time = todatetime('2022-09-01 00:00:00.0');
let end_time = todatetime('2022-09-15 00:00:00.0');
WVDConnectionGraphicsDataPreview
| join kind = leftouter
(
WVDConnections
| extend Protocol = iff(UdpUse in ("<>", "0"), "TCP", "UDP")
| extend GatewayRegion = iff(GatewayRegion in ("<>", ""), "Unknown", GatewayRegion)
| summarize GatewayRegion = take_anyif(GatewayRegion, GatewayRegion != "Unknown") by CorrelationId, UserName, SessionHostName, Protocol
) on CorrelationId
| where TimeGenerated between (start_time .. end_time)
| project-away CorrelationId1
| project-reorder TimeGenerated, UserName, Protocol, GatewayRegion, SessionHostName
Search graphics data for a specific session host
// Query for a specific Session Host
let VmName = "";
WVDConnectionGraphicsDataPreview
| join kind = leftouter
(
WVDConnections
| extend Protocol = iff(UdpUse in ("<>=", "0"), "TCP", "UDP")
| extend GatewayRegion = iff(GatewayRegion in ("<>", ""), "Unknown", GatewayRegion)
| summarize GatewayRegion = take_anyif(GatewayRegion, GatewayRegion != "Unknown") by CorrelationId, UserName, SessionHostName, Protocol
) on CorrelationId
| where SessionHostName == VmName
| project-away CorrelationId1
| project-reorder TimeGenerated, UserName, Protocol, GatewayRegion, SessionHostName
Search graphics data for a specific host pool
// Query for a specific Host Pool
let HostPoolName = "";
WVDConnectionGraphicsDataPreview
| join kind = leftouter
(
WVDConnections
| extend Protocol = iff(UdpUse in ("<>", "0"), "TCP", "UDP")
| extend GatewayRegion = iff(GatewayRegion in ("<>", ""), "Unknown", GatewayRegion)
| summarize GatewayRegion = take_anyif(GatewayRegion, GatewayRegion != "Unknown") by CorrelationId, UserName, SessionHostName, Protocol
) on CorrelationId
| where extract("/subscriptions/.*/resourcegroups/.*/providers/.*/hostpools/(.*)", 1, _ResourceId) == HostPoolName
| project-away CorrelationId1
| project-reorder TimeGenerated, UserName, Protocol, GatewayRegion, SessionHostName
Query all graphics data and correlate with username, protocol, gateway region, and session host name
// Query all rows from graphics data table and add username, protocol, gateway region, and session host name information from connections table
WVDConnectionGraphicsDataPreview
| join kind = leftouter
(
WVDConnections
| extend Protocol = iff(UdpUse in ("<>", "0"), "TCP", "UDP")
| extend GatewayRegion = iff(GatewayRegion in ("<>", ""), "Unknown", GatewayRegion)
| summarize GatewayRegion = take_anyif(GatewayRegion, GatewayRegion != "Unknown") by CorrelationId, UserName, SessionHostName, Protocol
) on CorrelationId
| project-away CorrelationId1
| project-reorder TimeGenerated, UserName, Protocol, GatewayRegion, SessionHostName
Please feel free to submit feedback here or leave questions on this post! To learn more about the Connection Graphics Data Logs Preview and other connection quality resources, see Connection quality in Azure Virtual Desktop or our Network Data announcement from April.