Dela via


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.