Application Insights per le applicazioni ASP.NET CoreApplication Insights for ASP.NET Core applications

Questo articolo descrive come abilitare Application Insights per un'applicazione ASP.NET Core .This article describes how to enable Application Insights for an ASP.NET Core application. Al termine delle istruzioni riportate in questo articolo, Application Insights raccoglierà richieste, dipendenze, eccezioni, contatori delle prestazioni, heartbeat e log dall'applicazione ASP.NET Core.When you complete the instructions in this article, Application Insights will collect requests, dependencies, exceptions, performance counters, heartbeats, and logs from your ASP.NET Core application.

L'esempio che verrà usato è un' applicazione MVC destinata a netcoreapp2.2.The example we'll use here is an MVC application that targets netcoreapp2.2. È possibile applicare queste istruzioni a tutte ASP.NET Core applicazioni.You can apply these instructions to all ASP.NET Core applications.

Scenari supportatiSupported scenarios

Il Application Insights SDK per ASP.NET Core è in grado di monitorare le applicazioni, indipendentemente da dove o come vengono eseguite.The Application Insights SDK for ASP.NET Core can monitor your applications no matter where or how they run. Se l'applicazione è in esecuzione e ha la connettività di rete ad Azure, è possibile raccogliere i dati di telemetria.If your application is running and has network connectivity to Azure, telemetry can be collected. Il monitoraggio Application Insights è supportato ovunque sia supportato .NET Core.Application Insights monitoring is supported everywhere .NET Core is supported. Supporto tecnico:Support covers:

  • Sistema operativo: Windows, Linux o Mac.Operating system: Windows, Linux, or Mac.
  • Metodo di hosting: in-process o out-of-process.Hosting method: In process or out of process.
  • Metodo di distribuzione: dipendente dal Framework o indipendente.Deployment method: Framework dependent or self-contained.
  • Server Web: IIS (Internet Information Server) o gheppio.Web server: IIS (Internet Information Server) or Kestrel.
  • Piattaforma di hosting: la funzionalità app Web di app Azure servizio, VM di Azure, Docker, Azure Kubernetes Service (AKS) e così via.Hosting platform: The Web Apps feature of Azure App Service, Azure VM, Docker, Azure Kubernetes Service (AKS), and so on.
  • Versione runtime di .NET Core: 1. XX, 2. XX o 3. XX.NET Core Runtime version: 1.XX, 2.XX, or 3.XX
  • IDE: Visual Studio, vs code o riga di comando.IDE: Visual Studio, VS Code, or command line.

Nota

Se si usa ASP.NET Core 3,0 insieme a Application Insights, usare la versione 2.8.0 o successiva.If you are using ASP.NET Core 3.0 along with Application Insights, please use the 2.8.0 version or higher. Questa è l'unica versione che supporta ASP.NET Core 3,0.This is the only version that supports ASP.NET Core 3.0.

prerequisitiPrerequisites

  • Applicazione ASP.NET Core funzionante.A functioning ASP.NET Core application. Se è necessario creare un'applicazione ASP.NET Core, seguire questa esercitazione ASP.NET Core.If you need to create an ASP.NET Core application, follow this ASP.NET Core tutorial.
  • Chiave di strumentazione Application Insights valida.A valid Application Insights instrumentation key. Questa chiave è necessaria per inviare i dati di telemetria a Application Insights.This key is required to send any telemetry to Application Insights. Se è necessario creare una nuova risorsa Application Insights per ottenere una chiave di strumentazione, vedere creare una risorsa di Application Insights.If you need to create a new Application Insights resource to get an instrumentation key, see Create an Application Insights resource.

Abilitare la telemetria lato server Application Insights (Visual Studio)Enable Application Insights server-side telemetry (Visual Studio)

  1. Aprire il progetto in Visual Studio.Open your project in Visual Studio.

    Suggerimento

    Se lo si desidera, è possibile configurare il controllo del codice sorgente per il progetto in modo che sia possibile tenere traccia di tutte le modifiche apportate Application Insights.If you want to, you can set up source control for your project so you can track all the changes that Application Insights makes. Per abilitare il controllo del codice sorgente, selezionare File > Aggiungi al controllo del codice sorgente.To enable source control, select File > Add to Source Control.

  2. Selezionare Progetto > Aggiungi Application Insights Telemetry.Select Project > Add Application Insights Telemetry.

  3. Selezionare Attività iniziali.Select Get Started. Il testo di questa selezione può variare a seconda della versione di Visual Studio.This selection's text might vary, depending on your version of Visual Studio. Alcune versioni precedenti usano invece un pulsante Start Free .Some earlier versions use a Start Free button instead.

  4. Selezionare la propria sottoscrizione.Select your subscription. Selezionare quindi Resource > Register.Then select Resource > Register.

  5. Dopo aver aggiunto Application Insights al progetto, verificare che si stia usando la versione stabile più recente dell'SDK.After adding Application Insights to your project, check to confirm that you're using the latest stable release of the SDK. Passare a Project > gestire i pacchetti NuGet > Microsoft. ApplicationInsights. AspNetCore.Go to Project > Manage NuGet Packages > Microsoft.ApplicationInsights.AspNetCore. Se necessario, scegliere Aggiorna.If you need to, choose Update.

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

  6. Se è stato seguito il suggerimento facoltativo e il progetto è stato aggiunto al controllo del codice sorgente, passare a View > Team Explorer > changes.If you followed the optional tip and added your project to source control, go to View > Team Explorer > Changes. Selezionare quindi ogni file per visualizzare una visualizzazione diff delle modifiche apportate da Application Insights telemetria.Then select each file to see a diff view of the changes made by Application Insights telemetry.

Abilitare la telemetria lato server di Application Insights (senza Visual Studio)Enable Application Insights server-side telemetry (no Visual Studio)

  1. Installare il pacchetto NuGet di Application Insights SDK per ASP.NET Core.Install the Application Insights SDK NuGet package for ASP.NET Core. È consigliabile usare sempre la versione stabile più recente.We recommend that you always use the latest stable version. Trovare le note sulla versione complete per l'SDK nel repository GitHub Open Source.Find full release notes for the SDK on the open-source GitHub repo.

    Nell'esempio di codice riportato di seguito vengono illustrate le modifiche da aggiungere al file di .csproj del progetto.The following code sample shows the changes to be added to your project's .csproj file.

        <ItemGroup>
          <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.8.0" />
        </ItemGroup>
    
  2. Aggiungere services.AddApplicationInsightsTelemetry(); al metodo ConfigureServices() nella classe Startup, come nell'esempio seguente:Add services.AddApplicationInsightsTelemetry(); to the ConfigureServices() method in your Startup class, as in this example:

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // The following line enables Application Insights telemetry collection.
            services.AddApplicationInsightsTelemetry();
    
            // This code adds other services for your application.
            services.AddMvc();
        }
    
  3. Configurare la chiave di strumentazione.Set up the instrumentation key.

    Sebbene sia possibile fornire la chiave di strumentazione come argomento per AddApplicationInsightsTelemetry, è consigliabile specificare la chiave di strumentazione nella configurazione.Although you can provide the instrumentation key as an argument to AddApplicationInsightsTelemetry, we recommend that you specify the instrumentation key in configuration. Nell'esempio di codice seguente viene illustrato come specificare una chiave di strumentazione in appsettings.json.The following code sample shows how to specify an instrumentation key in appsettings.json. Assicurarsi che appsettings.json venga copiato nella cartella radice dell'applicazione durante la pubblicazione.Make sure appsettings.json is copied to the application root folder during publishing.

        {
          "ApplicationInsights": {
            "InstrumentationKey": "putinstrumentationkeyhere"
          },
          "Logging": {
            "LogLevel": {
              "Default": "Warning"
            }
          }
        }
    

    In alternativa, specificare la chiave di strumentazione in una delle seguenti variabili di ambiente:Alternatively, specify the instrumentation key in either of the following environment variables:

    • APPINSIGHTS_INSTRUMENTATIONKEY

    • ApplicationInsights:InstrumentationKey

    Ad esempio:For example:

    • SET ApplicationInsights:InstrumentationKey=putinstrumentationkeyhere

    • SET APPINSIGHTS_INSTRUMENTATIONKEY=putinstrumentationkeyhere

    In genere, APPINSIGHTS_INSTRUMENTATIONKEY specifica la chiave di strumentazione per le applicazioni distribuite in app Web di Azure.Typically, APPINSIGHTS_INSTRUMENTATIONKEY specifies the instrumentation key for applications deployed to Azure Web Apps.

    Nota

    Una chiave di strumentazione specificata nel codice prevale sulla variabile di ambiente APPINSIGHTS_INSTRUMENTATIONKEY, che prevale su altre opzioni.An instrumentation key specified in code wins over the environment variable APPINSIGHTS_INSTRUMENTATIONKEY, which wins over other options.

Eseguire l'applicazioneRun your application

Eseguire l'applicazione e creare richieste.Run your application and make requests to it. I dati di telemetria dovrebbero ora fluire Application Insights.Telemetry should now flow to Application Insights. Il Application Insights SDK raccoglie automaticamente le richieste Web in ingresso per l'applicazione, insieme ai dati di telemetria seguenti.The Application Insights SDK automatically collects incoming web requests to your application, along with the following telemetry as well.

Metriche attiveLive Metrics

È possibile usare le metriche in tempo reale per verificare rapidamente se Application Insights il monitoraggio è configurato correttamente.Live Metrics can be used to quickly verify if Application Insights monitoring is configured correctly. Sebbene potrebbero essere necessari alcuni minuti prima che i dati di telemetria inizino a essere visualizzati nel portale e nelle analisi, le metriche attive indicheranno l'utilizzo della CPU del processo in esecuzione quasi in tempo reale.While it might take a few minutes before telemetry starts appearing in the portal and analytics, Live Metrics would show CPU usage of the running process in near real-time. Può anche visualizzare altri dati di telemetria, ad esempio richieste, dipendenze, tracce e così via.It can also show other telemetry like Requests, Dependencies, Traces, etc.

Log ILoggerILogger logs

I log emessi tramite ILogger di gravità Warning o superiore vengono acquisiti automaticamente.Logs emitted via ILogger of severity Warning or greater are automatically captured. Seguire i documenti di ILogger per personalizzare i livelli di log acquisiti da Application Insights.Follow ILogger docs to customize which log levels are captured by Application Insights.

DependenciesDependencies

La raccolta delle dipendenze è abilitata per impostazione predefinita.Dependency collection is enabled by default. Questo articolo illustra le dipendenze che vengono raccolte automaticamente e contiene anche i passaggi per eseguire il rilevamento manuale.This article explains the dependencies that are automatically collected, and also contain steps to do manual tracking.

Contatori delle prestazioniPerformance counters

Il supporto per i contatori delle prestazioni in ASP.NET Core è limitato:Support for performance counters in ASP.NET Core is limited:

  • Le versioni di SDK 2.4.1 e successive raccolgono i contatori delle prestazioni se l'applicazione è in esecuzione in app Web di Azure (Windows).SDK versions 2.4.1 and later collect performance counters if the application is running in Azure Web Apps (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 versione successiva.SDK versions 2.7.1 and later collect performance counters if the application is running in Windows and targets NETSTANDARD2.0 or later.
  • Per le applicazioni destinate all'.NET Framework, tutte le versioni dell'SDK supportano i contatori delle prestazioni.For applications targeting the .NET Framework, all versions of the SDK support performance counters.
  • Le versioni dell'SDK 2.8.0 e versioni successive supportano il contatore CPU/memoria in Linux.SDK Versions 2.8.0 and later support cpu/memory counter in Linux. Nessun altro contatore è supportato in Linux.No other counter is supported in Linux. Il metodo consigliato per ottenere i contatori di sistema in Linux (e in altri ambienti non Windows) consiste nell'usare EventCountersThe recommended way to get system counters in Linux (and other non-Windows environments) is by using EventCounters

EventCounterEventCounter

EventCounterCollectionModule è abilitato per impostazione predefinita e verrà raccolto un set predefinito di contatori dalle app .NET Core 3,0.EventCounterCollectionModule is enabled by default, and it will collect a default set of counters from .NET Core 3.0 apps. L'esercitazione EventCounter elenca il set predefinito di contatori raccolti.The EventCounter tutorial lists the default set of counters collected. Sono inoltre disponibili istruzioni per la personalizzazione dell'elenco.It also has instructions on customizing the list.

Abilitare la telemetria sul lato client per le applicazioni WebEnable client-side telemetry for web applications

I passaggi precedenti sono sufficienti per iniziare a raccogliere i dati di telemetria sul lato server.The preceding steps are enough to help you start collecting server-side telemetry. Se l'applicazione ha componenti lato client, seguire i passaggi successivi per iniziare a raccogliere i dati di telemetria sull'utilizzo.If your application has client-side components, follow the next steps to start collecting usage telemetry.

  1. In _ViewImports.cshtmlaggiungere injection:In _ViewImports.cshtml, add injection:

        @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    
  2. In _Layout.cshtmlinserire HtmlHelper alla fine della sezione <head> ma prima di qualsiasi altro script.In _Layout.cshtml, insert HtmlHelper at the end of the <head> section but before any other script. Se si desidera segnalare i dati di telemetria JavaScript personalizzati dalla pagina, inserire il frammento di codice seguente:If you want to report any custom JavaScript telemetry from the page, inject it after this snippet:

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

I nomi dei file di .cshtml a cui si fa riferimento in precedenza si trovano in un modello di applicazione MVC predefinito.The .cshtml file names referenced earlier are from a default MVC application template. Infine, se si desidera abilitare correttamente il monitoraggio lato client per l'applicazione, il frammento di codice JavaScript deve essere visualizzato nella sezione <head> di ogni pagina dell'applicazione che si desidera monitorare.Ultimately, if you want to properly enable client-side monitoring for your application, the JavaScript snippet must appear in the <head> section of each page of your application that you want to monitor. È possibile raggiungere questo obiettivo per questo modello di applicazione aggiungendo il frammento di codice JavaScript per _Layout.cshtml.You can accomplish this goal for this application template by adding the JavaScript snippet to _Layout.cshtml.

Se il progetto non include _Layout.cshtml, è comunque possibile aggiungere il monitoraggio lato client.If your project doesn't include _Layout.cshtml, you can still add client-side monitoring. A tale scopo, aggiungere il frammento di codice JavaScript a un file equivalente che controlla la <head> di tutte le pagine all'interno dell'app.You can do this by adding the JavaScript snippet to an equivalent file that controls the <head> of all pages within your app. In alternativa, è possibile aggiungere il frammento di codice a più pagine, ma questa soluzione è difficile da gestire e in genere non è consigliata.Or you can add the snippet to multiple pages, but this solution is difficult to maintain and we generally don't recommend it.

Configurare il Application Insights SDKConfigure the Application Insights SDK

Per modificare la configurazione predefinita, è possibile personalizzare l'SDK Application Insights per ASP.NET Core.You can customize the Application Insights SDK for ASP.NET Core to change the default configuration. Gli utenti di Application Insights SDK ASP.NET potrebbero avere familiarità con la modifica della configurazione utilizzando ApplicationInsights.config o modificando TelemetryConfiguration.Active.Users of the Application Insights ASP.NET SDK might be familiar with changing configuration by using ApplicationInsights.config or by modifying TelemetryConfiguration.Active. Modificare la configurazione in modo diverso per ASP.NET Core.You change configuration differently for ASP.NET Core. Aggiungere la ASP.NET Core SDK all'applicazione e configurarla utilizzando ASP.NET Core inserimento delle dipendenzepredefinito.Add the ASP.NET Core SDK to the application and configure it by using ASP.NET Core built-in dependency injection. Apportare quasi tutte le modifiche alla configurazione nel metodo ConfigureServices() della classe Startup.cs, a meno che non sia stato specificato diversamente.Make almost all configuration changes in the ConfigureServices() method of your Startup.cs class, unless you're directed otherwise. Nelle sezioni seguenti sono disponibili ulteriori informazioni.The following sections offer more information.

Nota

Nelle applicazioni ASP.NET Core la modifica della configurazione modificando TelemetryConfiguration.Active non è supportata.In ASP.NET Core applications, changing configuration by modifying TelemetryConfiguration.Active isn't supported.

Uso di ApplicationInsightsServiceOptionsUsing ApplicationInsightsServiceOptions

È possibile modificare alcune impostazioni comuni passando ApplicationInsightsServiceOptions al AddApplicationInsightsTelemetry, come nell'esempio seguente:You can modify a few common settings by passing ApplicationInsightsServiceOptions to AddApplicationInsightsTelemetry, as in this example:

public void ConfigureServices(IServiceCollection services)
{
    Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions aiOptions
                = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    // Disables adaptive sampling.
    aiOptions.EnableAdaptiveSampling = false;

    // Disables QuickPulse (Live Metrics stream).
    aiOptions.EnableQuickPulseMetricStream = false;
    services.AddApplicationInsightsTelemetry(aiOptions);
}

Elenco completo delle impostazioni in ApplicationInsightsServiceOptionsFull List of settings in ApplicationInsightsServiceOptions

ImpostazioneSetting DESCRIZIONEDescription DefaultDefault
EnableQuickPulseMetricStreamEnableQuickPulseMetricStream Abilita/Disabilita la funzionalità LiveMetricsEnable/Disable LiveMetrics feature truetrue
EnableAdaptiveSamplingEnableAdaptiveSampling Abilita/Disabilita il campionamento adattivoEnable/Disable Adaptive Sampling truetrue
EnableHeartbeatEnableHeartbeat Abilita/Disabilita la funzionalità heartbeat, che periodicamente (15 minuti per impostazione predefinita) Invia una metrica personalizzata denominata ' HeartBeatState ' con informazioni sul runtime come la versione .NET, le informazioni sull'ambiente di Azure, se applicabile e così via.Enable/Disable Heartbeats feature, which periodically (15-min default) sends a custom metric named 'HeartBeatState' with information about the runtime like .NET Version, Azure Environment information, if applicable, etc. truetrue
AddAutoCollectedMetricExtractorAddAutoCollectedMetricExtractor Abilita/Disabilita AutoCollectedMetrics Extractor, ovvero un TelemetryProcessor che invia metriche pre-aggregate relative a richieste/dipendenze prima che venga eseguita il campionamento.Enable/Disable AutoCollectedMetrics extractor, which is a TelemetryProcessor that sends pre-aggregated metrics about Requests/Dependencies before sampling takes place. truetrue
RequestCollectionOptions.TrackExceptionsRequestCollectionOptions.TrackExceptions Abilitare/disabilitare la creazione di report per il rilevamento delle eccezioni non gestite da parte del modulo di raccolta della richiesta.Enable/Disable reporting of unhandled Exception tracking by the Request collection module. false in NETSTANDARD 2.0 (poiché le eccezioni vengono rilevate con ApplicationInsightsLoggerProvider); in caso contrario, true.false in NETSTANDARD2.0 (because Exceptions are tracked with ApplicationInsightsLoggerProvider), true otherwise.

Per l'elenco più aggiornato, vedere le impostazioni configurabili in ApplicationInsightsServiceOptions .See the configurable settings in ApplicationInsightsServiceOptions for the most up-to-date list.

CampionamentoSampling

Il Application Insights SDK per ASP.NET Core supporta sia il campionamento a frequenza fissa che quello adattivo.The Application Insights SDK for ASP.NET Core supports both fixed-rate and adaptive sampling. Il campionamento adattivo è abilitato per impostazione predefinita.Adaptive sampling is enabled by default.

Per altre informazioni, vedere configurare il campionamento adattivo per ASP.NET Core applicazioni.For more information, see Configure adaptive sampling for ASP.NET Core applications.

Aggiunta di TelemetryInitializersAdding TelemetryInitializers

Usare gli inizializzatori di telemetria quando si desidera definire le proprietà globali che vengono inviate con tutti i dati di telemetria.Use telemetry initializers when you want to define global properties that are sent with all telemetry.

Aggiungere nuovi TelemetryInitializer al contenitore DependencyInjection, come illustrato nel codice seguente.Add any new TelemetryInitializer to the DependencyInjection container as shown in the following code. L'SDK preleva automaticamente qualsiasi TelemetryInitializer aggiunto al contenitore di DependencyInjection.The SDK automatically picks up any TelemetryInitializer that's added to the DependencyInjection container.

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
}

Rimozione di TelemetryInitializersRemoving TelemetryInitializers

Gli inizializzatori di telemetria sono presenti per impostazione predefinita.Telemetry initializers are present by default. Per rimuovere tutti gli inizializzatori di telemetria o specifici, usare il codice di esempio seguente dopo avere chiamato AddApplicationInsightsTelemetry().To remove all or specific telemetry initializers, use the following sample code after you call AddApplicationInsightsTelemetry().

public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry();

    // Remove a specific built-in telemetry initializer
    var tiToRemove = services.FirstOrDefault<ServiceDescriptor>
                        (t => t.ImplementationType == typeof(AspNetCoreEnvironmentTelemetryInitializer));
    if (tiToRemove != null)
    {
        services.Remove(tiToRemove);
    }

    // Remove all initializers
    // This requires importing namespace by using Microsoft.Extensions.DependencyInjection.Extensions;
    services.RemoveAll(typeof(ITelemetryInitializer));
}

Aggiunta di processori di telemetriaAdding telemetry processors

È possibile aggiungere processori di telemetria personalizzati a TelemetryConfiguration usando il metodo di estensione AddApplicationInsightsTelemetryProcessor in IServiceCollection.You can add custom telemetry processors to TelemetryConfiguration by using the extension method AddApplicationInsightsTelemetryProcessor on IServiceCollection. I processori di telemetria vengono usati in scenari di filtro avanzati.You use telemetry processors in advanced filtering scenarios. Usare l'esempio seguente.Use the following example.

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddApplicationInsightsTelemetry();
    services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();

    // If you have more processors:
    services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
}

Configurazione o rimozione di TelemetryModules predefinitiConfiguring or removing default TelemetryModules

Application Insights USA moduli di telemetria per raccogliere automaticamente dati di telemetria utili su carichi di lavoro specifici senza richiedere il rilevamento manuale da un utente.Application Insights uses telemetry modules to automatically collect useful telemetry about specific workloads without requiring manual tracking by user.

I moduli di raccolta automatica seguenti sono abilitati per impostazione predefinita.The following automatic-collection modules are enabled by default. Questi moduli sono responsabili della raccolta automatica dei dati di telemetria.These modules are responsible for automatically collecting telemetry. È possibile disabilitarle o configurarle per modificarne il comportamento predefinito.You can disable or configure them to alter their default behavior.

  • RequestTrackingTelemetryModule: raccoglie RequestTelemetry dalle richieste Web in ingresso.RequestTrackingTelemetryModule - Collects RequestTelemetry from incoming web requests.
  • DependencyTrackingTelemetryModule: raccoglie DependencyTelemetry dalle chiamate http in uscita e dalle chiamate SQL.DependencyTrackingTelemetryModule - Collects DependencyTelemetry from outgoing http calls and sql calls.
  • PerformanceCollectorModule-raccoglie Windows PerformanceCounters.PerformanceCollectorModule - Collects Windows PerformanceCounters.
  • QuickPulseTelemetryModule: raccoglie i dati di telemetria per la visualizzazione nel portale di metriche attive.QuickPulseTelemetryModule - Collects telemetry for showing in Live Metrics portal.
  • AppServicesHeartbeatTelemetryModule: raccoglie i battimenti cardiaci, che vengono inviati come metriche personalizzate, sull'ambiente app Azure servizio in cui è ospitata l'applicazione.AppServicesHeartbeatTelemetryModule - Collects heart beats (which are sent as custom metrics), about Azure App Service environment where application is hosted.
  • AzureInstanceMetadataTelemetryModule: raccoglie i battimenti cardiaci, che vengono inviati come metriche personalizzate, sull'ambiente di macchine virtuali di Azure in cui è ospitata l'applicazione.AzureInstanceMetadataTelemetryModule - Collects heart beats (which are sent as custom metrics), about Azure VM environment where application is hosted.
  • EventCounterCollectionModule-raccoglie EventCounters.EventCounterCollectionModule - Collects EventCounters. Questo modulo è una nuova funzionalità ed è disponibile nella versione SDK 2.8.0 e versioni successive.This module is a new feature and is available in SDK Version 2.8.0 and higher.

Per configurare qualsiasi TelemetryModulepredefinita, usare il metodo di estensione ConfigureTelemetryModule<T> su IServiceCollection, come illustrato nell'esempio seguente.To configure any default TelemetryModule, use the extension method ConfigureTelemetryModule<T> on IServiceCollection, as shown in the following example.

using Microsoft.ApplicationInsights.DependencyCollector;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;

public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry();

    // The following configures DependencyTrackingTelemetryModule.
    // Similarly, any other default modules can be configured.
    services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) =>
            {
                module.EnableW3CHeadersInjection = true;
            });

    // The following removes all default counters from EventCounterCollectionModule, and adds a single one.
    services.ConfigureTelemetryModule<EventCounterCollectionModule>(
            (module, o) =>
            {
                module.Counters.Clear();
                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 = services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
    if (performanceCounterService != null)
    {
        services.Remove(performanceCounterService);
    }
}

Configurazione di un canale di telemetriaConfiguring a telemetry channel

Il canale predefinito è ServerTelemetryChannel.The default channel is ServerTelemetryChannel. È possibile eseguirne l'override come illustrato nell'esempio riportato di seguito.You can override it as the following example shows.

using Microsoft.ApplicationInsights.Channel;

    public void ConfigureServices(IServiceCollection services)
    {
        // Use the following to replace the default channel with InMemoryChannel.
        // This can also be applied to ServerTelemetryChannel.
        services.AddSingleton(typeof(ITelemetryChannel), new InMemoryChannel() {MaxTelemetryBufferCapacity = 19898 });

        services.AddApplicationInsightsTelemetry();
    }

Disabilitare la telemetria in modo dinamicoDisable telemetry dynamically

Se si vuole disabilitare la telemetria in modo condizionale e dinamico, è possibile risolvere TelemetryConfiguration istanza con ASP.NET Core contenitore di inserimento delle dipendenze in qualsiasi punto del codice e impostare DisableTelemetry flag.If you want to disable telemetry conditionally and dynamically, you may resolve TelemetryConfiguration instance with ASP.NET Core dependency injection container anywhere in your code and set DisableTelemetry flag on it.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetry();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
    {
        configuration.DisableTelemetry = true;
        ...
    }

Il precedente non impedisce ai moduli di raccolta automatica di raccogliere dati di telemetria.The above does not prevent any auto collection modules from collecting telemetry. Solo l'invio di dati di telemetria a Application Insights viene disabilitato con l'approccio precedente.Only the sending of telemetry to Application Insights gets disabled with the above approach. Se non si desidera un particolare modulo di raccolta automatica, è preferibile rimuovere il modulo di telemetriaIf a particular auto collection module is not desired, it is best to remove the telemetry module

Domande frequentiFrequently asked questions

Application Insights supporta ASP.NET Core 3,0?Does Application Insights support ASP.NET Core 3.0?

Sì.Yes. Eseguire l'aggiornamento a Application Insights SDK per ASP.NET Core versione 2.8.0 o successiva.Update to Application Insights SDK for ASP.NET Core version 2.8.0 or higher. Le versioni precedenti dell'SDK non supportano ASP.NET Core 3,0.Older versions of the SDK do not support ASP.NET Core 3.0.

Inoltre, se si usano le istruzioni basate su Visual Studio da qui, eseguire l'aggiornamento alla versione più recente di visual studio 2019 (16.3.0) per l'onboarding.Also, if you are using Visual Studio based instructions from here, update to the latest version of Visual Studio 2019 (16.3.0) to onboard. Le versioni precedenti di Visual Studio non supportano l'onboarding automatico per le app ASP.NET Core 3,0.Previous versions of Visual Studio do not support automatic onboarding for ASP.NET Core 3.0 apps.

Come è possibile tenere traccia dei dati di telemetria che non vengono raccolti automaticamente?How can I track telemetry that's not automatically collected?

Ottenere un'istanza di TelemetryClient usando l'inserimento del costruttore e chiamare il metodo TrackXXX() obbligatorio.Get an instance of TelemetryClient by using constructor injection, and call the required TrackXXX() method on it. Non è consigliabile creare nuove istanze di TelemetryClient in un'applicazione ASP.NET Core.We don't recommend creating new TelemetryClient instances in an ASP.NET Core application. Un'istanza singleton di TelemetryClient è già registrata nel contenitore DependencyInjection, che condivide TelemetryConfiguration con il resto dei dati di telemetria.A singleton instance of TelemetryClient is already registered in the DependencyInjection container, which shares TelemetryConfiguration with rest of the telemetry. La creazione di una nuova istanza di TelemetryClient è consigliata solo se è necessaria una configurazione separata dal resto dei dati di telemetria.Creating a new TelemetryClient instance is recommended only if it needs a configuration that's separate from the rest of the telemetry.

L'esempio seguente illustra come tenere traccia dei dati di telemetria aggiuntivi da un controller.The following example shows how to track additional telemetry from a 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 Application Insights.For more information about custom data reporting in Application Insights, see Application Insights custom metrics API reference.

Alcuni modelli di Visual Studio hanno usato il metodo di estensione UseApplicationInsights () in IWebHostBuilder per abilitare Application Insights.Some Visual Studio templates used the UseApplicationInsights() extension method on IWebHostBuilder to enable Application Insights. Questo utilizzo è ancora valido?Is this usage still valid?

Anche se il metodo di estensione UseApplicationInsights() è ancora supportato, è contrassegnato come obsoleto in Application Insights SDK versione 2.8.0 e versioni successive.While the extension method UseApplicationInsights() is still supported, it is marked obsolete in Application Insights SDK version 2.8.0 onwards. Verrà rimossa nella prossima versione principale dell'SDK.It will be removed in the next major version of the SDK. Il modo consigliato per abilitare la telemetria Application Insights consiste nell'usare AddApplicationInsightsTelemetry() perché fornisce overload per controllare alcune configurazioni.The recommended way to enable Application Insights telemetry is by using AddApplicationInsightsTelemetry() because it provides overloads to control some configuration. Inoltre, in ASP.NET Core app 3,0 services.AddApplicationInsightsTelemetry() è l'unico modo per abilitare Application Insights.Also, in ASP.NET Core 3.0 apps, services.AddApplicationInsightsTelemetry() is the only way to enable application insights.

Si distribuisce l'applicazione ASP.NET Core nelle app Web.I'm deploying my ASP.NET Core application to Web Apps. È comunque possibile abilitare l'estensione Application Insights dalle app Web?Should I still enable the Application Insights extension from Web Apps?

Se l'SDK viene installato in fase di compilazione, come illustrato in questo articolo, non è necessario abilitare l' estensione Application Insights dal portale del servizio app.If the SDK is installed at build time as shown in this article, you don't need to enable the Application Insights extension from the App Service portal. Anche se l'estensione è installata, verrà riattivata quando viene rilevato che l'SDK è già stato aggiunto all'applicazione.Even if the extension is installed, it will back off when it detects that the SDK is already added to the application. Se si Abilita Application Insights dall'estensione, non è necessario installare e aggiornare l'SDK.If you enable Application Insights from the extension, you don't have to install and update the SDK. Tuttavia, se si Abilita Application Insights seguendo le istruzioni riportate in questo articolo, si ha maggiore flessibilità perché:But if you enable Application Insights by following instructions in this article, you have more flexibility because:

  • Application Insights la telemetria continuerà a funzionare in:Application Insights telemetry will continue to work in:
    • Tutti i sistemi operativi, tra cui Windows, Linux e Mac.All operating systems, including Windows, Linux, and Mac.
    • Tutte le modalità di pubblicazione, inclusi i dipendenti indipendenti o del Framework.All publish modes, including self-contained or framework dependent.
    • Tutti i Framework di destinazione, inclusa la .NET Framework completa.All target frameworks, including the full .NET Framework.
    • Tutte le opzioni di hosting, tra cui app Web, macchine virtuali, Linux, contenitori, servizio Azure Kubernetes e hosting non di Azure.All hosting options, including Web Apps, VMs, Linux, containers, Azure Kubernetes Service, and non-Azure hosting.
    • Tutte le versioni di .NET Core, incluse le versioni di anteprima.All .NET Core versions including preview versions.
  • È possibile visualizzare i dati di telemetria localmente durante il debug da Visual Studio.You can see telemetry locally when you're debugging from Visual Studio.
  • È possibile tenere traccia dei dati di telemetria personalizzati aggiuntivi usando l'API TrackXXX().You can track additional custom telemetry by using the TrackXXX() API.
  • Si ha il controllo completo sulla configurazione.You have full control over the configuration.

È possibile abilitare il monitoraggio Application Insights usando strumenti come Status Monitor?Can I enable Application Insights monitoring by using tools like Status Monitor?

No.No. Status Monitor e Status Monitor V2 attualmente supportano solo ASP.NET 4. x.Status Monitor and Status Monitor v2 currently support ASP.NET 4.x only.

Application Insights è abilitato automaticamente per l'applicazione ASP.NET Core 2,0?Is Application Insights automatically enabled for my ASP.NET Core 2.0 application?

Il metapacchetto Microsoft.AspNetCore.All 2,0 include l'SDK di Application Insights (versione 2.1.0).The Microsoft.AspNetCore.All 2.0 metapackage included the Application Insights SDK (version 2.1.0). Se si esegue l'applicazione nel debugger di Visual Studio, Visual Studio Abilita Application Insights e Visualizza i dati di telemetria localmente nell'IDE stesso.If you run the application under Visual Studio debugger, Visual Studio enables Application Insights and shows telemetry locally in the IDE itself. La telemetria non è stata inviata al servizio Application Insights a meno che non sia stata specificata una chiave di strumentazione.Telemetry wasn't sent to the Application Insights service unless an instrumentation key was specified. È consigliabile seguire le istruzioni riportate in questo articolo per abilitare Application Insights, anche per le app 2,0.We recommend following the instructions in this article to enable Application Insights, even for 2.0 apps.

Se eseguo l'applicazione in Linux, tutte le funzionalità sono supportate?If I run my application in Linux, are all features supported?

Sì.Yes. Il supporto delle funzionalità per l'SDK è lo stesso in tutte le piattaforme, con le eccezioni seguenti:Feature support for the SDK is the same in all platforms, with the following exceptions:

  • I contatori delle prestazioni sono supportati solo in Windows.Performance counters are supported only in Windows.
  • Anche se ServerTelemetryChannel è abilitato per impostazione predefinita, se l'applicazione è in esecuzione in Linux o MacOS, il canale non crea automaticamente una cartella di archiviazione locale per conservare temporaneamente la telemetria in caso di problemi di rete.Even though ServerTelemetryChannel is enabled by default, if the application is running in Linux or MacOS, the channel doesn't automatically create a local storage folder to keep telemetry temporarily if there are network issues. A causa di questa limitazione, i dati di telemetria vengono persi in caso di problemi di rete o del server temporanei.Because of this limitation, telemetry is lost when there are temporary network or server issues. Per risolvere questo problema, configurare una cartella locale per il canale:To work around this issue, configure a local folder for the channel:
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;

    public void ConfigureServices(IServiceCollection services)
    {
        // The following will configure the channel to use the given folder to temporarily
        // store telemetry items during network or Application Insights server issues.
        // User should ensure that the given folder already exists
        // and that the application has read/write permissions.
        services.AddSingleton(typeof(ITelemetryChannel),
                                new ServerTelemetryChannel () {StorageFolder = "/tmp/myfolder"});
        services.AddApplicationInsightsTelemetry();
    }

Questo SDK è supportato per le nuove applicazioni modello di servizio di lavoro .NET Core 3,0?Is this SDK supported for the new .NET Core 3.0 Worker Service template applications?

Questo SDK richiede HttpContexte pertanto non funziona in alcuna applicazione non HTTP, incluse le applicazioni del servizio di lavoro .NET Core 3,0.This SDK requires HttpContext, and hence does not work in any non-HTTP applications, including the .NET Core 3.0 Worker Service applications. Fare riferimento a questo documento per abilitare Application Insights in tali applicazioni, usando il nuovo SDK Microsoft. ApplicationInsights. WorkerService.Refer to this document for enabling application insights in such applications, using the newly released Microsoft.ApplicationInsights.WorkerService SDK.

SDK open sourceOpen-source SDK

Leggere e contribuire al codice.Read and contribute to the code.

VideoVideo

Passaggi successiviNext steps