Condividi tramite


Eseguire la migrazione dagli SDK di .NET Application Insights ad Azure Monitor OpenTelemetry

Questa guida fornisce istruzioni dettagliate per migrare diverse applicazioni .NET dall'uso ai kit di sviluppo software (SDK) di Application Insights ad Azure Monitor OpenTelemetry.

Ci si può aspettare un'esperienza simile con la strumentazione OpenTelemetry di Azure Monitor come con gli SDK di Application Insights. Per altre informazioni e un confronto funzionalità per funzionalità, vedere lo stato di rilascio delle funzionalità.

Se stai iniziando con Application Insights e non hai bisogno di migrare dall'API classica, consulta Abilitare Azure Monitor OpenTelemetry.

Nota

Per le app per le funzioni di Azure, vedere Usare OpenTelemetry con Funzioni di Azure.

Prerequisiti

  • Un'applicazione Web ASP.NET Core già instrumentata con Application Insights senza alcuna personalizzazione
  • Una versione attivamente supportata di .NET

Suggerimento

Si sta cercando attivamente di ottenere commenti e suggerimenti su questa documentazione per il nostro gruppo di prodotti. Inviare commenti e suggerimenti a [email protected] o consultare la sezione Assistenza clienti.

Rimuovere Application Insights SDK

Nota

Prima di procedere con questi passaggi, è necessario verificare se si è in possesso di un backup corrente dell'applicazione.

  1. Rimuovere i pacchetti NuGet

    Rimuovere il pacchetto Microsoft.ApplicationInsights.AspNetCore dal vostro csproj.

    dotnet remove package Microsoft.ApplicationInsights.AspNetCore
    
  2. Rimuovere il codice di inizializzazione e le personalizzazioni

    Rimuovere qualsiasi riferimento ai tipi di Application Insights nella codebase.

    Suggerimento

    Una volto rimosso il pacchetto di Application Insights, è possibile ricompilare l'applicazione per ottenere un elenco dei riferimenti che devono essere rimossi.

    • Rimuovere Application Insights da ServiceCollection eliminando la riga seguente:

      builder.Services.AddApplicationInsightsTelemetry();
      
    • Rimuovere la sezione ApplicationInsights da appsettings.json.

      {
          "ApplicationInsights": {
              "ConnectionString": "<Your Connection String>"
          }
      }
      
  3. Eseguire la pulizia e la compilazione

    Ispezionare la directory bin per verificare che tutti i riferimenti a Microsoft.ApplicationInsights.* siano stati rimossi.

  4. Testare l'applicazione

    Verificare che non vi siano conseguenze impreviste per l'applicazione.

Suggerimento

Si sta cercando attivamente di ottenere commenti e suggerimenti su questa documentazione per il nostro gruppo di prodotti. Inviare commenti e suggerimenti a [email protected] o consultare la sezione Assistenza clienti.

Abilitare OpenTelemetry

Quando si seguono queste istruzioni, è consigliabile creare una risorsa di sviluppo e usare la stringa di connessione.

Screenshot che mostra la panoramica di Application Insights e la stringa di connessione.

Pianificare l'aggiornamento della stringa di connessione per inviare i dati di telemetria alla risorsa originale dopo la conferma dell'esito positivo della migrazione.

  1. Installare la distribuzione di Monitoraggio di Azure

    La distribuzione di Monitoraggio di Azure abilita la telemetria automatica includendo librerie di strumentazione OpenTelemetry per raccogliere tracce, metriche, log ed eccezioni, inoltre consente di raccogliere dati di telemetria personalizzati.

    L'installazione della distribuzione Azure Monitor introduce OpenTelemetry SDK come dipendenza.

    dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore
    
  2. Aggiungere e configurare sia OpenTelemetry che Monitoraggio di Azure

    OpenTelemetry SDK deve essere configurato all'avvio dell'applicazione come parte del ServiceCollection, di solito nel Program.cs.

    Il concetto di OpenTelemetry ha tre segnali; Tracce, Metriche e Log. La distribuzione di Monitoraggio di Azure configura ciascuno di questi segnali.

Program.cs

Nell'esempio di codice riportato di seguito sono illustrati i dati principali.

using Azure.Monitor.OpenTelemetry.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        // Call AddOpenTelemetry() to add OpenTelemetry to your ServiceCollection.
        // Call UseAzureMonitor() to fully configure OpenTelemetry.
        builder.Services.AddOpenTelemetry().UseAzureMonitor();

        var app = builder.Build();
        app.MapGet("/", () => "Hello World!");
        app.Run();
    }
}

È consigliabile impostare la stringa di connessione in una variabile di ambiente:

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

Altre opzioni per configurare la stringa di connessione sono descritte in dettaglio qui: Configurare la stringa di connessione di Application Insights.

Suggerimento

Si sta cercando attivamente di ottenere commenti e suggerimenti su questa documentazione per il nostro gruppo di prodotti. Inviare commenti e suggerimenti a [email protected] o consultare la sezione Assistenza clienti.

Installare e configurare le librerie di strumentazione

Le librerie di strumentazione possono essere aggiunte al progetto per raccogliere automaticamente i dati di telemetria su componenti o dipendenze specifici.

Le librerie seguenti sono incluse nella distribuzione.

Personalizzazione delle librerie di strumentazione

La distribuzione di Monitoraggio di Azure include la strumentazione OpenTelemetry .NET per ASP.NET Core, HttpClient e SQLClient. È possibile personalizzare le strumentazioni incluse o aggiungere manualmente e autonomamente strumentazione aggiuntiva tramite l'API OpenTelemetry.

Di seguito sono riportati alcuni esempi di personalizzazione della strumentazione:

Personalizzazione di AspNetCoreTraceInstrumentationOptions
builder.Services.AddOpenTelemetry().UseAzureMonitor();
builder.Services.Configure<AspNetCoreTraceInstrumentationOptions>(options =>
{
    options.RecordException = true;
    options.Filter = (httpContext) =>
    {
        // only collect telemetry about HTTP GET requests
        return HttpMethods.IsGet(httpContext.Request.Method);
    };
});
Personalizzazione delle opzioni di strumentazione HttpClientTrace
builder.Services.AddOpenTelemetry().UseAzureMonitor();
builder.Services.Configure<HttpClientTraceInstrumentationOptions>(options =>
{
    options.RecordException = true;
    options.FilterHttpRequestMessage = (httpRequestMessage) =>
    {
        // only collect telemetry about HTTP GET requests
        return HttpMethods.IsGet(httpRequestMessage.Method.Method);
    };
});
Personalizzazione delle opzioni di SqlClientInstrumentation

Noi forniamo la strumentazione SQLClient nel nostro pacchetto mentre è ancora in beta. Quando raggiunge una versione stabile, verrà inclusa come riferimento al pacchetto standard. Fino ad allora, per personalizzare la strumentazione SQLClient, aggiungere il riferimento OpenTelemetry.Instrumentation.SqlClient al pacchetto del progetto e usare la relativa API pubblica.

dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
builder.Services.AddOpenTelemetry().UseAzureMonitor().WithTracing(builder =>
{
    builder.AddSqlClientInstrumentation(options =>
    {
        options.SetDbStatementForStoredProcedure = false;
    });
});

Configurare Monitoraggio di Azure

Application Insights offriva molte altre opzioni di configurazione tramite ApplicationInsightsServiceOptions.

Impostazione di Application Insights Alternativa a OpenTelemetry
AggiungiEstrattoreDiMetricheAutoRaccolte N/D
Versione dell'Applicazione Impostare "service.version" su Risorsa
stringa di connessione Vedere le istruzioni sulla configurazione della stringa di connessione.
Opzioni di Raccolta di Dipendenze Non Disponibile Per personalizzare le dipendenze, esaminare le opzioni di configurazione disponibili per le librerie di strumentazione applicabili.
DeveloperMode N/D
AbilitareImpostazioneConfigurazioneTelemetriaAttiva N/D
Abilita Campionamento Adattivo Non Disponibile È supportato solo il campionamento a frequenza fissa.
AbilitaModuloDiTelemetriaHeartbeatServiziApp N/D
AbilitaTracciamentoAutenticazioneJavaScript N/D
EnableAzureInstanceMetadataTelemetryModule N/D
AbilitaModuloDiTelemetriaTracciamentoDipendenza Consulta le istruzioni per filtrare le Tracce.
AbilitaModuloDiagnosticaTelemetria N/D
AbilitaModuloRaccoltaContatoriEventi N/D
AbilitaBattitoCuore N/D
AbilitaModuloRaccoltaContatoriPrestazioni N/D
Abilita il flusso di metriche QuickPulse AzureMonitorOptions.EnableLiveMetrics (Opzioni di Azure Monitor. Abilita Metriche Live)
Modulo di abilitazione della telemetria di tracciamento delle richieste Consulta le istruzioni per filtrare le Tracce.
Indirizzo di Endpoint Utilizzare ConnectionString.
Chiave di Strumentazione Utilizzare ConnectionString.
OpzioniRaccoltaRichieste Non Disponibile Consulta le opzioni di OpenTelemetry.Instrumentation.AspNetCore.

Rimuovere le configurazioni personalizzate

Gli scenari seguenti sono facoltativi e si applicano solo agli utenti avanzati.

  • Se sono presenti altri riferimenti a TelemetryClient che potrebbe essere usato per registrare manualmente i dati di telemetria, dovranno essere rimossi.

  • Se sono stati aggiunti filtri o arricchimenti personalizzati sotto forma di TelemetryProcessor o TelemetryInitializer personalizzati, dovranno essere rimossi. Sono disponibili in ServiceCollection.

    builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
    
    builder.Services.AddApplicationInsightsTelemetryProcessor<MyCustomTelemetryProcessor>();
    
  • Rimuovere il frammento di codice JavaScript

    Se è stato usato il frammento di codice fornito da Application Insights .NET SDK, dovrà essere rimosso anch’esso. Per gli esempi di codice completi sugli elementi da rimuovere, vedere la guida per abilitare i dati di telemetria sul lato client per le applicazioni Web.

    Se è stato aggiunto un JavaScript SDK per raccogliere i dati di telemetria lato client, è possibile rimuoverlo sebbene continui a funzionare senza .NET SDK. Per esempi di codice completi sugli elementi da rimuovere, vedere la Guida di onboarding per l'SDK di JavaScript.

  • Rimuovere tutti gli artefatti di Visual Studio

    Se è stato usato Visual Studio per eseguire l'onboarding ad Application Insights, è possibile che siano rimasti altri file nel progetto.

    • Nella directory Properties/ServiceDependencies potrebbe essere presente un riferimento alla risorsa di Application Insights.

Suggerimento

Si sta cercando attivamente di ottenere commenti e suggerimenti su questa documentazione per il nostro gruppo di prodotti. Inviare commenti e suggerimenti a [email protected] o consultare la sezione Assistenza clienti.

Passaggi successivi

Suggerimento

Si sta cercando attivamente di ottenere commenti e suggerimenti su questa documentazione per il nostro gruppo di prodotti. Inviare commenti e suggerimenti a [email protected] o consultare la sezione Assistenza clienti.

Supporto tecnico