Solucionar problemas ao habilitar o Depurador de Instantâneos do Application Insights ou exibir instantâneos

Se você habilitou o Depurador de Instantâneos do Application Insights para seu aplicativo, mas não está vendo instantâneos para exceções, você pode usar essas instruções para solucionar problemas.

Pode haver muitas razões diferentes pelas quais os instantâneos não são gerados. Você pode começar executando o instantâneo marcar de integridade para identificar algumas das possíveis causas comuns.

Cenários não compatíveis

Abaixo, você pode encontrar cenários em que o Coletor de Instantâneos não tem suporte:

Cenário Efeitos colaterais Recomendação
Ao usar o SDK do Coletor de Instantâneos em seu aplicativo diretamente (.csproj) e habilitar a opção avançada "Interop". O SDK local do Application Insights (incluindo a telemetria coletor de instantâneos) será perdido; Portanto, nenhum instantâneo estará disponível.
Seu aplicativo pode falhar na inicialização com System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
Para obter mais informações sobre o recurso do Application Insights "Interop", consulte o monitoramento de aplicativos para Serviço de Aplicativo do Azure e ASP.NET Core.
Se você estiver usando a opção avançada "Interop", use a injeção coletor de instantâneo sem código (habilitada por meio do UX portal do Azure).

Verifique se você está usando o ponto de extremidade apropriado do Depurador de Instantâneos

Atualmente, as únicas regiões que exigem modificações de ponto de extremidade são Azure Governamental e a China do Azure.

Para Serviço de Aplicativo e aplicativos que usam o SDK do Application Insights, você precisa atualizar o cadeia de conexão usando as substituições com suporte para o Depurador de Instantâneos, conforme definido abaixo:

Propriedade cadeia de conexão Nuvem do Governo dos EUA China Cloud
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Para obter mais informações sobre outras substituições de conexão, consulte Documentação do Application Insights.

Para o Aplicativo de Funções, você precisa atualizar o usando as host.json substituições com suporte abaixo:

Propriedade Nuvem do Governo dos EUA China Cloud
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Aqui está um exemplo do host.json atualizado com o ponto de extremidade do agente de nuvem do governo dos EUA:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true,
        "agentEndpoint": "https://snapshot.monitor.azure.us"
      }
    }
  }
}

Use o marcar de integridade do instantâneo

Vários problemas comuns resultam no Instantâneo de Depuração Aberta não aparecendo. Por exemplo, um Coletor de Instantâneos desatualizado é usado; o limite de carregamento diário é atingido; ou talvez o instantâneo esteja demorando muito para carregar. Use a Verificação de Integridade do Instantâneo para solucionar problemas comuns.

Há um link no painel de exceção do modo de exibição de rastreamento de ponta a ponta que leva você à Verificação de Integridade do Instantâneo.

Captura de tela mostrando como inserir instantâneo marcar de integridade.

A interface interativa, semelhante a chat, procura problemas comuns e orienta você a corrigi-los.

Captura de tela mostrando a janela de verificação de integridade interativa listando os problemas e sugestões de como corrigi-los.

Se isso não resolver o problema, consulte as etapas de solução de problemas manuais a seguir.

Verificar a chave de instrumentação

Verifique se você está usando a chave de instrumentação correta em seu aplicativo publicado. Normalmente, a chave de instrumentação é lida do arquivo ApplicationInsights.config . Verifique se o valor é o mesmo que a chave de instrumentação do recurso Application Insights que você vê no portal.

Em 31 de março de 2025, o suporte à ingestão de chave de instrumentação terminará. A ingestão de chave de instrumentação continuará funcionando, mas não forneceremos mais atualizações ou suporte para o recurso. Faça a transição para cadeias de conexão para aproveitar novas funcionalidades.

Verificar as configurações do cliente TLS/SSL (ASP.NET)

Se você tiver um aplicativo ASP.NET hospedado no Serviço de Aplicativo do Azure ou no IIS em uma máquina virtual, seu aplicativo poderá falhar ao se conectar ao serviço Depurador de Instantâneo devido a um protocolo de segurança SSL ausente.

O ponto de extremidade Depurador de Instantâneo requer a versão 1.2 do TLS. O conjunto de protocolos de segurança SSL é uma das peculiaridades habilitadas pelo httpRuntime targetFramework valor na system.web seção de web.config. Se o httpRuntime targetFramework for 4.5.2 ou inferior, o TLS 1.2 não será incluído por padrão.

Observação

O httpRuntime targetFramework valor é independente da estrutura de destino usada ao criar seu aplicativo.

Para marcar a configuração, abra seu arquivoweb.config e localize a seção system.web. Verifique se o targetFramework for está definido como httpRuntime 4.6 ou superior.

<system.web>
   ...
   <httpRuntime targetFramework="4.7.2" />
   ...
</system.web>

Observação

Modificar o httpRuntime targetFramework valor altera as peculiaridades de runtime aplicadas ao seu aplicativo e pode causar outras alterações de comportamento sutis. Certifique-se de testar seu aplicativo completamente depois de fazer essa alteração. Para obter uma lista completa de alterações de compatibilidade, consulte Redirecionar alterações.

Observação

Se a targetFramework for 4.7 ou uma versão posterior, o Windows determinará os protocolos disponíveis. Em Serviço de Aplicativo do Azure, o TLS 1.2 está disponível. No entanto, se você estiver usando sua própria máquina virtual, talvez seja necessário habilitar o TLS 1.2 no sistema operacional.

Versões prévias do .NET Core

Se você estiver usando uma versão prévia do .NET Core ou seu aplicativo referenciar o SDK do Application Insights, direta ou indiretamente por meio de um assembly dependente, siga as instruções para Habilitar o Depurador de Instantâneos para outros ambientes.

Verificar a Página de Status da extensão de site dos Serviços de Diagnóstico

Se o Depurador de Instantâneos foi habilitado por meio do painel Application Insights no portal, ele foi habilitado pela extensão do site dos Serviços de Diagnóstico.

Observação

A instalação sem código do Depurador de Instantâneos do Application Insights segue a política de suporte do .NET Core. Para obter mais informações sobre runtimes com suporte, consulte Política de Suporte do .NET Core.

Você pode marcar a Página de Status desta extensão acessando a seguinte URL:https://{site-name}.scm.azurewebsites.net/DiagnosticServices

Observação

O domínio do link Página de Status variará dependendo da nuvem. Esse domínio será o mesmo que o site de gerenciamento do Kudu para Serviço de Aplicativo.

Esta Página de Status mostra o estado de instalação dos agentes profiler e coletor de instantâneos. Se houve um erro inesperado, ele será exibido e mostrará como corrigi-lo.

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

  1. Abra seu aplicativo Serviço de Aplicativo no portal do Azure.
  2. Selecione Ferramentas Avançadas ou pesquise Kudu.
  3. Selecione Ir.
  4. Depois de estar no site de gerenciamento do Kudu, na URL, adicione o /DiagnosticServices e pressione Enter. Ele terminará assim: https://<kudu-url>/DiagnosticServices.

Atualizar para a versão mais recente do pacote NuGet

Com base em como o Depurador de Instantâneos foi habilitado, confira as seguintes opções:

Para obter as últimas atualizações e correções de bugs, consulte as notas de versão.

Verificar os logs do carregador

Depois que um instantâneo é criado, um arquivo de minidump (.dmp) é criado em disco. Um processo de uploader separado cria esse arquivo de minidump e o carrega, juntamente com quaisquer PDBs associados, para o armazenamento de depurador de instantâneos do Application Insights. Depois que o minidump tiver sido carregado com êxito, ele será excluído do disco. Os arquivos de log para o processo de carregamento são mantidos em disco. Em um ambiente Serviço de Aplicativo, você pode encontrar esses logs em D:\Home\LogFiles. Use o site de gerenciamento do Kudu para Serviço de Aplicativo para localizar esses arquivos de log.

  1. Abra seu aplicativo Serviço de Aplicativo no portal do Azure.
  2. Selecione Ferramentas Avançadas ou pesquise Kudu.
  3. Selecione Ir.
  4. Na lista suspensa Depurar console , selecione CMD.
  5. Selecione LogFiles.

Você deve ver pelo menos um arquivo com um nome que começa com Uploader_ ou SnapshotUploader_ e uma .log extensão. Selecione o ícone apropriado para baixar arquivos de log ou abri-los em um navegador. O nome do arquivo inclui um sufixo exclusivo que identifica a instância Serviço de Aplicativo. Se sua instância Serviço de Aplicativo estiver hospedada em mais de um computador, haverá arquivos de log separados para cada computador. Quando o carregador detecta um novo arquivo de minidump, ele é gravado no arquivo de log. Aqui está um exemplo de um instantâneo bem-sucedido e carregar:

SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
    DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp, 214.42 MB (uncompressed)
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp.
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
    DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
    DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:59.8530649Z

Observação

O exemplo acima é da versão 1.2.0 do Microsoft.ApplicationInsights.SnapshotCollector pacote NuGet. Em versões anteriores, o processo de upload é chamado MinidumpUploader.exe e o log é menos detalhado.

No exemplo anterior, a chave de instrumentação é c12a605e73c44346a984e00000000000. Esse valor deve corresponder à chave de instrumentação do seu aplicativo. O minidump está associado a um instantâneo com a ID 139e411a23934dc0b9ea08a626db16c5. Você pode usar essa ID posteriormente para localizar o registro de exceção associado no Application Insights Analytics.

O uploader verifica novos PDBs cerca de uma vez a cada 15 minutos. Veja um exemplo:

SnapshotUploader.exe Information: 0 : PDB rescan requested.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
    DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\6368.pdbscan
    DateTime=2018-03-09T01:47:19.4614027Z

Para aplicativos que não estão hospedados em Serviço de Aplicativo, os logs do carregador estão na mesma pasta que os minidumps: %TEMP%\Dumps\<ikey> (onde <ikey> está a chave de instrumentação).

Solucionar problemas Serviços de Nuvem

Em Serviços de Nuvem, a pasta temporária padrão pode ser muito pequena para manter os arquivos de minidump, levando a instantâneos perdidos.

O espaço necessário depende do conjunto de trabalho total do aplicativo e do número de instantâneos simultâneos.

O conjunto de trabalho de uma função Web ASP.NET de 32 bits normalmente está entre 200 MB e 500 MB. Permitir pelo menos dois instantâneos simultâneos.

Por exemplo, se o aplicativo usar 1 GB do conjunto de trabalho total, você deverá ter certeza de que há pelo menos 2 GB de espaço em disco para armazenar instantâneos.

Siga estas etapas para configurar sua função do Serviço de Nuvem com um recurso local dedicado para instantâneos.

  1. Adicione um novo recurso local ao Serviço de Nuvem editando o arquivo de definição do Serviço de Nuvem (.csdef). O exemplo a seguir define um recurso chamado SnapshotStore com um tamanho de 5 GB.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. Modifique o código de inicialização da função para adicionar uma variável de ambiente que aponte para o SnapshotStore recurso local. Para Funções de Trabalho, o código deve ser adicionado ao método de OnStart sua função:

    public override bool OnStart()
    {
        Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
        return base.OnStart();
    }
    

    Para Funções Web (ASP.NET), o código deve ser adicionado ao método do Application_Start aplicativo Web:

    using Microsoft.WindowsAzure.ServiceRuntime;
    using System;
    
    namespace MyWebRoleApp
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
           protected void Application_Start()
           {
              Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
              // TODO: The rest of your application startup code
           }
        }
    }
    
  3. Atualize o arquivoApplicationInsights.config de sua função para substituir o local da pasta temporária usado por SnapshotCollector.

    <TelemetryProcessors>
     <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
       <!-- Use the SnapshotStore local resource for snapshots -->
       <TempFolder>%SNAPSHOTSTORE%</TempFolder>
       <!-- Other SnapshotCollector configuration options -->
     </Add>
    </TelemetryProcessors>
    

Substituir a pasta Cópia de Sombra

Quando o Coletor de Instantâneos é iniciado, ele tenta encontrar uma pasta no disco adequada para executar o processo de Carregamento de Instantâneos. A pasta escolhida é conhecida como a pasta Cópia de Sombra.

O Coletor de Instantâneos verifica alguns locais conhecidos, certificando-se de que ele tem permissões para copiar os binários do Carregador de Instantâneos. As seguintes variáveis de ambiente são usadas:

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

Se uma pasta adequada não puder ser encontrada, o Coletor de Instantâneos relatará um erro dizendo "Não foi possível encontrar uma pasta de cópia de sombra adequada".

Se a cópia falhar, o Coletor de Instantâneos relatará um ShadowCopyFailed erro.

Se o uploader não puder ser iniciado, o Coletor de Instantâneos relatará um UploaderCannotStartFromShadowCopy erro. O corpo da mensagem geralmente contém System.UnauthorizedAccessException. Esse erro geralmente ocorre porque o aplicativo está em execução em uma conta com permissões reduzidas. A conta tem permissão para gravar na pasta de cópia de sombra, mas não tem permissão para executar código.

Como esses erros geralmente acontecem durante a inicialização, eles geralmente serão seguidos por um ExceptionDuringConnect erro dizendo "O uploader não foi iniciado".

Para contornar esses erros, você pode especificar a pasta de cópia de sombra manualmente por meio da opção ShadowCopyFolder de configuração. Por exemplo, usando ApplicationInsights.config:

<TelemetryProcessors>
 <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
   <!-- Override the default shadow copy folder. -->
   <ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
   <!-- Other SnapshotCollector configuration options -->
 </Add>
</TelemetryProcessors>

Ou, se você estiver usando appsettings.json com um aplicativo .NET Core:

{
  "ApplicationInsights": {
    "InstrumentationKey": "<your instrumentation key>"
  },
  "SnapshotCollectorConfiguration": {
    "ShadowCopyFolder": "D:\\SnapshotUploader"
  }
}

Usar a pesquisa do Application Insights para encontrar exceções com instantâneos

Quando um instantâneo é criado, a exceção de lançamento é marcada com uma ID de instantâneo. Essa instantâneo ID é incluída como uma propriedade personalizada quando a exceção é relatada ao Application Insights. Usando Pesquisa no Application Insights, você pode encontrar todos os registros com a ai.snapshot.id propriedade personalizada.

  1. Navegue até o recurso do Application Insights no portal do Azure.
  2. Selecione Pesquisar.
  3. Digite ai.snapshot.id na caixa de texto Pesquisa e pressione Enter.

Captura de tela mostrando a pesquisa de telemetria com uma ID de instantâneo no portal.

Se essa pesquisa não retornar resultados, nenhum instantâneo será relatado ao Application Insights no intervalo de tempo selecionado.

Para pesquisar uma ID de instantâneo específica dos logs do Carregador, digite essa ID na caixa Pesquisa. Se você não conseguir encontrar registros de um instantâneo que você sabe que foi carregado, siga estas etapas:

  1. Marcar duas vezes que você está olhando para o recurso do Application Insights correto verificando a chave de instrumentação.

  2. Ajuste o filtro intervalo de tempo da pesquisa para cobrir esse intervalo de tempo usando o carimbo de data/hora do log do Carregador.

Se você ainda não vir uma exceção com essa instantâneo ID, o registro de exceção não foi relatado ao Application Insights. Essa situação pode acontecer se seu aplicativo falhar depois que ele tomou o instantâneo, mas antes de relatar o registro de exceção. Nesse caso, marcar os logs Diagnose and solve problems de Serviço de Aplicativo para ver se houve reinicializações inesperadas ou exceções não tratadas.

Editar regras de proxy ou firewall de rede

Se seu aplicativo se conectar à Internet por meio de um proxy ou um firewall, talvez seja necessário atualizar as regras para se comunicar com o serviço Depurador de Instantâneos.

Os IPs usados pelo Depurador de Instantâneos do Application Insights estão incluídos na marca de serviço do Azure Monitor. Para obter mais informações, consulte Documentação de Marcas de Serviço.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.