Application Insights para aplicativos ASP.NET principais
Este artigo descreve como habilitar e configurar o Application Insights para um aplicativo ASP.NET Core .
Atenção
Recomendamos a Distro OpenTelemetry do Azure Monitor para novos aplicativos ou clientes para potencializar o Azure Monitor Application Insights. A Distro OpenTelemetry do Azure Monitor oferece uma 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 para compatibilidade com versões anteriores.
O Application Insights pode coletar a seguinte telemetria do seu aplicativo ASP.NET Core:
- Pedidos do
- Dependências
- Exceções
- Contadores de desempenho
- Batimentos cardíacos
- Registos
Usamos um exemplo de aplicação MVC. Se você estiver usando o Serviço de Trabalho, use as instruções em Application Insights para aplicativos de Serviço de Trabalhador.
Uma oferta .NET baseada em OpenTelemetry está disponível. Para obter mais informações, consulte Visão geral do OpenTelemetry .
Nota
A 31 de março de 2025, o suporte da ingestão de chaves de instrumentação terminará. A ingestão de chaves de instrumentação continuará a funcionar, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar os novos recursos.
Nota
Se você quiser usar o provedor ILogger autônomo, use Microsoft.Extensions.Logging.ApplicationInsight.
Cenários suportados
O SDK do Application Insights para ASP.NET Core pode monitorar seus aplicativos, não importa onde ou como eles são executados. Se seu aplicativo estiver em execução e tiver conectividade de rede com o Azure, a telemetria poderá ser coletada. O monitoramento do Application Insights é suportado em todos os lugares onde o .NET Core é suportado e abrange os seguintes cenários:
- Sistema operacional: Windows, Linux ou Mac
- Método de hospedagem: Em processo ou fora do processo
- Método de implantação: dependente do Framework ou autônomo
- Servidor Web: Internet Information Server (IIS) ou Kestrel
- Plataforma de hospedagem: o recurso Aplicativos Web do Serviço de Aplicativo do Azure, Máquinas Virtuais do Azure, Docker e Serviço Kubernetes do Azure (AKS)
- Versão .NET: Todas as versões .NET oficialmente suportadas que não estão em pré-visualização
- IDE: Visual Studio, Visual Studio Code ou linha de comando
Pré-requisitos
- Um aplicativo ASP.NET Core funcional. Se você precisar criar um aplicativo ASP.NET Core, siga este tutorial do ASP.NET Core.
- Uma referência a uma versão suportada do pacote NuGet do Application Insights .
- Uma cadeia de conexão válida do Application Insights. Essa cadeia de caracteres é necessária para enviar qualquer telemetria para o Application Insights. Se você precisar criar um novo recurso do Application Insights para obter uma cadeia de conexão, consulte Criar um recurso do Application Insights.
Habilitar a telemetria do lado do servidor do Application Insights (Visual Studio)
Para Visual Studio para Mac, use a orientação manual. Apenas a versão Windows do Visual Studio suporta este procedimento.
Abra seu projeto no Visual Studio.
Vá para Project>Add Application Insights Telemetry.
Selecione Azure Application Insights>Next.
Escolha sua assinatura e a instância do Application Insights. Ou você pode criar uma nova instância com Create new. Selecione Seguinte.
Adicione ou confirme sua cadeia de conexão do Application Insights. Ele deve ser pré-preenchido com base na sua seleção na etapa anterior. Selecione Concluir.
Depois de adicionar o Application Insights ao seu projeto, verifique se você está usando a versão estável mais recente do SDK. Vá para Project>Manage NuGet Packages>Microsoft.ApplicationInsights.AspNetCore. Se precisar, selecione Atualizar.
Habilitar telemetria do lado do servidor do Application Insights (sem Visual Studio)
Instale o pacote NuGet do SDK do Application Insights para ASP.NET Core.
Recomendamos que você sempre use a versão estável mais recente. Encontre as notas de versão completas do SDK no repositório GitHub de código aberto.
O exemplo de código a seguir mostra as alterações a serem adicionadas ao arquivo .csproj do seu projeto:
<ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" /> </ItemGroup>
Adicione
AddApplicationInsightsTelemetry()
à sua classe program.cs .Adicione
builder.Services.AddApplicationInsightsTelemetry();
após oWebApplication.CreateBuilder()
método, como neste exemplo:// This method gets called by the runtime. Use this method to add services to the container. var builder = WebApplication.CreateBuilder(args); // The following line enables Application Insights telemetry collection. builder.Services.AddApplicationInsightsTelemetry(); // This code adds other services for your application. builder.Services.AddMvc(); var app = builder.Build();
Adicione a cadeia de conexão, o que pode ser feito de três maneiras:
(Recomendado) Defina a cadeia de conexão na configuração.
Defina a cadeia de conexão em appsettings.json e verifique se o arquivo de configuração é copiado para a pasta raiz do aplicativo durante a publicação.
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ApplicationInsights": { "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000" } }
Defina a
APPLICATIONINSIGHTS_CONNECTION_STRING
cadeia de conexão na variável de ambiente ouApplicationInsights:ConnectionString
no arquivo de configuração JSON.Por exemplo:
SET ApplicationInsights:ConnectionString = <Copy connection string from Application Insights Resource Overview>
SET APPLICATIONINSIGHTS_CONNECTION_STRING = <Copy connection string from Application Insights Resource Overview>
- Normalmente,
APPLICATIONINSIGHTS_CONNECTION_STRING
é usado em aplicativos Web. Ele também pode ser usado em todos os lugares onde este SDK é suportado.
Nota
Uma cadeia de conexão especificada no código ganha sobre a variável
APPLICATIONINSIGHTS_CONNECTION_STRING
de ambiente , que ganha sobre outras opções.Defina a cadeia de conexão no código.
Forneça uma cadeia de conexão como parte do
ApplicationInsightsServiceOptions
argumento paraAddApplicationInsightsTelemetry
em sua classe program.cs .
Segredos de usuário e outros provedores de configuração
Se quiser armazenar a cadeia de conexão em ASP.NET segredos de usuário principais ou recuperá-la de outro provedor de configuração, você pode usar a sobrecarga com um Microsoft.Extensions.Configuration.IConfiguration
parâmetro. Um parâmetro de exemplo é services.AddApplicationInsightsTelemetry(Configuration);
.
Na Microsoft.ApplicationInsights.AspNetCore
versão 2.15.0 e posterior, a chamada services.AddApplicationInsightsTelemetry()
lê automaticamente a cadeia de conexão do Microsoft.Extensions.Configuration.IConfiguration
aplicativo. Não há necessidade de fornecer IConfiguration
explicitamente .
Se IConfiguration
tiver carregado a configuração de vários provedores, priorizará services.AddApplicationInsightsTelemetry
a configuração de appsettings.json, independentemente da ordem em que os provedores são adicionados. Use o método para ler a services.AddApplicationInsightsTelemetry(IConfiguration)
configuração sem IConfiguration
esse tratamento preferencial para appsettings.json.
Executar a aplicação
Execute seu aplicativo e faça solicitações para ele. A telemetria agora deve fluir para o Application Insights. O SDK do Application Insights coleta automaticamente as solicitações da Web de entrada para seu aplicativo, juntamente com a telemetria a seguir.
Métricas em tempo real
As métricas em tempo real podem ser usadas para verificar rapidamente se o monitoramento de aplicativos com o Application Insights está configurado corretamente. A telemetria pode levar alguns minutos para aparecer no portal do Azure, mas o painel de métricas ao vivo mostra o uso da CPU do processo em execução quase em tempo real. Ele também pode mostrar outras telemetrias, como solicitações, dependências e rastreamentos.
Habilite métricas ao vivo usando código para qualquer aplicativo .NET
Nota
As métricas em tempo real são habilitadas por padrão quando você as integra usando as instruções recomendadas para aplicativos .NET.
Para configurar manualmente as métricas em tempo real:
Instale o pacote NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
O código de aplicativo de console de exemplo a seguir mostra a configuração de métricas ao vivo:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
.Use((next) =>
{
quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
return quickPulseProcessor;
})
.Build();
var quickPulseModule = new QuickPulseTelemetryModule();
// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);
// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up live metrics.
TelemetryClient client = new TelemetryClient(config);
// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
// Send dependency and request telemetry.
// These will be shown in live metrics.
// CPU/Memory Performance counter is also shown
// automatically without any additional steps.
client.TrackDependency("My dependency", "target", "http://sample",
DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
client.TrackRequest("My Request", DateTimeOffset.Now,
TimeSpan.FromMilliseconds(230), "200", true);
Task.Delay(1000).Wait();
}
O exemplo anterior é para um aplicativo de console, mas o mesmo código pode ser usado em qualquer aplicativo .NET. Se quaisquer outros módulos de telemetria estiverem habilitados para coletar telemetria automaticamente, é importante garantir que a mesma configuração usada para inicializar esses módulos seja usada para o módulo de métricas em tempo real.
Logs do ILogger
A configuração padrão coleta ILogger
Warning
logs e logs mais severos. Para obter mais informações, consulte Como personalizar a coleção de logs do ILogger?.
Dependências
A coleta de dependência é habilitada por padrão. O rastreamento de dependência no Application Insights explica as dependências que são coletadas automaticamente e também contém etapas para fazer o rastreamento manual.
Contadores de desempenho
O suporte para contadores de desempenho no ASP.NET Core é limitado:
- As versões 2.4.1 e posteriores do SDK coletam contadores de desempenho se o aplicativo estiver sendo executado em Web Apps (Windows).
- As versões 2.7.1 e posteriores do SDK coletam contadores de desempenho se o aplicativo estiver sendo executado no Windows e de destino
netstandard2.0
ou posterior. - Para aplicativos destinados ao .NET Framework, todas as versões do SDK suportam contadores de desempenho.
- As versões 2.8.0 e posteriores do SDK suportam o contador CPU/memória no Linux. Nenhum outro contador é suportado no Linux. Para obter contadores de sistema no Linux e em outros ambientes que não sejam Windows, use EventCounters.
Contador de Eventos
Por predefinição, EventCounterCollectionModule
está ativado. Para saber como configurar a lista de contadores a serem coletados, consulte Introdução a EventCounters.
Enriqueça dados através de HTTP
HttpContext.Features.Get<RequestTelemetry>().Properties["myProp"] = someData
Habilitar a telemetria do lado do cliente para aplicativos Web
As etapas anteriores são suficientes para ajudá-lo a começar a coletar telemetria do lado do servidor. Se seu aplicativo tiver componentes do lado do cliente, siga as próximas etapas para começar a coletar telemetria de uso usando JavaScript (Web) SDK Loader Script injeção por configuração.
Em _ViewImports.cshtml, adicione injeção:
@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
Em _Layout.cshtml, insira
HtmlHelper
no final da<head>
seção, mas antes de qualquer outro script. Se você quiser relatar qualquer telemetria JavaScript personalizada da página, injete-a após este trecho:@Html.Raw(JavaScriptSnippet.FullScript) </head>
Como alternativa ao uso FullScript
do , ScriptBody
está disponível a partir do SDK do Application Insights para ASP.NET Core versão 2.14. Use ScriptBody
se precisar controlar a <script>
tag para definir uma Política de Segurança de Conteúdo:
<script> // apply custom changes to this script tag.
@Html.Raw(JavaScriptSnippet.ScriptBody)
</script>
Os nomes de arquivo .cshtml mencionados anteriormente são de um modelo de aplicativo MVC padrão. Em última análise, se você quiser habilitar corretamente o monitoramento do lado do cliente para seu aplicativo, o JavaScript (Web) SDK Loader Script deve aparecer na <head>
seção de cada página do seu aplicativo que você deseja monitorar. Adicione o JavaScript (Web) SDK Loader Script ao _Layout.cshtml em um modelo de aplicativo para habilitar o monitoramento do lado do cliente.
Se o seu projeto não incluir _Layout.cshtml, você ainda poderá adicionar monitoramento do lado do cliente adicionando o JavaScript (Web) SDK Loader Script a um arquivo equivalente que controla todas <head>
as páginas do seu aplicativo. Como alternativa, você pode adicionar o JavaScript (Web) SDK Loader Script a várias páginas, mas não o recomendamos.
Nota
A injeção de JavaScript fornece uma experiência de configuração padrão. Se você precisar de configuração além de definir a cadeia de conexão, será necessário remover a injeção automática conforme descrito e adicionar manualmente o JavaScript SDK.
Configurar o SDK do Application Insights
Você pode personalizar o SDK do Application Insights para ASP.NET Core para alterar a configuração padrão. Os usuários do SDK do Application Insights ASP.NET podem estar familiarizados com a alteração da configuração usando ApplicationInsights.config ou modificando TelemetryConfiguration.Active
o . Para ASP.NET Core, faça quase todas as alterações de configuração no ConfigureServices()
método da sua classe Startup.cs , a menos que você seja orientado de outra forma. As seções a seguir oferecem mais informações.
Nota
Em aplicativos ASP.NET Core, não há suporte para alterar a configuração modificando TelemetryConfiguration.Active
.
Usar ApplicationInsightsServiceOptions
Você pode modificar algumas configurações comuns passando ApplicationInsightsServiceOptions
para AddApplicationInsightsTelemetry
, como neste exemplo:
var builder = WebApplication.CreateBuilder(args);
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
// Disables adaptive sampling.
aiOptions.EnableAdaptiveSampling = false;
// Disables live metrics (also known as QuickPulse).
aiOptions.EnableQuickPulseMetricStream = false;
builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();
Esta tabela tem a lista completa de ApplicationInsightsServiceOptions
configurações:
Definição | Descrição | Predefinido |
---|---|---|
EnablePerformanceCounterCollectionModule | Ativar/Desativar PerformanceCounterCollectionModule . |
True |
EnableRequestTrackingTelemetryModule | Ativar/Desativar RequestTrackingTelemetryModule . |
True |
EnableEventCounterCollectionModule | Ativar/Desativar EventCounterCollectionModule . |
True |
EnableDependencyTrackingTelemetryModule | Ativar/Desativar DependencyTrackingTelemetryModule . |
True |
EnableAppServicesHeartbeatTelemetryModule | Ativar/Desativar AppServicesHeartbeatTelemetryModule . |
True |
EnableAzureInstanceMetadataTelemetryModule | Ativar/Desativar AzureInstanceMetadataTelemetryModule . |
True |
EnableQuickPulseMetricStream | Ativar/desativar o recurso LiveMetrics. | True |
EnableAdaptiveSampling | Ativar/desativar a amostragem adaptável. | True |
EnableHeartbeat | Ativar/desativar o recurso de pulsações. Ele envia periodicamente (padrão de 15 minutos) uma métrica personalizada nomeada HeartbeatState com informações sobre o tempo de execução, como a versão do .NET e as informações do ambiente do Azure, se aplicável. |
True |
AddAutoCollectedMetricExtractor | Ativar/desativar o AutoCollectedMetrics extractor arquivo . Esse processador de telemetria envia métricas pré-agregadas sobre solicitações/dependências antes que a amostragem ocorra. |
True |
RequestCollectionOptions.TrackExceptions | Habilitar/desabilitar relatórios de rastreamento de exceções não tratadas pelo módulo de coleta de solicitações. | False in netstandard2.0 (porque as exceções são rastreadas com ApplicationInsightsLoggerProvider ). Caso contrário. |
EnableDiagnosticsTelemetryModule | Ativar/Desativar DiagnosticsTelemetryModule . A desativação faz com que as seguintes configurações sejam ignoradas: EnableHeartbeat , EnableAzureInstanceMetadataTelemetryModule e EnableAppServicesHeartbeatTelemetryModule . |
True |
Para obter a lista mais atual, consulte as configurações configuráveis em ApplicationInsightsServiceOptions
.
Recomendação de configuração para Microsoft.ApplicationInsights.AspNetCore SDK 2.15.0 e posterior
Em Microsoft.ApplicationInsights.AspNetCore SDK versão 2.15.0 e posterior, configure todas as configurações disponíveis no ApplicationInsightsServiceOptions
, incluindo ConnectionString
. Use a instância do IConfiguration
aplicativo. As configurações devem estar na seção ApplicationInsights
, conforme mostrado no exemplo a seguir. A seção a seguir do appsettings.json configura a cadeia de conexão e desabilita a amostragem adaptativa e a coleta de contadores de desempenho.
{
"ApplicationInsights": {
"ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"EnableAdaptiveSampling": false,
"EnablePerformanceCounterCollectionModule": false
}
}
Se builder.Services.AddApplicationInsightsTelemetry(aiOptions)
for usado para ASP.NET Core 6.0 ou services.AddApplicationInsightsTelemetry(aiOptions)
para ASP.NET Core 3.1 e versões anteriores, ele substituirá as configurações do Microsoft.Extensions.Configuration.IConfiguration
.
Amostragem
O SDK do Application Insights para ASP.NET Core oferece suporte a amostragem adaptável e de taxa fixa. Por padrão, a amostragem adaptável está habilitada.
Para obter mais informações, consulte Configurar amostragem adaptável para aplicativos ASP.NET Core.
Adicionar TelemetryInitializers
Quando quiser enriquecer a telemetria com mais informações, use inicializadores de telemetria.
Adicione qualquer novo TelemetryInitializer
ao DependencyInjection
contêiner, conforme mostrado no código a seguir. O SDK seleciona automaticamente tudo TelemetryInitializer
o DependencyInjection
que é adicionado ao contêiner.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
var app = builder.Build();
Nota
builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
Funciona para inicializadores simples. Para outros, builder.Services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" });
é obrigatório.
Remover TelemetryInitializers
Por padrão, os inicializadores de telemetria estão presentes. Para remover todos ou inicializadores de telemetria específicos, use o seguinte código de exemplo depois de chamar AddApplicationInsightsTelemetry()
.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddApplicationInsightsTelemetry();
// Remove a specific built-in telemetry initializer
var tiToRemove = builder.Services.FirstOrDefault<ServiceDescriptor>
(t => t.ImplementationType == typeof(AspNetCoreEnvironmentTelemetryInitializer));
if (tiToRemove != null)
{
builder.Services.Remove(tiToRemove);
}
// Remove all initializers
// This requires importing namespace by using Microsoft.Extensions.DependencyInjection.Extensions;
builder.Services.RemoveAll(typeof(ITelemetryInitializer));
var app = builder.Build();
Adicionar processadores de telemetria
Você pode adicionar processadores de telemetria personalizados usando TelemetryConfiguration
o método AddApplicationInsightsTelemetryProcessor
de extensão em IServiceCollection
. Você usa processadores de telemetria em cenários avançados de filtragem. Utilize o seguinte exemplo:
var builder = WebApplication.CreateBuilder(args);
// ...
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();
// If you have more processors:
builder.Services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
var app = builder.Build();
Configurar ou remover TelemetryModules padrão
O Application Insights coleta automaticamente telemetria sobre cargas de trabalho específicas sem exigir rastreamento manual pelo usuário.
Por padrão, os seguintes módulos de coleta automática estão habilitados. Estes módulos são responsáveis pela recolha automática da telemetria. Você pode desativá-los ou configurá-los para alterar seu comportamento padrão.
RequestTrackingTelemetryModule
: Coleta RequestTelemetry de solicitações da Web recebidas.DependencyTrackingTelemetryModule
: Coleta DependencyTelemetry de chamadas HTTP de saída e chamadas SQL.PerformanceCollectorModule
: Coleta PerformanceCounters do Windows.QuickPulseTelemetryModule
: Coleta telemetria para mostrar no painel de métricas ao vivo.AppServicesHeartbeatTelemetryModule
: Coleta pulsações (que são enviadas como métricas personalizadas) sobre o ambiente do Serviço de Aplicativo onde o aplicativo está hospedado.AzureInstanceMetadataTelemetryModule
: Coleta pulsações (que são enviadas como métricas personalizadas) sobre o ambiente de VM do Azure onde o aplicativo está hospedado.EventCounterCollectionModule
: Coleta EventCounters. Este módulo é um novo recurso e está disponível no SDK versão 2.8.0 e posterior.
Para configurar qualquer padrão TelemetryModule
, use o método ConfigureTelemetryModule<T>
extension no IServiceCollection
, conforme mostrado no exemplo a seguir:
using Microsoft.ApplicationInsights.DependencyCollector;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddApplicationInsightsTelemetry();
// The following configures DependencyTrackingTelemetryModule.
// Similarly, any other default modules can be configured.
builder.Services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) =>
{
module.EnableW3CHeadersInjection = true;
});
// The following removes all default counters from EventCounterCollectionModule, and adds a single one.
builder.Services.ConfigureTelemetryModule<EventCounterCollectionModule>((module, o) =>
{
module.Counters.Add(new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
});
// The following removes PerformanceCollectorModule to disable perf-counter collection.
// Similarly, any other default modules can be removed.
var performanceCounterService = builder.Services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
if (performanceCounterService != null)
{
builder.Services.Remove(performanceCounterService);
}
var app = builder.Build();
Nas versões 2.12.2 e posteriores, ApplicationInsightsServiceOptions
inclui uma opção fácil para desativar qualquer um dos módulos padrão.
Configurar um canal de telemetria
O canal de telemetria padrão é ServerTelemetryChannel
. O exemplo a seguir mostra como substituí-lo.
using Microsoft.ApplicationInsights.Channel;
var builder = WebApplication.CreateBuilder(args);
// Use the following to replace the default channel with InMemoryChannel.
// This can also be applied to ServerTelemetryChannel.
builder.Services.AddSingleton(typeof(ITelemetryChannel), new InMemoryChannel() {MaxTelemetryBufferCapacity = 19898 });
builder.Services.AddApplicationInsightsTelemetry();
var app = builder.Build();
Nota
Se pretender libertar a memória intermédia, consulte Libertar dados. Por exemplo, talvez seja necessário liberar o buffer se estiver usando o SDK em um aplicativo que é desligado.
Desativar a telemetria dinamicamente
Se quiser desabilitar a telemetria condicional e dinamicamente, você pode resolver a TelemetryConfiguration
instância com um contêiner de injeção de dependência do ASP.NET Core em qualquer lugar do código e definir o DisableTelemetry
sinalizador nele.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddApplicationInsightsTelemetry();
// any custom configuration can be done here:
builder.Services.Configure<TelemetryConfiguration>(x => x.DisableTelemetry = true);
var app = builder.Build();
O exemplo de código anterior impede o envio de telemetria para o Application Insights. Isso não impede que nenhum módulo de coleta automática colete telemetria. Se quiser remover um módulo de coleta automática específico, consulte Remover o módulo de telemetria.
Perguntas mais frequentes
Esta secção fornece respostas a perguntas comuns.
O Application Insights suporta ASP.NET Core 3.1?
ASP.NET Core 3.1 não é mais suportado pela Microsoft.
O SDK do Application Insights para ASP.NET Core versão 2.8.0 e Visual Studio 2019 ou posterior pode ser usado com aplicativos ASP.NET Core 3.1.
Como posso rastrear a telemetria que não é coletada automaticamente?
Obtenha uma instância de usando a injeção do TelemetryClient
construtor e chame o método necessário TrackXXX()
nele. Não recomendamos a criação de instâncias novas TelemetryClient
ou TelemetryConfiguration
em um aplicativo ASP.NET Core. Uma instância singleton de TelemetryClient
já está registrada no DependencyInjection
contêiner, que compartilha TelemetryConfiguration
com o resto da telemetria. Crie uma nova TelemetryClient
instância somente se ela precisar de uma configuração separada do restante da telemetria.
O exemplo a seguir mostra como controlar mais telemetria de um controlador.
using Microsoft.ApplicationInsights;
public class HomeController : Controller
{
private TelemetryClient telemetry;
// Use constructor injection to get a TelemetryClient instance.
public HomeController(TelemetryClient telemetry)
{
this.telemetry = telemetry;
}
public IActionResult Index()
{
// Call the required TrackXXX method.
this.telemetry.TrackEvent("HomePageRequested");
return View();
}
}
Para obter mais informações sobre relatórios de dados personalizados no Application Insights, consulte Referência da API de métricas personalizadas do Application Insights. Uma abordagem semelhante pode ser usada para enviar métricas personalizadas para o Application Insights usando a API GetMetric.
Como faço para capturar o corpo de Solicitação e Resposta na minha telemetria?
ASP.NET Core tem suporte integrado para registrar informações de solicitação/resposta HTTP (incluindo corpo) via ILogger
. Recomenda-se aproveitar isso. Isso pode potencialmente expor informações de identificação pessoal (PII) na telemetria e pode fazer com que os custos (custos de desempenho e faturamento do Application Insights) aumentem significativamente, portanto, avalie os riscos cuidadosamente antes de usá-los.
Como posso personalizar a coleção de logs do ILogger?
A configuração padrão do Application Insights é capturar apenas Aviso e logs mais severos.
Capture informações e logs menos severos alterando a configuração de log para o provedor do Application Insights da seguinte maneira.
{
"Logging": {
"LogLevel": {
"Default": "Information"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Information"
}
}
},
"ApplicationInsights": {
"ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
}
}
É importante observar que o exemplo a seguir não faz com que o provedor do Application Insights capture Information
logs. Ele não o captura porque o SDK adiciona um filtro de log padrão que instrui ApplicationInsights
a capturar apenas Warning
logs e logs mais severos. O Application Insights requer uma substituição explícita.
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
}
}
Para obter mais informações, consulte Configuração do ILogger.
Alguns modelos do Visual Studio usaram o método de extensão UseApplicationInsights() no IWebHostBuilder para habilitar o Application Insights. Esse uso ainda é válido?
O método UseApplicationInsights()
de extensão ainda é suportado, mas está marcado como obsoleto no SDK do Application Insights versão 2.8.0 e posterior. Ele foi removido na próxima versão principal do SDK. Para habilitar a telemetria do Application Insights, use AddApplicationInsightsTelemetry()
porque ela fornece sobrecargas para controlar algumas configurações. Além disso, em ASP.NET aplicativos Core 3.X, services.AddApplicationInsightsTelemetry()
é a única maneira de habilitar o Application Insights.
Estou implantando meu aplicativo ASP.NET Core em aplicativos Web. Ainda devo habilitar a extensão do Application Insights a partir de aplicativos Web?
Se o SDK estiver instalado no momento da compilação, conforme mostrado neste artigo, não será necessário habilitar a extensão do Application Insights no portal do Serviço de Aplicativo. Se a extensão estiver instalada, ela recuará quando detetar que o SDK já foi adicionado. Se você habilitar o Application Insights a partir da extensão, não será necessário instalar e atualizar o SDK. Mas se você habilitar o Application Insights seguindo as instruções neste artigo, terá mais flexibilidade porque:
- A telemetria do Application Insights continua a funcionar em:
- Todos os sistemas operativos, incluindo Windows, Linux e Mac.
- Todos os modos de publicação, incluindo autônomos ou dependentes da estrutura.
- Todas as estruturas de destino, incluindo o .NET Framework completo.
- Todas as opções de hospedagem, incluindo Aplicativos Web, VMs, Linux, contêineres, AKS e hospedagem que não seja do Azure.
- Todas as versões do .NET Core, incluindo versões de visualização.
- Você pode ver a telemetria localmente quando estiver depurando do Visual Studio.
- Você pode acompanhar mais telemetria personalizada usando a
TrackXXX()
API. - Você tem controle total sobre a configuração.
Posso habilitar o monitoramento do Application Insights usando ferramentas como o Azure Monitor Application Insights Agent (anteriormente Status Monitor v2)?
Sim. No Application Insights Agent 2.0.0-beta1 e posterior, há suporte para aplicativos ASP.NET Core hospedados no IIS.
Todos os recursos são suportados se eu executar meu aplicativo no Linux?
Sim. O suporte a recursos para o SDK é o mesmo em todas as plataformas, com as seguintes exceções:
- O SDK coleta contadores de eventos no Linux porque os contadores de desempenho só são suportados no Windows. A maioria das métricas é a mesma.
Este SDK é suportado para os Serviços do Trabalhador?
N.º Em vez disso, use o Application Insights for Worker Service applications (aplicativos não HTTP) para serviços de trabalho.
Como posso desinstalar o SDK?
Para remover o Application Insights, você precisa remover os pacotes e referências do NuGet da API em seu aplicativo. Você pode desinstalar pacotes NuGet usando o Gerenciador de Pacotes NuGet no Visual Studio.
Nota
Estas instruções são para desinstalar o ASP.NET Core SDK. Se você precisar desinstalar o ASP.NET SDK, consulte Como posso desinstalar o ASP.NET SDK?.
- Desinstale o pacote Microsoft.ApplicationInsights.AspNetCore usando o Gerenciador de Pacotes NuGet.
- Para remover totalmente o Application Insights, verifique e exclua manualmente o código ou os arquivos adicionados junto com quaisquer chamadas de API adicionadas em seu projeto. Para obter mais informações, consulte O que é criado quando você adiciona o SDK do Application Insights?.
O que é criado quando você adiciona o SDK do Application Insights?
Quando você adiciona o Application Insights ao seu projeto, ele cria arquivos e adiciona código a alguns de seus arquivos. A desinstalação exclusiva dos Pacotes NuGet nem sempre descartará os arquivos e o código. Para remover totalmente o Application Insights, você deve verificar e excluir manualmente o código ou os arquivos adicionados junto com quaisquer chamadas de API adicionadas em seu projeto.
Quando você adiciona Telemetria do Application Insights a um projeto de modelo do Visual Studio ASP.NET Core, ele adiciona o seguinte código:
[Nome do seu projeto].csproj
<PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <ApplicationInsightsResourceId>/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4core</ApplicationInsightsResourceId> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.12.0" /> </ItemGroup> <ItemGroup> <WCFMetadata Include="Connected Services" /> </ItemGroup>
Appsettings.json
"ApplicationInsights": { "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000" }
ConnectedService.json
{ "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider", "Version": "16.0.0.0", "GettingStartedDocument": { "Uri": "https://go.microsoft.com/fwlink/?LinkID=798432" } }
Startup.cs
public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddApplicationInsightsTelemetry(); // This is added }
Como posso desativar a correlação de telemetria?
Para desabilitar a correlação de telemetria no código, consulte <ExcludeComponentCorrelationHttpHeadersOnDomains>
em Application Insights for console applications.
Resolução de Problemas
Consulte o artigo dedicado à resolução de problemas.
Testar a conectividade entre o host do aplicativo e o serviço de ingestão
SDKs e agentes do Application Insights enviam telemetria para serem ingeridos como chamadas REST para nossos pontos de extremidade de ingestão. Você pode testar a conectividade do seu servidor Web ou máquina host de aplicativo para os pontos de extremidade do serviço de ingestão usando clientes REST brutos do PowerShell ou comandos curl. Consulte Solucionar problemas de telemetria de aplicativo ausente no Azure Monitor Application Insights.
SDK de código aberto
Leia e contribua para o código.
Para obter as atualizações mais recentes e correções de bugs, consulte as notas de versão.
Release Notes (Notas de Lançamento)
Para a versão 2.12 e mais recente: SDKs .NET (incluindo ASP.NET, ASP.NET Core e adaptadores de log)
Nossas atualizações de serviço também resumem as principais melhorias do Application Insights.
Próximos passos
- Explore os fluxos de usuários para entender como os usuários se movem pelo seu aplicativo.
- Configure uma coleção de instantâneos para ver o estado do código-fonte e das variáveis no momento em que uma exceção é lançada.
- Use a API para enviar seus próprios eventos e métricas para obter uma visão detalhada do desempenho e do uso do seu aplicativo.
- Use testes de disponibilidade para verificar seu aplicativo constantemente de todo o mundo.
- Saiba mais sobre a injeção de dependência no ASP.NET Core.