question

jlopez-626 avatar image
0 Votes"
jlopez-626 asked azure-cxp-api edited

WVDCheckpoints Table - how to find out what server the entry was made for? Machines become slow with no resources being used up

I'm trying to track down an issue where a server will become extremely slow. But the resources all seem normal. No high CPU, Memory or Network usage. The only clue I've been able to find is on the WVDCheckpoints table. When a server becomes slow the logins are taking 90k+ ms versus the normal less than 10k ms.

105141-wvdcheckpoints.png




I'd like to be able to see all the logins or entries for on server to see when they started. Is it possible to do that or should l be looking at a different table? I'd also like to set up an alert for when a login is taking 90k+ ms.

I see these fields available on that table but I haven't figured out how to connect it to a server. Is there a reference on how the tables are interconnected?

ActivityType
CorrelationId
Name
Parameters
_ResourceId
Source
SourceSystem
_SubscriptionId
TenantId
TimeGenerated
Type
UserName





azure-monitor
wvdcheckpoints.png (32.2 KiB)
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

1 Answer

jlopez-626 avatar image
1 Vote"
jlopez-626 answered SwathiDhanwada-MSFT commented

I think I may have found my solution on this page:
https://blog.itprocloud.de/Windows-Virtual-Desktop-Monitoring-the-Spring-backend/


I just had to modify it a bit to add the filter by the host name and add the client IP.


 WVDConnections
 | where Type =~"WVDConnections" and State =~ "Started"
 | extend Multi=split(_ResourceId, "/") | project ResourceAlias, ClientSideIPAddress, HostPool=toupper(HP=Multi[8]), SessionHostName , UserName ,CState=iff(SessionHostOSVersion=="<>","Failure","Success"), CorrelationId, TimeGenerated, ResourceGroup=Multi[4], DesktopGroup_s=toupper(strcat(RG=Multi[4],".", HP=Multi[8]))
 | join kind= leftouter (
 WVDCheckpoints
 ) on CorrelationId
 | extend DurationFromLogon=datetime_diff("Second",TimeGenerated1,TimeGenerated)
 | where Name=~"RdpStackLogon"
 | where SessionHostName contains "hp1-1"
 | project UserName, ClientSideIPAddress, SessionHost=SessionHostName, TimeStamp=TimeGenerated1, DurationFromLogon
 | order by SessionHost, TimeStamp desc


This will give me the login times and duration of the users on a server so I can find out when started getting slow. Here you can see how it improved after we rebooted it.

105087-query.png




Now that I know what day it started I have to figure out where to look next to find out what is causing it. If you have any ideas please share. I'm pretty new at this.

In the mean time if you have any tips on how to set up an alert when logins take more than 20 seconds I'd also appreciate it.


query.png (29.0 KiB)
· 1
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

@jlopez-626 Glad to see that you have resolved and shared the solution for benefit of community. For your requirement on alerting when logins take more than 20 seconds, I would suggest you to create a log alert by following the documentation here. If you are facing any issues when creating log alerts , kindly revert.


0 Votes 0 ·