Udostępnij za pośrednictwem


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

Ważne

Aktualizacja hosta sesji dla usługi Azure Virtual Desktop jest obecnie dostępna w wersji zapoznawczej. Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.

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żywać z usługą Log Analytics, aby wyświetlić informacje o aktualizacjach hosta sesji.

Wymagania wstępne

Przed rozpoczęciem korzystania z tych zapytań potrzebne są następujące elementy:

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

  • Skonfigurowane ustawienia diagnostyczne w każdej puli hostów używanej z aktualizacją hosta sesji do wysyłania dzienników i metryk do obszaru roboczego usługi Log Analytics. Kategorie Punkty kontrolne, Błędy i Dzienniki aktywności zarządzania hostami sesji muszą być włączone co najmniej.

  • Wcześniej zaplanowana i uruchomiona aktualizacja hosta sesji na hostach sesji w puli hostów.

Lokalizacja danych diagnostycznych

Po skonfigurowaniu ustawień diagnostycznych w puli hostów dane diagnostyczne aktualizacji hosta sesji są przechowywane w tabelach WVDSessionHostManagement i WVDCheckpoints w obszarze roboczym usługi Log Analytics. Wpisy dziennika używają istniejącego typu działania Zarządzanie pochodzącego z 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 hostem 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, należy włączyć kategorię Dzienniki aktywności zarządzania hostami sesji. Aby uzyskać więcej informacji Konfigurowanie ustawień diagnostycznych w celu przechwytywania dzienników platformy i metryk 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 zakończone pomyślnie

To zapytanie koreluje tabele WVDSessionHostManagement i WVDCheckpoints zapewnia czas potrzebny na ukończenie aktualizacji oraz medianę czasu aktualizacji hosta pojedynczej 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 zdarzenia wygenerowanego przez system
_SubscriptionId Identyfikator subskrypcji puli hostów
_ResourceId Identyfikator zasobu puli hostów
CorrelationId Unikatowy identyfikator przypisany do każdej aktualizacji obrazu wykonanej 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 na zaktualizowanie 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 dostarcza 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 zdarzenia wygenerowanego przez system
_SubscriptionId Identyfikator subskrypcji puli hostów
_ResourceId Identyfikator zasobu puli hostów
CorrelationId Unikatowy identyfikator przypisany do każdej aktualizacji obrazu wykonanej 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, gdzie proces aktualizacji zakończył się niepowodzeniem

Aktualizacje hosta sesji anulowane przez administratora przed zaplanowanym czasem

To zapytanie koreluje tabele WVDSessionHostManagement i WVDCheckpoints dostarcza 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 zdarzenia wygenerowanego przez system
_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 Zaplanowany czas 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 zakończyły się niepowodzeniem, a następnie 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 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 zdarzenia wygenerowanego przez system
_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 Zaplanowany czas aktualizacji hosta sesji w formacie UTC
CanceledDateTime Godzina w formacie UTC, gdy administrator anulował aktualizację hosta sesji
TotalSessionHostsInHostPool Łączna 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 zdarzenia wygenerowanego przez system
_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 Zaplanowany czas aktualizacji hosta sesji w formacie UTC
UpdateBatchSize Liczba hostów sesji w jednej partii podczas aktualizacji obrazu
SessionHostUpdateCount Liczba hostów sesji, które zostały zaktualizowane

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.