Configurar o SDK do Application Insights com ApplicationInsights.config ou.xml
O SDK do .NET do Application Insights é composto por vários pacotes NuGet. O pacote principal fornece a API para enviar telemetria ao Application Insights. Mais pacotes fornecem módulos e inicializadores de telemetria para rastreamento automático de telemetria de seu aplicativo e o respectivo contexto. Ao ajustar o arquivo de configuração, você pode habilitar ou desabilitar módulos de telemetria e inicializadores. Você também pode definir parâmetros para alguns deles.
Observação
A documentação a seguir depende da API clássica do Application Insights. O plano de longo prazo do Application Insights é coletar dados usando o OpenTelemetry. Para obter mais informações, consulte Habilitar o OpenTelemetry do Azure Monitor para aplicativos .NET, Node.js, Python e Java e nosso Roteiro do OpenTelemetry. As diretrizes de migração estão disponíveis para o .NET, o Node.js e o Python.
O arquivo de configuração é nomeado como ApplicationInsights.config
ou ApplicationInsights.xml
. O nome depende do tipo do aplicativo. Ele é adicionado automaticamente ao seu projeto quando você instala a maioria das versões do SDK. Por padrão, quando você usa a experiência automatizada dos projetos de modelo do Visual Studio que dão suporte a Adicionar>Application Insights Telemetry, o arquivo ApplicationInsights.config
é criado na pasta raiz do projeto. Quando ele é compilado, ele é copiado para a pasta bin. Também é adicionado a um aplicativo web pelo Application Insights Agent em um servidor IIS. O arquivo de configuração será ignorado se a extensão para o site do Azure ou a extensão para VMs do Azure e o conjuntos de dimensionamento de máquinas virtuais forem usados.
Não há um arquivo equivalente para controlar o SDK em uma página da Web.
Este documento descreve as seções que você vê no arquivo de configuração, como elas controlam os componentes do SDK, e quais pacotes NuGet carregam esses componentes.
Observação
As instruções ApplicationInsights.config
e .xml não se aplicam ao SDK do .NET Core. Para configurar aplicativos ASP.NET Core, siga as instruções no Application Insights para aplicativos ASP.NET Core.
Módulos de telemetria (ASP.NET)
Cada módulo de telemetria coleta um tipo específico de dados e usa o API principal para enviar os dados. Os módulos são instalados por diferentes pacotes NuGet, que também adicionam as linhas necessárias para o arquivo. config.
Há um nó no arquivo de configuração para cada módulo. Para desabilitar um módulo, exclua o nó ou remova o comentário dele.
acompanhamento de dependência
Dependency tracking coleta a telemetria sobre chamadas para bancos de dados e serviços externos e torna o seu aplicativo. Para permitir que esse módulo funcione em um servidor IIS, é necessário instalar o Application Insights Agent.
Você também pode gravar seu próprio código de rastreamento de dependência usando a API TrackDependency.
Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule
- Pacote NuGet Microsoft.ApplicationInsights.DependencyCollector
As dependências podem ser coletadas automaticamente sem modificar seu código usando a anexação baseada em agente (sem código). Para usá-la em aplicativos Web do Azure, habilite a extensão do Application Insights. Para usá-la na VM do Azure ou em um conjunto de dimensionamento de máquinas virtuais do Azure, habilite a extensão de monitoramento de aplicativo para VMs e conjuntos de dimensionamento de máquinas virtuais.
Coletor de desempenho
O coletor de desempenhocoleta contadores de desempenho do sistema, como CPU, memória e carregamento de rede de instalações do IIS. É possível especificar quais contadores coletar, incluindo contadores de desempenho que você mesmo configurou.
Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule
- Pacote NuGet Microsoft.ApplicationInsights.PerfCounterCollector
Telemetria de diagnóstico do Application Insights
A classe DiagnosticsTelemetryModule
relata erros no próprio código de instrumentação do Application Insights. Exemplos são se o código não puder acessar contadores de desempenho ou se ITelemetryInitializer
gerar uma exceção. A telemetria de rastreamento rastreada por esse módulo aparece na Pesquisa de Diagnóstico.
Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule
- Microsoft.ApplicationInsights . Se você instalar apenas esse pacote, o arquivo applicationinsights. config não é criado automaticamente.
Modo de desenvolvedor
A classe DeveloperModeWithDebuggerAttachedTelemetryModule
força o Application Insights TelemetryChannel
a enviar dados imediatamente, um item de telemetria por vez, quando um depurador é anexado ao processo do aplicativo. Esse design reduz o tempo entre o momento em que o aplicativo rastreia a telemetria e quando ela aparece no portal do Application Insights. Faz com uma sobrecarga significativa na largura de banda de CPU e rede.
Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule
- Application Insights Windows Server .
Acompanhamento de solicitação da Web
O acompanhamento de solicitação da Web relata o tempo de resposta e o código de resultado das solicitações HTTP.
Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule
- Microsoft.ApplicationInsights.Web .
Acompanhamento de exceções
A classe ExceptionTrackingTelemetryModule
rastreia exceções sem tratamento no aplicativo Web. Para saber mais, confira Falhas e exceções.
Microsoft.ApplicationInsights.Web.ExceptionTrackingTelemetryModule
.- Pacote NuGet Microsoft.ApplicationInsights.Web.
Microsoft.ApplicationInsights.WindowsServer.UnobservedExceptionTelemetryModule
: rastreia a tarefa não observada. Exceções.Microsoft.ApplicationInsights.WindowsServer.UnhandledExceptionTelemetryModule
: rastreia as exceções sem tratamento para funções de trabalho, serviços Windows e aplicativos de console.- Application Insights Windows Server .
Acompanhamento de EventSource
A classe EventSourceTelemetryModule
permite configurar eventos EventSource para serem enviados ao Application Insights como rastreamentos. Para obter informações sobre o acompanhamento de eventos EventSource, consulte Usar eventos EventSource.
Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule
- Microsoft.ApplicationInsights.EventSourceListener
Acompanhamento de evento ETW
A classe EtwCollectorTelemetryModule
permite configurar eventos de provedores ETW para serem enviados ao Application Insights como rastreamentos. Para obter informações sobre o acompanhamento de eventos ETW, consulte Usar eventos ETW.
Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule
- Microsoft.ApplicationInsights.EtwCollector
Microsoft.ApplicationInsights
O pacote Microsoft.ApplicationInsights
fornece a API core do SDK. Os outros módulos de telemetria usam essa API. Também é possível usá-la para definir sua própria telemetria.
- Nenhuma entrada em ApplicationInsights.config.
- Microsoft.ApplicationInsights . Se você acabou de instalar este NuGet, nenhum arquivo. config será gerado.
Canal de telemetria
O canal de telemetria gerencia o armazenamento em buffer e a transmissão de telemetria ao serviço Application Insights.
Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel
é o canal padrão para aplicativos Web. Ele armazena os dados em buffer na memória e emprega mecanismos de repetição e armazenamento em disco local para uma entrega de telemetria mais confiável.Microsoft.ApplicationInsights.InMemoryChannel
é um canal de telemetria leve. Ele será usado se nenhum outro canal estiver configurado.
Inicializadores de telemetria (ASP.NET)
Os inicializadores de telemetria definem propriedades de contexto que são enviadas com cada item de telemetria.
Você pode escrever seus próprios inicializadores para definir as propriedades de contexto.
Todos os inicializadores padrão foram configurados pelos pacotes NuGet WindowsServer ou Web:
AccountIdTelemetryInitializer
define a propriedadeAccountId
.AuthenticatedUserIdTelemetryInitializer
define a propriedadeAuthenticatedUserId
como definida pelo SDK do JavaScript.AzureRoleEnvironmentTelemetryInitializer
atualiza as propriedadesRoleName
eRoleInstance
do contextoDevice
para todos os itens de telemetria com informações extraídas do ambiente de runtime do Azure.BuildInfoConfigComponentVersionTelemetryInitializer
atualiza aVersion
propriedade doComponent
contexto para todos os itens de telemetria com o valor extraído do arquivoBuildInfo.config
produzido pelo MS Build.ClientIpHeaderTelemetryInitializer
atualiza a propriedadeIp
do contextoLocation
de todos os itens de telemetria baseados no cabeçalho HTTPX-Forwarded-For
da solicitação.DeviceTelemetryInitializer
atualiza as propriedades a seguir do contextoDevice
para todos os itens de telemetria.Type
é definido comoPC
.Id
é definido para o nome de domínio do computador onde o aplicativo Web está em execução.OemName
é definido como o valor extraído do campoWin32_ComputerSystem.Manufacturer
usando WMI.Model
é definido como o valor extraído do campoWin32_ComputerSystem.Model
usando WMI.NetworkType
é definido como o valor extraído da propriedadeNetworkInterface
.Language
é definido como o nome da propriedadeCurrentCulture
.
DomainNameRoleInstanceTelemetryInitializer
atualiza a propriedadeRoleInstance
do contextoDevice
para todos os itens de telemetria com o nome de domínio do computador onde o aplicativo Web está em execução.OperationNameTelemetryInitializer
atualiza a propriedadeName
das propriedadesRequestTelemetry
eName
do contextoOperation
de todos os itens de telemetria baseados no método HTTP, incluindo os nomes do controlador MVC do ASP.NET e a ação invocada para processar a solicitação.OperationIdTelemetryInitializer
ouOperationCorrelationTelemetryInitializer
atualiza a propriedade de contextoOperation.Id
de todos os itens de telemetria rastreados ao manipular uma solicitação com oRequestTelemetry.Id
gerado automaticamente.SessionTelemetryInitializer
atualiza a propriedadeId
do contextoSession
para todos os itens de telemetria com valor extraído do cookieai_session
gerado pelo código de instrumentação do JavaScriptApplicationInsights
em execução no navegador do usuário.SyntheticTelemetryInitializer
ouSyntheticUserAgentTelemetryInitializer
atualiza as propriedades de contextoUser
,Session
eOperation
de todos os itens de telemetria rastreados ao lidar com uma solicitação de uma fonte sintética, como um teste de disponibilidade ou um bot do mecanismo de pesquisa. Por padrão, o Metrics Explorer não exibe telemetria sintética.Os
<Filters>
definem as propriedades de identificação das solicitações.UserTelemetryInitializer
atualiza as propriedadesId
eAcquisitionDate
do contextoUser
para todos os itens de telemetria com valores extraídos do cookieai_user
gerado pelo código de instrumentação do JavaScript do Application Insights em execução no navegador do usuário.WebTestTelemetryInitializer
define a ID de usuário, a ID de sessão e as propriedades de fonte sintética para solicitações HTTP provenientes dos testes de disponibilidade. Os<Filters>
definem as propriedades de identificação das solicitações.
Para aplicativos .NET em execução no Azure Service Fabric, você pode incluir o pacote do NuGet Microsoft.ApplicationInsights.ServiceFabric
. Este pacote inclui uma propriedade FabricTelemetryInitializer
, que adiciona propriedades do Service Fabric a itens de telemetria. Para obter mais informações, consulte a página do GitHub sobre as propriedades adicionadas por este pacote do NuGet.
Processadores de telemetria (ASP.NET)
Processadores de telemetria podem filtrar e modificar cada item de telemetria antes de serem enviados do SDK para o portal.
Você pode escrever seus próprios processadores de telemetria.
Processador de telemetria de amostragem adaptável (da 2.0.0-beta3)
Essa funcionalidade é habilitada por padrão. Se seu aplicativo envia uma quantidade de telemetria considerável, esse processador remove parte dela.
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
</Add>
</TelemetryProcessors>
O parâmetro fornece o destino que o algoritmo tenta obter. Cada instância do SDK funciona de forma independente. Assim, se o servidor for um cluster de vários computadores, o volume real de telemetria será multiplicado adequadamente.
Saiba mais sobre amostragem.
Processador de telemetria de amostragem de taxa fixa (da 2.0.0-beta1)
Também há um processador de telemetria de amostragem padrão (a partir da 2.0.1):
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.SamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<!-- Set a percentage close to 100/N where N is an integer. -->
<!-- E.g. 50 (=100/2), 33.33 (=100/3), 25 (=100/4), 20, 1 (=100/100), 0.1 (=100/1000) -->
<SamplingPercentage>10</SamplingPercentage>
</Add>
</TelemetryProcessors>
ConnectionString
Veja exemplos de código de cadeia de conexão.
InstrumentationKey
Observação
Em 31 de março de 31, 2025, o suporte à ingestão de chave de instrumentação será encerrado. A ingestão de chave de instrumentação continuará funcionando, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar as novas funcionalidades.
Essa configuração determina o recurso do Application Insights em que seus dados aparecem. Normalmente, você cria um recurso separado com uma chave separada para cada um dos aplicativos.
Se você quiser definir a chave dinamicamente, por exemplo, caso queira enviar os resultados do seu aplicativo para outros recursos, é possível omitir a chave do arquivo de configuração e defini-lo no código.
Para definir a chave para todas as instâncias de TelemetryClient
, incluindo módulos de telemetria padrão, execute esta etapa em um método de inicialização, como global.aspx.cs em um serviço ASP.NET:
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights;
protected void Application_Start()
{
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
configuration.InstrumentationKey = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
var telemetryClient = new TelemetryClient(configuration);
Se quiser enviar um conjunto específico de eventos para um recurso diferente, você pode definir a chave para um cliente de telemetria específico:
var tc = new TelemetryClient();
tc.Context.InstrumentationKey = "----- my key ----";
tc.TrackEvent("myEvent");
// ...
Para obter uma nova chave, crie um novo recurso no portal do Application Insights.
Provedor ApplicationId
O provedor está disponível desde a v2.6.0.
A finalidade desse provedor é procurar uma ID de aplicativo com base em uma chave de instrumentação. A ID do aplicativo está incluída em RequestTelemetry
e DependencyTelemetry
e é usada para determinar a correlação no portal.
Essa funcionalidade está disponível configurando TelemetryConfiguration.ApplicationIdProvider
no código ou no arquivo de configuração.
Interface: IApplicationIdProvider
public interface IApplicationIdProvider
{
bool TryGetApplicationId(string instrumentationKey, out string applicationId);
}
Fornecemos duas implementações no SDK Microsoft.ApplicationInsights: ApplicationInsightsApplicationIdProvider
e DictionaryApplicationIdProvider
.
ApplicationInsightsApplicationIdProvider
Esse wrapper é destinado à API de Perfil. Ele limitará as solicitações e os resultados do cache.
Este provedor é adicionado ao arquivo de configuração quando você instala Microsoft.ApplicationInsights.DependencyCollector ou Microsoft.ApplicationInsights.Web.
Essa classe tem uma propriedade opcional ProfileQueryEndpoint
. Por padrão, ela é definida como https://dc.services.visualstudio.com/api/profiles/{0}/appId
. Se for necessário configurar um proxy para essa configuração, é recomendável usar um proxy de endereço básico e incluir "/api/profiles/{0}/appId"
. Um {0}
é substituído em runtime mediante solicitação com a chave de instrumentação.
Exemplo de configuração por ApplicationInsights.config
<ApplicationInsights>
...
<ApplicationIdProvider Type="Microsoft.ApplicationInsights.Extensibility.Implementation.ApplicationId.ApplicationInsightsApplicationIdProvider, Microsoft.ApplicationInsights">
<ProfileQueryEndpoint>https://dc.services.visualstudio.com/api/profiles/{0}/appId</ProfileQueryEndpoint>
</ApplicationIdProvider>
...
</ApplicationInsights>
Exemplo de Configuração por código
TelemetryConfiguration.Active.ApplicationIdProvider = new ApplicationInsightsApplicationIdProvider();
DictionaryApplicationIdProvider
Esse provedor estático depende dos pares de ID do aplicativo/chave de instrumentação configurados.
Essa classe tem a propriedade Defined
, que é um Dictionary<string,string>
dos pares de chave de instrumentação/ID do aplicativo.
Essa classe tem a propriedade opcional Next
, que pode ser utilizada para configurar outro provedor a ser usado quando uma chave de instrumentação solicitada não existir na configuração.
Exemplo de configuração por ApplicationInsights.config
<ApplicationInsights>
...
<ApplicationIdProvider Type="Microsoft.ApplicationInsights.Extensibility.Implementation.ApplicationId.DictionaryApplicationIdProvider, Microsoft.ApplicationInsights">
<Defined>
<Type key="InstrumentationKey_1" value="ApplicationId_1"/>
<Type key="InstrumentationKey_2" value="ApplicationId_2"/>
</Defined>
<Next Type="Microsoft.ApplicationInsights.Extensibility.Implementation.ApplicationId.ApplicationInsightsApplicationIdProvider, Microsoft.ApplicationInsights" />
</ApplicationIdProvider>
...
</ApplicationInsights>
Exemplo de Configuração por código
TelemetryConfiguration.Active.ApplicationIdProvider = new DictionaryApplicationIdProvider{
Defined = new Dictionary<string, string>
{
{"InstrumentationKey_1", "ApplicationId_1"},
{"InstrumentationKey_2", "ApplicationId_2"}
}
};
Configurar a coleta de instantâneo para aplicativos ASP.NET
Configurar uma coleção de instantâneos para aplicativos ASP.NET.