Application Insights per applicazioni di base ASP.NET

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

Nota

La documentazione seguente si basa sull'API classica di Application Insights. Il piano a lungo termine per Application Insights consiste nel raccogliere dati usando OpenTelemetry. Per altre informazioni, vedere Abilitare OpenTelemetry di Monitoraggio di Azure per le applicazioni .NET, Node.js, Python e Java.

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

  • Richieste
  • Dipendenze
  • Eccezioni
  • Contatori delle prestazioni
  • Heartbeat
  • Registri

Viene usato un esempio di applicazione MVC. Se si usa il servizio di lavoro, usare le istruzioni in Application Insights per le applicazioni del servizio di lavoro.

È 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 di chiavi di strumentazione continuerà a funzionare, ma non forniamo più aggiornamenti o supporto per la funzionalità. Passare alle stringa 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 .NET Core sia supportato e illustra gli scenari seguenti:

  • Sistema operativo: Windows, Linux o Mac
  • Metodo di hosting: in fase di elaborazione o fuori processo
  • Metodo di distribuzione: dipendente dal framework o indipendente
  • Server Web: Internet Information Server (IIS) o Kestrel
  • Piattaforma di hosting: funzionalità di App Web del servizio app Azure, azure Macchine virtuali, Docker e servizio Azure Kubernetes (servizio Azure Kubernetes)
  • Versione .NET: tutte le versioni di .NET supportate ufficialmente che non sono in anteprima
  • IDE: Visual Studio, Visual Studio Code o riga di comando

Prerequisiti

È necessario:

  • Applicazione core ASP.NET funzionante. Se è necessario creare un'applicazione ASP.NET Core, seguire questa esercitazione ASP.NET Core.
  • Riferimento a una versione supportata del pacchetto NuGet di Application Insights .
  • Un stringa di connessione di Application Insights valido. Questa stringa è necessaria per inviare dati di telemetria ad Application Insights. Se è necessario creare una nuova risorsa di Application Insights per ottenere un 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 indicazioni manuali. Solo la versione di Windows di Visual Studio supporta questa procedura.

  1. Aprire il progetto in Visual Studio.

  2. Passare a Project>Add Application Insights Telemetry (Aggiungi dati di telemetria di Application Insights).

  3. Selezionare app Azure lication 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 il stringa di connessione di Application Insights. Deve essere prepopolato 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 Project>Manage NuGet Packages Microsoft.ApplicationInsights.AspNetCore (Gestisci pacchetti>NuGet Microsoft.ApplicationInsights.AspNetCore). Se necessario, selezionare Aggiorna.

    Screenshot that shows where to select the Application Insights package for update.

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

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

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

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

    <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" />
    </ItemGroup>
    
  2. Aggiungere AddApplicationInsightsTelemetry() alla startup.cs classe o program.cs . La scelta dipende dalla versione di .NET Core.

    Aggiungere builder.Services.AddApplicationInsightsTelemetry(); dopo il WebApplication.CreateBuilder() metodo nella Program classe , come nell'esempio 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. Configurare la stringa di connessione.

    Sebbene sia possibile fornire un stringa di connessione come parte dell'argomento ApplicationInsightsServiceOptions a AddApplicationInsightsTelemetry, è consigliabile specificare il stringa di connessione nella configurazione. Nell'esempio di codice seguente viene illustrato come specificare un stringa di connessione in appsettings.json. Assicurarsi di appsettings.json essere copiati nella cartella radice dell'applicazione durante la pubblicazione.

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

    In alternativa, specificare il 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, APPLICATIONINSIGHTS_CONNECTION_STRING viene usato in App Web. Può essere usato anche in tutte le posizioni in cui è supportato questo SDK.

    Nota

    Un stringa di connessione specificato nel codice prevale sulla variabile APPLICATIONINSIGHTS_CONNECTION_STRINGdi ambiente , che prevale su altre opzioni.

Segreti utente e altri provider di configurazione

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

Nella Microsoft.ApplicationInsights.AspNetCore versione 2.15.0 e successive la chiamata services.AddApplicationInsightsTelemetry() legge automaticamente il stringa di connessione dall'applicazioneMicrosoft.Extensions.Configuration.IConfiguration. Non è necessario specificare IConfigurationin modo esplicito .

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 metodo per leggere la services.AddApplicationInsightsTelemetry(IConfiguration) 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 passare ad Application Insights. Application Insights SDK raccoglie automaticamente le richieste Web in ingresso all'applicazione, insieme ai dati di telemetria seguenti.

Metriche attive

Le metriche attive possono essere usate per verificare rapidamente se il monitoraggio di Application Insights è configurato correttamente. La visualizzazione dei dati di telemetria nel portale e nell'analisi potrebbe richiedere alcuni minuti, ma le metriche attive mostrano 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.

Log ILogger

La configurazione predefinita raccoglie ILoggerWarning i log e i log più gravi. Per altre informazioni, vedere Ricerca per categorie personalizzare la raccolta dei log ILogger?

Dipendenze

La raccolta di dipendenze è abilitata per impostazione predefinita. Il rilevamento delle dipendenze in Application Insights illustra le dipendenze raccolte automaticamente e contiene anche i passaggi per eseguire il rilevamento manuale.

Contatori delle prestazioni

Il supporto per i contatori delle prestazioni in ASP.NET Core è limitato:

  • Le versioni 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 sdk 2.8.0 e successive supportano il contatore 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 EventCounters.

EventCounter

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

Arricchire i dati tramite HTTP

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

Abilitare i dati di 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 i dati di telemetria sull'utilizzo usando JavaScript (Web) SDK Loader Script injection by configuration ( Inserimento di script sdk JavaScript (Web).

  1. In _ViewImports.cshtmlaggiungere injection:

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

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

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

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

I .cshtml nomi di file 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 JavaScript (Web) SDK Sdk deve essere visualizzato nella <head> sezione di ogni pagina dell'applicazione che si vuole monitorare. Aggiungere lo script del caricatore JavaScript (Web) SDK 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 JavaScript (Web) SDK JavaScript a un file equivalente che controlla tutte le <head> pagine all'interno dell'app. In alternativa, è possibile aggiungere lo script del caricatore JavaScript (Web) SDK a più pagine, ma non è consigliabile.

Nota

L'inserimento javaScript offre un'esperienza di configurazione predefinita. Se è necessaria una configurazione oltre all'impostazione del 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 Startup.cs classe, a meno che non venga indicato diversamente. Le sezioni seguenti offrono altre informazioni.

Nota

Nelle applicazioni ASP.NET Core la modifica della configurazione 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 QuickPulse (Live Metrics stream).
aiOptions.EnableQuickPulseMetricStream = false;

builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();

Questa tabella include l'elenco completo delle ApplicationInsightsServiceOptions impostazioni:

Impostazione Descrizione Default
EnablePerformanceCounterCollectionModule Abilitare/disabilitare PerformanceCounterCollectionModule. Vero
EnableRequestTrackingTelemetryModule Abilitare/disabilitare RequestTrackingTelemetryModule. Vero
EnableEventCounterCollectionModule Abilitare/disabilitare EventCounterCollectionModule. Vero
EnableDependencyTrackingTelemetryModule Abilitare/disabilitare DependencyTrackingTelemetryModule. Vero
EnableAppServicesHeartbeatTelemetryModule Abilitare/disabilitare AppServicesHeartbeatTelemetryModule. Vero
EnableAzureInstanceMetadataTelemetryModule Abilitare/disabilitare AzureInstanceMetadataTelemetryModule. Vero
EnableQuickPulseMetricStream Abilitare/disabilitare la funzionalità LiveMetrics. Vero
EnableAdaptiveSampling Abilitare/disabilitare il campionamento adattivo. Vero
EnableHeartbeat Abilitare/disabilitare la funzionalità heartbeat. Periodicamente (impostazione predefinita di 15 minuti) invia una metrica personalizzata denominata HeartbeatState con informazioni sul runtime, ad esempio la versione .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. La disabilitazione determina l'ignorare le impostazioni seguenti: EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModulee 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 successive configurare ogni impostazione disponibile in ApplicationInsightsServiceOptions, incluso ConnectionString. Usare l'istanza dell'applicazione IConfiguration . Le impostazioni devono trovarsi nella sezione ApplicationInsights, come illustrato nell'esempio seguente. La sezione seguente di appsettings.json configura il stringa di connessione e disabilita la raccolta di contatori adattivi e prestazioni.

{
    "ApplicationInsights": {
    "ConnectionString": "Copy connection string from Application Insights Resource Overview",
    "EnableAdaptiveSampling": false,
    "EnablePerformanceCounterCollectionModule": false
    }
}

Se builder.Services.AddApplicationInsightsTelemetry(aiOptions) per ASP.NET Core 6.0 o services.AddApplicationInsightsTelemetry(aiOptions) per ASP.NET Core 3.1 e versioni precedenti viene usato, esegue 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 ASP.NET applicazioni Core.

Aggiungere TelemetryInitializers

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

Aggiungere qualsiasi nuovo TelemetryInitializer al DependencyInjection contenitore, come illustrato nel codice seguente. L'SDK preleva automaticamente tutti gli elementi TelemetryInitializer aggiunti al DependencyInjection contenitore.

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, builder.Services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" }); è obbligatorio.

Rimuovere TelemetryInitializers

Per impostazione predefinita, sono presenti inizializzatori di telemetria. Per rimuovere tutti gli inizializzatori di telemetria o specifici, usare il codice di esempio seguente dopo aver chiamato 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 AddApplicationInsightsTelemetryProcessor di estensione 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 dalle chiamate HTTP in uscita e dalle chiamate SQL.
  • PerformanceCollectorModule: raccoglie i contatori delle prestazioni di Windows.
  • QuickPulseTelemetryModule: raccoglie i dati di telemetria da visualizzare nel portale delle metriche attive.
  • AppServicesHeartbeatTelemetryModule: raccoglie gli heartbeat (che vengono inviati come metriche personalizzate), sull'ambiente servizio app in cui è ospitata l'applicazione.
  • AzureInstanceMetadataTelemetryModule: raccoglie gli heartbeat (che vengono inviati come metriche personalizzate), sull'ambiente di macchine virtuali di Azure in cui è ospitata l'applicazione.
  • EventCounterCollectionModule: raccoglie EventCounters. Questo modulo è una nuova funzionalità ed è disponibile in SDK versione 2.8.0 e successive.

Per configurare qualsiasi valore predefinito TelemetryModule, usare il metodo ConfigureTelemetryModule<T> di estensione 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 disponibile un'opzione semplice per disabilitare uno dei moduli predefiniti.

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 scaricare il buffer, vedere Scaricamento dei dati. Ad esempio, potrebbe essere necessario scaricare il buffer se si usa l'SDK in un'applicazione che si arresta.

Disabilitare i dati di telemetria in modo dinamico

Se si desidera disabilitare i dati di telemetria in modo condizionale e dinamico, è possibile risolvere l'istanza TelemetryConfiguration con un contenitore di inserimento delle dipendenze ASP.NET Core ovunque nel codice e impostarvi il DisableTelemetry flag.

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.

Domande frequenti

Questa sezione fornisce le risposte alle domande comuni.

Application Insights supporta ASP.NET Core 3.1?

ASP.NET Core 3.1 non è più supportato da Microsoft.

Application Insights SDK per ASP.NET Core versione 2.8.0 e Visual Studio 2019 o successiva possono essere usati con ASP.NET applicazioni Core 3.1.

Come è possibile tenere traccia dei dati di telemetria non raccolti automaticamente?

Ottenere un'istanza di TelemetryClient usando l'inserimento del costruttore e chiamare il metodo richiesto TrackXXX() . Non è consigliabile creare nuove TelemetryClient istanze o TelemetryConfiguration in un'applicazione ASP.NET Core. Un'istanza singleton di TelemetryClient è già registrata nel DependencyInjection contenitore, che condivide TelemetryConfiguration con il resto dei dati di telemetria. Creare una nuova TelemetryClient istanza solo se è necessaria una configurazione separata dal resto dei dati di telemetria.

Nell'esempio seguente viene illustrato come tenere traccia di più dati di telemetria da un controller.

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

Per altre informazioni sulla creazione di report di dati personalizzati in Application Insights, vedere Informazioni di riferimento sulle API per le metriche personalizzate di Application Insights. Un approccio simile può essere usato per inviare metriche personalizzate ad Application Insights usando l'API GetMetric.

Ricerca per categorie acquisire il corpo della richiesta e della risposta nei dati di telemetria?

ASP.NET Core include il supporto predefinito per la registrazione delle informazioni di richiesta/risposta HTTP (incluso il corpo) tramite ILogger. È consigliabile sfruttarlo. Ciò può potenzialmente esporre informazioni personali (PII) nei dati di telemetria e può causare un aumento significativo dei costi (costi delle prestazioni e fatturazione di Application Insights), quindi valutare attentamente i rischi prima di usarlo.

Ricerca per categorie personalizzare la raccolta dei log ILogger?

L'impostazione predefinita per Application Insights consiste nell'acquisire solo avvisi e log più gravi.

Acquisire informazioni e log meno gravi modificando la configurazione di registrazione per il provider di Application Insights come indicato di seguito.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    },
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  },
  "ApplicationInsights": {
    "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
  }
}

È importante notare che l'esempio seguente non causa l'acquisizione Information dei log da parte del provider di Application Insights. Non lo acquisisce perché l'SDK aggiunge un filtro di registrazione predefinito che indica ApplicationInsights di acquisire solo Warning i log e i log più gravi. Application Insights richiede un override esplicito.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  }
}

Per altre informazioni, vedere Configurazione di ILogger.

Alcuni modelli di Visual Studio usavano il metodo di estensione UseApplicationInsights() in IWebHostBuilder per abilitare Application Insights. Questo utilizzo è ancora valido?

Il metodo UseApplicationInsights() di estensione è ancora supportato, ma è contrassegnato come obsoleto in Application Insights SDK versione 2.8.0 e successive. Viene rimosso nella versione principale successiva dell'SDK. Per abilitare la telemetria di Application Insights, usare AddApplicationInsightsTelemetry() perché fornisce overload per controllare alcune configurazioni. Inoltre, in ASP.NET app Core 3.X, services.AddApplicationInsightsTelemetry() è l'unico modo per abilitare Application Insights.

Sto distribuendo l'applicazione ASP.NET Core in App Web. È comunque necessario abilitare l'estensione Application Insights da App Web?

Se l'SDK è installato in fase di compilazione, come illustrato in questo articolo, non è necessario abilitare l'estensione Application Insights dal portale di servizio app. Se l'estensione è installata, viene nuovamente disattivata quando rileva che l'SDK è già stato aggiunto. Se si abilita Application Insights dall'estensione, non è necessario installare e aggiornare l'SDK. Tuttavia, se si abilita Application Insights seguendo le istruzioni riportate in questo articolo, si ha maggiore flessibilità perché:

  • I dati di telemetria di Application Insights continuano a funzionare in:
    • Tutti i sistemi operativi, inclusi Windows, Linux e Mac.
    • Tutte le modalità di pubblicazione, incluse quelle autonome o dipendenti dal framework.
    • Tutti i framework di destinazione, incluso .NET Framework completo.
    • Tutte le opzioni di hosting, tra cui App Web, macchine virtuali, Linux, contenitori, servizio Azure Kubernetes e hosting non Azure.
    • Tutte le versioni di .NET Core, incluse le versioni di anteprima.
  • È possibile visualizzare i dati di telemetria in locale durante il debug da Visual Studio.
  • È possibile tenere traccia di più dati di telemetria personalizzati usando l'API TrackXXX() .
  • Si ha il controllo completo sulla configurazione.

È possibile abilitare il monitoraggio di Application Insights usando strumenti come l'agente di Application Insights di Monitoraggio di Azure (in precedenza Status Monitor v2)?

Sì. In Application Insights Agent 2.0.0-beta1 e versioni successive sono supportate ASP.NET applicazioni Core ospitate in IIS.

Tutte le funzionalità sono supportate se si esegue l'applicazione in Linux?

Sì. Il supporto delle funzionalità per l'SDK è lo stesso in tutte le piattaforme, con le eccezioni seguenti:

Questo SDK è supportato per i servizi di lavoro?

No. Usare Application Insights per le applicazioni del servizio di lavoro (applicazioni non HTTP) per i servizi di lavoro.

Come è possibile disinstallare l'SDK?

Per rimuovere Application Insights, è necessario rimuovere i pacchetti NuGet e i riferimenti dall'API nell'applicazione. È possibile disinstallare i pacchetti NuGet usando il Gestione pacchetti NuGet in Visual Studio.

Nota

Queste istruzioni sono per la disinstallazione di ASP.NET Core SDK. Se è necessario disinstallare ASP.NET SDK, vedere Come disinstallare ASP.NET SDK?

  1. Disinstallare il pacchetto Microsoft.ApplicationInsights.AspNetCore usando il Gestione pacchetti NuGet.
  2. Per rimuovere completamente Application Insights, controllare ed eliminare manualmente il codice o i file aggiunti insieme alle chiamate API aggiunte nel progetto. Per altre informazioni, vedere What is created when you add the Application Insights SDK?.

Cosa viene creato quando si aggiunge Application Insights SDK?

Quando si aggiunge Application Insights al progetto, crea file e aggiunge codice ad alcuni dei file. La disinstallazione esclusiva dei pacchetti NuGet non rimuoverà sempre i file e il codice. Per rimuovere completamente Application Insights, è necessario controllare ed eliminare manualmente il codice o i file aggiunti insieme alle chiamate API aggiunte nel progetto.

Quando si aggiunge Application Insights Telemetry a un progetto modello di Visual Studio ASP.NET Core, aggiunge il codice seguente:

  • [Nome del progetto].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
            }
    

Risoluzione dei problemi

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 essere inseriti 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 PowerShell o comandi curl. Vedere Risolvere i problemi di telemetria delle applicazioni mancanti in Application Insights di Monitoraggio di Azure.

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)

Il servizio Aggiornamenti riepilogare anche i principali miglioramenti di Application Insights.

Passaggi successivi