Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.