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. 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.