Abilitare Application Insights per le applicazioni ASP.NET Core
Questo articolo descrive come abilitare Application Insights per un'applicazione ASP.NET Core distribuita come app Web di Azure. Questa implementazione usa un approccio basato su SDK. È disponibile anche un approccio di strumentazione automatica .
Application Insights può raccogliere i dati di telemetria seguenti dall'applicazione ASP.NET Core:
- Requests
- Dependencies
- Eccezioni
- Contatori delle prestazioni
- Battiti cardiaci
- Log
Per un'applicazione di esempio, si userà un'applicazione MVC di ASP.NET Core destinata net6.0
a . È tuttavia possibile applicare queste istruzioni a tutte le applicazioni ASP.NET Core. Se si usa il servizio di lavoro, usare le istruzioni riportate di seguito.
Nota
È disponibile un'offerta .NET basata su OpenTelemetry . Altre informazioni
Nota
Il 31 marzo 2025, il supporto per l'inserimento delle chiavi di strumentazione terminerà. L'inserimento delle chiavi di strumentazione continuerà a funzionare, ma non verranno più forniti aggiornamenti o supporto per la funzionalità. Passare alle stringhe di connessione per sfruttare le nuove funzionalità.
Scenari supportati
Application Insights SDK per ASP.NET Core può monitorare le applicazioni indipendentemente dalla posizione o dalla modalità di esecuzione. Se l'applicazione è in esecuzione e dispone della connettività di rete ad Azure, Application Insights può raccogliere i dati di telemetria. Il monitoraggio di Application Insights è supportato ovunque sia supportato .NET Core. Sono supportati gli scenari indicati di seguito:
- Sistema operativo: Windows, Linux o Mac
- Metodo di hosting: in fase di elaborazione o fuori processo
- Metodo di distribuzione: Framework dipendente o indipendente
- Server Web: Internet Information Server (IIS) o Kestrel
- Piattaforma di hosting: funzionalità App Web di Servizio app di Azure, macchina virtuale di Azure, Docker, servizio Azure Kubernetes (servizio Azure Kubernetes) e così via
- Versione di .NET Core: tutte le versioni di .NET Core supportate ufficialmente che non sono in anteprima
- IDE: Visual Studio, Visual Studio Code o riga di comando
Prerequisiti
Per completare questa esercitazione, sono necessari:
- Visual Studio 2022
- Carichi di lavoro di Visual Studio seguenti:
- Sviluppo Web e ASP.NET
- Elaborazione ed archiviazione dati
- Sviluppo di Azure
- .NET 6.0
- Sottoscrizione di Azure e account utente (con la possibilità di creare ed eliminare risorse)
Distribuire le risorse di Azure
Seguire le indicazioni per distribuire l'applicazione di esempio dal repository GitHub.
Per fornire nomi univoci globali alle risorse, viene assegnato un suffisso a sei caratteri a alcune risorse. Prendere nota di questo suffisso per l'uso più avanti in questo articolo.
Creare una risorsa di Application Insights
Nella portale di Azure selezionare il gruppo di risorse application-insights-azure-café.
Nel menu della barra degli strumenti superiore selezionare + Crea.
Nella schermata Crea una risorsa cercare e selezionare Application Insights nella casella di testo ricerca marketplace.
Nella schermata panoramica delle risorse di Application Insights selezionare Crea.
Nella schermata Application Insights, scheda Nozioni di base completare il modulo usando la tabella seguente, quindi selezionare il pulsante Rivedi e crea . I campi non specificati nella tabella seguente possono conservare i valori predefiniti.
Campo Valore Nome Immettere azure-cafe-application-insights-{SUFFIX}
, sostituendo {SUFFIX} con il valore di suffisso appropriato registrato in precedenza.Region Selezionare la stessa area scelta durante la distribuzione delle risorse dell'articolo. Area di lavoro Log Analytics Selezionare azure-café-log-analytics-workspace. In alternativa, è possibile creare una nuova area di lavoro log analytics. Dopo aver superato la convalida, selezionare Crea per distribuire la risorsa.
Dopo aver distribuito la risorsa, tornare al
application-insights-azure-cafe
gruppo di risorse e selezionare la risorsa Application Insights distribuita.Nella schermata Panoramica della risorsa di Application Insights selezionare il pulsante Copia negli Appunti per copiare il valore stringa di connessione. Verrà usato il valore stringa di connessione nella sezione successiva di questo articolo.
Configurare l'impostazione dell'applicazione stringa di connessione Application Insights nel web servizio app
Tornare al
application-insights-azure-cafe
gruppo di risorse e aprire la risorsa azure-café-web-{SUFFIX} servizio app.Nel menu a sinistra selezionare Configurazione nella sezione Impostazioni. Quindi, nella scheda Impostazioni applicazione selezionare + Nuova impostazione applicazione sotto l'intestazione Impostazioni applicazione.
Nel riquadro Aggiungi/Modifica applicazione completare il modulo come indicato di seguito e selezionare OK.
Campo Valore Nome APPLICATIONINSIGHTS_CONNECTION_STRING Valore Incollare il valore di Application Insights stringa di connessione copiato nella sezione precedente. Nella schermata servizio app Configurazione selezionare il pulsante Salva dal menu della barra degli strumenti. Quando viene richiesto di salvare le modifiche, selezionare Continua.
Installare il pacchetto NuGet di Application Insights
È necessario configurare l'applicazione Web MVC ASP.NET Core per inviare dati di telemetria. Questa operazione viene eseguita usando il pacchetto NuGet di Application Insights per ASP.NET Core applicazioni Web.
In Visual Studio aprire
1 - Starter Application\src\AzureCafe.sln
.Nel pannello di visual Studio Esplora soluzioni fare clic con il pulsante destro del mouse sul file di progetto AzureCafe e scegliere Gestisci pacchetti NuGet.
Selezionare la scheda Sfoglia e quindi cercare e selezionare Microsoft.ApplicationInsights.AspNetCore. Selezionare Installa e accettare le condizioni di licenza. È consigliabile usare la versione stabile più recente. Per le note sulla versione completa per l'SDK, vedere il repository GitHub open source.
Mantenere Aperto Visual Studio per la sezione successiva dell'articolo.
Abilitare i dati di telemetria lato server di Application Insights
Il pacchetto NuGet application Insights per ASP.NET Core applicazioni Web incapsula le funzionalità per consentire l'invio di dati di telemetria sul lato server alla risorsa di Application Insights in Azure.
Dal Esplora soluzioni di Visual Studio aprire il file Program.cs.
Inserire il codice seguente prima dell'istruzione
builder.Services.AddControllersWithViews()
. Questo codice legge automaticamente il valore di Application Insights stringa di connessione dalla configurazione. IlAddApplicationInsightsTelemetry
metodo registra conApplicationInsightsLoggerProvider
il contenitore di inserimento delle dipendenze predefinito che verrà quindi usato per soddisfare le richieste di implementazione ILogger e ILogger<TCategoryName> .builder.Services.AddApplicationInsightsTelemetry();
Suggerimento
Altre informazioni sulle opzioni di configurazione in ASP.NET Core.
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. L'applicazione di esempio include componenti lato client. Seguire i passaggi successivi per iniziare a raccogliere i dati di telemetria sull'utilizzo.
In Visual Studio Esplora soluzioni aprire
\Views\_ViewImports.cshtml
.Aggiungere il codice seguente alla fine del file esistente.
@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
Per abilitare correttamente il monitoraggio lato client per l'applicazione, in Visual Studio Esplora soluzioni aprire
\Views\Shared\_Layout.cshtml
e inserire il codice seguente immediatamente prima del tag di chiusura<\head>
. Questo frammento di codice JavaScript deve essere inserito nella<head>
sezione di ogni pagina dell'applicazione che si vuole monitorare.@Html.Raw(JavaScriptSnippet.FullScript)
Suggerimento
Un'alternativa all'uso
FullScript
di èScriptBody
. UsareScriptBody
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>
Nota
JavaScript injection offre un'esperienza di configurazione predefinita. Se è necessaria una configurazione oltre l'impostazione del stringa di connessione, è necessario rimuovere l'inserimento automatico come descritto in precedenza e aggiungere manualmente JavaScript SDK.
Abilitare il monitoraggio delle query di database
Quando si analizzano le cause della riduzione delle prestazioni, è importante includere informazioni dettagliate sulle chiamate al database. Per abilitare il monitoraggio, configurare il modulo di dipendenza. Il monitoraggio delle dipendenze, incluso SQL, è abilitato per impostazione predefinita.
Seguire questa procedura per acquisire il testo completo della query SQL.
Nota
Il testo SQL può contenere dati sensibili, ad esempio password e informazioni personali. Prestare attenzione quando si abilita questa funzionalità.
Dal Esplora soluzioni di Visual Studio aprire il file Program.cs.
Nella parte superiore del file aggiungere l'istruzione seguente
using
.using Microsoft.ApplicationInsights.DependencyCollector;
Per abilitare la strumentazione del testo del comando SQL, inserire il codice seguente immediatamente dopo il
builder.Services.AddApplicationInsightsTelemetry()
codice.builder.Services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module.EnableSqlCommandTextInstrumentation = true; });
Eseguire l'applicazione Web Azure Cafe
Dopo aver distribuito il codice dell'applicazione Web, i dati di telemetria verranno trasmessi ad Application Insights. Application Insights SDK raccoglie automaticamente le richieste Web in ingresso all'applicazione.
Dal Esplora soluzioni di Visual Studio fare clic con il pulsante destro del mouse sul progetto AzureCafe e scegliere Pubblica dal menu di scelta rapida.
Selezionare Pubblica per alzare di livello il nuovo codice al Servizio app di Azure.
Quando l'applicazione Web Azure Cafe viene pubblicata correttamente, viene visualizzata una nuova finestra del browser per l'applicazione Web Azure Cafe.
Per generare alcuni dati di telemetria, seguire questa procedura nell'applicazione Web per aggiungere una revisione.
Per visualizzare il menu e le recensioni di un caffè, selezionare Dettagli accanto a un caffè.
Per visualizzare e aggiungere recensioni, nella schermata Cafe selezionare la scheda Recensioni . Selezionare il pulsante Aggiungi revisione per aggiungere una recensione.
Nella finestra di dialogo Crea una recensione immettere un nome, una valutazione, un commento e caricare una foto per la recensione. Al termine, selezionare Aggiungi revisione.
Se è necessario generare dati di telemetria aggiuntivi, aggiungere altre revisioni.
Metriche attive
È possibile usare Le metriche attive per verificare rapidamente se il monitoraggio di Application Insights è configurato correttamente. Live Metrics (Metriche attive) mostra l'utilizzo della CPU del processo in esecuzione quasi in tempo reale. Può anche visualizzare altri dati di telemetria, ad esempio richieste, dipendenze e tracce. Si noti che la visualizzazione dei dati di telemetria nel portale e nell'analisi potrebbe richiedere alcuni minuti.
Visualizzazione della mappa dell'applicazione
L'applicazione di esempio effettua chiamate a più risorse di Azure, tra cui Azure SQL, Archiviazione BLOB di Azure e il servizio lingua di Azure (per l'analisi del sentiment).
Application Insights introspetta i dati di telemetria in ingresso ed è in grado di generare una mappa visiva delle integrazioni di sistema rilevate.
Accedere al portale di Azure.
Aprire il gruppo di risorse per l'applicazione di esempio, ovvero
application-insights-azure-cafe
.Nell'elenco delle risorse selezionare la
azure-cafe-insights-{SUFFIX}
risorsa di Application Insights.Nel menu a sinistra, sotto l'intestazione Analisi , selezionare Mappa delle applicazioni. Osservare la mappa dell'applicazione generata.
Visualizzazione di chiamate HTTP e testo del comando SQL del database
Nel portale di Azure aprire la risorsa di Application Insights.
Nel menu a sinistra, sotto l'intestazione Analisi , selezionare Prestazioni.
La scheda Operazioni contiene i dettagli delle chiamate HTTP ricevute dall'applicazione. Per alternare le visualizzazioni Server e Browser (lato client) dei dati, usare l'interruttore Server/Browser.
Selezionare un'operazione dalla tabella e scegliere di eseguire il drill-in un esempio della richiesta.
La transazione end-to-end viene visualizzata per la richiesta selezionata. In questo caso è stata creata una revisione, inclusa un'immagine, quindi include chiamate ad Archiviazione di Azure e al servizio di linguaggio (per l'analisi del sentiment). Include anche chiamate di database in SQL Azure per rendere persistente la verifica. In questo esempio il primo evento selezionato visualizza informazioni relative alla chiamata HTTP POST.
Selezionare un elemento SQL per esaminare il testo del comando SQL emesso nel database.
Facoltativamente, selezionare le richieste di dipendenza (in uscita) ad Archiviazione di Azure o al servizio di linguaggio.
Tornare alla schermata Prestazioni e selezionare la scheda Dipendenze per analizzare le chiamate a risorse esterne. Si noti che la tabella Operazioni include chiamate in Analisi del sentiment, archiviazione BLOB e Azure SQL.
Registrazione delle applicazioni con Application Insights
Panoramica della registrazione
Application Insights è un tipo di provider di registrazione disponibile per ASP.NET Core applicazioni che diventano disponibili per le applicazioni quando application Insights per ASP.NET Core pacchetto NuGet è installato e la raccolta di dati di telemetria sul lato server è abilitata.
Come promemoria, il codice seguente in Program.cs registra con ApplicationInsightsLoggerProvider
il contenitore di inserimento delle dipendenze predefinito.
builder.Services.AddApplicationInsightsTelemetry();
Con il ApplicationInsightsLoggerProvider
provider di registrazione registrato, l'app è pronta per accedere ad Application Insights usando l'inserimento del costruttore con ILogger o l'alternativa di tipo generico ILogger<TCategoryName>.
Nota
Per impostazione predefinita, il provider di registrazione è configurato per acquisire automaticamente gli eventi del log con una gravità superiore LogLevel.Warning o superiore.
Si consideri il controller di esempio seguente. Illustra l'inserimento di ILogger, che viene risolto con l'oggetto ApplicationInsightsLoggerProvider
registrato con il contenitore di inserimento delle dipendenze. Osservare nel metodo Get che viene registrato un messaggio informativo, di avviso e di errore.
Nota
Per impostazione predefinita, la traccia a livello di informazioni non verrà registrata. Vengono acquisiti solo i livelli di avviso e superiore.
using Microsoft.AspNetCore.Mvc;
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
private readonly ILogger _logger;
public ValuesController(ILogger<ValuesController> logger)
{
_logger = logger;
}
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
//Info level traces are not captured by default
_logger.LogInformation("An example of an Info trace..");
_logger.LogWarning("An example of a Warning trace..");
_logger.LogError("An example of an Error level message");
return new string[] { "value1", "value2" };
}
}
Per altre informazioni, vedere Logging in ASP.NET Core (Registrazione in ASP.NET Core).
Visualizzare i log in Application Insights
ValuesController precedente viene distribuito con l'applicazione di esempio e si trova nella cartella Controllers del progetto.
Usando un browser Internet, aprire l'applicazione di esempio. Nella barra degli indirizzi aggiungere
/api/Values
e premere INVIO.Nella portale di Azure attendere alcuni istanti e quindi selezionare la risorsa azure-café-insights-{SUFFIX} di Application Insights.
Nel menu a sinistra della risorsa di Application Insights selezionare Log nella sezione Monitoraggio.
Nel riquadro Tabelle , sotto l'albero di Application Insights , fare doppio clic sulla tabella delle tracce .
Modificare la query per recuperare le tracce per il controller Valori come indicato di seguito, quindi selezionare Esegui per filtrare i risultati.
traces | where operation_Name == "GET Values/Get"
I risultati visualizzano i messaggi di registrazione presenti nel controller. Una gravità del log pari a 2 indica un livello di avviso e una gravità del log pari a 3 indica un livello di errore.
In alternativa, è anche possibile scrivere la query per recuperare i risultati in base alla categoria del log. Per impostazione predefinita, la categoria è il nome completo della classe in cui viene inserito ILogger. In questo caso, il nome della categoria è ValuesController (se è presente uno spazio dei nomi associato alla classe , il nome verrà preceduto dallo spazio dei nomi ). Riscriva ed esegui la query seguente per recuperare i risultati in base alla categoria.
traces | where customDimensions.CategoryName == "ValuesController"
Controllare il livello di log inviati ad Application Insights
ILogger
le implementazioni hanno un meccanismo predefinito per applicare il filtro dei log. Questo filtro consente di controllare i log inviati a ogni provider registrato, incluso il provider di Application Insights. È possibile usare il filtro nella configurazione (usando un file appsettings.json ) o nel codice. Per altre informazioni sui livelli di log e indicazioni su come usarli in modo appropriato, vedere la documentazione relativa al livello di log .
Gli esempi seguenti illustrano come applicare regole di filtro a ApplicationInsightsLoggerProvider
per controllare il livello di log inviati ad Application Insights.
Creare regole di filtro con la configurazione
l'alias ApplicationInsightsLoggerProvider
è ApplicationInsights nella configurazione. La sezione seguente di un file appsettings.json imposta il livello di log predefinito per tutti i provider su LogLevel.Warning. La configurazione per il provider ApplicationInsights, in particolare per le categorie che iniziano con "ValuesController", sostituisce questo valore predefinito con LogLevel.Error e versioni successive.
{
//... additional code removed for brevity
"Logging": {
"LogLevel": { // No provider, LogLevel applies to all the enabled providers.
"Default": "Warning"
},
"ApplicationInsights": { // Specific to the provider, LogLevel applies to the Application Insights provider.
"LogLevel": {
"ValuesController": "Error" //Log Level for the "ValuesController" category
}
}
}
}
La distribuzione dell'applicazione di esempio con il codice precedente in appsettings.json restituirà solo la traccia degli errori inviata ad Application Insights durante l'interazione con ValuesController. Ciò è dovuto al fatto che la categoria LogLevel per ValuesController è impostata su Error. Pertanto, la traccia di avviso viene eliminata.
Disattivare la registrazione in Application Insights
Per disabilitare la registrazione tramite la configurazione, impostare tutti i valori LogLevel su "Nessuno".
{
//... additional code removed for brevity
"Logging": {
"LogLevel": { // No provider, LogLevel applies to all the enabled providers.
"Default": "None"
},
"ApplicationInsights": { // Specific to the provider, LogLevel applies to the Application Insights provider.
"LogLevel": {
"ValuesController": "None" //Log Level for the "ValuesController" category
}
}
}
}
Analogamente, all'interno del codice, impostare il livello predefinito per ApplicationInsightsLoggerProvider
e i livelli di log successivi su Nessuno.
var builder = WebApplication.CreateBuilder(args);
builder.Logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.None);
builder.Logging.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("ValuesController", LogLevel.None);
SDK open source
Per gli aggiornamenti e le correzioni di bug più recenti, vedere le note sulla versione.
Passaggi successivi
- Esplorare i flussi utente per comprendere in che modo 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.
- Panoramica della disponibilità
- Inserimento delle dipendenze in ASP.NET Core
- Registrazione in ASP.NET Core
- Log di traccia .NET in Application Insights
- Strumentazione automatica per Application Insights