Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Se você habilitou o Application Insights Snapshot Debugger para seu aplicativo, mas não está vendo instantâneos para exceções, você pode usar estas instruções para solucionar problemas.
A geração de snapshots falha devido a muitos motivos diferentes. Você pode começar executando o Snapshot Health Check para identificar algumas das possíveis causas comuns.
Cenários não suportados
Cenários em que o Snapshot Collector não é suportado:
| Cenário | Efeitos Secundários | Recomendação |
|---|---|---|
| Ao usar o SDK do Snapshot Collector na sua aplicação diretamente (.csproj) e você habilitou a opção avançada Interop. | O SDK local do Application Insights (incluindo a telemetria do Snapshot Collector) é perdido, portanto, nenhum Snapshots está disponível. A sua aplicação pode falhar ao iniciar com System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor.Para obter mais informações sobre o recurso de interoperabilidade do Application Insights, consulte a documentação. |
Se estiver a usar a opção Interoperabilidade avançada, utilize a injeção do Collector de Snapshots sem necessidade de código habilitada através do portal do Azure. |
Certifique-se de que está a usar o endpoint apropriado do Snapshot Debugger
Atualmente, as únicas regiões que requerem modificações de ponto de extremidade são o Azure Government e o Microsoft Azure operados pela 21Vianet.
Para o Serviço de Aplicativo e aplicativos que usam o SDK do Application Insights, você precisa atualizar a cadeia de conexão usando as substituições suportadas para o Depurador de Instantâneo:
| Propriedade Connection String | 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, consulte a documentação do Application Insights.
Para o Function App, você precisa atualizar o host.json usando as substituições suportadas:
| Propriedade | Nuvem do governo dos EUA | Nuvem da China |
|---|---|---|
| AgentEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Exemplo de host.json atualizado com o endpoint do US Government Cloud:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
},
"snapshotConfiguration": {
"isEnabled": true,
"agentEndpoint": "https://snapshot.monitor.azure.us"
}
}
}
}
Utilize a verificação de integridade do instantâneo
Vários problemas comuns fazem com que o botão Abrir Instantâneo de Depuração não apareça. Por exemplo:
- Usando um coletor de instantâneos obsoleto
- Atingir o limite de carregamento diário
- O instantâneo está demorando muito tempo para ser carregado.
Acesse a Verificação de Saúde do Snapshot para solucionar problemas comuns através de um link no painel de Exceções da exibição de rastreamento de ponta a ponta.
A interface interativa, semelhante a um chat, procura problemas comuns e orienta você a corrigi-los.
Se isso não resolver o problema, consulte as seguintes etapas manuais de solução de problemas.
Verifique 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 do Depurador de Instantâneo requer TLS versão 1.2. Um conjunto de protocolos de segurança SSL é uma das características únicas habilitadas pelo valor 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 está incluído por padrão.
Nota
O httpRuntime targetFramework valor é independente da estrutura de destino usada ao criar seu aplicativo.
Para verificar a configuração, abra o arquivo web.config e localize a seção system.web. Certifique-se de que o targetFramework for httpRuntime está definido como 4.6 ou superior.
<system.web>
...
<httpRuntime targetFramework="4.7.2" />
...
</system.web>
Nota
Modificar o httpRuntime targetFramework valor altera as peculiaridades de tempo de execução aplicadas ao seu aplicativo e pode causar outras alterações sutis de comportamento. Certifique-se de testar seu aplicativo completamente depois de fazer essa alteração. Para obter uma lista completa das alterações de compatibilidade, consulte Redirecionar alterações.
Nota
Se o targetFramework for 4.7 ou superior, o Windows determina os protocolos disponíveis. No 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.
Cenários de sobrecarga do Depurador de Instantâneo
O Depurador de Snapshots foi concebido para uso em ambientes de produção. As configurações padrão incluem limites de taxa para minimizar o impacto em seus aplicativos.
No entanto, você pode enfrentar uma pequena sobrecarga de CPU, memória e E/S associada ao Depurador de Captura, como nos cenários a seguir.
Quando uma exceção é lançada na sua aplicação:
Criar uma assinatura para o tipo de problema e decidir se deseja criar um instantâneo adiciona uma pequena sobrecarga de CPU e memória.
Se a desotimização estiver habilitada, haverá uma sobrecarga ao recompilar JIT o método que lançou a exceção. Isso ocorrerá na próxima vez que o método for executado. Dependendo do tamanho do método, pode ser entre 1 ms e 100 ms de tempo de CPU.
Se o manipulador de exceções 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 lançou 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.
- Convert: P50 = 63 s, P90 = 187 s, P95 = 275 s.
- Carregamento: P50 = 31 s, P90 = 75 s, P95 = 98 s.
Isso é feito no Snapshot Uploader, que é executado em um processo separado. O processo do Snapshot Uploader é executado abaixo da prioridade normal da CPU e usa E/S de baixa prioridade.
O minidump é gravado primeiro no disco e a quantidade de espaço em disco é aproximadamente a mesma que o conjunto de trabalho do processo original. Escrever o minidump pode induzir falhas de página à medida que a memória é lida.
O minidump é compactado durante o upload, o que consome CPU e memória no processo do Snapshot Uploader. A CPU, a memória e a sobrecarga de disco são proporcionais ao tamanho do instantâneo do processo. O Snapshot Uploader processa instantâneos em série.
Quando TrackException é chamado:
O Depurador de Instantâneos verifica se a exceção é nova ou se foi criado um instantâneo para a mesma. Isso adiciona uma pequena sobrecarga de CPU.
Versões de pré-visualização do .NET Core
Se estiver a usar uma versão de pré-visualização do .NET Core ou se a sua aplicação fizer referência ao SDK do Application Insights, direta ou indiretamente por meio de uma biblioteca dependente, siga as instruções para Ativar o Snapshot Debugger para outros ambientes.
Verifique a página de estado da extensão de site dos Serviços de Diagnóstico
Se o Depurador de Instantâneo foi ativado por meio do painel Application Insights no portal, ele foi ativado pela extensão de site dos Serviços de Diagnóstico.
Nota
A instalação sem código do Application Insights Snapshot Debugger segue a política de suporte do .NET Core. Para obter mais informações sobre tempos de execução suportados, consulte Política de suporte do .NET Core.
Você pode verificar a página de status desta extensão indo para o seguinte url: https://{site-name}.scm.azurewebsites.net/DiagnosticServices
Nota
O domínio do link Página de status varia dependendo da nuvem.
Este domínio é o mesmo que o site de gestão Kudu para o Serviço de Aplicações. A página de status mostra o estado de instalação dos agentes .NET Profiler e Snapshot Collector. Se houve um erro inesperado, ele mostra como corrigi-lo.
Você pode usar o site de gerenciamento Kudu para o Serviço de Aplicativo para obter a URL base desta Página de Status:
- Abra seu aplicativo do Serviço de Aplicativo no portal do Azure.
- Selecione Ferramentas Avançadas ou procure Kudu.
- Selecione Avançar.
- Quando você estiver no site de gerenciamento Kudu, no URL, anexe o seguinte
/DiagnosticServicese pressione enter. Termina assim:https://<kudu-url>/DiagnosticServices
Atualizar para a versão mais recente do pacote NuGet
Com base em como o Depurador de Captura foi ativado, considere as seguintes opções:
Se o Depurador de Instantâneo foi ativado através do painel de Application Insights do portal, então a sua aplicação já deve estar a executar o pacote NuGet mais recente.
Se o Depurador de Instantâneos tenha sido ativado incluindo o pacote NuGet Microsoft.ApplicationInsights.SnapshotCollector, use o Gerenciador de Pacotes NuGet do Visual Studio para assegurar que está a utilizar a versão mais recente do
Microsoft.ApplicationInsights.SnapshotCollector.
Para obter as últimas atualizações e correções de bugs, consulte as notas de versão.
Verifique os registos do carregador
Depois que um instantâneo é criado, um arquivo minidump (.dmp) é criado no disco. Um processo de upload separado cria esse arquivo minidump e o carrega, juntamente com quaisquer PDBs associados, para o armazenamento do Application Insights Snapshot Debugger. Depois que o minidump for carregado com êxito, ele será excluído do disco. Os arquivos de log para o processo de upload são mantidos no disco. Num ambiente do Serviço de Aplicações, pode encontrar esses registos.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 do Serviço de Aplicativo no portal do Azure.
- Selecione Ferramentas Avançadas ou procure Kudu.
- Selecione Avançar.
- Na lista suspensa Debug console, selecione CMD.
- 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 todos os arquivos de log ou abri-los em um navegador.
O nome do arquivo inclui um sufixo exclusivo que identifica a instância do Serviço de Aplicativo. Se sua instância do Serviço de Aplicativo estiver hospedada em mais de uma máquina, haverá arquivos de log separados para cada máquina. Quando o carregador deteta um novo arquivo minidump, ele é registrado no arquivo de log. Este é um exemplo de um snapshot e carregamento bem-sucedidos.
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
Nota
O exemplo anterior é 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 cadeia de conexão deve corresponder à cadeia de conexão do seu aplicativo. O minidump é associado a um instantâneo com a ID da solicitação. Você pode usar essa ID posteriormente para localizar o registro de exceção associado no Application Insights Analytics.
A aplicação de carregamento procura por novos PDB cerca de uma vez a cada 15 minutos. Eis 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á sua cadeia de conexão).
Solucionar problemas de serviços de nuvem
Nos Serviços de Nuvem, a pasta temporária padrão pode ser muito pequena para armazenar os arquivos minidump, levando à perda de instantâneos. O espaço necessário depende do conjunto de trabalho total da sua aplicação e do número de instantâneos simultâneos.
O conjunto de trabalho de uma função Web de ASP.NET de 32 bits normalmente está entre 200 MB e 500 MB. Permita pelo menos dois instantâneos simultâneos. Por exemplo, se seu aplicativo usa 1 GB de conjunto de trabalho total, você deve certificar-se de que há pelo menos 2 GB de espaço em disco para armazenar instantâneos.
Configure sua função de Serviço de Nuvem com um recurso local dedicado para instantâneos:
Adicione um novo recurso local ao seu Serviço de Nuvem editando o arquivo de definição do Serviço de Nuvem (.csdef). 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 sua função para adicionar uma variável de ambiente que aponte para o
SnapshotStorerecurso local. Para Funções de Trabalho, o código deve ser adicionado aoOnStartmétodo da 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
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 } } }Atualize o ficheiro ApplicationInsights.config da sua função para alterar o local da pasta temporária utilizado 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>
Substituindo a pasta Cópia Sombra
Quando o Snapshot Collector é iniciado, ele tenta encontrar uma pasta no disco que seja adequada para executar o processo do Snapshot Uploader. A pasta escolhida é conhecida como a pasta Shadow Copy.
O Snapshot Collector verifica alguns locais conhecidos, certificando-se de que tem permissões para copiar os binários do Snapshot Uploader. As seguintes variáveis de ambiente são usadas:
Fabric_Folder_App_TempLOCALAPPDATAAPPDATATEMP
Se não for possível encontrar uma pasta adequada, 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 ShadowCopyFailed erro.
Se o carregador não puder ser iniciado, o Snapshot Collector reportará um UploaderCannotStartFromShadowCopy erro. O corpo da mensagem geralmente contém System.UnauthorizedAccessException. Este 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 acontecem durante a inicialização, eles geralmente são seguidos por um ExceptionDuringConnect erro dizendo que o Uploader falhou ao iniciar.
Para contornar esses erros, pode especificar manualmente a pasta de cópia de sombra através da opção de configuração ShadowCopyFolder. 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": {
"ConnectionString": "<your connection string>"
},
"SnapshotCollectorConfiguration": {
"ShadowCopyFolder": "D:\\SnapshotUploader"
}
}
Utilize a pesquisa do Application Insights para encontrar exceções com capturas instantâneas.
Quando um snapshot é criado, a exceção lançada é marcada com um ID de snapshot. Esse ID de instantâneo é incluído como uma propriedade personalizada quando a exceção é relatada ao Application Insights. Usando Pesquisa no Application Insights, pode encontrar todos os registos com a ai.snapshot.id propriedade personalizada.
- 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 esta pesquisa não retornar resultados, nenhum instantâneo foi reportado ao Application Insights no intervalo de tempo selecionado.
Para procurar um ID de instantâneo específico nos registos do Uploader, digite esse ID na caixa de pesquisa. Se não conseguir encontrar registos para um instantâneo que 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 do Uploader, ajuste o filtro Intervalo de tempo da pesquisa para cobrir esse intervalo de tempo.
Se ainda não vires uma exceção com esse ID do instantâneo, o registo de exceção não foi reportado ao Application Insights. Essa situação pode ocorrer se a sua aplicação crashou depois de capturar o instantâneo, mas antes de reportar o registo de exceção. Nesse caso, verifique os logs do Serviço de Aplicativo em Diagnose and solve problems para ver se houve reinicializações inesperadas ou exceções sem tratamento.
Editar proxy de rede ou regras de firewall
Se a sua aplicação se ligar à Internet através de um proxy ou de uma firewall, poderá ser necessário atualizar as regras para se comunicar com o serviço de Debugging de Snapshots.
Os IPs usados pelo Depurador de Instantâneos do Application Insights estão incluídos na etiqueta de serviço do Azure Monitor. Para obter mais informações, consulte a documentação de etiquetas de serviço.
Há algum custo de faturamento ao usar snapshots?
Não são faturados custos inerentes ao Snapshot Debugger na sua subscrição. Os ficheiros instantâneos recolhidos são armazenados separadamente da telemetria recolhida pelos SDKs do Application Insights e não existem custos para a ingestão ou armazenamento de instantâneos.
Resolução de problemas de "traga o seu próprio armazenamento" (BYOS)
Solucione problemas comuns na configuração do 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
Certifique-se de que a
$schemapropriedade do modelo é válida. Deve seguir este padrão:https://schema.management.azure.com/schemas/{schema_version}/deploymentTemplate.json#Certifique-se de que 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
- Certifique-se de que o
apiVersiondo recursomicrosoft.insights/componentsé2015-05-01. - Certifique-se de que 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
Verifique se o local do recurso do Application Insights é o mesmo da conta de armazenamento.