Voorbeeld van diagnostische query's voor update van sessiehosts in Azure Virtual Desktop
Belangrijk
Update van sessiehost voor Azure Virtual Desktop is momenteel in PREVIEW. Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.
Sessiehost-update maakt gebruik van Log Analytics in Azure Monitor om informatie over updates op te slaan. Dit artikel bevat enkele voorbeelden van Kusto-query's die u met Log Analytics kunt gebruiken voor informatie over updates van sessiehosts.
Vereisten
Voordat u deze query's kunt gebruiken, hebt u het volgende nodig:
Een bestaande hostgroep met een sessiehostconfiguratie.
Geconfigureerde diagnostische instellingen voor elke hostgroep die u gebruikt met sessiehostupdate om logboeken en metrische gegevens te verzenden naar een Log Analytics-werkruimte. De categorieën Controlepunt, Fout en Activiteitenlogboeken voor sessiehostbeheer moeten minimaal zijn ingeschakeld.
Een eerder geplande update van een sessiehost op de sessiehosts in de hostgroep.
Locatie van diagnostische gegevens
Zodra u diagnostische instellingen voor een hostgroep hebt geconfigureerd, worden diagnostische gegevens voor het bijwerken van de sessiehost opgeslagen in de tabellen WVDSessionHostManagement
en WVDCheckpoints
in uw Log Analytics-werkruimte. Logboekvermeldingen maken gebruik van het bestaande type beheeractiviteit , dat afkomstig is van de ARM-provider (Azure Resource Manager).
De tabel WVDSessionHostManagement
is specifiek voor het bijwerken van de sessiehost en wordt gemaakt zodra u de activiteitenlogboeken voor sessiehostbeheer inschakelt in de diagnostische instellingen voor elke hostgroep die u gebruikt met update van sessiehost en uitvoeringen van sessiehostupdates. Als u eerder diagnostische instellingen voor een hostgroep hebt geconfigureerd, moet u de activiteitenlogboeken voor sessiehostbeheer inschakelen. Voor meer informatie Configureer diagnostische instellingen voor het vastleggen van platformlogboeken en metrische gegevens voor Azure Virtual Desktop.
De rest van dit artikel bevat enkele voorbeeldquery's die u kunt uitvoeren. U kunt ze als basis gebruiken om uw eigen query's te maken. U moet elk van deze query's uitvoeren in Log Analytics. Zie Log Analytics starten voor meer informatie over het uitvoeren van query's.
Updates van sessiehosts die zijn voltooid
Deze query correleert de tabellen WVDSessionHostManagement
en WVDCheckpoints
geeft de tijd die nodig is voor het voltooien van een update en de mediaantijd voor het bijwerken van één sessiehost in minuten in de afgelopen 30 dagen:
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
De geretourneerde gegevensset is als volgt:
Kolom | Definitie |
---|---|
TimeGenerated | Door het systeem gegenereerde tijdstempel voor gebeurtenissen |
_SubscriptionId | Abonnements-id van een hostgroep |
_ResourceId | Resource-id van een hostgroep |
CorrelationId | Unieke id die is toegewezen aan elke update van de installatiekopie die wordt uitgevoerd in een hostgroep |
UpdateStartDateTime | Starttijdstempel van sessiehost bijwerken in UTC |
UpdateEndDateTime | Tijdstempel voor voltooiing van sessiehostupdate in UTC |
UpdateDuration | Tijd die nodig is om de installatiekopie van alle sessiehosts in een hostgroep in minuten bij te werken |
SessionHostUpdateCount | Aantal sessiehosts bijgewerkt |
MedianSessionHostUpdateTime | Mediaantijd voor het bijwerken van de installatiekopie van één sessiehost in minuten |
UpdateBatchSize | Aantal sessiehosts die zich in één batch bevonden tijdens een update van de installatiekopieën |
FromSessionHostConfigVer | Sessiehostconfiguratie vóór een update van de installatiekopie |
ToSessionHostConfigVer | Sessiehostconfiguratie na een update van de installatiekopie |
UpdateDeleteOriginalVm | Of de oorspronkelijke virtuele machine behouden blijft na het voltooien van een update van de installatiekopieën |
Fouten tijdens het bijwerken van een sessiehost
Deze query correleert de tabellen WVDSessionHostManagement
en WVDErrors
biedt informatie die u kunt gebruiken om fouten op te lossen tijdens sessiehostupdates in de afgelopen 30 dagen:
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
De geretourneerde gegevensset is als volgt:
Kolom | Definitie |
---|---|
TimeGenerated | Door het systeem gegenereerde tijdstempel voor gebeurtenissen |
_SubscriptionId | Abonnements-id van een hostgroep |
_ResourceId | Resource-id van een hostgroep |
CorrelationId | Unieke id die is toegewezen aan elke update van de installatiekopie die wordt uitgevoerd in een hostgroep |
CodeSymbolicus | Foutcode |
SessionHostResourceId | Resource-id van een sessiehost, indien van toepassing |
Bericht | Foutinformatie |
FromSessionHostConfigVer | Configuratieversie van sessiehost vóór een installatiekopie-update |
ToSessionHostConfigVer | Configuratieversie van sessiehost waarnaar sessiehosts zijn bijgewerkt waar het updateproces is mislukt |
Updates van sessiehosts geannuleerd door een beheerder vóór de geplande tijd
Deze query correleert de tabellen WVDSessionHostManagement
en WVDCheckpoints
biedt updates voor sessiehosts die zijn gepland, maar vervolgens geannuleerd door een beheerder voordat ze zijn gestart, in de afgelopen 30 dagen:
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
De geretourneerde gegevensset is als volgt:
Kolom | Definitie |
---|---|
TimeGenerated | Door het systeem gegenereerde tijdstempel voor gebeurtenissen |
_SubscriptionId | Abonnements-id van een hostgroep |
_ResourceId | Resource-id van een hostgroep |
CorrelationId | Unieke id die is toegewezen aan elke update van de installatiekopie van een hostgroep |
ScheduledDateTime | Geplande tijd voor update van sessiehost in UTC |
CanceledDateTime | Tijd in UTC waarop een update van de afbeelding is geannuleerd door een beheerder |
UpdateBatchSize | Aantal sessiehosts die zich in één batch bevonden tijdens een update van de installatiekopieën |
Updates van sessiehosts die worden uitgevoerd of zijn mislukt, en later geannuleerd door een beheerder
Met deze query worden de tabellen WVDSessionHostManagement
gecorreleerd en WVDCheckpoints
worden updates voor sessiehosts verstrekt die in de afgelopen 30 dagen zijn uitgevoerd of mislukt, en later geannuleerd door een beheerder:
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
De geretourneerde gegevensset is als volgt:
Kolom | Definitie |
---|---|
TimeGenerated | Door het systeem gegenereerde tijdstempel voor gebeurtenissen |
_SubscriptionId | Abonnements-id van een hostgroep |
_ResourceId | Resource-id van een hostgroep |
CorrelationId | Unieke id die is toegewezen aan elke update van de sessiehost van een hostgroep |
ScheduledDateTime | Geplande tijd voor update van sessiehost in UTC |
CanceledDateTime | Tijd in UTC toen een beheerder een update van de sessiehost heeft geannuleerd |
TotalSessionHostsInHostPool | Totaal aantal sessiehosts in een hostgroep |
SessionHostUpdateCount | Aantal sessiehosts dat is bijgewerkt voordat een sessiehostupdate werd geannuleerd |
UpdateBatchSize | Aantal sessiehosts in één batch tijdens een update van de sessiehost |
Status van elke sessiehostupdate
Deze query correleert de tabellen WVDSessionHostManagement
en WVDCheckpoints
geeft de meest recente status op van elke sessiehostupdate in de afgelopen 30 dagen:
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)
De geretourneerde gegevensset is als volgt:
Kolom | Definitie |
---|---|
TimeGenerated | Door het systeem gegenereerde tijdstempel voor gebeurtenissen |
_SubscriptionId | Abonnements-id voor een hostgroep |
_ResourceId | Resource-id van een hostgroep |
CorrelationId | Unieke id die is toegewezen aan elke update van de installatiekopie van een hostgroep |
ProvisioningStatus | Huidige status van een update van de installatiekopie van een hostgroep |
ScheduledDateTime | Geplande tijd voor update van sessiehost in UTC |
UpdateBatchSize | Aantal sessiehosts in één batch tijdens een update van de installatiekopieën |
SessionHostUpdateCount | Aantal sessiehosts dat is bijgewerkt |