Partilhar via


Consultas de diagnóstico de exemplo para atualização do anfitrião de sessões no Azure Virtual Desktop

Importante

A atualização do anfitrião de sessões para o Azure Virtual Desktop está atualmente em PRÉ-VISUALIZAÇÃO. Veja os Termos de Utilização Suplementares das Pré-visualizações do Microsoft Azure para obter os termos legais aplicáveis às funcionalidades do Azure que estão em versão beta, pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

A atualização do anfitrião de sessões utiliza o Log Analytics no Azure Monitor para armazenar informações sobre atualizações. Este artigo tem algumas consultas kusto de exemplo que pode utilizar com o Log Analytics para ver informações sobre atualizações do anfitrião de sessões.

Pré-requisitos

Antes de poder utilizar estas consultas, precisa de:

  • Um conjunto de anfitriões existente com uma configuração de anfitrião de sessão.

  • Definições de diagnóstico configuradas em cada conjunto de anfitriões que utiliza com a atualização do anfitrião de sessão para enviar registos e métricas para uma área de trabalho do Log Analytics. Os Registos de Atividades de Gestão de Anfitriões de Sessões,Erros e Pontos de Verificação de Categorias têm de estar ativados no mínimo.

  • Uma atualização de anfitrião de sessão agendada anteriormente e executada nos anfitriões de sessões no conjunto de anfitriões.

Localização dos dados de diagnóstico

Depois de configurar as definições de diagnóstico num conjunto de anfitriões, os dados de diagnóstico da atualização do anfitrião da sessão são armazenados nas tabelas WVDSessionHostManagement e WVDCheckpoints na área de trabalho do Log Analytics. As entradas de registo utilizam o tipo de atividade Gestão existente, proveniente do fornecedor do Azure Resource Manager (ARM).

A tabela WVDSessionHostManagement é específica da atualização do anfitrião da sessão e é criada assim que ativar a categoria Registos de Atividades de Gestão de Anfitriões de Sessões nas definições de diagnóstico para cada conjunto de anfitriões que utiliza com a atualização do anfitrião de sessão e as execuções da atualização do anfitrião da sessão. Se tiver configurado anteriormente as definições de diagnóstico para um conjunto de anfitriões, terá de ativar a categoria Registos de Atividades de Gestão de Anfitriões de Sessões. Para obter mais informações , configure as definições de diagnóstico para capturar registos e métricas da plataforma para o Azure Virtual Desktop.

O resto deste artigo tem algumas consultas de exemplo que pode executar. Pode utilizá-las como base para criar as suas próprias consultas. Tem de executar cada uma destas consultas no Log Analytics. Para obter mais informações sobre como executar consultas, veja Iniciar o Log Analytics.

Atualizações do anfitrião de sessões que foram concluídas com êxito

Esta consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints fornece o tempo necessário para concluir uma atualização e o tempo mediano para atualizar um único anfitrião de sessão em minutos nos últimos 30 dias:

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

O conjunto de dados devolvido é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora do evento gerado pelo sistema
_SubscriptionId ID de subscrição de um conjunto de anfitriões
_ResourceId ID de recurso de um conjunto de anfitriões
CorrelationId Identificador exclusivo atribuído a todas as atualizações de imagens executadas num conjunto de anfitriões
UpdateStartDateTime Carimbo de data/hora de início da atualização do anfitrião da sessão em UTC
UpdateEndDateTime Carimbo de data/hora de conclusão da atualização do anfitrião da sessão em UTC
UpdateDuration Tempo necessário para concluir a atualização da imagem de todos os anfitriões de sessão num conjunto de anfitriões em minutos
SessionHostUpdateCount Número de anfitriões de sessão atualizados
MedianSessionHostUpdateTime Tempo mediano para atualizar a imagem de um único anfitrião de sessão em minutos
UpdateBatchSize Número de anfitriões de sessão que estavam num único lote durante uma atualização da imagem
FromSessionHostConfigVer Configuração do anfitrião da sessão antes de uma atualização da imagem
ToSessionHostConfigVer Configuração do anfitrião da sessão após uma atualização da imagem
UpdateDeleteOriginalVm Se a máquina virtual original foi preservada após a conclusão de uma atualização da imagem

Erros durante uma atualização do anfitrião da sessão

Esta consulta correlaciona as tabelas WVDSessionHostManagement e WVDErrors fornece informações que pode utilizar para resolver erros durante as atualizações do anfitrião da sessão nos últimos 30 dias:

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

O conjunto de dados devolvido é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora do evento gerado pelo sistema
_SubscriptionId ID de subscrição de um conjunto de anfitriões
_ResourceId ID de recurso de um conjunto de anfitriões
CorrelationId Identificador exclusivo atribuído a todas as atualizações de imagens executadas num conjunto de anfitriões
CodeSymbolic Código de erro
SessionHostResourceId ID de recurso de um anfitrião de sessão, se aplicável
Mensagem Informações do erro
FromSessionHostConfigVer Versão de configuração do anfitrião da sessão antes de uma atualização de imagem
ToSessionHostConfigVer Versão de configuração do anfitrião da sessão para a qual os anfitriões de sessão foram atualizados onde o processo de atualização falhou

Atualizações do anfitrião da sessão canceladas por um administrador antes da hora agendada

Esta consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints fornece atualizações do anfitrião da sessão agendadas, mas que foram canceladas por um administrador antes de serem iniciadas, nos últimos 30 dias:

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

O conjunto de dados devolvido é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora do evento gerado pelo sistema
_SubscriptionId ID de subscrição de um conjunto de anfitriões
_ResourceId ID de recurso de um conjunto de anfitriões
CorrelationId Identificador exclusivo atribuído a cada atualização da imagem de um conjunto de anfitriões
ScheduledDateTime Hora agendada da atualização do anfitrião da sessão em UTC
CanceledDateTime Hora em UTC em que uma atualização da imagem foi cancelada por um administrador
UpdateBatchSize Número de anfitriões de sessão que estavam num único lote durante uma atualização da imagem

Atualizações do anfitrião de sessões que estavam em curso ou falharam e posteriormente canceladas por um administrador

Esta consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints fornece atualizações do anfitrião da sessão que estavam em curso ou falharam e, posteriormente, canceladas por um administrador nos últimos 30 dias:

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

O conjunto de dados devolvido é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora do evento gerado pelo sistema
_SubscriptionId ID de subscrição de um conjunto de anfitriões
_ResourceId ID de recurso de um conjunto de anfitriões
CorrelationId Identificador exclusivo atribuído a todas as atualizações do anfitrião de sessões de um conjunto de anfitriões
ScheduledDateTime Hora agendada da atualização do anfitrião da sessão em UTC
CanceledDateTime Hora em UTC em que um administrador cancelou uma atualização do anfitrião da sessão
TotalSessionHostsInHostPool Número total de anfitriões de sessão num conjunto de anfitriões
SessionHostUpdateCount Número de anfitriões de sessão que foram atualizados antes de cancelar uma atualização do anfitrião da sessão
UpdateBatchSize Número de anfitriões de sessão num único lote durante uma atualização do anfitrião da sessão

Estado de cada atualização do anfitrião da sessão

Esta consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints fornece os status mais recentes de cada atualização do anfitrião de sessões nos últimos 30 dias:

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)

O conjunto de dados devolvido é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora do evento gerado pelo sistema
_SubscriptionId ID da subscrição de um conjunto de anfitriões
_ResourceId ID de recurso de um conjunto de anfitriões
CorrelationId Identificador exclusivo atribuído a cada atualização da imagem de um conjunto de anfitriões
ProvisioningStatus Status atual de uma atualização da imagem de um conjunto de anfitriões
ScheduledDateTime Hora agendada da atualização do anfitrião da sessão em UTC
UpdateBatchSize Número de anfitriões de sessão num único lote durante uma atualização da imagem
SessionHostUpdateCount Número de anfitriões de sessão que foram atualizados

Próximas etapas

Para obter orientações de resolução de problemas para a atualização do anfitrião de sessões, veja Resolução de problemas de atualização do anfitrião de sessões.