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.
Aprire il progetto in Visual Studio.
Passare a Project>Add Application Insights Telemetry (Aggiungi dati di telemetria di Application Insights).
Selezionare app Azure lication Insights>Avanti.
Scegliere la sottoscrizione e l'istanza di Application Insights. In alternativa, è possibile creare una nuova istanza con Crea nuovo. Selezionare Avanti.
Aggiungere o confermare il stringa di connessione di Application Insights. Deve essere prepopolato in base alla selezione nel passaggio precedente. Selezionare Fine.
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.
Abilitare i dati di telemetria lato server di Application Insights (senza Visual Studio)
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>
Aggiungere
AddApplicationInsightsTelemetry()
allastartup.cs
classe oprogram.cs
. La scelta dipende dalla versione di .NET Core.Aggiungere
builder.Services.AddApplicationInsightsTelemetry();
dopo ilWebApplication.CreateBuilder()
metodo nellaProgram
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();
Configurare la stringa di connessione.
Sebbene sia possibile fornire un stringa di connessione come parte dell'argomento
ApplicationInsightsServiceOptions
aAddApplicationInsightsTelemetry
, è consigliabile specificare il stringa di connessione nella configurazione. Nell'esempio di codice seguente viene illustrato come specificare un stringa di connessione inappsettings.json
. Assicurarsi diappsettings.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 oApplicationInsights: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_STRING
di 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 IConfiguration
in 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 ILogger
Warning
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).
In
_ViewImports.cshtml
aggiungere injection:@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
In
_Layout.cshtml
inserireHtmlHelper
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 FullScript
di , 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 , 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 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:
- L'SDK raccoglie i contatori degli eventi in Linux perché i contatori delle prestazioni sono supportati solo in Windows. La maggior parte delle metriche è la stessa.
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?
- Disinstallare il pacchetto Microsoft.ApplicationInsights.AspNetCore usando il Gestione pacchetti NuGet.
- 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
- Esplorare i flussi utente per comprendere come gli utenti passano attraverso l'app.
- Configurare una raccolta snapshot per visualizzare lo stato del codice sorgente e delle variabili al momento in cui viene generata un'eccezione.
- Usare l'API per inviare metriche ed eventi personalizzati per una visualizzazione dettagliata delle prestazioni e dell'utilizzo dell'app.
- Usare test di disponibilità per controllare costantemente l'app da ogni parte del mondo.
- Informazioni sull'inserimento delle dipendenze in ASP.NET Core.