Condividi tramite


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.0a . È 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

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.

Screenshot dell'elenco di risorse di Azure distribuito nella portale di Azure con il suffisso a sei caratteri evidenziato.

Creare una risorsa di Application Insights

  1. Nella portale di Azure selezionare il gruppo di risorse application-insights-azure-café.

  2. Nel menu della barra degli strumenti superiore selezionare + Crea.

    Screenshot del gruppo di risorse application-insights-azure-café nel portale di Azure con il pulsante + Crea evidenziato nel menu della barra degli strumenti.

  3. Nella schermata Crea una risorsa cercare e selezionare Application Insights nella casella di testo ricerca marketplace.

    Screenshot della schermata Crea una risorsa nella portale di Azure.

  4. Nella schermata panoramica delle risorse di Application Insights selezionare Crea.

    Screenshot della schermata panoramica di Application Insights nella portale di Azure con il pulsante Crea evidenziato.

  5. 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.

    Screenshot della scheda Nozioni di base della schermata Application Insights nella portale di Azure con un modulo popolato con i valori precedenti.

  6. Dopo aver superato la convalida, selezionare Crea per distribuire la risorsa.

    Screenshot della schermata di Application Insights nella portale di Azure. Il messaggio che indica che la convalida è passata e il pulsante Crea è entrambi evidenziati.

  7. Dopo aver distribuito la risorsa, tornare al application-insights-azure-cafe gruppo di risorse e selezionare la risorsa Application Insights distribuita.

    Screenshot del gruppo di risorse application-insights-azure-café nella portale di Azure con la risorsa Application Insights evidenziata.

  8. 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.

    Screenshot della schermata Panoramica di Application Insights nella portale di Azure.

Configurare l'impostazione dell'applicazione stringa di connessione Application Insights nel web servizio app

  1. Tornare al application-insights-azure-cafe gruppo di risorse e aprire la risorsa azure-café-web-{SUFFIX} servizio app.

    Screenshot del gruppo di risorse application-insights-azure-café nella portale di Azure con la risorsa azure-café-web-{SUFFIX} evidenziata.

  2. Nel menu a sinistra selezionare Configurazione nella sezione Impostazioni. Quindi, nella scheda Impostazioni applicazione selezionare + Nuova impostazione applicazione sotto l'intestazione Impostazioni applicazione.

    Screenshot della schermata della risorsa servizio app nella portale di Azure.

  3. 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.

    Screenshot del riquadro Aggiungi/Modifica applicazione nel portale di Azure con i valori precedenti popolati nei campi Nome e Valore.

  4. Nella schermata servizio app Configurazione selezionare il pulsante Salva dal menu della barra degli strumenti. Quando viene richiesto di salvare le modifiche, selezionare Continua.

    Screenshot della schermata di configurazione servizio app nella portale di Azure con il pulsante Salva evidenziato nel menu della barra degli strumenti.

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.

  1. In Visual Studio aprire 1 - Starter Application\src\AzureCafe.sln.

  2. 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.

    Screenshot del Esplora soluzioni di Visual Studio con il progetto Azure Cafe selezionato e la voce di menu di scelta rapida Gestisci pacchetti NuGet evidenziata.

  3. 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.

    Screenshot dell'interfaccia utente di Gestione pacchetti NuGet in Visual Studio.

    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.

  1. Dal Esplora soluzioni di Visual Studio aprire il file Program.cs.

    Screenshot del Esplora soluzioni di Visual Studio con il file Program.cs evidenziato.

  2. Inserire il codice seguente prima dell'istruzione builder.Services.AddControllersWithViews() . Questo codice legge automaticamente il valore di Application Insights stringa di connessione dalla configurazione. Il AddApplicationInsightsTelemetry metodo registra con ApplicationInsightsLoggerProvider il contenitore di inserimento delle dipendenze predefinito che verrà quindi usato per soddisfare le richieste di implementazione ILogger e ILogger<TCategoryName> .

    builder.Services.AddApplicationInsightsTelemetry();
    

    Screenshot di una finestra del codice in Visual Studio con il frammento di codice precedente evidenziato.

    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.

  1. In Visual Studio Esplora soluzioni aprire \Views\_ViewImports.cshtml.

  2. Aggiungere il codice seguente alla fine del file esistente.

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    

    Screenshot del file _ViewImports.cshtml in Visual Studio con la riga di codice precedente evidenziata.

  3. 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)
    

    Screenshot del file _Layout.cshtml in Visual Studio con la riga di codice precedente evidenziata nella sezione head del file.

    Suggerimento

    Un'alternativa all'uso FullScript di è ScriptBody. 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>
    

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à.

  1. Dal Esplora soluzioni di Visual Studio aprire il file Program.cs.

  2. Nella parte superiore del file aggiungere l'istruzione seguente using .

    using Microsoft.ApplicationInsights.DependencyCollector;
    
  3. 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; });
    

    Screenshot di una finestra del codice in Visual Studio con il codice precedente evidenziato.

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.

  1. 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.

    Screenshot del Esplora soluzioni di Visual Studio con il progetto Azure Cafe selezionato e la voce di menu di scelta rapida Pubblica evidenziata.

  2. Selezionare Pubblica per alzare di livello il nuovo codice al Servizio app di Azure.

    Screenshot del profilo di pubblicazione di AzureCafe con il pulsante Pubblica evidenziato.

    Quando l'applicazione Web Azure Cafe viene pubblicata correttamente, viene visualizzata una nuova finestra del browser per l'applicazione Web Azure Cafe.

    Screenshot dell'applicazione Web Azure Cafe.

  3. Per generare alcuni dati di telemetria, seguire questa procedura nell'applicazione Web per aggiungere una revisione.

    1. Per visualizzare il menu e le recensioni di un caffè, selezionare Dettagli accanto a un caffè.

      Screenshot di una parte dell'elenco di Azure Cafe nell'applicazione Web Azure Cafe con il pulsante Dettagli evidenziato.

    2. Per visualizzare e aggiungere recensioni, nella schermata Cafe selezionare la scheda Recensioni . Selezionare il pulsante Aggiungi revisione per aggiungere una recensione.

      Screenshot della schermata dettagli Cafe nell'applicazione Web Azure Cafe con il pulsante Aggiungi revisione evidenziato.

    3. 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.

      Screenshot della finestra di dialogo Crea una revisione nell'applicazione Web Azure Cafe.

    4. 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).

Diagramma che mostra l'architettura dell'applicazione Web di esempio Azure Cafe.

Application Insights introspetta i dati di telemetria in ingresso ed è in grado di generare una mappa visiva delle integrazioni di sistema rilevate.

  1. Accedere al portale di Azure.

  2. Aprire il gruppo di risorse per l'applicazione di esempio, ovvero application-insights-azure-cafe.

  3. Nell'elenco delle risorse selezionare la azure-cafe-insights-{SUFFIX} risorsa di Application Insights.

  4. Nel menu a sinistra, sotto l'intestazione Analisi , selezionare Mappa delle applicazioni. Osservare la mappa dell'applicazione generata.

    Screenshot della mappa delle applicazioni di Application Insights nel portale di Azure.

Visualizzazione di chiamate HTTP e testo del comando SQL del database

  1. Nel portale di Azure aprire la risorsa di Application Insights.

  2. Nel menu a sinistra, sotto l'intestazione Analisi , selezionare Prestazioni.

  3. 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.

    Screenshot della schermata Prestazioni nel portale di Azure.

  4. Selezionare un'operazione dalla tabella e scegliere di eseguire il drill-in un esempio della richiesta.

    Screenshot della schermata Prestazioni di Application Insights nell'portale di Azure con operazioni e operazioni di esempio elencate.

    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.

    Screenshot della transazione end-to-end nel portale di Azure con la chiamata HTTP Post selezionata.

  5. Selezionare un elemento SQL per esaminare il testo del comando SQL emesso nel database.

    Screenshot della transazione end-to-end nel portale di Azure con i dettagli del comando SQL.

  6. Facoltativamente, selezionare le richieste di dipendenza (in uscita) ad Archiviazione di Azure o al servizio di linguaggio.

  7. 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.

    Screenshot della schermata Prestazioni di Application Insights nella portale di Azure con la scheda Dipendenze selezionata e la tabella Operazioni evidenziata.

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.

  1. Usando un browser Internet, aprire l'applicazione di esempio. Nella barra degli indirizzi aggiungere /api/Values e premere INVIO.

    Screenshot di una finestra del browser con /api/Valori accodati all'URL nella barra degli indirizzi.

  2. Nella portale di Azure attendere alcuni istanti e quindi selezionare la risorsa azure-café-insights-{SUFFIX} di Application Insights.

    Screenshot del gruppo di risorse application-insights-azure-café nel portale di Azure con la risorsa di Application Insights evidenziata.

  3. Nel menu a sinistra della risorsa di Application Insights selezionare Log nella sezione Monitoraggio.

  4. Nel riquadro Tabelle , sotto l'albero di Application Insights , fare doppio clic sulla tabella delle tracce .

  5. 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.

  6. 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