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.
Atenção
Recomendamos a Distribuição OpenTelemetry do Azure Monitor para novos aplicativos ou clientes para alimentar o Application Insights do Azure Monitor. A Distribuição do OpenTelemetry do Azure Monitor oferece funcionalidade e experiência semelhantes às do SDK do Application Insights. É possível migrar do SDK do Application Insights usando os guias de migração para .NET, Node.js e Python, mas ainda estamos trabalhando para adicionar mais alguns recursos que garantam compatibilidade com versões anteriores.
Uma dependência é um componente chamado pelo seu aplicativo. Normalmente, ele é um serviço chamado usando HTTP, um banco de dados ou um sistema de arquivos. O Application Insights mede a duração das chamadas de dependência, independentemente de ocorrer falha ou não, juntamente com informações, como o nome da dependência. Você pode investigar chamadas de dependência específicas e correlacioná-las a solicitações e exceções.
Dependências acompanhadas automaticamente
Os SDKs do Application Insights para .NET e .NET Core enviados com DependencyTrackingTelemetryModule
, que é um módulo de telemetria que coleta dependências automaticamente. A coleta de dependências é habilitada automaticamente para aplicativos ASP.NET e ASP.NET Core quando configurada conforme a documentação oficial vinculada. O módulo DependencyTrackingTelemetryModule
é distribuído como o pacote NuGet Microsoft.ApplicationInsights.DependencyCollector e é adicionado automaticamente quando você usa tanto o pacote NuGet Microsoft.ApplicationInsights.Web
quanto o pacote NuGet Microsoft.ApplicationInsights.AspNetCore
.
No momento, DependencyTrackingTelemetryModule
acompanha as seguintes dependências automaticamente:
Dependências | Detalhes |
---|---|
HTTP/HTTPS | Chamadas HTTP/HTTPS locais ou remotas. |
Chamadas WCF | Somente acompanhadas automaticamente se associações baseadas em HTTP forem usadas. |
SQL | Chamadas feitas com SqlClient . Consulte a seção Acompanhamento avançado do SQL para obter a consulta SQL completa para capturar consultas do SQL. |
Armazenamento de Blobs do Azure, Armazenamento de Tabelas ou Armazenamento de Filas | Chamadas feitas com o cliente do Armazenamento do Microsoft Azure. |
SDK do cliente dos Hubs de Eventos do Azure | Use o pacote mais recente: https://nuget.org/packages/Azure.Messaging.EventHubs. |
SDK do cliente do Barramento de Serviço do Azure | Use o pacote mais recente: https://nuget.org/packages/Azure.Messaging.ServiceBus. |
Azure Cosmos DB | Acompanhado automaticamente se HTTP/HTTPS é usado. O rastreamento de operações no modo direto com TCP é capturado automaticamente usando o pacote de versão prévia >= 3.33.0-preview. Para obter mais detalhes, acesse a documentação. |
Se estiver faltando uma dependência ou você estiver usando um SDK diferente, verifique se ele está na lista de dependências coletadas automaticamente. Se a dependência não for coletada automaticamente, você poderá acompanhá-la manualmente com um comando acompanhar chamada de dependência.
Configurar o acompanhamento automático de dependência em aplicativos de console
Para acompanhar automaticamente as dependências de aplicativos de console do .NET, instale o pacote NuGet Microsoft.ApplicationInsights.DependencyCollector
e inicialize DependencyTrackingTelemetryModule
:
DependencyTrackingTelemetryModule depModule = new DependencyTrackingTelemetryModule();
depModule.Initialize(TelemetryConfiguration.Active);
TelemetryConfiguration.Active
está obsoleto para aplicativos de console do .NET Core. Consulte as diretrizes na Documentação do serviço de trabalho e na Documentação de monitoramento do ASP.NET Core.
Como funciona o monitoramento automático de dependência?
As dependências são coletadas automaticamente usando uma das seguintes técnicas:
- Usando a instrumentação de código de byte em volta dos métodos select. Use
InstrumentationEngine
deStatusMonitor
ou uma extensão de Aplicativos Web do Serviço de Aplicativo do Azure. EventSource
retornos de chamada.DiagnosticSource
retornos de chamada nos SDKs mais recentes do .NET ou do .NET Core.
Como acompanhar dependências manualmente
Veja a seguir exemplos de dependências que não são coletadas automaticamente e exigem acompanhamento manual:
- O Azure Cosmos DB é acompanhado automaticamente somente se HTTP/HTTPS é usado. O modo TCP não será capturado automaticamente pelo Application Insights para versões do SDK anteriores a
2.22.0-Beta1
. - Redis
Para essas dependências não coletadas automaticamente pelo SDK, você pode acompanhá-las manualmente usando a API TrackDependency que é usada pelos módulos de coleção automática padrão.
Exemplo
Se você criar seu código com um assembly que não programou, você pode cronometrar todas as chamadas para ele. Esse cenário permitiria que você descobrisse qual a contribuição dele para o seu tempo de resposta.
Para que esses dados sejam exibidos nos gráficos de dependência no Application Insights, envie-os usando TrackDependency
:
var startTime = DateTime.UtcNow;
var timer = System.Diagnostics.Stopwatch.StartNew();
try
{
// making dependency call
success = dependency.Call();
}
finally
{
timer.Stop();
telemetryClient.TrackDependency("myDependencyType", "myDependencyCall", "myDependencyData", startTime, timer.Elapsed, success);
}
Como alternativa, TelemetryClient
fornece os métodos de extensão StartOperation
e StopOperation
, que podem ser usados para acompanhar manualmente as dependências, conforme mostrado em Rastreamento de dependências de saída.
Se desejar desativar o módulo padrão de acompanhamento de dependência, remova a referência DependencyTrackingTelemetryModule
em ApplicationInsights.config para aplicativos ASP.NET. Para aplicativos ASP.NET Core, siga as instruções no Application Insights para aplicativos ASP.NET Core.
Acompanhar chamadas AJAX de páginas da Web
Para páginas da Web, o SDK JavaScript do Application Insights coleta automaticamente chamadas AJAX como dependências.
Acompanhamento de SQL avançado para obter a consulta SQL completa
Observação
O Azure Functions requer configurações separadas para habilitar a coleta de texto do SQL. Para obter mais informações, confira Habilitar a coleta de consultas SQL.
Para chamadas SQL, o nome do servidor e do banco de dados é sempre coletado e armazenado como o nome do DependencyTelemetry
coletado. Outro campo, chamado dados, pode conter o texto completo da consulta SQL.
Para aplicativos ASP.NET Core, agora é necessário aceitar a coleta de texto SQL usando:
services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module. EnableSqlCommandTextInstrumentation = true; });
Para aplicativos ASP.NET, o texto completo da consulta SQL é coletado com a ajuda da instrumentação de código de byte, que requer o uso do mecanismo de instrumentação ou do pacote NuGet Microsoft.Data.SqlClient em vez da biblioteca System.Data.SqlClient. As etapas específicas da plataforma para habilitar a coleta completa da consulta SQL são descritas na tabela a seguir.
Plataforma | Etapas necessárias para obter a consulta SQL completa |
---|---|
Aplicativos Web no Serviço de Aplicativo do Azure | No painel de controle do aplicativo Web, abra o painel do Application Insights e habilite os Comandos SQL no .NET. |
Servidor IIS (Máquinas Virtuais do Azure, local e assim por diante) | Use o pacote NuGet Microsoft.Data.SqlClient ou o módulo Monitor do PowerShell para o Application Insights Agent para instalar o mecanismo de instrumentação e reiniciar o IIS. |
Serviços de Nuvem do Azure | Adicionar uma tarefa de inicialização para instalar o StatusMonitor. Seu aplicativo deve ser integrado ao SDK do ApplicationInsights no momento da compilação instalando pacotes NuGet para aplicativos ASP.NET ou ASP.NET Core. |
IIS Express | Use o pacote NuGet Microsoft.Data.SqlClient. |
WebJobs no Serviço de Aplicativo do Azure | Use o pacote NuGet Microsoft.Data.SqlClient. |
Além das etapas anteriores específicas da plataforma, você também precisa optar explicitamente por habilitar a coleção de comandos SQL modificando o arquivo applicationInsights.config
com o seguinte código:
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
<EnableSqlCommandTextInstrumentation>true</EnableSqlCommandTextInstrumentation>
</Add>
Nos casos anteriores, a maneira adequada de confirmar que o mecanismo de instrumentação está instalado corretamente é validando que a versão do SDK do DependencyTelemetry
coletado é rddp
. O uso de rdddsd
ou rddf
indica que as dependências são coletadas por meio de DiagnosticSource
ou retornos de chamada EventSource
, portanto, a consulta SQL completa não será capturada.
Onde encontrar dados de dependência
- O Mapa do Aplicativo visualiza as dependências entre seu aplicativo e os componentes de vizinhança.
- O Diagnóstico de Transação mostra dados de servidor unificados correlacionados.
- A guia Navegadores mostra chamadas AJAX dos navegadores dos seus usuários.
- Selecione dentre as solicitações com falha ou lentas para verificar as chamadas de dependência delas.
- O Analytics pode ser usado para consultar dados de dependência.
Diagnosticar solicitações lentas
Cada evento de solicitação está associado às chamadas de dependência, exceções e outros eventos que são acompanhados durante o processamento da solicitação. Então, se algumas solicitações estão com baixo desempenho, você pode descobrir se é devido à lentidão nas respostas de uma dependência.
Rastreamento de solicitações de dependências
Selecione a guia Desempenho do lado esquerdo e selecione a guia Dependências na parte superior.
Selecione um Nome de Dependência em Geral. Após você selecionar uma dependência, ela mostrará um grafo da distribuição de durações dessa dependência.
Selecione o botão Amostras na parte inferior direita. Em seguida, selecione uma amostra para ver os detalhes da transação de ponta a ponta.
Perfil de seu site ativo
O .NET Profiler rastreia chamadas HTTP para seu site ativo e mostra as funções mais demoradas no seu código.
Solicitações com falhas
As solicitações com falha também podem ser associadas a chamadas com falha para as dependências.
Selecione a guia Falhas do lado esquerdo e, a seguir, selecione a guia Dependências na parte superior.
Aqui você verá o número de dependências com falha. Para obter mais informações sobre uma ocorrência com falha, selecione um Nome de Dependência na tabela inferior. Selecione o botão Dependências na parte inferior direita para visualizar os detalhes da transação de ponta a ponta.
Logs (Analytics)
Você pode rastrear dependências na Linguagem de Consulta Kusto. Confira alguns exemplos.
Localize todas as chamadas de dependência com falha:
dependencies | where success != "True" | take 10
Localize as chamadas AJAX:
dependencies | where client_Type == "Browser" | take 10
Localize as chamadas de dependência associadas a solicitações:
dependencies | where timestamp > ago(1d) and client_Type != "Browser" | join (requests | where timestamp > ago(1d)) on operation_Id
Localize as chamadas AJAX associadas a exibições de página:
dependencies | where timestamp > ago(1d) and client_Type == "Browser" | join (browserTimings | where timestamp > ago(1d)) on operation_Id
SDK de código aberto
Assim como cada SDK do Application Insights, o módulo de coleta de dependência também é de código aberto. Leia e contribua com o código ou relate problemas no repositório oficial do GitHub.
Coleta automática de dependências
Confira abaixo a lista atualmente com suporte de chamadas de dependência que são detectadas automaticamente como dependências sem a necessidade de qualquer modificação adicional no código do aplicativo. Essas dependências são visualizadas nas exibições Mapa do aplicativo e Diagnóstico de transação do Application Insights. Se sua dependência não estiver na lista, você ainda poderá acompanhá-la manualmente com um comando acompanhar chamada de dependência.
.NET
Estruturas do aplicativo | Versões |
---|---|
Web Forms do ASP.NET | 4.5+ |
ASP.NET MVC | 4+ |
ASP.NET Web API | 4.5+ |
ASP.NET Core | 1.1+ |
Bibliotecas de comunicação | |
HttpClient | 4.5+, .NET Core 1.1+ |
SqlClient | .NET Core 1.0+, NuGet 4.3.0 |
Microsoft.Data.SqlClient | 1.1.0 – versão estável mais recente. (Confira a observação a seguir.) |
SDK do Cliente dos Hubs de Eventos | 1.1.0 |
SDK do Cliente do Barramento de Serviço | 7.0.0 |
Clientes de armazenamento | |
ADO.NET | 4.5+ |
Observação
Existe um problema conhecido com versões anteriores do Microsoft.Data.SqlClient. É recomendável usar a 1.1.0 ou posterior para atenuar esse problema. O Entity Framework Core não vêm necessariamente com a versão estável mais recente do Microsoft.Data.SqlClient. Portanto, recomendamos confirmar que você tenha no mínimo a 1.1.0 para evitar esse problema.
Java
Confira a lista de dependências coletadas automaticamente do Java do Application Insights.
Node.js
Uma lista dos módulos mais recentes com suporte atualmente é mantida aqui.
JavaScript
Bibliotecas de comunicação | Versões |
---|---|
XMLHttpRequest | Todos |
Próximas etapas
- Verifique as perguntas frequentes (FAQ): Perguntas frequentes sobre controle de dependências
- Valide se você está executando uma versão com suporte do SDK do Application Insights.
- Exceções
- Dados do usuário e da página
- Disponibilidade
- Configurar o acompanhamento de dependência personalizado para Java
- Configure o acompanhamento de dependência personalizado para Python OpenCensus
- Gravar telemetria de dependência personalizada
- Consulte o modelo de dados para tipos e modelos de dados do Application Insights
- Confira as plataformas compatíveis com o Application Insights