Partilhar via


Application Insights para aplicativos ASP.NET principais

Este artigo descreve como habilitar e configurar o Application Insights para um aplicativo ASP.NET Core .

Nota

A documentação a seguir depende da API clássica do Application Insights. O plano de longo prazo para o Application Insights é coletar dados usando OpenTelemetry. Para obter mais informações, consulte Habilitar o Azure Monitor OpenTelemetry para aplicativos .NET, Node.js, Python e Java e nosso OpenTelemetry Roadmap. As diretrizes de migração estão disponíveis para .NET, Node.js e Python.

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

Necessita de:

  • 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.

  1. Abra seu projeto no Visual Studio.

  2. Vá para Project>Add Application Insights Telemetry.

  3. Selecione Azure Application Insights>Next.

  4. Escolha sua assinatura e a instância do Application Insights. Ou você pode criar uma nova instância com Create new. Selecione Seguinte.

  5. 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.

  6. 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.

    Captura de tela que mostra onde selecionar o pacote do Application Insights para atualização.

Habilitar telemetria do lado do servidor do Application Insights (sem Visual Studio)

  1. 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 do .csproj seu projeto:

    <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" />
    </ItemGroup>
    
  2. Adicione AddApplicationInsightsTelemetry() à sua startup.cs turma program.cs . A escolha depende da sua versão do .NET Core.

    Adicione builder.Services.AddApplicationInsightsTelemetry(); após o WebApplication.CreateBuilder() método em sua Program classe, 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();
    
  3. Configure a cadeia de conexão.

    Embora você possa fornecer uma cadeia de conexão como parte do argumento para AddApplicationInsightsTelemetry, recomendamos que especifique a cadeia de ApplicationInsightsServiceOptions conexão na configuração. O exemplo de código a seguir mostra como especificar uma cadeia de conexão no appsettings.json. Certifique-se de que appsettings.json é copiado para a pasta raiz do aplicativo durante a publicação.

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*",
      "ApplicationInsights": {
        "ConnectionString": "Copy connection string from Application Insights Resource Overview"
      }
    }
    

    Como alternativa, especifique a cadeia de conexão na APPLICATIONINSIGHTS_CONNECTION_STRING variável de ambiente ou ApplicationInsights: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_STRINGde ambiente , que ganha sobre outras opções.

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 IConfigurationexplicitamente .

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:

  1. Instale o pacote NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
  2. 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.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
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.

  1. Em _ViewImports.cshtml, adicione a injeção:

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    
  2. Em _Layout.cshtml, insira HtmlHelper no final da seção, <head> 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 FullScriptdo , 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 .cshtml nomes de arquivo 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 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 JavaScript (Web) SDK Loader Script em _Layout.cshtml um modelo de aplicativo para habilitar o monitoramento do lado do cliente.

Se o seu projeto não incluir _Layout.cshtmlo , você ainda poderá adicionar monitoramento do lado do cliente adicionando o JavaScript 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.Activeo . Para ASP.NET Core, faça quase todas as alterações de configuração no método da sua Startup.cs classe, a ConfigureServices() 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 extractorarquivo . 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, EnableAzureInstanceMetadataTelemetryModulee 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": "Copy connection string from Application Insights Resource Overview",
    "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 alavancar 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:

Este SDK é suportado para os Serviços do Trabalhador?

N.º 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?.

  1. Desinstale o pacote Microsoft.ApplicationInsights.AspNetCore usando o Gerenciador de Pacotes NuGet.
  2. 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/00000000-0000-0000-0000-000000000000/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": {
        "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.