Condividi tramite


Application Insights per applicazioni ASP.NET Core

Questo articolo descrive come abilitare e configurare Application Insights per un'applicazione ASP.NET Core.

Attenzione

Si consiglia di utilizzare la Distribuzione OpenTelemetry di Azure Monitor per le nuove applicazioni o per i clienti, al fine di supportare Azure Monitor Application Insights. La distribuzione OpenTelemetry di Azure Monitor offre funzionalità ed esperienze simili a quelle di Application Insights SDK. È possibile eseguire la migrazione da Application Insights SDK usando le guide alla migrazione per .NET, Node.js e Python, ma stiamo ancora lavorando per aggiungere altre funzionalità per la compatibilità con le versioni precedenti.

Application Insights può raccogliere i dati di telemetria seguenti dall'applicazione ASP.NET Core:

  • Richieste
  • Dipendenze
  • Eccezioni
  • Contatori delle prestazioni
  • Battiti cardiaci
  • Log

Viene usata un'applicazione MVC di esempio. Se si utilizza il Servizio Worker, usare le istruzioni in Application Insights per le applicazioni del Servizio Worker.

È disponibile un 'offerta .NET basata su OpenTelemetry. Per altre informazioni, vedere Panoramica di OpenTelemetry.

Nota

Il 31 marzo 2025, il supporto per l'inserimento delle chiavi di strumentazione terminerà. L'inserimento delle chiavi di strumentazione continuerà a funzionare, ma non saranno più garantiti aggiornamenti o supporto per la funzionalità. Eseguire la transizione alle stringhe di connessione per sfruttare le nuove funzionalità.

Nota

Se si vuole usare il provider ILogger autonomo, usare Microsoft.Extensions.Logging.ApplicationInsight.

Scenari supportati

Application Insights SDK per ASP.NET Core può monitorare le applicazioni indipendentemente da dove o come vengono eseguite. Se l'applicazione è in esecuzione e ha connettività di rete ad Azure, è possibile raccogliere i dati di telemetria. Il monitoraggio di Application Insights è supportato ovunque sia supportato .NET Core e comprende gli scenari seguenti:

  • Sistema operativo: Windows, Linux o Mac
  • Metodo di hosting: interno o esterno al processo
  • Metodo di distribuzione: dipendente dal framework o autonomo
  • Server Web: IIS (Internet Information Server) o Kestrel
  • Piattaforma di hosting: la funzionalità Web Apps del Servizio app di Azure, Macchine virtuali di Azure, Docker e Azure Kubernetes Service (AKS)
  • Versione di .NET: tutte le versioni di .NET supportate ufficialmente non in fase di anteprima
  • IDE: Visual Studio, Visual Studio Code o riga di comando

Prerequisiti

  • Un'applicazione ASP.NET Core funzionante. Se è necessario creare un'applicazione ASP.NET Core, seguire questa esercitazione di ASP.NET Core.
  • Un riferimento a una versione supportata del pacchetto NuGet Application Insights.
  • Una stringa di connessione valida di Application Insights. Questa stringa è necessaria per inviare dati di telemetria ad Application Insights. Se è necessario creare una nuova risorsa di Application Insights per ottenere una stringa di connessione, vedere Creare una risorsa di Application Insights.

Abilitare i dati di telemetria lato server di Application Insights (Visual Studio)

Per Visual Studio per Mac, usare le linee guida manuali. Solo la versione di Windows di Visual Studio supporta questa procedura.

  1. Aprire il progetto in Visual Studio.

  2. Vai a Progetto>Aggiungi Application Insights Telemetry.

  3. Selezionare Azure Application Insights>Avanti.

  4. Scegliere la sottoscrizione e l'istanza di Application Insights. In alternativa, è possibile creare una nuova istanza con Crea nuovo. Selezionare Avanti.

  5. Aggiungere o confermare la stringa di connessione di Application Insights. Deve essere prepopolata in base alla selezione nel passaggio precedente. Selezionare Fine.

  6. Dopo aver aggiunto Application Insights al progetto, verificare di usare la versione stabile più recente dell'SDK. Passare a Progetto>Gestisci pacchetti NuGet>Microsoft.ApplicationInsights.AspNetCore. Se necessario, selezionare Aggiorna.

    Screenshot che mostra dove selezionare il pacchetto di Application Insights per l'aggiornamento.

Abilitare i dati di telemetria lato server di Application Insights (senza usare Visual Studio)

  1. Installare il pacchetto NuGet Application Insights SDK per ASP.NET Core.

    È consigliabile usare sempre la versione stabile più recente. Le note sulla versione complete per l'SDK sono disponibili nel repository GitHub open source.

    L'esempio di codice seguente illustra le modifiche da aggiungere al file .csproj del progetto.

    <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" />
    </ItemGroup>
    
  2. Aggiungere AddApplicationInsightsTelemetry() alla classe program.cs .

    Aggiungere builder.Services.AddApplicationInsightsTelemetry(); dopo il metodo , come nell'esempio WebApplication.CreateBuilder() seguente:

    // 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. Aggiungi la stringa di connessione, che può essere fatto in tre modi:

    • (Scelta consigliata) Impostare la stringa di connessione nella configurazione.

      Impostare il stringa di connessione in appsettings.json e assicurarsi che il file di configurazione venga copiato nella cartella radice dell'applicazione durante la pubblicazione.

      {
          "Logging": {
              "LogLevel": {
                  "Default": "Information",
                  "Microsoft.AspNetCore": "Warning"
              }
          },
          "AllowedHosts": "*",
          "ApplicationInsights": {
              "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
          }
      }
      
    • Impostare la stringa di connessione nella APPLICATIONINSIGHTS_CONNECTION_STRING variabile di ambiente o ApplicationInsights:ConnectionString nel file di configurazione JSON.

      Ad esempio:

      • SET ApplicationInsights:ConnectionString = <Copy connection string from Application Insights Resource Overview>
      • SET APPLICATIONINSIGHTS_CONNECTION_STRING = <Copy connection string from Application Insights Resource Overview>
      • In genere, la variabile APPLICATIONINSIGHTS_CONNECTION_STRING viene usata in App Web. Può essere usata anche in tutte le posizioni in cui è supportato questo SDK.

      Nota

      Una stringa di connessione specificata nel codice prevale sulla variabile di ambiente APPLICATIONINSIGHTS_CONNECTION_STRING, che prevale su altre opzioni.

    • Impostare la stringa di connessione nel codice.

      Specificare una stringa di connessione come parte dell'argomento ApplicationInsightsServiceOptions a AddApplicationInsightsTelemetry nella classe program.cs.

Segreti utente e altri provider di configurazione

Se si vuole archiviare la stringa di connessione in segreti utente di ASP.NET Core o recuperarla da un altro provider di configurazione, è possibile usare l'overload con un parametro Microsoft.Extensions.Configuration.IConfiguration. Un parametro di esempio è services.AddApplicationInsightsTelemetry(Configuration);.

Nella versione Microsoft.ApplicationInsights.AspNetCore di e versioni successive, chiamando services.AddApplicationInsightsTelemetry() la stringa di connessione viene letta automaticamente da Microsoft.Extensions.Configuration.IConfiguration dell'applicazione. Non è necessario specificare in modo esplicito IConfiguration.

Se IConfiguration la configurazione è stata caricata da più provider, services.AddApplicationInsightsTelemetry assegna la priorità alla configurazione da appsettings.json, indipendentemente dall'ordine in cui vengono aggiunti i provider. Utilizzare il services.AddApplicationInsightsTelemetry(IConfiguration) metodo per leggere la configurazione da IConfiguration senza questo trattamento preferenziale per appsettings.json.

Eseguire l'applicazione

Eseguire l'applicazione ed effettuare richieste. I dati di telemetria dovrebbero ora fluire in Application Insights. Application Insights SDK raccoglie automaticamente le richieste Web in ingresso all'applicazione, insieme ai dati di telemetria seguenti.

Metriche in tempo reale

È possibile usare le metriche attive per verificare rapidamente se il monitoraggio delle applicazioni con Application Insights è configurato correttamente. La visualizzazione dei dati di telemetria nel portale di Azure può richiedere alcuni minuti, ma il riquadro delle metriche attive mostra l'utilizzo della CPU del processo in esecuzione quasi in tempo reale. Può anche visualizzare altri dati di telemetria, ad esempio richieste, dipendenze e tracce.

Abilitare le metriche attive usando il codice per qualsiasi applicazione .NET

Nota

Le metriche attive sono abilitate per impostazione predefinita quando si esegue l'onboarding seguendo le istruzioni consigliate per le applicazioni .NET.

Per configurare manualmente le metriche in tempo reale:

  1. Installare il pacchetto NuGet Microsoft.ApplicationInsights.PerfCounterCollector.

  2. Il codice dell'app console di esempio seguente mostra la configurazione delle metriche attive:

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();
}

L'esempio precedente riguarda un'app console, ma lo stesso codice può essere usato in qualsiasi applicazione .NET. Se sono abilitati altri moduli di telemetria per la raccolta automatica dei dati di telemetria, è importante assicurarsi che la stessa configurazione usata per l'inizializzazione di tali moduli venga usata per il modulo delle metriche attive.

Log ILogger

La configurazione predefinita raccoglie log ILoggerWarning e log di maggiore gravità. Per altre informazioni, vedere Come si personalizza la raccolta dei log ILogger?.

Dipendenze

La raccolta delle dipendenze è abilitata per impostazione predefinita. L'articolo Rilevamento della dipendenza in Application Insights illustra le dipendenze raccolte automaticamente e contiene anche le istruzioni per eseguire il rilevamento manuale.

Contatori delle prestazioni

Il supporto dei contatori delle prestazioni nelle applicazioni ASP.NET Core è limitato:

  • Le versioni dell'SDK 2.4.1 e successive raccolgono i contatori delle prestazioni se l'applicazione è in esecuzione in App Web (Windows).
  • Le versioni di SDK 2.7.1 e successive raccolgono contatori delle prestazioni se l'applicazione è in esecuzione in Windows e ha come destinazione netstandard2.0 o versioni successive.
  • Per le applicazioni destinate a .NET Framework, tutte le versioni dell'SDK supportano i contatori delle prestazioni.
  • Le versioni dell'SDK 2.8.0 e successive supportano il contatore di CPU/memoria in Linux. Linux non supporta nessun altro contatore. Per ottenere i contatori di sistema in Linux e in altri ambienti non Windows, usare EventCounter.

EventCounter

Per impostazione predefinita, EventCounterCollectionModule è abilitata. Per informazioni su come configurare l'elenco dei contatori da raccogliere, vedere Introduzione a EventCounter.

Arricchire i dati tramite HTTP

HttpContext.Features.Get<RequestTelemetry>().Properties["myProp"] = someData

Abilitare la telemetria lato client per le applicazioni Web

I passaggi precedenti sono sufficienti per iniziare a raccogliere i dati di telemetria lato server. Se l'applicazione include componenti sul lato client, seguire i passaggi successivi per iniziare a raccogliere dati di telemetria sull'utilizzo usando l'inserimento di script del caricatore SDK JavaScript (Web) in base alla configurazione.

  1. In _ViewImports.cshtml, aggiungere iniezione:

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    
  2. In _Layout.cshtml inserire HtmlHelper alla fine della <head> sezione, ma prima di qualsiasi altro script. Per segnalare dati di telemetria JavaScript personalizzati dalla pagina, inserirli dopo questo frammento di codice:

        @Html.Raw(JavaScriptSnippet.FullScript)
    </head>
    

In alternativa all'uso di FullScript, è disponibile ScriptBody a partire da Application Insights SDK per ASP.NET Core versione 2.14. Usare ScriptBody se è necessario controllare il tag <script> per impostare criteri di sicurezza del contenuto:

<script> // apply custom changes to this script tag.
    @Html.Raw(JavaScriptSnippet.ScriptBody)
</script>

I nomi di file con estensione cshtml a cui si fa riferimento in precedenza provengono da un modello di applicazione MVC predefinito. In definitiva, se si vuole abilitare correttamente il monitoraggio lato client per l'applicazione, lo script del caricatore dell'SDK JavaScript (Web) deve essere visualizzato nella <head> sezione di ogni pagina dell'applicazione da monitorare. Aggiungere lo script del caricatore SDK (Web) a _Layout.cshtml in un modello di applicazione per abilitare il monitoraggio lato client.

Se il progetto non include _Layout.cshtml, è comunque possibile aggiungere il monitoraggio lato client aggiungendo lo script del caricatore sdk JavaScript (Web) a un file equivalente che controlla tutte <head> le pagine all'interno dell'app. In alternativa, è possibile aggiungere lo script del caricatore SDK JavaScript (Web) a più pagine, ma non è consigliabile.

Nota

L'inserimento di JavaScript offre un'esperienza di configurazione predefinita. Se sono necessari interventi di configurazione oltre l'impostazione della stringa di connessione, è necessario rimuovere l'inserimento automatico come descritto e aggiungere manualmente JavaScript SDK.

Configurare Application Insights SDK

È possibile personalizzare Application Insights SDK per ASP.NET Core per modificare la configurazione predefinita. Gli utenti di Application Insights ASP.NET SDK potrebbero avere familiarità con la modifica della configurazione usando ApplicationInsights.config o modificando TelemetryConfiguration.Active. Per ASP.NET Core, apportare quasi tutte le modifiche di configurazione nel ConfigureServices() metodo della classe Startup.cs , a meno che non venga indicato diversamente. Nelle sezioni seguenti sono disponibili altre informazioni.

Nota

Nelle applicazioni ASP.NET Core la modifica della configurazione modificando TelemetryConfiguration.Active non è supportata.

Usare ApplicationInsightsServiceOptions

È possibile modificare alcune impostazioni comuni passando ApplicationInsightsServiceOptions a AddApplicationInsightsTelemetry, come in questo esempio:

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();

Questa tabella include l'elenco completo delle impostazioni di ApplicationInsightsServiceOptions:

Impostazione Descrizione Predefinito
EnablePerformanceCounterCollectionModule Abilitare/disabilitare PerformanceCounterCollectionModule. Vero
Modulo di abilitazione della telemetria di tracciamento delle richieste Abilitare/disabilitare RequestTrackingTelemetryModule. Vero
EnableEventCounterCollectionModule Abilitare/disabilitare EventCounterCollectionModule. Vero
EnableDependencyTrackingTelemetryModule Abilitare/disabilitare DependencyTrackingTelemetryModule. Vero
EnableAppServicesHeartbeatTelemetryModule Abilitare/disabilitare AppServicesHeartbeatTelemetryModule. Vero
EnableAzureInstanceMetadataTelemetryModule Abilitare/disabilitare AzureInstanceMetadataTelemetryModule. Vero
Abilita il flusso di metriche QuickPulse Abilitare/disabilitare la funzionalità LiveMetrics. Vero
EnableAdaptiveSampling Abilita/disabilita il campionamento adattivo. Vero
AbilitaBattitoCuore Abilitare/disabilitare la funzionalità heartbeat. Invia periodicamente (impostazione predefinita 15 minuti) una metrica personalizzata denominata HeartbeatState con informazioni sul runtime, ad esempio la versione di .NET e le informazioni sull'ambiente di Azure, se applicabile. Vero
AddAutoCollectedMetricExtractor Abilitare/disabilitare AutoCollectedMetrics extractor. Questo processore di telemetria invia metriche preaggregate relative a richieste/dipendenze prima che venga eseguito il campionamento. Vero
RequestCollectionOptions.TrackExceptions Abilitare/disabilitare la segnalazione di rilevamento delle eccezioni non gestite dal modulo di raccolta delle richieste. False in netstandard2.0 (perché le eccezioni vengono rilevate con ApplicationInsightsLoggerProvider). True in caso contrario.
EnableDiagnosticsTelemetryModule Abilitare/disabilitare DiagnosticsTelemetryModule. Con la disabilitazione vengono ignorate le impostazioni seguenti: EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModule e EnableAppServicesHeartbeatTelemetryModule. Vero

Per l'elenco più recente, vedere le impostazioni configurabili in ApplicationInsightsServiceOptions.

Raccomandazione di configurazione per Microsoft.ApplicationInsights.AspNetCore SDK 2.15.0 e versioni successive

In Microsoft.ApplicationInsights.AspNetCore SDK versione 2.15.0 e versioni successive configurare ogni impostazione disponibile in ApplicationInsightsServiceOptions, inclusa ConnectionString. Utilizzare l'istanza dell'applicazione IConfiguration. Le impostazioni devono trovarsi nella sezione ApplicationInsights, come illustrato nell'esempio seguente. La sezione seguente di appsettings.json configura la stringa di connessione e disabilita il campionamento adattivo e la raccolta dei contatori delle prestazioni.

{
    "ApplicationInsights": {
    "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
    "EnableAdaptiveSampling": false,
    "EnablePerformanceCounterCollectionModule": false
    }
}

Se viene utilizzato builder.Services.AddApplicationInsightsTelemetry(aiOptions) per ASP.NET Core 6.0 o services.AddApplicationInsightsTelemetry(aiOptions) per ASP.NET Core 3.1 e versioni precedenti, viene eseguito l'override delle impostazioni da Microsoft.Extensions.Configuration.IConfiguration.

Campionamento

Application Insights SDK per ASP.NET Core supporta sia il campionamento a frequenza fissa che il campionamento adattivo. Per impostazione predefinita, il campionamento adattivo è abilitato.

Per altre informazioni, vedere Configurare il campionamento adattivo per le applicazioni ASP.NET Core.

Aggiungere TelemetryInitializer

Per arricchire i dati di telemetria con altre informazioni, usare gli inizializzatori di telemetria.

Aggiungere qualsiasi nuovo TelemetryInitializer al contenitore DependencyInjection, come illustrato nel codice seguente. L'SDK preleva automaticamente qualsiasi TelemetryInitializer aggiunto al contenitore DependencyInjection.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();

var app = builder.Build();

Nota

builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>(); funziona per inizializzatori semplici. Per gli altri, è necessario builder.Services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" });.

Rimuovere TelemetryInitializers

Per impostazione predefinita, gli inizializzatori di telemetria sono presenti. Per rimuovere tutti gli inizializzatori di telemetria o alcuni specifici, usare il codice di esempio seguente dopo la chiamata di 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();

Aggiungere processori di telemetria

È possibile aggiungere processori di telemetria personalizzati a TelemetryConfiguration usando il metodo di estensione AddApplicationInsightsTelemetryProcessor in IServiceCollection. I processori di telemetria vengono usati in scenari di filtro avanzati. Usare l'esempio seguente:

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();

Configurare o rimuovere i moduli di telemetria predefiniti

Application Insights raccoglie automaticamente i dati di telemetria relativi a carichi di lavoro specifici senza richiedere il rilevamento manuale da parte dell'utente.

Per impostazione predefinita, sono abilitati i seguenti moduli di raccolta automatica. Questi moduli sono responsabili della raccolta automatica dei dati di telemetria. È possibile disabilitarli o configurarli per modificarne il comportamento predefinito.

  • RequestTrackingTelemetryModule: raccoglie RequestTelemetry dalle richieste Web in ingresso.
  • DependencyTrackingTelemetryModule: raccoglie DependencyTelemetry da chiamate HTTP e chiamate SQL in uscita.
  • PerformanceCollectorModule: raccoglie i contatori delle prestazioni di Windows.
  • QuickPulseTelemetryModule: raccoglie i dati di telemetria da visualizzare nel riquadro delle metriche attive.
  • AppServicesHeartbeatTelemetryModule: raccoglie i battiti cardiaci (che vengono inviati come metriche personalizzate) relativi all'ambiente di App Service in cui è ospitata l'applicazione.
  • AzureInstanceMetadataTelemetryModule: Raccoglie i battiti cardiaci (che vengono inviati come metriche personalizzate) sull'ambiente di VM di Azure in cui è ospitata l'applicazione.
  • EventCounterCollectionModule: raccoglie EventCounter. Questo modulo è una nuova funzionalità ed è disponibile nell'SDK versione 2.8.0 e successive.

Per configurare qualsiasi TelemetryModule predefinito, usare il metodo di estensione ConfigureTelemetryModule<T> in IServiceCollection, come illustrato nell'esempio seguente:

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();

Nelle versioni 2.12.2 e successive ApplicationInsightsServiceOptions include un'opzione semplice per disabilitare qualsiasi modulo predefinito.

Configurare un canale di telemetria

Il canale di telemetria predefinito è ServerTelemetryChannel. Nell'esempio seguente viene illustrato come eseguirne l'override.

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

Per svuotare il buffer, vedere Svuotamento dei dati. Ad esempio, potrebbe essere necessario scaricare il buffer se si usa l'SDK in un'applicazione che si arresta.

Disabilitare la telemetria in modo dinamico

Per disabilitare la telemetria in modo condizionale e dinamico, è possibile risolvere l'istanza di TelemetryConfiguration con un contenitore di inserimento delle dipendenze ASP.NET Core in qualsiasi punto del codice e impostarvi il flag DisableTelemetry.

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();

L'esempio di codice precedente impedisce l'invio di dati di telemetria ad Application Insights. Non impedisce ai moduli di raccolta automatica di raccogliere dati di telemetria. Per rimuovere un particolare modulo di raccolta automatica, vedere Rimuovere il modulo di telemetria.

Risoluzione dei problemi

Vedere l'articolo sulla risoluzione dei problemi dedicato.

Testare la connettività tra l'host dell'applicazione e il servizio di inserimento

Gli SDK e gli agenti di Application Insights inviano dati di telemetria per l'inserimento come chiamate REST agli endpoint di inserimento. È possibile testare la connettività dal server Web o dal computer host dell'applicazione agli endpoint del servizio di inserimento usando client REST non elaborati da comandi PowerShell o curl. Consulta Risolvere i problemi di dati di telemetria mancanti nelle applicazioni in Azure Monitor Application Insights.

SDK open source

Leggere e contribuire al codice.

Per gli aggiornamenti e le correzioni di bug più recenti, vedere le note sulla versione.

Note sulla versione

Per le versioni 2.12 e successive: SDK .NET (inclusi ASP.NET, ASP.NET Core e adattatori di registrazione)

Gli aggiornamenti del servizio riepilogano anche i principali miglioramenti di Application Insights.

Passaggi successivi