Udostępnij przez


Przykładowe zapytania diagnostyczne dotyczące aktualizacji hosta sesji w usłudze Azure Virtual Desktop

Ważna

Aktualizacja hosta sesji dla usługi Azure Virtual Desktop jest obecnie dostępna w wersji zapoznawczej. Zapoznaj się z dodatkowymi warunkami użytkowania dla wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z warunkami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta, wersji zapoznawczej lub w inny sposób nie zostały jeszcze udostępnione do ogólnej dostępności.

Aktualizacja hosta sesji używa usługi Log Analytics w usłudze Azure Monitor do przechowywania informacji o aktualizacjach. Ten artykuł zawiera przykładowe zapytania Kusto, których można użyć w usłudze Log Analytics, aby wyświetlić informacje o aktualizacjach hosta sesji.

Wymagania wstępne

Przed użyciem tych zapytań potrzebne są następujące elementy:

  • Istniejąca pula hostów z konfiguracją hosta sesji.

  • Skonfigurowano ustawienia diagnostyczne dla każdej puli hostów używanej z aktualizacją hosta sesji w celu wysyłania dzienników i metryk do obszaru roboczego usługi Log Analytics. Kategorie Checkpoint, Error i Session Host Management Activity Logs muszą być włączone co najmniej.

  • Wcześniej zaplanowano i uruchomiono aktualizację hosta sesji na hostach sesji w puli hostów.

Lokalizacja danych diagnostycznych

Po skonfigurowaniu ustawień diagnostycznych w puli hostów dane diagnostyczne dotyczące aktualizacji hosta sesji są przechowywane w tabelach WVDSessionHostManagement i WVDCheckpoints obszarze roboczym usługi Log Analytics. Wpisy dziennika używają istniejącego typu działania zarządzania, który pochodzi od dostawcy usługi Azure Resource Manager (ARM).

Tabela WVDSessionHostManagement jest specyficzna dla aktualizacji hosta sesji i jest tworzona po włączeniu kategorii Dzienniki aktywności zarządzania hostami sesji w ustawieniach diagnostycznych dla każdej puli hostów używanej z aktualizacją hosta sesji i przebiegami aktualizacji hosta sesji. Jeśli wcześniej skonfigurowano ustawienia diagnostyczne dla puli hostów, musisz włączyć kategorię Dzienniki aktywności zarządzania hostem sesji. Aby uzyskać więcej informacji , skonfiguruj ustawienia diagnostyczne w celu przechwytywania dzienników i metryk platformy dla usługi Azure Virtual Desktop.

W pozostałej części tego artykułu przedstawiono przykładowe zapytania, które można uruchomić. Można ich używać jako podstawy do tworzenia własnych zapytań. Każde z tych zapytań należy uruchomić w usłudze Log Analytics. Aby uzyskać więcej informacji na temat uruchamiania zapytań, zobacz Uruchamianie usługi Log Analytics.

Aktualizacje hosta sesji, które zostały pomyślnie ukończone

To zapytanie koreluje tabele WVDSessionHostManagement i WVDCheckpoints określa czas potrzebny na ukończenie aktualizacji oraz medianę czasu aktualizacji pojedynczego hosta sesji w minutach w ciągu ostatnich 30 dni:

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

Zwrócony zestaw danych jest następujący:

Kolumna Definicja
TimeGenerated Sygnatura czasowa wygenerowanego przez system zdarzenia
_SubscriptionId Identyfikator subskrypcji puli hostów
_ResourceId Identyfikator zasobu puli hostów
CorrelationId Unikatowy identyfikator przypisany do każdej aktualizacji obrazu wykonywanej w puli hostów
UpdateStartDateTime Sygnatura czasowa rozpoczęcia aktualizacji hosta sesji w formacie UTC
UpdateEndDateTime Sygnatura czasowa ukończenia aktualizacji hosta sesji w formacie UTC
UpdateDuration Czas potrzebny do ukończenia aktualizacji obrazu wszystkich hostów sesji w puli hostów w ciągu kilku minut
SessionHostUpdateCount Liczba zaktualizowanych hostów sesji
MedianSessionHostUpdateTime Mediana czasu aktualizowania obrazu pojedynczego hosta sesji w minutach
UpdateBatchSize Liczba hostów sesji, które znajdowały się w jednej partii podczas aktualizacji obrazu
FromSessionHostConfigVer Konfiguracja hosta sesji przed aktualizacją obrazu
ToSessionHostConfigVer Konfiguracja hosta sesji po aktualizacji obrazu
UpdateDeleteOriginalVm Czy oryginalna maszyna wirtualna została zachowana po zakończeniu aktualizacji obrazu

Błędy podczas aktualizacji hosta sesji

To zapytanie koreluje tabele WVDSessionHostManagement i WVDErrors udostępnia informacje, których można użyć do rozwiązywania problemów z błędami podczas aktualizacji hosta sesji w ciągu ostatnich 30 dni:

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

Zwrócony zestaw danych jest następujący:

Kolumna Definicja
TimeGenerated Sygnatura czasowa wygenerowanego przez system zdarzenia
_SubscriptionId Identyfikator subskrypcji puli hostów
_ResourceId Identyfikator zasobu puli hostów
CorrelationId Unikatowy identyfikator przypisany do każdej aktualizacji obrazu wykonywanej w puli hostów
CodeSymbolic Kod błędu
SessionHostResourceId Identyfikator zasobu hosta sesji, jeśli ma to zastosowanie
Komunikat Informacje o błędzie
FromSessionHostConfigVer Wersja konfiguracji hosta sesji przed aktualizacją obrazu
ToSessionHostConfigVer Wersja konfiguracji hosta sesji, do której hosty sesji zostały zaktualizowane w przypadku niepowodzenia procesu aktualizacji

Aktualizacje hosta sesji anulowane przez administratora przed zaplanowanym czasem

To zapytanie skoreluje tabele WVDSessionHostManagement i WVDCheckpoints udostępni aktualizacje hosta sesji, które zostały zaplanowane, ale następnie anulowane przez administratora przed ich rozpoczęciem w ciągu ostatnich 30 dni:

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

Zwrócony zestaw danych jest następujący:

Kolumna Definicja
TimeGenerated Sygnatura czasowa wygenerowanego przez system zdarzenia
_SubscriptionId Identyfikator subskrypcji puli hostów
_ResourceId Identyfikator zasobu puli hostów
CorrelationId Unikatowy identyfikator przypisany do każdej aktualizacji obrazu puli hostów
ScheduledDateTime Zaplanowana godzina aktualizacji hosta sesji w formacie UTC
CanceledDateTime Czas w formacie UTC, kiedy aktualizacja obrazu została anulowana przez administratora
UpdateBatchSize Liczba hostów sesji, które znajdowały się w jednej partii podczas aktualizacji obrazu

Aktualizacje hosta sesji, które były w toku lub nie powiodły się, a następnie zostały później anulowane przez administratora

To zapytanie koreluje tabele WVDSessionHostManagement i WVDCheckpoints udostępnia aktualizacje hosta sesji, które były w toku lub nie powiodły się, a następnie zostały później anulowane przez administratora w ciągu ostatnich 30 dni:

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

Zwrócony zestaw danych jest następujący:

Kolumna Definicja
TimeGenerated Sygnatura czasowa wygenerowanego przez system zdarzenia
_SubscriptionId Identyfikator subskrypcji puli hostów
_ResourceId Identyfikator zasobu puli hostów
CorrelationId Unikatowy identyfikator przypisany do każdej aktualizacji hosta sesji puli hostów
ScheduledDateTime Zaplanowana godzina aktualizacji hosta sesji w formacie UTC
CanceledDateTime Czas w formacie UTC, kiedy administrator anulował aktualizację hosta sesji
TotalSessionHostsInHostPool Całkowita liczba hostów sesji w puli hostów
SessionHostUpdateCount Liczba hostów sesji, które zostały zaktualizowane przed anulowaniem aktualizacji hosta sesji
UpdateBatchSize Liczba hostów sesji w jednej partii podczas aktualizacji hosta sesji

Stan każdej aktualizacji hosta sesji

To zapytanie koreluje tabele WVDSessionHostManagement i WVDCheckpoints zapewnia najnowszy stan każdej aktualizacji hosta sesji w ciągu ostatnich 30 dni:

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)

Zwrócony zestaw danych jest następujący:

Kolumna Definicja
TimeGenerated Sygnatura czasowa wygenerowanego przez system zdarzenia
_SubscriptionId Identyfikator subskrypcji dla puli hostów
_ResourceId Identyfikator zasobu puli hostów
CorrelationId Unikatowy identyfikator przypisany do każdej aktualizacji obrazu puli hostów
ProvisioningStatus Bieżący stan aktualizacji obrazu puli hostów
ScheduledDateTime Zaplanowana godzina aktualizacji hosta sesji w formacie UTC
UpdateBatchSize Liczba hostów sesji w jednej partii podczas aktualizacji obrazu
SessionHostUpdateCount Liczba zaktualizowanych hostów sesji

Następne kroki

Aby uzyskać wskazówki dotyczące rozwiązywania problemów z aktualizacją hosta sesji, zobacz Rozwiązywanie problemów z aktualizacją hosta sesji.