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.