Exempel på diagnostikfrågor för uppdatering av sessionsvärd i Azure Virtual Desktop
Viktigt!
Sessionsvärduppdateringen för Azure Virtual Desktop är för närvarande i förhandsversion. Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.
Sessionsvärduppdatering använder Log Analytics i Azure Monitor för att lagra information om uppdateringar. Den här artikeln innehåller några exempel på Kusto-frågor som du kan använda med Log Analytics för att se information om uppdateringar av sessionsvärdar.
Förutsättningar
Innan du kan använda dessa frågor behöver du:
En befintlig värdpool med en sessionsvärdkonfiguration.
Konfigurerade diagnostikinställningar för varje värdpool som du använder med sessionsvärduppdatering för att skicka loggar och mått till en Log Analytics-arbetsyta. Kategorierna Kontrollpunkt, Fel och Aktivitetsloggar för sessionsvärdhantering måste vara aktiverade som ett minimum.
En tidigare schemalagd och kör en uppdatering av sessionsvärden på sessionsvärdarna i värdpoolen.
Plats för diagnostikdata
När du har konfigurerat diagnostikinställningar i en värdpool lagras diagnostikdata för sessionsvärduppdatering i tabellerna WVDSessionHostManagement
och WVDCheckpoints
på Log Analytics-arbetsytan. Loggposter använder den befintliga hanteringsaktivitetstypen , som kommer från Azure Resource Manager-providern (ARM).
Tabellen WVDSessionHostManagement
är specifik för uppdatering av sessionsvärd och skapas när du aktiverar kategorin Aktivitetsloggar för hantering av sessionsvärd på diagnostikinställningarna för varje värdpool som du använder med uppdatering av sessionsvärd och uppdatering av sessionsvärdar. Om du tidigare har konfigurerat diagnostikinställningar för en värdpool måste du aktivera kategorin Aktivitetsloggar för sessionsvärdhantering. Mer information finns i Konfigurera diagnostikinställningar för att samla in plattformsloggar och mått för Azure Virtual Desktop.
Resten av den här artikeln innehåller några exempelfrågor som du kan köra. Du kan använda dem som grund för att skapa egna frågor. Du måste köra var och en av dessa frågor i Log Analytics. Mer information om hur du kör frågor finns i Starta Log Analytics.
Sessionsvärduppdateringar som har slutförts
Den här frågan korrelerar tabellerna WVDSessionHostManagement
och WVDCheckpoints
anger den tid det tar att slutföra en uppdatering och mediantiden för att uppdatera en enskild sessionsvärd i minuter under de senaste 30 dagarna:
let timeRange = ago(30d);
let succeededStatus = "Succeeded";
let hostPoolUpdateCompletedCheckpoint = "HostPoolUpdateCompleted";
let sessionHostUpdateCompletedCheckpoint = "SessionHostUpdateCompleted";
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where ProvisioningStatus == succeededStatus and TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| join kind = inner (
// Get number of session hosts updated
WVDCheckpoints
| where Name == hostPoolUpdateCompletedCheckpoint
| extend ParametersParsed = parse_json(Parameters)
| extend SessionHostUpdateCount = ParametersParsed["SessionHostsUpdateCompleted"], UpdateCompletionTime = todatetime(ParametersParsed["TimeCompleted"]), UpdateStartTime = todatetime(ParametersParsed["TimeStarted"])
| project CorrelationId, SessionHostUpdateCount, UpdateStartTime, UpdateCompletionTime
) on CorrelationId
| join kind = inner
(
// Get time to update individual session hosts
WVDCheckpoints
| where Name == sessionHostUpdateCompletedCheckpoint
| extend ParametersParsed = parse_json(Parameters)
| extend SessionHostUpdateTime = todecimal(ParametersParsed["TimeTakenToUpdateSessionHostInSeconds"])
// Calculate median time to update session host
| summarize SessionHostMedianUpdateTime = percentile(SessionHostUpdateTime, 50) by CorrelationId
) on CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, UpdateStartDateTime = UpdateStartTime, UpdateEndDateTime = UpdateCompletionTime, ['UpdateDuration [InMinutes]'] = datetime_diff('minute', UpdateCompletionTime, UpdateStartTime), SessionHostUpdateCount, ['MedianSessionHostUpdateTime [InMinutes]'] = toint(SessionHostMedianUpdateTime/(60 * 1.0)), UpdateBatchSize = UpdateMaxVmsRemoved, FromSessionHostConfigVer, ToSessionHostConfigVer, UpdateDeleteOriginalVm
Den returnerade datamängden är följande:
Kolumn | Definition |
---|---|
TimeGenerated | Tidsstämpel för systemgenererad händelse |
_SubscriptionId | Prenumerations-ID för en värdpool |
_ResourceId | Resurs-ID för en värdpool |
CorrelationId | Unik identifierare tilldelad till varje avbildningsuppdatering som utförs på en värdpool |
UpdateStartDateTime | Sessionsvärduppdateringens starttidsstämpel i UTC |
UpdateEndDateTime | Tidsstämpel för uppdatering av sessionsvärd i UTC |
UpdateDuration | Tiden det tar att slutföra för att uppdatera avbildningen av alla sessionsvärdar i en värdpool på några minuter |
SessionHostUpdateCount | Antal sessionsvärdar uppdaterade |
MedianSessionHostUpdateTime | Mediantid för att uppdatera avbildningen av en enskild sessionsvärd på några minuter |
UpdateBatchSize | Antal sessionsvärdar som fanns i en enda batch under en uppdatering av avbildningen |
FromSessionHostConfigVer | Sessionsvärdkonfiguration före en uppdatering av avbildningen |
ToSessionHostConfigVer | Sessionsvärdkonfiguration efter en uppdatering av avbildningen |
UpdateDeleteOriginalVm | Om den ursprungliga virtuella datorn bevarades efter slutförandet av en uppdatering av avbildningen |
Fel under en uppdatering av sessionsvärden
Den här frågan korrelerar tabellerna WVDSessionHostManagement
och WVDErrors
för att tillhandahålla information som du kan använda för att felsöka fel under sessionsvärduppdateringar under de senaste 30 dagarna:
let timeRange = ago(30d);
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where ProvisioningStatus in ("Failed", "Error", "Canceled") and TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| summarize arg_max(TimeGenerated, _ResourceId, _SubscriptionId, FromSessionHostConfigVer, ToSessionHostConfigVer) by CorrelationId
| join kind = inner
(
// Get image update errors
WVDErrors
| where TimeGenerated >= timeRange
| extend IsSessionHostResourceIdAvailable = iif(Message startswith "SessionHostResourceId", 1, 0)
| extend startIndex = iif(IsSessionHostResourceIdAvailable == 1, indexof(Message, ":") + 1, 0)
| extend length = iif(IsSessionHostResourceIdAvailable == 1, indexof(Message, ";") - startIndex, 0)
// Get Session host ResourceId when available
| extend SessionHostResourceId = iif(IsSessionHostResourceIdAvailable == 1, substring(Message, startIndex, length), "")
| project TimeGenerated, CorrelationId, SessionHostResourceId, CodeSymbolic, Message
) on CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, CodeSymbolic, SessionHostResourceId, Message, FromSessionHostConfigVer, ToSessionHostConfigVer
Den returnerade datamängden är följande:
Kolumn | Definition |
---|---|
TimeGenerated | Tidsstämpel för systemgenererad händelse |
_SubscriptionId | Prenumerations-ID för en värdpool |
_ResourceId | Resurs-ID för en värdpool |
CorrelationId | Unik identifierare tilldelad till varje avbildningsuppdatering som utförs på en värdpool |
CodeSymbolic | Felkod |
SessionHostResourceId | Resurs-ID för en sessionsvärd, om tillämpligt |
Meddelande | Felinformation |
FromSessionHostConfigVer | Konfigurationsversion för sessionsvärd före en avbildningsuppdatering |
ToSessionHostConfigVer | Sessionsvärdkonfigurationsversion som sessionsvärdar uppdaterades till där uppdateringsprocessen misslyckades |
Sessionsvärduppdateringar avbröts av en administratör före den schemalagda tiden
Den här frågan korrelerar tabellerna WVDSessionHostManagement
och WVDCheckpoints
för att tillhandahålla sessionsvärduppdateringar som schemalagts, men sedan avbrutits av en administratör innan de startade, under de senaste 30 dagarna:
let timeRange = ago(30d);
let canceledStatus = "Canceled";
let scheduledStatus = "Scheduled";
let hostPoolUpdateCanceledCheckpoint = "HostPoolUpdateCanceled";
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where ProvisioningStatus == canceledStatus and TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| join kind = inner
(
WVDCheckpoints
| where Name == "HostPoolUpdateCanceled"
| project TimeGenerated, CorrelationId, Name, Parameters
| extend ParametersParsed = parse_json(Parameters)
| extend StateFrom = tostring(ParametersParsed["StateFrom"]), StateTo = tostring(ParametersParsed["StateTo"]), CanceledTime = todatetime(ParametersParsed["TimeCanceled"])
| where StateFrom == scheduledStatus and StateTo == canceledStatus
) on CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, ScheduledDateTime = todatetime(ScheduledDateTime), CanceledDateTime = CanceledTime, UpdateBatchSize = UpdateMaxVmsRemoved
Den returnerade datamängden är följande:
Kolumn | Definition |
---|---|
TimeGenerated | Tidsstämpel för systemgenererad händelse |
_SubscriptionId | Prenumerations-ID för en värdpool |
_ResourceId | Resurs-ID för en värdpool |
CorrelationId | Unik identifierare tilldelad till varje uppdatering av avbildningen av en värdpool |
ScheduledDateTime | Schemalagd tid för sessionsvärduppdatering i UTC |
CanceledDateTime | Tid i UTC när en uppdatering av avbildningen avbröts av en administratör |
UpdateBatchSize | Antal sessionsvärdar som fanns i en enda batch under en uppdatering av avbildningen |
Sessionsvärduppdateringar som pågår eller misslyckades och som sedan avbröts av en administratör
Den här frågan korrelerar tabellerna WVDSessionHostManagement
och WVDCheckpoints
för att tillhandahålla sessionsvärduppdateringar som pågår eller misslyckades, och sedan avbröts senare av en administratör under de senaste 30 dagarna:
let timeRange = ago(30d);
let canceledStatus = "Canceled";
let scheduledStatus = "Scheduled";
let hostPoolUpdateCanceledCheckpoint = "HostPoolUpdateCanceled";
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where ProvisioningStatus == canceledStatus and TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| join kind = inner
(
WVDCheckpoints
| where Name == hostPoolUpdateCanceledCheckpoint
| project TimeGenerated, CorrelationId, Name, Parameters
| extend ParametersParsed = parse_json(Parameters)
| extend StateFrom = tostring(ParametersParsed["StateFrom"]), StateTo = tostring(ParametersParsed["StateTo"]), CanceledTime = todatetime(ParametersParsed["TimeCanceled"]), TotalSessionHostsInHostPool = toint(ParametersParsed["TotalSessionHostsInHostPool"]), SessionHostUpdateCount = ParametersParsed["SessionHostsUpdateCompleted"]
| where StateFrom != scheduledStatus and StateTo == canceledStatus
) on CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, ScheduledDateTime = todatetime(ScheduledDateTime), CanceledDateTime = CanceledTime, TotalSessionHostsInHostPool, SessionHostUpdateCount, UpdateBatchSize = UpdateMaxVmsRemoved
Den returnerade datamängden är följande:
Kolumn | Definition |
---|---|
TimeGenerated | Tidsstämpel för systemgenererad händelse |
_SubscriptionId | Prenumerations-ID för en värdpool |
_ResourceId | Resurs-ID för en värdpool |
CorrelationId | Unik identifierare tilldelad till varje uppdatering av sessionsvärden för en värdpool |
ScheduledDateTime | Schemalagd tid för sessionsvärduppdatering i UTC |
CanceledDateTime | Tid i UTC när en administratör avbröt en uppdatering av sessionsvärden |
TotalSessionHostsInHostPool | Totalt antal sessionsvärdar i en värdpool |
SessionHostUpdateCount | Antal sessionsvärdar som uppdaterades innan en sessionsvärduppdatering avbröts |
UpdateBatchSize | Antal sessionsvärdar i en enda batch under en uppdatering av sessionsvärden |
Status för varje uppdatering av sessionsvärden
Den här frågan korrelerar tabellerna WVDSessionHostManagement
och WVDCheckpoints
anger den senaste statusen för varje uppdatering av sessionsvärden under de senaste 30 dagarna:
let timeRange = ago(30d);
let sessionHostUpdateCompletedCheckpoint = "SessionHostUpdateCompleted";
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| join kind = leftouter (
// Get number of session hosts updated if available
WVDCheckpoints
| where Name == sessionHostUpdateCompletedCheckpoint
| summarize SessionHostUpdateCount = count() by CorrelationId
) on CorrelationId
| summarize arg_max(TimeGenerated, _SubscriptionId, _ResourceId, ScheduledDateTime, UpdateMaxVmsRemoved, SessionHostUpdateCount, ProvisioningStatus) by CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, ProvisioningStatus, ScheduledDateTime = todatetime(ScheduledDateTime), UpdateBatchSize = UpdateMaxVmsRemoved, SessionHostUpdateCount = iif(isempty(SessionHostUpdateCount), 0, SessionHostUpdateCount)
Den returnerade datamängden är följande:
Kolumn | Definition |
---|---|
TimeGenerated | Tidsstämpel för systemgenererad händelse |
_SubscriptionId | Prenumerations-ID för en värdpool |
_ResourceId | Resurs-ID för en värdpool |
CorrelationId | Unik identifierare tilldelad till varje uppdatering av avbildningen av en värdpool |
ProvisioningStatus | Aktuell status för en uppdatering av avbildningen av en värdpool |
ScheduledDateTime | Schemalagd tid för sessionsvärduppdatering i UTC |
UpdateBatchSize | Antal sessionsvärdar i en enda batch under en uppdatering av avbildningen |
SessionHostUpdateCount | Antal sessionsvärdar som har uppdaterats |
Nästa steg
Felsökningsvägledning för uppdatering av sessionsvärd finns i Felsöka uppdatering av sessionsvärdar.