Beispieldiagnoseabfragen für das Sitzungshostupdate in Azure Virtual Desktop
Wichtig
Sitzungshostupdates für Azure Virtual Desktop befinden sich derzeit in der VORSCHAU. Die Vorschauversion wird im vorliegenden Zustand mit allen Fehlern und nach Verfügbarkeit bereitgestellt und ist von SLAs (Vereinbarungen zum Servicelevel) oder jeglichen eingeschränkten Gewährleistungen ausgeschlossen, die Microsoft für allgemein verfügbare Azure-Dienste anbietet. Um sich für die eingeschränkte Vorschau zu registrieren, füllen Sie dieses Formular aus: https://forms.office.com/r/ZziQRGR1Lz.
Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.
Das Sitzungshostupdate verwendet Log Analytics in Azure Monitor, um Informationen zu Updates zu speichern. Dieser Artikel enthält einige Kusto-Beispielabfragen, die Sie mit Log Analytics verwenden können, um Informationen zu Sitzungshostupdates anzuzeigen.
Voraussetzungen
Bevor Sie diese Abfragen verwenden können, benötigen Sie Folgendes:
einen vorhandenen Hostpool mit einer Sitzungshostkonfiguration
konfigurierte Diagnoseeinstellungen in jedem Hostpool, den Sie mit Sitzungshostupdate verwenden, um Protokolle und Metriken an einen Log Analytics-Arbeitsbereich zu senden Die Kategorien Prüfpunkt, Fehlerund Sitzungshostverwaltungsaktivitätsprotokolle müssen mindestens aktiviert sein.
ein zuvor geplantes und ausgeführtes Sitzungshostupdate auf den Sitzungshosts im Hostpool
Speicherort für Diagnosedaten
Nachdem Sie Diagnoseeinstellungen in einem Hostpool konfiguriert haben, werden Diagnosedaten für Sitzungshostupdates in den Tabellen WVDSessionHostManagement
und WVDCheckpoints
Ihres Log Analytics-Arbeitsbereichs gespeichert. Protokolleinträge verwenden den vorhandenen Management-Aktivitätstyp, der vom ARM-Anbieter (Azure Resource Manager) stammt.
Die Tabelle WVDSessionHostManagement
ist spezifisch für das Sitzungshostupdate und wird erstellt, sobald Sie die Kategorie Sitzungshostverwaltungsaktivitätsprotokolle in den Diagnoseeinstellungen für jeden Hostpool, den Sie mit Sitzungshostupdates verwenden, und das Sitzungshostupdate wird ausgeführt. Wenn Sie zuvor Diagnoseeinstellungen für einen Hostpool konfiguriert haben, müssen Sie die Kategorie Sitzungshostverwaltungsaktivitätsprotokolle aktivieren. Weitere Informationen finden Sie unter Konfigurieren von Diagnoseeinstellungen zum Erfassen von Plattformprotokollen und Metriken für Azure Virtual Desktop.
Der Rest dieses Artikels enthält einige Beispielabfragen, die Sie ausführen können. Sie können sie als Grundlage verwenden, um eigene Abfragen zu erstellen. Sie müssen jede dieser Abfragen in Log Analytics ausführen. Weitere Informationen zum Ausführen von Abfragen finden Sie unter Starten von Log Analytics.
Sitzungshostupdates, die erfolgreich abgeschlossen wurden
Diese Abfrage korreliert die Tabellen WVDSessionHostManagement
und WVDCheckpoints
, um die Zeit für den Abschluss eines Updates und die Medianzeit für das Update eines einzelnen Sitzungshosts in Minuten in den letzten 30 Tagen anzugeben:
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
Das zurückgegebene Dataset lautet wie folgt:
Column | Definition |
---|---|
TimeGenerated | Vom System generierter Ereigniszeitstempel |
_SubscriptionId | Abonnement-ID eines Hostpools |
_ResourceId | Ressourcen-ID eines Hostpools |
CorrelationId | Eindeutiger Bezeichner, der allen Imageupdates zugewiesen ist, die für einen Hostpool ausgeführt werden |
UpdateStartDateTime | Startzeitstempel des Sitzungshostupdates in UTC |
UpdateEndDateTime | Zeitstempel des Sitzungshostupdates in UTC |
UpdateDuration | Benötigte Zeit zum Aktualisieren des Images aller Sitzungshosts in einem Hostpool in Minuten |
SessionHostUpdateCount | Anzahl der aktualisierten Sitzungshosts |
MedianSessionHostUpdateTime | Medianzeit zum Aktualisieren des Images eines einzelnen Sitzungshosts in Minuten |
UpdateBatchSize | Anzahl der Sitzungshosts, die sich während eines Updates des Images in einem einzelnen Batch befanden |
FromSessionHostConfigVer | Sitzungshostkonfiguration vor einem Update des Images |
ToSessionHostConfigVer | Sitzungshostkonfiguration nach einem Update des Images |
UpdateDeleteOriginalVm | Gibt an, ob der ursprüngliche virtuelle Computer nach Abschluss eines Updates des Images beibehalten wurde |
Fehler während eines Sitzungshostupdates
Diese Abfrage korreliert die Tabellen WVDSessionHostManagement
und WVDErrors
, um Informationen bereitzustellen, die Sie zum Beheben von Fehlern während Sitzungshostupdates in den letzten 30 Tagen verwenden können:
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
Das zurückgegebene Dataset lautet wie folgt:
Column | Definition |
---|---|
TimeGenerated | Vom System generierter Ereigniszeitstempel |
_SubscriptionId | Abonnement-ID eines Hostpools |
_ResourceId | Ressourcen-ID eines Hostpools |
CorrelationId | Eindeutiger Bezeichner, der allen Imageupdates zugewiesen ist, die für einen Hostpool ausgeführt werden |
CodeSymbolic | Fehlercode |
SessionHostResourceId | Ressourcen-ID eines Sitzungshosts, falls vorhanden |
`Message` | Fehlerinformationen |
FromSessionHostConfigVer | Sitzungshostkonfigurationsversion vor einem Imageupdate |
ToSessionHostConfigVer | Sitzungshostkonfigurationsversion, auf die Sitzungshosts aktualisiert wurden, bei denen der Updatevorgang fehlgeschlagen ist |
Sitzungshostupdates, die von einem Administrator vor der geplanten Zeit abgebrochen wurden
Diese Abfrage korreliert die Tabellen WVDSessionHostManagement
und WVDCheckpoints
, um Sitzungshostupdates bereitzustellen, die in den letzten 30 Tagen geplant, aber dann vor dem Start von einem Administrator abgebrochen wurden:
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
Das zurückgegebene Dataset lautet wie folgt:
Column | Definition |
---|---|
TimeGenerated | Vom System generierter Ereigniszeitstempel |
_SubscriptionId | Abonnement-ID eines Hostpools |
_ResourceId | Ressourcen-ID eines Hostpools |
CorrelationId | Eindeutiger Bezeichner, der jedem Update des Images eines Hostpools zugewiesen ist |
ScheduledDateTime | Geplante Zeit für das Sitzungshostupdate in UTC |
CanceledDateTime | Uhrzeit in UTC, zu der ein Update des Images von einem Administrator abgebrochen wurde |
UpdateBatchSize | Anzahl der Sitzungshosts, die sich während eines Updates des Images in einem einzelnen Batch befanden |
Sitzungshostupdates, die ausgeführt wurden oder fehlgeschlagen sind, und dann später von einem Administrator abgebrochen wurden
Diese Abfrage korreliert die Tabellen WVDSessionHostManagement
und WVDCheckpoints
, um Sitzungshostupdates bereitzustellen, die in den letzten 30 Tagen ausgeführt wurden oder fehlgeschlagen sind, und dann später von einem Administrator abgebrochen wurden:
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
Das zurückgegebene Dataset lautet wie folgt:
Column | Definition |
---|---|
TimeGenerated | Vom System generierter Ereigniszeitstempel |
_SubscriptionId | Abonnement-ID eines Hostpools |
_ResourceId | Ressourcen-ID eines Hostpools |
CorrelationId | Eindeutiger Bezeichner, der jedem Update des Sitzungshosts eines Hostpools zugewiesen ist |
ScheduledDateTime | Geplante Zeit für das Sitzungshostupdate in UTC |
CanceledDateTime | Uhrzeit in UTC, zu der ein Administrator ein Update des Sitzungshosts abgebrochen hat |
TotalSessionHostsInHostPool | Gesamtzahl der Sitzungshosts in einem Hostpool |
SessionHostUpdateCount | Anzahl der Sitzungshosts, die vor dem Abbruch eines Sitzungshostupdates aktualisiert wurden |
UpdateBatchSize | Anzahl der Sitzungshosts, die sich während eines Updates des Sitzungshosts in einem einzelnen Batch befanden |
Status jedes Sitzungshostupdates
Diese Abfrage korreliert die Tabellen WVDSessionHostManagement
und WVDCheckpoints
, um den neuesten Status jedes SItzungshostupdates in den letzten 30 Tagen anzugeben:
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)
Das zurückgegebene Dataset lautet wie folgt:
Column | Definition |
---|---|
TimeGenerated | Vom System generierter Ereigniszeitstempel |
_SubscriptionId | Abonnement-ID für einen Hostpool |
_ResourceId | Ressourcen-ID eines Hostpools |
CorrelationId | Eindeutiger Bezeichner, der jedem Update des Images eines Hostpools zugewiesen ist |
ProvisioningStatus | Aktueller Status eines Updates des Images eines Hostpools |
ScheduledDateTime | Geplante Zeit für das Sitzungshostupdate in UTC |
UpdateBatchSize | Anzahl der Sitzungshosts, die sich während eines Updates des Images in einem einzelnen Batch befanden |
SessionHostUpdateCount | Anzahl der Sitzungshosts, die aktualisiert wurden |
Nächste Schritte
Anleitungen zur Problembehandlung für das Sitzungshostupdate finden Sie unter Problembehandlung bei Sitzungshostupdates.