Partager via


Exemples de requêtes de diagnostic pour la mise à jour de l’hôte de session dans Azure Virtual Desktop

Importante

La mise à jour de l’hôte de session pour Azure Virtual Desktop est actuellement en préversion. Consultez les Conditions d’utilisation supplémentaires pour les préversions Microsoft Azure pour connaître les conditions juridiques applicables aux fonctionnalités Azure qui sont en version bêta, en préversion ou qui ne sont pas encore publiées en disponibilité générale.

La mise à jour de l’hôte de session utilise Log Analytics dans Azure Monitor pour stocker des informations sur les mises à jour. Cet article contient des exemples de requêtes Kusto que vous pouvez utiliser avec Log Analytics pour afficher des informations sur les mises à jour de l’hôte de session.

Configuration requise

Avant de pouvoir utiliser ces requêtes, vous avez besoin des éléments suivants :

  • Un pool d’hôtes existant avec une configuration d’hôte de session.

  • Paramètres de diagnostic configurés sur chaque pool d’hôtes que vous utilisez avec la mise à jour de l’hôte de session pour envoyer des journaux et des métriques à un espace de travail Log Analytics. Les catégories Points de contrôle, Erreurs et Journaux d’activité de gestion de l’hôte de session doivent être activés au minimum.

  • Une mise à jour d’hôte de session précédemment planifiée et exécutée sur les hôtes de session dans le pool d’hôtes.

Emplacement des données de diagnostic

Une fois que vous avez configuré les paramètres de diagnostic sur un pool d’hôtes, les données de diagnostic pour la mise à jour de l’hôte de session sont stockées dans les tables WVDSessionHostManagement et WVDCheckpoints de votre espace de travail Log Analytics. Les entrées de journal utilisent le type d’activité de gestion existant, qui provient du fournisseur Azure Resource Manager (ARM).

La table WVDSessionHostManagement est spécifique à la mise à jour de l’hôte de session et est créée une fois que vous avez activé la catégorie Journaux d’activité de gestion de l’hôte de session sur les paramètres de diagnostic pour chaque pool d’hôtes que vous utilisez avec la mise à jour de l’hôte de session et les exécutions de mise à jour de l’hôte de session. Si vous avez précédemment configuré des paramètres de diagnostic pour un pool d’hôtes, vous devez activer la catégorie Journaux d’activité de gestion de l’hôte de session. Pour plus d’informations , configurez les paramètres de diagnostic pour capturer les journaux et les métriques de plateforme pour Azure Virtual Desktop.

Le reste de cet article contient quelques exemples de requêtes que vous pouvez exécuter. Vous pouvez les utiliser comme base pour créer vos propres requêtes. Vous devez exécuter chacune de ces requêtes dans Log Analytics. Pour plus d’informations sur l’exécution des requêtes, consultez Démarrer Log Analytics.

Mises à jour de l’hôte de session qui se sont terminées avec succès

Cette requête met en corrélation les tables WVDSessionHostManagement et WVDCheckpoints fournit le temps nécessaire pour effectuer une mise à jour et le temps médian de mise à jour d’un hôte de session unique en minutes au cours des 30 derniers jours :

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

Le jeu de données retourné est le suivant :

Column Définition
TimeGenerated Horodatage des événements générés par le système
_SubscriptionId ID d’abonnement d’un pool d’hôtes
_ResourceId ID de ressource d’un pool d’hôtes
CorrelationId Identificateur unique affecté à chaque mise à jour d’image effectuée sur un pool d’hôtes
UpdateStartDateTime Horodatage de début de la mise à jour de l’hôte de session au format UTC
UpdateEndDateTime Horodatage de fin de la mise à jour de l’hôte de session au format UTC
UpdateDuration Temps nécessaire pour mettre à jour l’image de tous les hôtes de session dans un pool d’hôtes en minutes
SessionHostUpdateCount Nombre d’hôtes de session mis à jour
MedianSessionHostUpdateTime Temps médian de mise à jour de l’image d’un hôte de session unique en minutes
UpdateBatchSize Nombre d’hôtes de session qui se trouvaient dans un seul lot lors d’une mise à jour de l’image
FromSessionHostConfigVer Configuration de l’hôte de session avant une mise à jour de l’image
ToSessionHostConfigVer Configuration de l’hôte de session après une mise à jour de l’image
UpdateDeleteOriginalVm Si la machine virtuelle d’origine a été conservée après la fin d’une mise à jour de l’image

Erreurs lors d’une mise à jour de l’hôte de session

Cette requête met en corrélation les tables WVDSessionHostManagement et WVDErrors fournit des informations que vous pouvez utiliser pour résoudre les erreurs lors des mises à jour de l’hôte de session au cours des 30 derniers jours :

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

Le jeu de données retourné est le suivant :

Column Définition
TimeGenerated Horodatage des événements générés par le système
_SubscriptionId ID d’abonnement d’un pool d’hôtes
_ResourceId ID de ressource d’un pool d’hôtes
CorrelationId Identificateur unique affecté à chaque mise à jour d’image effectuée sur un pool d’hôtes
CodeSymbolic Code d’erreur
SessionHostResourceId ID de ressource d’un hôte de session, le cas échéant
Message Informations relatives aux erreurs
FromSessionHostConfigVer Version de configuration de l’hôte de session avant une mise à jour d’image
ToSessionHostConfigVer Version de configuration de l’hôte de session vers laquelle les hôtes de session ont été mis à jour lorsque le processus de mise à jour a échoué

Mises à jour de l’hôte de session annulées par un administrateur avant l’heure planifiée

Cette requête met en corrélation les tables WVDSessionHostManagement et WVDCheckpoints fournit les mises à jour de l’hôte de session qui ont été planifiées, puis annulées par un administrateur avant leur démarrage, au cours des 30 derniers jours :

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

Le jeu de données retourné est le suivant :

Column Définition
TimeGenerated Horodatage des événements générés par le système
_SubscriptionId ID d’abonnement d’un pool d’hôtes
_ResourceId ID de ressource d’un pool d’hôtes
CorrelationId Identificateur unique affecté à chaque mise à jour de l’image d’un pool d’hôtes
ScheduledDateTime Heure planifiée de mise à jour de l’hôte de session au format UTC
CanceledDateTime Heure UTC où une mise à jour de l’image a été annulée par un administrateur
UpdateBatchSize Nombre d’hôtes de session qui se trouvaient dans un seul lot lors d’une mise à jour de l’image

Mises à jour de l’hôte de session en cours ou ayant échoué, puis annulées ultérieurement par un administrateur

Cette requête met en corrélation les tables WVDSessionHostManagement et WVDCheckpoints fournit des mises à jour de l’hôte de session en cours ou en échec, puis annulées ultérieurement par un administrateur au cours des 30 derniers jours :

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

Le jeu de données retourné est le suivant :

Column Définition
TimeGenerated Horodatage des événements générés par le système
_SubscriptionId ID d’abonnement d’un pool d’hôtes
_ResourceId ID de ressource d’un pool d’hôtes
CorrelationId Identificateur unique affecté à chaque mise à jour de l’hôte de session d’un pool d’hôtes
ScheduledDateTime Heure planifiée de mise à jour de l’hôte de session au format UTC
CanceledDateTime Heure UTC où un administrateur a annulé une mise à jour de l’hôte de session
TotalSessionHostsInHostPool Nombre total d’hôtes de session dans un pool d’hôtes
SessionHostUpdateCount Nombre d’hôtes de session qui ont été mis à jour avant l’annulation d’une mise à jour de l’hôte de session
UpdateBatchSize Nombre d’hôtes de session dans un seul lot pendant une mise à jour de l’hôte de session

État de chaque mise à jour de l’hôte de session

Cette requête met en corrélation les tables WVDSessionHostManagement et WVDCheckpoints fournit les dernières status de chaque mise à jour de l’hôte de session au cours des 30 derniers jours :

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)

Le jeu de données retourné est le suivant :

Column Définition
TimeGenerated Horodatage des événements générés par le système
_SubscriptionId ID d’abonnement pour un pool d’hôtes
_ResourceId ID de ressource d’un pool d’hôtes
CorrelationId Identificateur unique affecté à chaque mise à jour de l’image d’un pool d’hôtes
ProvisioningStatus Status actuelle d’une mise à jour de l’image d’un pool d’hôtes
ScheduledDateTime Heure planifiée de mise à jour de l’hôte de session au format UTC
UpdateBatchSize Nombre d’hôtes de session dans un seul lot lors d’une mise à jour de l’image
SessionHostUpdateCount Nombre d’hôtes de session qui ont été mis à jour

Étapes suivantes

Pour obtenir des conseils de dépannage pour la mise à jour de l’hôte de session, consultez Résoudre les problèmes liés à la mise à jour de l’hôte de session.