Compartilhar via


Exemplo de consultas de diagnóstico para atualização do host da sessão na Área de Trabalho Virtual do Azure

Importante

A atualização do host da sessão para a Área de Trabalho Virtual do Azure está atualmente em VERSÃO PRÉVIA. Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

A atualização do host da sessão usa o Log Analytics no Azure Monitor para armazenar informações sobre atualizações. Este artigo tem alguns exemplos de consultas Kusto que você pode usar com o Log Analytics para ver informações sobre atualizações do host da sessão.

Pré-requisitos

Antes de usar essas consultas, você precisa:

  • Um pool de hosts com uma configuração do host da sessão.

  • Configurações de diagnóstico definidas em cada pool de hosts que você usa com a atualização do host da sessão para enviar logs e métricas a um workspace do Log Analytics. As categorias Ponto de Verificação, Erro e Gerenciamento de Host da Sessão devem estar habilitadas, no mínimo.

  • Uma atualização do host da sessão agendada e executada previamente nos hosts de sessão no pool de hosts.

Local dos dados de diagnóstico

Depois de definir as configurações de diagnóstico em um pool de hosts, os dados de diagnóstico da atualização do host da sessão serão armazenados nas tabelas WVDSessionHostManagement e WVDCheckpoints no workspace do Log Analytics. As entradas de log usam o tipo de atividade Gerenciamento existente, que vem do provedor do ARM (Azure Resource Manager).

A tabela WVDSessionHostManagement é específica para a atualização do host da sessão e é criada depois que você habilita a categoria Logs de Atividade de Gerenciamento do Host da Sessão nas configurações de diagnóstico para cada pool de hosts que você usa com a atualização do host da sessão e a atualização do host da sessão é executada. Se você definiu anteriormente as configurações de diagnóstico para um pool de hosts, precisará habilitar a categoria Logs de Atividade de Gerenciamento do Host da Sessão. Para obter mais informações , defina as configurações de diagnóstico para capturar logs e métricas da plataforma para a Área de Trabalho Virtual do Azure.

O restante deste artigo tem algumas consultas de exemplo que você pode executar. Você pode usá-las como base para criar suas próprias consultas. Você precisa executar cada uma dessas consultas no Log Analytics. Para obter mais informações sobre como executar consultas, confira Iniciar o Log Analytics.

Atualizações do host da sessão que foram concluídas com sucesso

Essa consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints fornece o tempo necessário para concluir uma atualização e o tempo médio para atualizar um único host da 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 retornado é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora de evento gerado pelo sistema
_SubscriptionId ID de assinatura de um pool de hosts
_ResourceId ID de recurso de um pool de hosts
CorrelationId Identificador exclusivo atribuído a cada atualização de imagem executada em um pool de host
UpdateStartDateTime Carimbo de data/hora de início da atualização do host da sessão em UTC
UpdateEndDateTime Carimbo de data/hora de conclusão da atualização do host da sessão em UTC
UpdateDuration Tempo necessário para concluir para atualizar a imagem de todos os hosts de sessão em um pool de hosts em minutos
SessionHostUpdateCount Número de hosts de sessão atualizados
MedianSessionHostUpdateTime Tempo médio para atualizar a imagem de um único host da sessão em minutos
UpdateBatchSize Número de hosts de sessão que estavam em um único lote durante uma atualização da imagem
FromSessionHostConfigVer Configuração do host da sessão antes de uma atualização da imagem
ToSessionHostConfigVer Configuração do host 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 host da sessão

Essa consulta correlaciona as tabelas WVDSessionHostManagement e WVDErrors para fornecer informações que você pode usar para solucionar erros durante as atualizações do host 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 retornado é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora de evento gerado pelo sistema
_SubscriptionId ID de assinatura de um pool de hosts
_ResourceId ID de recurso de um pool de hosts
CorrelationId Identificador exclusivo atribuído a cada atualização de imagem executada em um pool de host
CodeSymbolic Código do erro
SessionHostResourceId ID de recurso de um host da sessão, se aplicável
Mensagem Informações de erro
FromSessionHostConfigVer Versão de configuração do host da sessão antes de uma atualização de imagem
ToSessionHostConfigVer Versão de configuração do host da sessão para a qual os hosts de sessão foram atualizados em que o processo de atualização falhou

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

Essa consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints para fornecer atualizações do host da sessão agendadas, mas 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 retornado é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora de evento gerado pelo sistema
_SubscriptionId ID de assinatura de um pool de hosts
_ResourceId ID de recurso de um pool de hosts
CorrelationId Identificador exclusivo atribuído a cada atualização da imagem de um pool de hosts
ScheduledDateTime Hora agendada da atualização do host 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 hosts de sessão que estavam em um único lote durante uma atualização da imagem

Atualizações do host da sessão que estavam em andamento ou falharam e depois foram canceladas por um administrador

Essa consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints para fornecer atualizações do host da sessão que estavam em andamento ou com falha e depois foram 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 retornado é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora de evento gerado pelo sistema
_SubscriptionId ID de assinatura de um pool de hosts
_ResourceId ID de recurso de um pool de hosts
CorrelationId Identificador exclusivo atribuído a cada atualização do host da sessão de um pool de hosts
ScheduledDateTime Hora agendada da atualização do host da sessão em UTC
CanceledDateTime Hora em UTC quando um administrador cancelou uma atualização do host da sessão
TotalSessionHostsInHostPool Número total de hosts de sessão em um pool de hosts
SessionHostUpdateCount Número de hosts de sessão que foram atualizados antes de cancelar uma atualização do host da sessão
UpdateBatchSize Número de hosts de sessão em um único lote durante uma atualização do host da sessão

Status de cada atualização do host da sessão

Essa consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints para fornecer o status mais recente de cada atualização do host da sessão 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 retornado é o seguinte:

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

Próximas etapas

Para obter diretrizes de solução de problemas para atualização do host da sessão, confira Solucionar problemas de atualização do host da sessão.