Partilhar via


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

Importante

A atualização do host de sessão para a Área de Trabalho Virtual do Azure está atualmente em visualização. Esta pré-visualização é fornecida no estado em que se encontra, com todas as falhas e conforme disponível, e está excluída dos contratos de nível de serviço (SLAs) ou de quaisquer garantias limitadas que a Microsoft forneça para os serviços do Azure em disponibilidade geral. Para se inscrever na pré-visualização limitada, preencha este formulário: https://forms.office.com/r/ZziQRGR1Lz.

Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

A atualização do host de 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 de host de sessão.

Pré-requisitos

Antes de poder usar essas consultas, você precisa:

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

  • Configurações de diagnóstico definidas em cada pool de hosts que você usa com a atualização do host de sessão para enviar logs e métricas para um espaço de trabalho do Log Analytics. As categorias Ponto de verificação, Erro e Logs de atividades de gerenciamento de host de sessão devem ser habilitadas como um mínimo.

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

Localização dos dados de diagnóstico

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

A tabela WVDSessionHostManagement é específica para a atualização do host de sessão e é criada assim que você habilita a categoria Logs de Atividade de Gerenciamento de Host de Sessão nas configurações de diagnóstico para cada pool de hosts usado com a atualização do host de sessão e a atualização do host de sessão é executada. Se você definiu anteriormente as configurações de diagnóstico para um pool de hosts, precisará habilitar a categoria Logs de atividades de gerenciamento de host de 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 alguns exemplos de consultas que você pode executar. Você pode usá-los 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, consulte Iniciar o Log Analytics.

Atualizações do host de sessão 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 médio para atualizar um único host 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 retornado é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora do 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 hosts
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 a atualização da 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 de 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 de sessão antes de uma atualização da imagem
ToSessionHostConfigVer Configuração do host de 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 de sessão

Esta consulta correlaciona as tabelas WVDSessionHostManagement e WVDErrors fornece informações que você pode usar para solucionar erros durante atualizações de host de 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 do 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 hosts
CodeSymbolic Código de erro
SessionHostResourceId ID de recurso de um host de sessão, se aplicável
Mensagem Informações de erro
FromSessionHostConfigVer Versão de configuração do host de sessão antes de uma atualização de imagem
ToSessionHostConfigVer Versão de configuração do host de sessão para a qual os hosts de sessão foram atualizados onde o processo de atualização falhou

Atualizações do host de sessão canceladas por um administrador antes do horário agendado

Esta consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints fornece atualizações de host de sessão que foram 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 do 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 Atualização do anfitrião da sessão hora agendada em UTC
CanceledDateTime Hora em UTC quando 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 de sessão que estavam em andamento ou falharam e, posteriormente, canceladas por um administrador

Esta consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints fornece atualizações de host de sessão que estavam em andamento 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 retornado é o seguinte:

Coluna Definição
TimeGenerated Carimbo de data/hora do 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 de sessão de um pool de hosts
ScheduledDateTime Atualização do anfitrião da sessão hora agendada 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 de host de sessão
UpdateBatchSize Número de hosts de sessão em um único lote durante uma atualização do host de sessão

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

Esta consulta correlaciona as tabelas WVDSessionHostManagement e WVDCheckpoints fornece o status mais recente de cada atualização de host de 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 do evento gerado pelo sistema
_SubscriptionId ID de assinatura para 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
Status de provisionamento Status atual de uma atualização da imagem de um pool de hosts
ScheduledDateTime Atualização do anfitrião da sessão hora agendada 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óximos passos

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