Sdílet prostřednictvím


Příklady diagnostických dotazů pro aktualizaci hostitele relace ve službě Azure Virtual Desktop

Důležité

Aktualizace hostitele relace pro Azure Virtual Desktop je aktuálně ve verzi PREVIEW. Právní podmínky, které se vztahují na funkce Azure, které jsou v beta verzi, ve verzi Preview nebo jinak ještě nejsou obecně dostupné, najdete v doplňkových podmínkách použití pro verze Microsoft Azure Preview .

Aktualizace hostitele relace používá Log Analytics ve službě Azure Monitor k ukládání informací o aktualizacích. Tento článek obsahuje několik ukázkových dotazů Kusto, které můžete použít s Log Analytics k zobrazení informací o aktualizacích hostitelů relací.

Požadavky

Před použitím těchto dotazů potřebujete:

  • Existující fond hostitelů s konfigurací hostitele relace

  • Nakonfigurovaná nastavení diagnostiky pro každý fond hostitelů, který používáte s aktualizací hostitelů relací, aby se odesílaly protokoly a metriky do pracovního prostoru služby Log Analytics. Kategorie Kontrolní bod, Chyba a Protokoly aktivit správy hostitelů relací musí být povolené minimálně.

  • Dříve naplánovaná a spuštěná aktualizace hostitele relace na hostitelích relací ve fondu hostitelů.

Umístění diagnostických dat

Jakmile nakonfigurujete nastavení diagnostiky ve fondu hostitelů, diagnostická data pro aktualizaci hostitele relace se uloží do tabulek WVDSessionHostManagement a WVDCheckpoints pracovního prostoru služby Log Analytics. Položky protokolu používají existující typ aktivity správy, který pochází od poskytovatele Azure Resource Manager (ARM).

Tabulka WVDSessionHostManagement je specifická pro aktualizaci hostitele relace a vytvoří se po povolení kategorie Protokoly aktivit správy hostitele relace v nastavení diagnostiky pro každý fond hostitelů, který používáte s aktualizací hostitele relace, a spuštění aktualizace hostitele relace. Pokud jste dříve nakonfigurovali nastavení diagnostiky pro fond hostitelů, musíte povolit kategorii Protokoly aktivit správy hostitelů relací. Další informace najdete v tématu Konfigurace nastavení diagnostiky pro zachytávání protokolů platformy a metrik pro Azure Virtual Desktop.

Zbytek tohoto článku obsahuje několik příkladů dotazů, které můžete spustit. Můžete je použít jako základ pro vytváření vlastních dotazů. Každý z těchto dotazů musíte spustit v Log Analytics. Další informace o tom, jak spouštět dotazy, najdete v tématu Spuštění Log Analytics.

Aktualizace hostitele relace, které se úspěšně dokončily

Tento dotaz koreluje tabulky WVDSessionHostManagement a WVDCheckpoints poskytuje čas potřebný k dokončení aktualizace a medián času k aktualizaci jednoho hostitele relace v minutách za posledních 30 dnů:

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

Vrácená datová sada je následující:

Sloupec Vysvětlení
TimeGenerated Časové razítko událostí vygenerované systémem
_SubscriptionId ID předplatného fondu hostitelů
_ResourceId ID zdroje fondu hostitelů
Id korelace Jedinečný identifikátor přiřazený ke každé aktualizaci image provedené ve fondu hostitelů
UpdateStartDateTime Časové razítko zahájení aktualizace hostitele relace ve standardu UTC
UpdateEndDateTime Časové razítko dokončení aktualizace hostitele relace ve standardu UTC
Doba trvání aktualizace Doba potřebná k dokončení aktualizace image všech hostitelů relací ve fondu hostitelů v minutách
SessionHostUpdateCount Počet aktualizovaných hostitelů relací
MedianSessionHostUpdateTime Medián času aktualizace image jednoho hostitele relace v minutách
UpdateBatchSize Počet hostitelů relací, kteří byli během aktualizace image v jedné dávce
FromSessionHostConfigVer Konfigurace hostitele relace před aktualizací image
ToSessionHostConfigVer Konfigurace hostitele relace po aktualizaci image
UpdateDeleteOriginalVm Jestli se původní virtuální počítač zachoval i po dokončení aktualizace image

Chyby během aktualizace hostitele relace

Tento dotaz koreluje tabulky WVDSessionHostManagement a WVDErrors poskytuje informace, které můžete použít k řešení chyb během aktualizací hostitelů relací za posledních 30 dnů:

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

Vrácená datová sada je následující:

Sloupec Vysvětlení
TimeGenerated Časové razítko událostí vygenerované systémem
_SubscriptionId ID předplatného fondu hostitelů
_ResourceId ID zdroje fondu hostitelů
Id korelace Jedinečný identifikátor přiřazený ke každé aktualizaci image provedené ve fondu hostitelů
CodeSymbolic Kód chyby
SessionHostResourceId ID prostředku hostitele relace, pokud je k dispozici
Zpráva Informace o chybě
FromSessionHostConfigVer Verze konfigurace hostitele relace před aktualizací image
ToSessionHostConfigVer Verze konfigurace hostitele relace, na kterou se hostitelé relace aktualizovali v případě selhání procesu aktualizace

Aktualizace hostitele relace zrušené správcem před naplánovaným časem

Tento dotaz koreluje tabulky WVDSessionHostManagement a WVDCheckpoints poskytuje aktualizace hostitelů relací, které byly naplánované, ale následně zrušené správcem před jejich zahájením během posledních 30 dnů:

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

Vrácená datová sada je následující:

Sloupec Vysvětlení
TimeGenerated Časové razítko událostí vygenerované systémem
_SubscriptionId ID předplatného fondu hostitelů
_ResourceId ID zdroje fondu hostitelů
Id korelace Jedinečný identifikátor přiřazený každé aktualizaci image fondu hostitelů
ScheduledDateTime Naplánovaný čas aktualizace hostitele relace ve standardu UTC
CanceledDateTime Čas ve standardu UTC, kdy správce zrušil aktualizaci image
UpdateBatchSize Počet hostitelů relací, kteří byli během aktualizace image v jedné dávce

Aktualizace hostitele relace, které probíhaly nebo selhaly, a pak je správce později zrušil.

Tento dotaz koreluje tabulky WVDSessionHostManagement a WVDCheckpoints poskytuje aktualizace hostitele relace, které probíhaly nebo selhaly, a následně je správce během posledních 30 dnů zrušil:

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

Vrácená datová sada je následující:

Sloupec Vysvětlení
TimeGenerated Časové razítko událostí vygenerované systémem
_SubscriptionId ID předplatného fondu hostitelů
_ResourceId ID zdroje fondu hostitelů
Id korelace Jedinečný identifikátor přiřazený každé aktualizaci hostitele relace fondu hostitelů
ScheduledDateTime Naplánovaný čas aktualizace hostitele relace ve standardu UTC
CanceledDateTime Čas ve standardu UTC, kdy správce zrušil aktualizaci hostitele relace
TotalSessionHostsInHostPool Celkový počet hostitelů relací ve fondu hostitelů
SessionHostUpdateCount Počet hostitelů relací, kteří byli aktualizováni před zrušením aktualizace hostitele relace
UpdateBatchSize Počet hostitelů relací v jedné dávce během aktualizace hostitele relace

Stav každé aktualizace hostitele relace

Tento dotaz koreluje tabulky WVDSessionHostManagement a WVDCheckpoints poskytuje nejnovější stav každé aktualizace hostitele relace za posledních 30 dnů:

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)

Vrácená datová sada je následující:

Sloupec Vysvětlení
TimeGenerated Časové razítko událostí vygenerované systémem
_SubscriptionId ID předplatného pro fond hostitelů
_ResourceId ID zdroje fondu hostitelů
Id korelace Jedinečný identifikátor přiřazený každé aktualizaci image fondu hostitelů
Stav zřizování Aktuální stav aktualizace image fondu hostitelů
ScheduledDateTime Naplánovaný čas aktualizace hostitele relace ve standardu UTC
UpdateBatchSize Počet hostitelů relací v jedné dávce během aktualizace image
SessionHostUpdateCount Počet aktualizovaných hostitelů relací

Další kroky

Pokyny k řešení potíží s aktualizací hostitele relace najdete v tématu Řešení potíží s aktualizací hostitele relace.