Freigeben über


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.