Sdílet prostřednictvím


Příklady diagnostických dotazů na 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é platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze 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ěkteré příklady dotazů Kusto, které můžete použít se službou Log Analytics k zobrazení informací o aktualizacích hostitele relace.

Požadavky

Než budete moct tyto dotazy použít, potřebujete:

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

  • Nakonfigurovaná nastavení diagnostiky pro každý fond hostitelů, který používáte s aktualizací hostitele relace k odesílání protokolů a metrik do pracovního prostoru služby Log Analytics. Kategorie Kontrolní bod, Chyba a Protokoly aktivit správy hostitelů relací musí být povoleny 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 ukládají 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í z poskytovatele Azure Resource Manageru (ARM).

Tabulka WVDSessionHostManagement je specifická pro aktualizaci hostitele relace a je vytvořena, jakmile povolíte protokoly aktivit správy hostitelů relace v nastavení diagnostiky pro každý fond hostitelů, který používáte s aktualizací hostitele relace, a aktualizace hostitele relace se spustí. Pokud jste dříve nakonfigurovali nastavení diagnostiky pro fond hostitelů, musíte povolit protokoly aktivit správy hostitelů relací. Další informace o konfiguraci nastavení diagnostiky pro zaznamenání protokolů platformy a metrik pro Azure Virtual Desktop.

Zbytek tohoto článku obsahuje několik ukázkových dotazů, které můžete spustit. Můžete je použít jako základ k vytvoření vlastních dotazů. Každý z těchto dotazů je potřeba spustit v Log Analytics. Další informace o spouštění dotazů 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 aktualizace 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 Definice
TimeGenerated Časové razítko události vygenerované systémem
_SubscriptionId ID předplatného fondu hostitelů
_ResourceId ID zdroje fondu hostitelů
CorrelationId Jedinečný identifikátor přiřazený ke každé aktualizaci image provedené ve fondu hostitelů
UpdateStartDateTime Časové razítko spuštění aktualizace hostitele relace v UTC
UpdateEndDateTime Časové razítko dokončení aktualizace hostitele relace v UTC
UpdateDuration Doba potřebná k aktualizaci 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 v jedné dávce během aktualizace image
FromSessionHostConfigVer Konfigurace hostitele relace před aktualizací image
ToSessionHostConfigVer Konfigurace hostitele relace po aktualizaci image
UpdateDeleteOriginalVm Zda byl původní virtuální počítač zachován po dokončení aktualizace image

Chyby při aktualizaci hostitele relace

Tento dotaz koreluje tabulky WVDSessionHostManagement a WVDErrors poskytuje informace, které můžete použít k řešení chyb během aktualizací hostitele relace 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 Definice
TimeGenerated Časové razítko události vygenerované systémem
_SubscriptionId ID předplatného fondu hostitelů
_ResourceId ID zdroje fondu hostitelů
CorrelationId 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é relací aktualizovali, kde se proces aktualizace nezdařil

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

Tento dotaz koreluje tabulky WVDSessionHostManagement a WVDCheckpoints poskytuje aktualizace hostitele relací, které byly naplánovány, ale správce ho před zahájením zrušil 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 Definice
TimeGenerated Časové razítko události vygenerované systémem
_SubscriptionId ID předplatného fondu hostitelů
_ResourceId ID zdroje fondu hostitelů
CorrelationId Jedinečný identifikátor přiřazený ke každé aktualizaci image fondu hostitelů
ScheduledDateTime Naplánovaná aktualizace hostitele relace v UTC
CanceledDateTime Čas ve standardu UTC, kdy správce zrušil aktualizaci image
UpdateBatchSize Počet hostitelů relací, kteří byli v jedné dávce během aktualizace image

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

Tento dotaz koreluje tabulky WVDSessionHostManagement a WVDCheckpoints poskytuje aktualizace hostitele relace, které byly probíhající nebo neúspěšné, a později je správce zrušil 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 == 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 Definice
TimeGenerated Časové razítko události vygenerované systémem
_SubscriptionId ID předplatného fondu hostitelů
_ResourceId ID zdroje fondu hostitelů
CorrelationId Jedinečný identifikátor přiřazený ke každé aktualizaci hostitele relace fondu hostitelů
ScheduledDateTime Naplánovaná aktualizace hostitele relace v 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 Definice
TimeGenerated Časové razítko události vygenerované systémem
_SubscriptionId ID předplatného pro fond hostitelů
_ResourceId ID zdroje fondu hostitelů
CorrelationId Jedinečný identifikátor přiřazený ke každé aktualizaci image fondu hostitelů
ProvisioningStatus Aktuální stav aktualizace image fondu hostitelů
ScheduledDateTime Naplánovaná aktualizace hostitele relace v 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.