Solucionar problemas do Application Insights Profiler para .NET

Este artigo apresenta etapas de solução de problemas e informações para permitir que você use o Application Insights Profiler para .NET.

Você está usando o ponto de extremidade apropriado do Profiler para .NET?

Atualmente, as únicas regiões que exigem modificações do ponto de extremidade são o Azure Governamental e o Microsoft Azure operado pela 21Vianet.

Configurações de aplicativo Nuvem do governo dos EUA Nuvem da China
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

Seu aplicativo está em execução na versão certa?

Há suporte para o Profiler no .NET Framework posterior à 4.6.2.

Se seu aplicativo Web é um aplicativo ASP.NET Core, deve estar executando no runtime do ASP.NET Core com suporte mais recente.

Você está usando o plano de serviço correto do Azure?

No momento, o Profiler para .NET não tem suporte em planos de serviço de aplicativo gratuitos ou compartilhados. Atualize para um dos planos básicos para o Profiler começar a trabalhar.

Observação

Não há suporte para o plano de consumo do Azure Functions. Confira Criar um perfil do aplicativo dinâmico do Azure Functions com o Application Insights.

Você está procurando dados do Profiler do .NET dentro do período certo?

Se os dados que você está tentando exibir forem mais antigos do que duas semanas atrás, tente limitar seu filtro de tempo e tente novamente. Rastreamentos são excluídos após sete dias.

Você está ciente da taxa de amostragem e sobrecarga do Profiler do .NET?

O Profiler para .NET é executado aleatoriamente dois minutos por hora em cada máquina virtual que hospeda aplicativos com o Profiler ativado.

Observação

Quando o Profiler executa e coleta rastreamentos ativamente, ele normalmente adiciona entre 5% a 15% da CPU e sobrecarga de memória ao servidor.

Não há custo adicional para armazenar os dados capturados pelo Profiler. Os dados são excluídos automaticamente após 15 dias.

Você pode acessar o gateway?

Verifique se um firewall ou proxies não estão bloqueando seu acesso a esta página da Web.

Você está vendo tempos limite ou precisa verificar se o Profiler do .NET está em execução?

Os dados de criação de perfil são carregados somente quando podem ser anexados a uma solicitação que aconteceu enquanto o Profiler estava em execução. O Profiler do .NET coleta dados por dois minutos a cada hora. Você também pode disparar o Profiler iniciando uma sessão de criação de perfil.

O Profiler grava mensagens de rastreamento e eventos personalizados no recurso de Application Insights. Você pode usar esses eventos para ver como o Profiler está sendo executado.

Procure por mensagens de rastreio e eventos personalizados enviados pelo Profiler do .NET para o recurso Application Insights.

  1. Em seu recurso Application Insights, selecione Pesquisar no menu superior.

    Captura de tela da seleção do botão de pesquisa do recurso do Application Insights.

  2. Use a seguinte cadeia de caracteres de pesquisa para encontrar os dados relevantes:

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    Captura de tela dos resultados da pesquisa da cadeia de caracteres de pesquisa mencionada anteriormente.

    Os resultados da pesquisa anteriores incluem dois exemplos de pesquisas de dois recursos de IA:

    • Se o aplicativo não estiver recebendo solicitações enquanto o Profiler estiver em execução, a mensagem explicará que o upload foi cancelado devido a nenhuma atividade.

    • O Profiler iniciou e enviou eventos personalizados quando detectou solicitações que ocorreram enquanto o Profiler estava em execução. Se o ServiceProfilerSample evento personalizado for exibido, significa que um perfil foi capturado e está disponível no painel de desempenho do Application Insights.

    Se nenhum registro for exibido, o Profiler não esta em execução ou demorou demais para responder. Verifique se o Profiler está habilitado no serviço do Azure.

O Profiler do .NET está ativado, mas nenhum rastreamento foi capturado

Mesmo quando o Profiler está habilitado, ele pode não capturar nem carregar rastreamentos, especialmente nestas situações:

  1. Nenhuma solicitação de entrada para seu aplicativo:
    Você pode invocar manualmente seu aplicativo ou criar um teste de disponibilidade ou um teste de carga.

  2. Nenhuma telemetria de entrada confirmada pelo Application Insights:

  3. A configuração do Profiler para Amostragem está desativada:
    Se ainda não houver rastreamentos do Profiler disponíveis, verifique a configuração de Amostragem do Profiler.

    1. Abra a folha Application Insights>Desempenho.
    2. Clique no Profiler.
    3. Clique no botão Gatilhos.
    4. Nas Configurações de Gatilho, verifique se o controle de alternância Amostragem está ativado.
  4. Ainda não há rastreamentos carregados?
    Crie uma solicitação de suporte ou peça suporte à comunidade do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.

Dois segmentos paralelos de contagem

Quando dois ou mais threads paralelos são associados a uma solicitação, a métrica de tempo total no visualizador de pilha pode ser maior do que a duração da solicitação. Nesse caso, o tempo total de thread é maior que o tempo real decorrido.

Por exemplo, um thread pode estar aguardando até que o outro seja concluído. O visualizador tenta detectar essa situação e omite a espera desinteressante. Ao fazê-lo, ele erra ao exibir muitas informações, em vez de omitir o que poderiam ser informações críticas.

Quando você vir threads paralelos em seus rastreamentos, determine quais threads estão aguardando para que você possa identificar o do caminho crítico para a solicitação. Geralmente, o thread que rapidamente entra em estado de espera está simplesmente aguardando outros threads. Concentre-se nos outros threads e ignore o tempo nos threads em espera.

Solucionar problemas do Profiler do .NET em seu serviço específico do Azure

As seções a seguir orientam você pelas etapas de solução de problemas para usar o Profiler no Serviço de Aplicativo do Azure ou nos Serviços de Nuvem do Azure.

Serviço de Aplicativo do Azure

Para o Profiler do .NET funcionar corretamente, verifique se:

  • Seu aplicativo Web tem o Application Insights habilitado com as configurações corretas.

  • O WebJob ApplicationInsightsProfiler3 está em execução. Para verificar o trabalho Web:

    1. Vá para o Kudu. No Portal do Azure:

      1. Em sua instância do Serviço de Aplicativo, selecione Ferramentas Avançadas no painel esquerdo.
      2. Selecione Ir.
    2. No menu superior, selecione o painel Ferramentas>WebJobs. O painel WebJobs é aberto.

      Se o ApplicationInsightsProfiler3 não aparecer, reinicie o aplicativo do Serviço de Aplicativo.

      Captura de tela mostrando o painel WebJobs, que exibe o nome, o status e a hora da última execução dos trabalhos.

    3. Para exibir os detalhes do WebJob, incluindo o log, selecione o link ApplicationInsightsProfiler3. O painel Detalhes do WebJob Contínuo.

      Captura de tela que mostra o painel Detalhes do WebJob Contínuo.

Se o Profiler do .NET ainda não estiver funcionando, baixe o log e envie um tíquete de suporte do Azure.

Verifique a página de status da extensão de site dos Serviços de Diagnóstico

Se o Profiler do .NET foi habilitado por meio do painel do Application Insights no portal, ele será gerenciado pela extensão de site dos serviços de diagnóstico. Você pode verificar a página de status dessa extensão indo para https://{site-name}.scm.azurewebsites.net/DiagnosticServices

Observação

O domínio do link da página de status varia dependendo da nuvem. Esse domínio é o mesmo que o site de gerenciamento do Kudu para o Serviço de Aplicativo.

A página de status mostra o estado de instalação do Profiler do .NET e dos agentes do Depurador de Instantâneos. Se houve um erro inesperado, ele aparece junto com as etapas sobre como corrigi-lo.

Você pode usar o site de gerenciamento do Kudu para o Serviço de Aplicativo para obter a URL base desta página de status:

  1. Abra seu aplicativo de Serviço de Aplicativo no portal do Azure.
  2. Selecione Ferramentas Avançadas.
  3. Selecione Ir.
  4. No site de gerenciamento do Kudu:
    1. Acrescente /DiagnosticServices à URL.
    2. Selecione Enter.

Ele termina como https://<kudu-url>/DiagnosticServices.

Uma página de status aparece de forma semelhante ao exemplo a seguir.

Captura de tela que mostra a página de status dos Serviços de Diagnóstico.

Observação

A instalação sem código do Application Insights Profiler do .NET segue a política de suporte do .NET Core. Para obter mais informações sobre tempos de execução com suporte, confira a política de suporte do .NET Core.

Instalação manual

Quando você configura o profiler do .NET, são feitas atualizações nas configurações do aplicativo Web. Se necessário, você pode aplicar as atualizações manualmente.

Número excessivo de sessões de criação de perfil ativas

No Serviço de Aplicativo do Azure, há um limite de apenas uma sessão de criação de perfil por vez. Esse limite é imposto no nível da VM em todos os aplicativos e slots de implantação em execução em um plano do Serviço de Aplicativo. Igualmente, esse limite se aplica às sessões de criação de perfil iniciadas por meio do Diagnóstico e solução de problemas, Kudu e Application Insights Profiler para .NET.

Se o Profiler do .NET tentar iniciar uma sessão quando outra já estiver em execução, um erro será registrado no log de aplicativos e também no log contínuo do WebJob para ApplicationInsightsProfiler3.

Você deve ver uma das seguintes mensagens nos logs:

  • Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
  • Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E

O código de erro 0xE111005E indica que uma sessão de criação de perfil não pôde ser iniciada porque outra sessão já está em execução.

Para evitar o erro, mova alguns aplicativos Web para um plano do Serviço de Aplicativo diferente ou desabilite o Profiler em alguns aplicativos. Se você usar slots de implantação, verifique se interrompeu os slots não utilizados.

Erro de implantação: diretório não vazio 'D:\home\site\wwwroot\App_Data\jobs'

Se estiver reimplementando seu aplicativo Web em um recurso de Aplicativos Web com o Profiler .NET habilitado, você poderá ver a seguinte mensagem:

"Diretório não vazio "D:\home\site\wwwroot\App_Data\jobs"

Este erro ocorrerá se você executar a Implantação da Web de scripts ou do Azure Pipelines. Resolva adicionando os seguintes parâmetros de implantação à tarefa de Implantação da Web:

-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'  -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

Esses parâmetros excluem a pasta usada pelo Application Insights Profiler para .NET e desbloqueiam o processo de reimplantação. Eles não afetam a instância do Profiler em execução no momento.

O Application Insights Profiler para .NET está em execução?

O Profiler é executado como um WebJob contínuo no aplicativo Web. É possível abrir o recurso do aplicativo Web no Portal do Azure. Se o painel WebJobs, verifique o status de ApplicationInsightsProfiler. Se ele não estiver em execução, abra Logs para obter mais informações.

VMs e Serviços de Nuvem do Azure

Para ver se Profiler do .NET está configurado corretamente pelo Diagnóstico do Azure:

  1. Verifique se o conteúdo da configuração de Diagnóstico do Azure implantada é o que você espera.

  2. Certifique-se de que o Diagnóstico do Azure passe a iKey adequada na linha de comando do Profiler.

  3. Terceiro, verifique o arquivo de log do Profiler para ver se o Profiler do .NET foi executado, mas retornou um erro.

Para verificar as configurações que foram usadas para configurar o Diagnóstico do Azure:

  1. Entrar na VM (máquina virtual).

  2. Abra o arquivo de log neste local. A versão do plug-in pode ser mais nova no seu computador.

    Para VMs:

    c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    

    Para Serviços de Nuvem do Azure:

    c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    
  3. No arquivo, pesquise pela cadeia de caracteres WadCfg para encontrar as configurações que foram passadas para a VM para configurar o Diagnóstico do Azure.

  4. Verifique se a iKey utilizado pelo coletor do Profiler do .NET está correta.

  5. Verificar a linha de comando que inicia o Profiler. Os argumentos de linha de comando estão no arquivo a seguir (a unidade pode ser c: ou d: e o diretório pode estar oculto):

    Para VMs:

    C:\ProgramData\ApplicationInsightsProfiler\config.json
    

    Para Serviços de Nuvem do Azure:

    D:\ProgramData\ApplicationInsightsProfiler\config.json
    
  6. Verifique se o iKey na linha de comando do Profiler está correto.

  7. Usando o caminho encontrado no arquivo config.json anterior, verifique o arquivo de log do criador de perfil, chamado BootstrapN.log. Exibe:

    • As informações de depuração que indicam as configurações que o Profiler está usando.
    • Mensagens de erro e status do Profiler.

    Você pode encontrar o arquivo:

    Para VMs:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    

    Para Serviços de Nuvem do Azure:

    C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    
  8. Se o Profiler do .NET estiver em execução enquanto o aplicativo estiver recebendo solicitações, a seguinte mensagem aparece: “Atividade detectada no iKey”.

  9. Quando o rastreamento está sendo carregado, a seguinte mensagem aparece: "Iniciar para carregar o rastreamento".

Editar regras de firewall ou proxy de rede

Se o seu aplicativo se conecta à Internet por meio de um proxy ou firewall, pode ser necessário atualizar as regras para se comunicar com o Profiler do .NET.

Os IPs usados pelo Application Insights Profiler para .NET são incluídos na marca de serviço do Azure Monitor. Para saber mais, confira Documentação de marcas de serviço.

Suporte

Se você ainda precisar de ajuda, envie um tíquete de suporte no portal do Azure. Inclua a ID de correlação da mensagem de erro.