Compartilhar via


Solucionar problemas com logs de recursos

Este guia de instruções fornece uma visão geral dos logs de recursos do Azure Web PubSub e dicas para usar os logs para solucionar problemas. Você pode usar logs para identificação de problemas, rastreamento de conexões, rastreamento de mensagens rastreamento de solicitação HTTP e análise.

O que são logs de recursos?

Há três tipos de logs de recurso:

  • Os logs de conectividade fornecem informações detalhadas para conexões de hub do Azure Web PubSub. Eles podem incluir informações básicas, como ID de usuário e ID de conexão ou informações de evento, como conexão e desconexão.
  • Logs de mensagens fornecem informações de rastreamento para mensagens de hub que são enviadas ou recebidas por meio do serviço Azure Web PubSub, como a ID de rastreamento ou o tipo de mensagem.
  • Os logs de solicitação HTTP fornecem informações de rastreamento para solicitações HTTP para o serviço Azure Web PubSub, como o método HTTP ou o código de status. Normalmente, uma solicitação HTTP é registrada quando chega ou sai do serviço.

Capturar logs de recursos usando a ferramenta de rastreamento dinâmico

A ferramenta de rastreamento dinâmico no serviço Azure Web PubSub pode coletar logs de recursos em tempo real, o que é útil para solucionar problemas com o ambiente de desenvolvimento do cliente. A ferramenta de rastreamento dinâmico pode capturar logs de conectividade, logs de mensagens e logs de solicitação HTTP.

Você deve considerar os seguintes fatores ao usar a ferramenta de rastreamento dinâmico:

  • Os logs de recursos em tempo real que a ferramenta de rastreamento dinâmico captura são cobrados como mensagens (tráfego de saída).
  • A instância de Camada gratuita do serviço Azure Web PubSub tem o limite diário de 20.000 mensagens (tráfego de saída). Você pode atingir o limite diário inesperadamente usando o rastreamento dinâmico.
  • No momento, a ferramenta de rastreamento dinâmico não dá suporte à autorização do Microsoft Entra. Você deve habilitar as chaves de acesso para usar o rastreamento dinâmico. Em Configurações, selecione Chaves e habilite a Chave de Acesso.

Inicialização da ferramenta de rastreamento em tempo real

Ao habilitar uma chave de acesso, você usa um token de acesso para autenticar a ferramenta de rastreamento dinâmico. Caso contrário, você usará o Microsoft Entra ID para autenticar a ferramenta de rastreamento dinâmico. Você pode descobrir se a chave de acesso está habilitada acessando o painel Chaves na instância do Serviço do Azure SignalR no portal do Azure.

Abra o rastreamento dinâmico quando a chave de acesso estiver habilitada

  1. Acesse o portal do Azure e o painel do Serviço do SignalR.

  2. No menu de serviço, em Monitoramento, selecione Configurações de rastreamento dinâmico.

  3. Selecione Habilitar Rastreamento em Tempo Real.

  4. Selecione o botão Salvar. Demora um pouco para que as alterações entrem em vigor.

  5. Quando a atualização for concluída, selecione Abrir Ferramenta de Rastreamento em Tempo Real.

    Captura de tela da abertura da ferramenta de rastreamento dinâmico.

Abra a ferramenta de rastreamento dinâmico quando a chave de acesso estiver desabilitada

Atribuir permissão de API de ferramenta de rastreamento dinâmico a si mesmo

  1. Acesse o portal do Azure e o painel do Serviço do SignalR.

  2. Selecione IAM (Controle de acesso).

  3. Selecione + Adicionar e, em seguida, Atribuição de função.

  4. Na guia Funções da função de trabalho, selecione a função Proprietário do Serviço do SignalR e selecione Avançar.

  5. No painel Membros, clique em + Selecionar membros.

  6. Pesquise e selecione membros e, depois, clique em Selecionar.

  7. Selecione Revisar + atribuir e aguarde a notificação de conclusão.

Habilitar a ferramenta de rastreamento dinâmico

  1. Acesse o portal do Azure e o painel do Serviço do SignalR.

  2. No menu de serviço, em Monitoramento, selecione Configurações de rastreamento dinâmico.

  3. Selecione Habilitar Rastreamento em Tempo Real.

  4. Selecione o botão Salvar. Demora um pouco para que as alterações entrem em vigor.

  5. Quando a atualização for concluída, selecione Abrir Ferramenta de Rastreamento em Tempo Real.

    Captura de tela da abertura da ferramenta de rastreamento dinâmico.

Entre com sua conta da Microsoft

  1. A ferramenta de rastreamento dinâmico abrirá uma janela de entrada da Microsoft. Se nenhuma janela abrir, permita janelas pop-up nas configurações do navegador.

  2. Aguarde até que Pronto apareça na barra de status.

Capturar os logs de recursos

A ferramenta de rastreamento dinâmico pode ajudar você a capturar os logs de recursos para solução de problemas.

  • Capturar começa a capturar os logs de recursos em tempo real do Azure Web PubSub.
  • Desmarcar desmarca os logs de recursos capturados em tempo real.
  • Filtro de log filtra os logs de recursos capturados em tempo real com uma palavra-chave específica. Os separadores comuns, como espaço, vírgula e ponto-e-vírgula, são tratados como parte da palavra-chave.
  • Status mostra se a ferramenta de rastreamento dinâmico está conectada ou desconectada com a instância específica.

Captura de tela da captura de logs de recursos com a ferramenta de rastreamento dinâmico.

Os logs de recursos em tempo real capturados pela ferramenta de rastreamento dinâmico contêm informações detalhadas para solução de problemas.

Nome Descrição
Hora Hora do evento de log
Nível de Log Nível do evento de log (Trace, Debug, Informational, Warning ou Error)
Nome do evento Nome da operação do evento
Message Mensagem detalhada para o evento
Exceção A exceção de runtime do serviço Azure Web PubSub
Hub Nome do Hub definido pelo usuário
ID de conexão Identidade da conexão
ID de usuário Identidade do usuário
IP Endereço IP do cliente
Modelo de rota Modelo de rota da API
Método HTTP Método HTTP (POST, GET, PUT ou DELETE)
URL URL
ID de rastreamento Identificador exclusivo para a invocação
Código de status Código de resposta HTTP
Duration A duração entre o recebimento e o processamento da solicitação
Cabeçalhos As informações adicionais passadas pelo cliente e o servidor com uma solicitação ou resposta HTTP

Capturar logs de recursos com Azure Monitor

Habilitar logs de recursos

Atualmente, o Azure Web PubSub dá suporte à integração com o Armazenamento do Microsoft Azure.

  1. Acesse o portal do Azure.

  2. No painel Configurações de diagnóstico da instância de serviço do Azure Web PubSub, selecione + Adicionar configuração de diagnóstico.

    Captura de tela da exibição de configurações de diagnóstico e criação de uma.

  3. Em Nome da configuração de diagnóstico, insira o nome da configuração.

  4. Em Detalhes da categoria, selecione qualquer categoria de log necessária.

  5. Em Detalhes de destino, selecione Arquivar em uma conta de armazenamento.

    Captura de tela da definição da configuração de diagnóstico.

  6. Selecione Salvar para criar a configuração de diagnóstico.

    Observação

    A conta de armazenamento deve estar na mesma região do serviço Azure Web PubSub.

Arquivar em uma conta de Armazenamento do Azure

Os logs são armazenados na conta de armazenamento configurada no painel Configuração de diagnóstico. Um contêiner chamado insights-logs-<CATEGORY_NAME> é criado automaticamente para armazenar os logs de recursos. Dentro do contêiner, os logs são armazenados no arquivo resourceId=/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/XXXX/PROVIDERS/MICROSOFT.SIGNALRSERVICE/SIGNALR/XXX/y=YYYY/m=MM/d=DD/h=HH/m=00/PT1H.json. Basicamente, o caminho é combinado por resource ID e Date Time. Os arquivos de log são divididos por hour. O valor de minuto é sempre m=00.

Todos os logs são armazenados no formato JSON (JavaScript Object Notation). Cada entrada tem campos de cadeia de caracteres que usam o formato descrito nas seções a seguir.

As cadeias de caracteres JSON nos logs de arquivos incluem os elementos listados nas tabelas a seguir.

Formatar

Nome Descrição
time Hora do evento de log
level Nível do evento de log
resourceId ID do recurso da instância do Serviço do Azure SignalR
location A localização da instância do Serviço do Azure SignalR
category Categoria do evento de log
operationName Nome da operação do evento
callerIpAddress Endereço IP do servidor ou cliente
properties Propriedades detalhadas relacionadas a esse evento de log (consulte a tabela a seguir)

Tabela de Propriedades

Nome Descrição
collection Coleção do evento de log (Connection, Authorization ou Throttling)
connectionId Identidade da conexão
userId Identidade do usuário
message Mensagem detalhada do evento de log
hub Nome do Hub definido pelo usuário
routeTemplate Modelo de rota da API
httpMethod Método HTTP (POST, GET, PUT ou DELETE)
url URL
traceId Identificador exclusivo para a invocação
statusCode Código de resposta HTTP
duration A duração de tempo entre o recebimento e o processamento da solicitação
headers As informações adicionais passadas pelo cliente e o servidor com uma solicitação ou resposta HTTP

O código a seguir é um exemplo de uma cadeia de caracteres JSON em um log de arquivos:

{
  "properties": {
    "message": "Connection started",
    "collection": "Connection",
    "connectionId": "LW61bMG2VQLIMYIVBMmyXgb3c418200",
    "userId": null
  },
  "operationName": "ConnectionStarted",
  "category": "ConnectivityLogs",
  "level": "Informational",
  "callerIpAddress": "167.220.255.79",
  "resourceId": "/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/MYGROUP/PROVIDERS/MICROSOFT.SIGNALRSERVICE/WEBPUBSUB/MYWEBPUBSUB",
  "time": "2021-09-17T05:25:05Z",
  "location": "westus"
}

Arquivar no Azure Log Analytics

Para enviar logs para o workspace do Log Analytics:

  1. No painel Configuração de diagnóstico, em Detalhes de destino, selecione Enviar para o workspace do Log Analytics.

  2. Para Assinatura, selecione a assinatura que você quer usar.

  3. Para o destino de logs, selecione Workspace do Log Analytics.

Para exibir os logs de recursos, siga estas etapas:

  1. Selecione Logs no workspace do Log Analytics de destino.

    Captura de tela de um item de menu do Log Analytics.

  2. Para consultar o log, insira WebPubSubConnectivity,WebPubSubMessaging ou WebPubSubHttpRequest e selecione o intervalo de tempo. Para obter mais informações, veja Introdução ao Log Analytics no Azure Monitor.

    Captura de tela de uma consulta no Log Analytics.

Para usar a consulta de exemplo no Serviço do SignalR, siga essas etapas:

  1. Selecione Logs no workspace do Log Analytics de destino.

  2. Selecione Consultas para abrir o gerenciador de consultas.

  3. Selecione o Tipo de recurso para agrupar consultas de exemplo por tipo de recurso.

  4. Selecione Executar para executar o script.

    Captura de tela de uma consulta de exemplo no Log Analytics.

As colunas do log de arquivo incluem os elementos listados na seguinte tabela.

Nome Descrição
TimeGenerated Hora do evento de log
Collection Coleção do evento de log (Connection, Authorization e Throttling)
OperationName Nome da operação do evento
Location A localização da instância do Serviço do Azure SignalR
Level Nível do evento de log
CallerIpAddress Endereço IP do servidor/cliente
Message Mensagem detalhada do evento de log
UserId Identidade do usuário
ConnectionId Identidade da conexão
ConnectionType Tipo da conexão (Server, uma conexão do lado do servidor; e Client, uma conexão do lado do cliente)
TransportType Tipo de transporte da conexão (Websockets, ServerSentEvents e LongPolling)

Usar logs de recurso para solucionar problemas

Se houver aumento ou diminuição inesperados no número de conexões, você pode solucionar o problema usando logs de recursos. Os problemas em potencial incluem alterações inesperadas na quantidade de conexões, conexões atingindo os limites de conexão e falhas de autorização.

Eventos de desconexão inesperados

Se uma conexão for desconectada, os logs de recursos registrarão esse evento de desconexão com ConnectionAborted ou ConnectionEnded em operationName.

A diferença entre ConnectionAborted e ConnectionEnded é que ConnectionEnded é uma desconexão esperada e é disparada pelo lado do cliente ou do servidor. Por outro lado, ConnectionAborted geralmente se refere a um evento no qual uma conexão cai inesperadamente e o motivo da desconexão é fornecido em message.

A tabela a seguir lista os motivos de uma desconexão inesperada.

Motivo Descrição
A contagem de conexões atinge o limite A contagem de conexões atinge o limite da camada de preço atual. Considere escalar verticalmente a unidade de serviço.
Recarregamento de serviço, reconexão O serviço Azure Web PubSub está recarregando. Você precisa implementar seu próprio mecanismo de reconexão ou reconectar-se manualmente ao serviço Azure Web PubSub.
Erro transitório do servidor interno Um erro transitório ocorre no serviço Azure Web PubSub. A recuperação deve ser automática.

Aumento inesperado de conexões

Quando o número de conexões de cliente aumentar inesperadamente, você deverá seguir essas etapas. Primeiro, filtre as conexões supérfluas e adicione uma ID de usuário de teste exclusiva à conexão do cliente de teste. Depois, verifique os logs de recurso. Se você perceber que mais de uma conexão de cliente possui a mesma ID de usuário de teste ou IP, é provável que o cliente esteja criando mais conexões do que o esperado. Verifique o código do cliente para localizar a origem das conexões extras.

Falha de autorização

Se você receber o erro 401 Não Autorizado para as solicitações do cliente, verifique os logs de recursos. Se você encontrar Failed to validate audience. Expected Audiences: <valid audience>. Actual Audiences: <actual audience>, isso significa que todos os públicos no token de acesso são inválidos. Tente usar os públicos válidos sugeridos no log.

Limitação

Se você perceber que não é possível estabelecer conexões de cliente com o serviço Azure Web PubSub, verifique os logs de recursos. Se você encontrar Connection count reaches limit no log de recursos, então você estabeleceu muitas conexões com o serviço Azure Web PubSub e alcançou o limite de contagem de conexão. Considere escalar verticalmente a instância de serviço do Azure Web PubSub.

Se você vir Message count reaches limit no log de recursos e estiver usando a camada Gratuita, isso significa que você usou toda a cota de mensagens. Se você quiser enviar mais mensagens, considere alterar a instância de serviço do Azure Web PubSub para a camada Standard. Para saber mais, confira Preço do Azure Web PubSub.