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.