Compartir vía


Consultas de diagnóstico de ejemplo para la actualización del host de sesión en Azure Virtual Desktop

Importante

La actualización del host de sesión para Azure Virtual Desktop se encuentra actualmente en VERSIÓN PRELIMINAR. Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

La actualización del host de sesión usa Log Analytics en Azure Monitor para almacenar información sobre las actualizaciones. En este artículo se incluyen algunas consultas de Kusto de ejemplo que puede usar con Log Analytics para ver información sobre las actualizaciones del host de sesión.

Requisitos previos

Para poder usar estas consultas, necesita lo siguiente:

  • Un grupo de hosts existente con una configuración de host de sesión.

  • Se han configurado valores de diagnóstico en cada grupo host que use con la actualización del host de sesión para enviar registros y métricas a un área de trabajo de Log Analytics. Las categorías Punto de control, Error y Host de sesión de administración de registros de actividad deben estar habilitadas como mínimo.

  • Una actualización de host de sesión programada y ejecutada previamente en los hosts de sesión del grupo de hosts.

Ubicación de datos de diagnóstico

Una vez que haya configurado las opciones de diagnóstico en un grupo host, los datos de diagnóstico para la actualización del host de sesión se almacenan en las tablas WVDSessionHostManagement y WVDCheckpoints del área de trabajo de Log Analytics. Las entradas de registro usan el tipo de actividad Administración existente, que procede del proveedor de Azure Resource Manager (ARM).

La tabla WVDSessionHostManagement es específica de la actualización del host de sesión y se crea una vez que se habilita la categoría Registros de actividad de administración de host de sesión en la configuración de diagnóstico de cada grupo host que use con la actualización del host de sesión y se ejecuta la actualización del host de sesión. Si anteriormente configuró las opciones de diagnóstico para un grupo de hosts, debe habilitar la categoría Registros de actividad de administración de host de sesión. Para más información Configure valores de diagnóstico para capturar métricas y registros de plataforma para Azure Virtual Desktop.

El resto de este artículo tiene algunas consultas de ejemplo que puede ejecutar. Puede usarlas como base para crear sus propias consultas. Debe ejecutar cada una de estas consultas en Log Analytics. Para obtener más información sobre cómo ejecutar consultas, lea Iniciar Log Analytics.

Actualizaciones del host de sesión que se completaron correctamente

Esta consulta correlaciona las tablas WVDSessionHostManagement y WVDCheckpoints para proporcionar el tiempo necesario para completar una actualización y la mediana para actualizar un host de sesión único en minutos en los últimos 30 días:

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

El conjunto de datos devuelto es el siguiente:

Columna Definición
TimeGenerated Marca de tiempo del evento generado por el sistema
_SubscriptionId Identificador de suscripción de un grupo de hosts
_ResourceId Identificador de recurso de un grupo de hosts
CorrelationId Identificador único asignado a cada actualización de imagen realizada en un grupo de hosts
UpdateStartDateTime Marca de tiempo de inicio de la actualización del host de sesión en UTC
UpdateEndDateTime Marca de tiempo de finalización de la actualización del host de sesión en UTC
UpdateDuration Tiempo necesario para completar la actualización de la imagen de todos los hosts de sesión de un grupo de hosts en minutos
SessionHostUpdateCount Número de hosts de sesión actualizados
MedianSessionHostUpdateTime Mediana del tiempo necesario para actualizar la imagen de un único host de sesión en minutos
UpdateBatchSize Número de hosts de sesión que estaban en un único lote durante una actualización de la imagen
FromSessionHostConfigVer Configuración del host de sesión antes de actualizar la imagen
ToSessionHostConfigVer Configuración del host de sesión después de una actualización de la imagen
UpdateDeleteOriginalVm Si la máquina virtual original se conserva después de la finalización de una actualización de la imagen

Errores durante una actualización del host de sesión

Esta consulta correlaciona las tablas WVDSessionHostManagement y WVDErrors para proporcionar información que puede usar para solucionar errores durante las actualizaciones del host de sesión en los últimos 30 días:

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

El conjunto de datos devuelto es el siguiente:

Columna Definición
TimeGenerated Marca de tiempo del evento generado por el sistema
_SubscriptionId Identificador de suscripción de un grupo de hosts
_ResourceId Identificador de recurso de un grupo de hosts
CorrelationId Identificador único asignado a cada actualización de imagen realizada en un grupo de hosts
CodeSymbolic Código de error
SessionHostResourceId Identificador de recurso de un host de sesión, si procede
Mensaje Información de errores
FromSessionHostConfigVer Versión de configuración del host de sesión antes de una actualización de imagen
ToSessionHostConfigVer Versión de configuración del host de sesión a la que se actualizaron los hosts de sesión en los que se produjo un error en el proceso de actualización

Actualizaciones del host de sesión canceladas por un administrador antes de la hora programada

Esta consulta correlaciona las tablas WVDSessionHostManagement y WVDCheckpoints para proporcionar actualizaciones de host de sesión programadas, pero luego canceladas por un administrador antes de comenzar, en los últimos 30 días:

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

El conjunto de datos devuelto es el siguiente:

Columna Definición
TimeGenerated Marca de tiempo del evento generado por el sistema
_SubscriptionId Identificador de suscripción de un grupo de hosts
_ResourceId Identificador de recurso de un grupo de hosts
CorrelationId Identificador único asignado a cada actualización de la imagen de un grupo de hosts
ScheduledDateTime Hora programada de actualización del host de sesión en UTC
CanceledDateTime Hora UTC en la que un administrador canceló una actualización de la imagen
UpdateBatchSize Número de hosts de sesión que estaban en un único lote durante una actualización de la imagen

Actualizaciones del host de sesión que estaban en curso o con errores y, a continuación, las canceló posteriormente un administrador

Esta consulta correlaciona las tablas WVDSessionHostManagement y WVDCheckpoints para proporcionar actualizaciones del host de sesión que estaban en curso o con errores y, posteriormente, las canceló un administrador en los últimos 30 días:

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

El conjunto de datos devuelto es el siguiente:

Columna Definición
TimeGenerated Marca de tiempo del evento generado por el sistema
_SubscriptionId Identificador de suscripción de un grupo de hosts
_ResourceId Identificador de recurso de un grupo de hosts
CorrelationId Identificador único asignado a cada actualización del host de sesión de un grupo de hosts
ScheduledDateTime Hora programada de actualización del host de sesión en UTC
CanceledDateTime Hora UTC en la que un administrador canceló una actualización del host de sesión
TotalSessionHostsInHostPool Número total de hosts de sesión en un grupo de hosts
SessionHostUpdateCount Número de hosts de sesión que se actualizaron antes de cancelar una actualización del host de sesión
UpdateBatchSize Número de hosts de sesión en un único lote durante una actualización del host de sesión

Estado de cada actualización del host de sesión

Esta consulta correlaciona las tablas WVDSessionHostManagement y WVDCheckpoints para proporcionar el estado más reciente de cada actualización del host de sesión en los últimos 30 días:

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)

El conjunto de datos devuelto es el siguiente:

Columna Definición
TimeGenerated Marca de tiempo del evento generado por el sistema
_SubscriptionId Identificador de suscripción para un grupo de hosts
_ResourceId Identificador de recurso de un grupo de hosts
CorrelationId Identificador único asignado a cada actualización de la imagen de un grupo de hosts
ProvisioningStatus Estado actual de una actualización de la imagen de un grupo de hosts
ScheduledDateTime Hora programada de actualización del host de sesión en UTC
UpdateBatchSize Número de hosts de sesión en un único lote durante una actualización de la imagen
SessionHostUpdateCount Número de hosts de sesión que se actualizaron

Pasos siguientes

Para obtener instrucciones de solución de problemas para la actualización del host de sesión, consulte Solución de problemas de actualización del host de sesión.