Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se você tiver habilitado o Depurador de Instantâneos do Application Insights no aplicativo, mas não estiver vendo instantâneos em exceções, poderá usar estas instruções para solucionar problemas.
A geração de instantâneos falha por vários motivos diferentes. Você pode começar executando a Verificação de Integridade do Instantâneo para identificar algumas das possíveis causas comuns.
Cenários sem suporte
Cenários em que o Snapshot Collector não é suportado:
| Cenário | Efeitos colaterais | Recomendação |
|---|---|---|
| Ao usar o Snapshot Collector SDK diretamente em seu aplicativo (.csproj) e você habilitou a opção avançada Interop. | O SDK local do Application Insights (incluindo a telemetria do Snapshot Collector) foi perdido e, portanto, nenhum Snapshot está disponível. Seu aplicativo pode travar na inicialização com System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor.Para obter mais informações sobre o recurso Interop do Application Insights, veja a documentação. |
Se você estiver usando a opção de avanço Interop, use a injeção do Snapshot Collector sem necessidade de código habilitada por meio do portal do Azure. |
Certifique-se de que você está usando o ponto de extremidade do Depurador de Instantâneos do Visual Studio apropriado
Atualmente, as únicas regiões que exigem modificações de endpoints são Azure Government e Microsoft Azure sob operação da 21Vianet.
Para o Serviço de Aplicativo do Azure e aplicativos que usam o SDK do Application Insights, você precisa atualizar a cadeia de conexão usando as substituições com suporte para o Depurador de Instantâneos:
| Propriedades da cadeia de conexão | Nuvem do governo dos EUA | Nuvem da China |
|---|---|---|
| SnapshotEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Para obter mais informações sobre outras substituições de conexão, confira a documentação do Application Insights.
Para o aplicativo de funções, você precisa atualizar o host.json usando as substituições com suporte:
| Propriedade | Nuvem do governo dos EUA | Nuvem da China |
|---|---|---|
| AgentEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
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"
}
}
}
}
Usar a Verificação de Integridade do Instantâneo
Vários problemas comuns resultam na não exibição do botão Abrir Instantâneo de Depuração. Por exemplo:
- Usar um Snapshot Collector desatualizado
- Atingir o limite de carregamento diário
- O instantâneo está demorando muito para ser carregado.
Acesse a Verificação de Integridade do Instantâneo para solucionar problemas comuns por meio de um link no painel Exceção do modo de exibição de rastreamento de ponta a ponta.
A interface interativa, parecida com um bate-papo, procura problemas comuns e orienta você na correção deles.
Se isso não resolver o problema, consulte as etapas manuais de solução de problemas a seguir.
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âneos devido à ausência de um protocolo de segurança SSL.
O ponto de extremidade do Depurador de Instantâneos requer a versão 1.2 do TLS. O conjunto de protocolos de segurança SSL é uma das peculiaridades habilitadas pelo valor de httpRuntime targetFramework na seção system.web 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 valor de httpRuntime targetFramework é independente da estrutura de destino usada na criação do aplicativo.
Para verificar a configuração, abra o arquivo web.config e localize a seção system.web. Certifique-se de que o targetFramework para httpRuntime esteja definido como 4.6 ou superior.
<system.web>
...
<httpRuntime targetFramework="4.7.2" />
...
</system.web>
Observação
A modificação do valor de httpRuntime targetFramework altera as peculiaridades do runtime aplicadas ao aplicativo e pode causar outras alterações sutis de comportamento. Teste o aplicativo cuidadosamente depois de fazer essa alteração. Para obter a lista completa de alterações de compatibilidade, veja Alterações de redirecionamento.
Observação
Se o targetFramework for 4.7 ou superior, o Windows determinará os protocolos disponíveis. O TLS 1.2 está disponível no Serviço de Aplicativo do Azure. No entanto, se você estiver usando sua própria máquina virtual, poderá ser necessário habilitar o TLS 1.2 no sistema operacional.
Cenários de sobrecarga do Depurador de Instantâneos
O Depurador de Instantâneos foi projetado para uso em ambientes de produção. As configurações padrão incluem limites de taxa para minimizar o impacto sobre os seus aplicativos.
No entanto, você poderá experimentar uma pequena sobrecarga de CPU, memória e E/S associada ao Depurador de Instantâneos, como ocorre nos cenários a seguir.
Quando uma exceção é lançada em seu aplicativo:
Criar uma assinatura para o tipo de problema e decidir se deve criar um instantâneo adiciona uma pequena sobrecarga de CPU e memória.
Se a desotimização estiver habilitada, haverá uma sobrecarga para refazer o JIT do método que gerou a exceção. Isso ocorrerá na próxima vez que o método for executado. Dependendo do tamanho do método, pode levar entre 1 ms e 100 ms de tempo de CPU.
Se o manipulador de exceção decidir criar um instantâneo:
A criação do instantâneo do processo leva cerca de meio segundo (P50 = 0,3 s, P90 = 1,2 s, P95 = 1,9 s), durante o qual o thread que gerou a exceção é pausado. Outros tópicos não são bloqueados.
Converter o instantâneo do processo em um minidump e carregá-lo no Application Insights leva vários minutos.
- Conversão: P50 = 63 s, P90 = 187 s, P95 = 275 s.
- Envio: P50 = 31 s, P90 = 75 s, P95 = 98 s.
Isso é feito no Carregador de Instantâneos, que é executado em um processo separado. O processo de Upload de Snapshot é executado com prioridade de CPU inferior ao normal e usa E/S de baixa prioridade.
O minidump é gravado primeiro em disco, sendo que a quantidade de espaço de disco utilizada é aproximadamente a mesma do conjunto de trabalho do processo original. Gravar o minidespejo pode induzir falhas de página à medida que a memória é lida.
O minidespejo é compactado durante o upload, o que consome CPU e memória no processo do Carregador de Instantâneos. A sobrecarga da CPU, da memória e do disco é proporcional ao tamanho do instantâneo do processo. O Carregador de Instantâneos processa instantâneos serialmente.
Quando TrackException é chamado:
O Depurador de Instantâneos verifica se a exceção é nova ou se uma captura instantânea foi criada para ela. Isso adiciona uma pequena sobrecarga à CPU.
Versões preliminares do .NET Core
Se você estiver usando uma versão preliminar do .NET Core ou o aplicativo fizer referência ao SDK do Application Insights, direta ou indiretamente, por meio de um assembly dependente, siga as instruções para Habilitar o Depurador de Instantâneos em 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 tiver sido habilitado por meio do painel do Application insights no portal, ele foi habilitado pela extensão de 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 mais informações sobre tempos de execução com suporte, consulte a política de suporte do .NET Core.
É possível verificar a Página de Status dessa extensão na URL a seguir: https://{site-name}.scm.azurewebsites.net/DiagnosticServices
Observação
O domínio do link da Página de Status pode variar 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 da instalação dos agentes .NET Profiler e Snapshot Collector. Se houver um erro inesperado, ele mostra 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:
- Abra seu aplicativo de Serviço de Aplicativo no portal do Azure.
- Selecione Ferramentas Avançadas ou procure Kudu.
- Selecione Ir.
- Quando você estiver no site de gerenciamento do Kudu, na URL, acrescente o seguinte
/DiagnosticServicese pressione Enter. Termina assim:https://<kudu-url>/DiagnosticServices
Atualize para a versão mais recente do pacote NuGet
Dependendo de como o Depurador de Instantâneos foi habilitado, veja as opções a seguir:
Se o Depurador de Instantâneos tiver sido habilitado por meio do painel do Application Insights no portal, o aplicativo já deverá estar executando o pacote NuGet mais recente.
Se o Depurador de Instantâneos tiver sido habilitado incluindo o pacote NuGet Microsoft.ApplicationInsights.SnapshotCollector, use o Gerenciador de Pacotes NuGet do Visual Studio para verificar se você está usando a última versão do
Microsoft.ApplicationInsights.SnapshotCollector.
Para obter as atualizações e as correções de bugs mais recentes, confira as notas sobre a versão.
Verificar os logs de upload
Depois que um instantâneo é criado, um arquivo de minidespejo (.dmp) é criado no disco. Um processo separado do carregador cria esse arquivo de minidespejo e o carrega, com quaisquer PDBs associados, para o armazenamento do Depurador de Instantâneos do Application Insights. Após o minidump ser carregado com sucesso, ele é excluído do disco. Os arquivos de log do processo de carregador são mantidos em disco. Em um ambiente de Serviço de Aplicativo, você pode encontrar esses logs em D:\Home\LogFiles. Use o site de gerenciamento do Kudu para o Serviço de Aplicativo para localizar esses arquivos de log.
- Abra seu aplicativo de Serviço de Aplicativo no portal do Azure.
- Selecione Ferramentas Avançadas ou procure Kudu.
- Selecione Ir.
- Na lista suspensa Console de depuração, selecione CMD.
- Selecione LogFiles.
Você deverá ver pelo menos um arquivo com um nome que começa com Uploader_ ou SnapshotUploader_ e uma extensão .log. Selecione o ícone apropriado para baixar os arquivos de log ou abri-los em um navegador.
O nome do arquivo inclui um sufixo exclusivo que identifica a instância de serviço de aplicativo. Se a instância do Serviço de Aplicativo é hospedada em mais de uma máquina, há arquivos de log separados para cada máquina. Quando o aplicativo de upload detecta um novo arquivo de minidump, ele é registrado no arquivo de log. Veja um exemplo de um instantâneo e upload bem-sucedido:
SnapshotUploader.exe Information: 0 : Received Fork request ID <request-ID> from process <ID> (Low pri)
DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID <request-ID> from process 6368 (Low pri)
DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: <request-ID>.dm_
DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available <request-ID>.dmp
DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\<connection-string>\<request-ID>.dmp
DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\<connection-string>\<request-ID>.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\<connection-string>\<request-ID>.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\<connection-string>\<request-ID>.dmp
DateTime=2018-03-09T01:42:59.8530649Z
Observação
O exemplo anterior é da versão 1.2.0 do Microsoft.ApplicationInsights.SnapshotCollector pacote NuGet. Em versões anteriores, o processo de carregador é chamado MinidumpUploader.exe e o log é menos detalhado.
No exemplo anterior, a cadeia de conexão deve corresponder à cadeia de conexão do aplicativo. O minidespejo é associado a um instantâneo com a ID da solicitação. Você pode usar esta ID mais tarde para localizar o registro associado de exceção no Analytics do Application Insights.
O carregador examina 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\<connection-string>\<process-ID>.pdbscan
DateTime=2018-03-09T01:47:19.4614027Z
Para aplicativos que não estão hospedados no Serviço de Aplicativo, os logs do carregador estão na mesma pasta que os minidumps: %TEMP%\Dumps\<string> (onde <string> está a cadeia de conexão).
Solucionar problemas dos Serviços de Nuvem
Nos Serviços de Nuvem, a pasta temporária padrão pode ser muito pequena para conter os arquivos de minidespejo, causando a perda de instantâneos. O espaço necessário depende do conjunto de trabalho total do seu aplicativo e o número de instantâneos simultâneos.
O conjunto de trabalho de uma função Web do ASP.NET de 32 bits tem normalmente entre 200 MB e 500 MB. Permita pelo menos dois instantâneos simultâneos. Por exemplo, se seu aplicativo usa 1 GB do conjunto de trabalho total, você deve garantir que haja pelo menos 2 GB de espaço em disco para armazenar instantâneos.
Configure a sua função de serviço de nuvem com um recurso local dedicado para instantâneos:
Adicione um novo recurso de local para seu Serviço de Nuvem ao editar o arquivo de definição (.csdef) do Serviço de Nuvem. O exemplo a seguir define um recurso chamado
SnapshotStorecom um tamanho de 5 GB.<LocalResources> <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" /> </LocalResources>Modifique o código de inicialização da função para adicionar uma variável de ambiente que aponta para o recurso local
SnapshotStore. Para funções de trabalho, o código deve ser adicionado ao métodoOnStartda sua função:public override bool OnStart() { Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath); return base.OnStart(); }Para Funções da Web (ASP.NET), o código deve ser adicionado ao método
Application_Startdo seu 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 } } }Atualizar o arquivo ApplicationInsights.config da função para substituir o local da pasta temporária usada pelo
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>
Substituição da pasta de cópia de sombra
Quando o Snapshot Collector é iniciado, ele tenta encontrar uma pasta no disco que seja adequada para executar o processo do Carregador de Instantâneo. A pasta escolhida é conhecida como a pasta de cópia de sombra.
O Snapshot Collector verifica alguns locais conhecidos, garantindo que tem permissão para copiar os binários do Snapshot Uploader. As variáveis de ambiente a seguir são usadas:
Fabric_Folder_App_TempLOCALAPPDATAAPPDATATEMP
Se uma pasta adequada não puder ser encontrada, o Snapshot Collector relatará um erro dizendo "Não foi possível encontrar uma pasta de cópia de sombra adequada".
Se a cópia falhar, o Snapshot Collector relatará um erro ShadowCopyFailed.
Se o carregador não puder ser iniciado, o Snapshot Collector relatará um erro UploaderCannotStartFromShadowCopy. O corpo da mensagem frequentemente contém System.UnauthorizedAccessException. Esse erro geralmente ocorre porque o aplicativo está sendo executado 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 ocorrem durante a inicialização, eles geralmente são seguidos por um ExceptionDuringConnect erro dizendo O carregador falhou ao iniciar.
Para solucionar esses erros, você pode especificar a pasta de cópia de sombra manualmente por meio da opção de configuração ShadowCopyFolder. Por exemplo, usando o 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 estiver usando o appsettings.json com um aplicativo .NET Core:
{
"ApplicationInsights": {
"ConnectionString": "<your connection string>"
},
"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 lançada é marcada com uma ID de instantâneo. A ID do instantâneo é incluída como uma propriedade personalizada quando a exceção é relatada ao Application Insights. Usando a Pesquisa no Application Insights, é possível localizar todos os registros com a propriedade personalizada ai.snapshot.id.
- Navegue até o recurso do Application Insights no portal do Azure.
- Selecione Pesquisar.
- Digite
ai.snapshot.idna caixa de texto de pesquisa e pressione Enter.
Se essa pesquisa não retornar resultados, nenhum snapshot foi relatado ao Application Insights no intervalo de tempo selecionado.
Para pesquisar uma ID de instantâneo específico dos logs do carregador, digite a ID na caixa de pesquisa. Se você não conseguir localizar registros para um instantâneo que você sabe que foi carregado, siga estas etapas:
Verifique se você está examinando o recurso correto do Application Insights verificando a cadeia de conexão.
Usando o carimbo de data/hora do log de carregador, ajuste o filtro de intervalo de tempo da pesquisa para cobrir esse intervalo de tempo.
Se você ainda não vê uma exceção com essa ID de captura instantânea, então o registro de exceção não foi enviado ao Application Insights. Essa situação poderá ocorrer se o aplicativo tiver falhado após executar o instantâneo, mas antes de relatar o registro de exceção. Nesse caso, verifique os logs do Serviço de Aplicativos em Diagnose and solve problems para ver se houve reinicializações inesperadas ou exceções sem tratamento.
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 permitir a comunicação com o serviço do Depurador de Snapshot.
Os IPs usados pelo Depurador de Instantâneos do Application Insights estão inclusos na marca de serviço do Azure Monitor. Para saber mais, consulte a documentação dos Service Tags.
Há custos de cobrança ao usar instantâneos?
Não há encargos em relação à sua assinatura específicos para o Depurador de Instantâneos. Os arquivos de instantâneo coletados são armazenados separadamente da telemetria recolhida pelos SDKs do Application Insights e não há custos pela ingestão ou armazenamento dos instantâneos.
Solucionar problemas de "traga seu próprio armazenamento" (BYOS)
Solucionar problemas comuns ao configurar o BYOS.
Cenário: Template schema '{schema_uri}' isn't supported
Você recebeu um erro semelhante ao exemplo a seguir:
New-AzResourceGroupDeployment : 11:53:49 AM - Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'Template schema
'https://schema.management.azure.com/schemas/2020-01-01/deploymentTemplate.json#' is not supported. Supported versions are
'2014-04-01-preview,2015-01-01,2018-05-01,2019-04-01,2019-08-01'. Please see https://aka.ms/arm-template for usage details.'.
Soluções
Verifique se a propriedade
$schemado modelo é válida. Ele deve seguir esse padrão:https://schema.management.azure.com/schemas/{schema_version}/deploymentTemplate.json#Verifique se o
schema_versiondo modelo está dentro dos valores válidos:2014-04-01-preview, 2015-01-01, 2018-05-01, 2019-04-01, 2019-08-01.
Cenário: No registered resource provider found for ___location '{___location}'
Você recebeu um erro semelhante ao exemplo a seguir:
New-AzResourceGroupDeployment : 6:18:03 PM - Resource microsoft.insights/components 'byos-test-westus2-ai' failed with message '{
"error": {
"code": "NoRegisteredProviderFound",
"message": "No registered resource provider found for ___location 'westus2' and API version '2020-03-01-preview' for type 'components'. The supported api-versions are '2014-04-01,
2014-08-01, 2014-12-01-preview, 2015-05-01, 2018-05-01-preview'. The supported locations are ', eastus, southcentralus, northeurope, westeurope, southeastasia, westus2, uksouth,
canadacentral, centralindia, japaneast, australiaeast, koreacentral, francecentral, centralus, eastus2, eastasia, westus, southafricanorth, northcentralus, brazilsouth, switzerlandnorth,
australiasoutheast'."
}
}'
Soluções
- Verifique se o
apiVersiondo recursomicrosoft.insights/componentsé2015-05-01. - Verifique se o
apiVersiondo recursolinkedStorageAccounté2020-03-01-preview.
Cenário: Storage account ___location should match Application Insights component ___location
Você recebeu um erro semelhante ao exemplo a seguir:
New-AzResourceGroupDeployment : 1:01:12 PM - Resource microsoft.insights/components/linkedStorageAccounts 'byos-test-centralus-ai/serviceprofiler' failed with message '{
"error": {
"code": "BadRequest",
"message": "Storage account ___location should match AI component ___location",
"innererror": {
"trace": [
"System.ArgumentException"
]
}
}
}'
Solução
A localização do recurso do Application Insights deve ser a mesma que a da conta de armazenamento.