Dela via


Migrera från .NET Application Insights SDK:er till Azure Monitor OpenTelemetry

Den här guiden innehåller stegvisa instruktioner för att migrera olika .NET-program från att använda Application Insights-programutvecklingspaket (SDK:er) till Azure Monitor OpenTelemetry.

Förvänta dig en liknande upplevelse med Azure Monitor OpenTelemetry-instrumentation som med Application Insights SDK:er. Mer information och en jämförelse av funktioner finns i versionstillstånd för funktioner.

Om du kommer igång med Application Insights och inte behöver migrera från det klassiska API:et, se Aktivera Azure Monitor OpenTelemetry.

Kommentar

Information om Azure Function Apps finns i Använda OpenTelemetry med Azure Functions.

Förutsättningar

  • Ett ASP.NET Core-webbprogram som redan har instrumenterats med Application Insights utan några anpassningar
  • En version av .NET som stöds aktivt

Tips

Vår produktgrupp söker aktivt feedback om den här dokumentationen. Ge feedback till otel@microsoft.com eller se avsnittet Support .

Ta bort Application Insights SDK

Kommentar

Innan du fortsätter med de här stegen bör du bekräfta att du har en aktuell säkerhetskopia av programmet.

  1. Ta bort NuGet-paket

    Ta bort Microsoft.ApplicationInsights.AspNetCore-paketet från din csproj.

    dotnet remove package Microsoft.ApplicationInsights.AspNetCore
    
  2. Ta bort initieringskod och anpassningar

    Ta bort alla referenser till Application Insights-typer i din kodbas.

    Tips

    När du har tagit bort Application Insights-paketet kan du återskapa ditt program för att hämta en lista med referenser som måste tas bort.

    • Ta bort Application Insights från din ServiceCollection genom att ta bort följande rad:

      builder.Services.AddApplicationInsightsTelemetry();
      
    • Ta bort ApplicationInsights-avsnittet från din appsettings.json.

      {
          "ApplicationInsights": {
              "ConnectionString": "<Your Connection String>"
          }
      }
      
  3. Rensa och bygga

    Kontrollera din bin-katalog för att verifiera att alla referenser till Microsoft.ApplicationInsights.* har tagits bort.

  4. Testa ditt program

    Kontrollera att programmet inte har några oväntade konsekvenser.

Tips

Vår produktgrupp söker aktivt feedback om den här dokumentationen. Ge feedback till otel@microsoft.com eller se avsnittet Support .

Aktivera OpenTelemetry

Vi rekommenderar att du skapar en utvecklingsresurs och använder dess anslutningssträng när du följer dessa instruktioner.

Skärmbild som visar Översikt över Application Insights och anslutningssträng.

Planera att uppdatera anslutningssträng för att skicka telemetri till den ursprungliga resursen när du har bekräftat att migreringen har slutförts.

  1. Installera Azure Monitor-distributionen

    Vår Azure Monitor-distribution möjliggör automatisk telemetri genom att inkludera OpenTelemetry-instrumentationsbibliotek för insamling av spårningar, mått, loggar och undantag, och tillåter insamling av anpassad telemetri.

    När du installerar Azure Monitor Distro får OpenTelemetry SDK som ett beroende.

    dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore
    
  2. Lägga till och konfigurera både OpenTelemetry och Azure Monitor

    Det OpenTelemery SDK måste konfigureras vid programstart som en del av din ServiceCollection, vanligtvis i Program.cs.

    OpenTelemetry har begreppet tre signaler; Spårningar, mått och loggar. Azure Monitor Distro konfigurerar var och en av dessa signaler.

Program.cs

Följande kodexempel visar grunderna.

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();
    }
}

Vi rekommenderar att du ställer in anslutningssträngen i en miljövariabel:

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

Fler alternativ för att konfigurera anslutningssträngen beskrivs här: Konfigurera Application Insights-anslutningssträngen.

Tips

Vår produktgrupp söker aktivt feedback om den här dokumentationen. Ge feedback till otel@microsoft.com eller se avsnittet Support .

Installera och konfigurera instrumentationsbibliotek

Instrumentationsbibliotek kan läggas till i projektet för automatisk insamling av telemetri om specifika komponenter eller beroenden.

Följande bibliotek ingår i distributionen.

Anpassa instrumentationsbibliotek

Azure Monitor Distro innehåller .NET OpenTelemetry-instrumentation för ASP.NET Core, HttpClient och SQLClient. Du kan anpassa dessa inkluderade instrumentationer eller manuellt lägga till extra instrumentation på egen hand med hjälp av OpenTelemetry-API:et.

Här följer några exempel på hur du anpassar instrumentationen:

Konfigurera 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);
    };
});
Anpassning av HttpClientTraceInstrumentationOptions
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);
    };
});
Anpassa SqlClientInstrumentationOptions

Vi tillhandahåller SQLClient-instrumentationen i vårt paket medan den fortfarande är i betaversion. När den når en stabil version tar vi med den som en standardpaketreferens. Tills dess, för att anpassa SQLClient-instrumentationen, lägger du till OpenTelemetry.Instrumentation.SqlClient paketreferensen till projektet och använder dess offentliga API.

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

Konfigurera Azure Monitor

Application Insights erbjöd många fler konfigurationsalternativ via ApplicationInsightsServiceOptions.

Application Insights-inställning Alternativ till OpenTelemetry
LäggTillAutomatisktInsamladMetrikExtraktor Ej tillämpligt
Applikationsversion Ange "service.version" på Resurs
Anslutningssträng Se anvisningar om hur du konfigurerar anslutningssträngen.
Alternativ för Samling av Beroenden Saknas. Om du vill anpassa beroenden läser du de tillgängliga konfigurationsalternativen för tillämpliga instrumentationsbibliotek.
Utvecklarläge Ej tillämpligt
AktiveraInställningFörAktivTelemetrikonfiguration Ej tillämpligt
Aktivera adaptiv provtagning Saknas. Endast fast taktprovtagning stöds.
AktiveraAppTjänsterHjärtslagsTelemetriModul Ej tillämpligt
AktiveraAutentiseringsSpårningsJavaScript Ej tillämpligt
Aktivera Azure Instance Metadata Telemetry Module Ej tillämpligt
Aktivera beroendespårningsmodulen för telemetri Se instruktioner för filtrering av spårningar.
AktiveraDiagnostikTelemetrimodul Ej tillämpligt
AktiveraHändelseRäknarInsamlingsModul Ej tillämpligt
AktiveraHjärtslag Ej tillämpligt
AktiveraPrestationsräknarInsamlingsModul Ej tillämpligt
Aktivera snabbpulsmätarström AzureMonitorOptions.EnableLiveMetrics
Aktivera förfrågningsspårnings-telemetrimodul Se instruktioner för filtrering av spårningar.
Slutpunktsadress Använd ConnectionString.
Instrumentationsnyckel Använd ConnectionString.
BegäranOmInsamlingsalternativ Saknas. Se Alternativ för OpenTelemetry.Instrumentation.AspNetCore.

Ta bort anpassade konfigurationer

Följande scenarier är valfria och gäller endast för avancerade användare.

  • Om du har fler referenser till TelemetryClient, som kan användas för att manuellt registrera telemetri, bör de tas bort.

  • Om du har lagt till någon anpassad filtrering eller berikning i form av en anpassad TelemetryProcessor eller TelemetryInitializer, bör de tas bort. De finns i din ServiceCollection.

    builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
    
    builder.Services.AddApplicationInsightsTelemetryProcessor<MyCustomTelemetryProcessor>();
    
  • Ta bort JavaScript-kodfragment

    Om du använde kodfragmentet som tillhandahålls av Application Insights .NET SDK måste det också tas bort. Fullständiga kodexempel på vad du vill ta bort finns i guiden aktivera telemetri på klientsidan för webbprogram.

    Om du har lagt till JavaScript SDK för att samla in telemetri på klientsidan kan den också tas bort även om den fortsätter att fungera utan .NET SDK. Fullständiga kodexempel på vad du vill ta bort finns i registreringsguiden för JavaScript SDK.

  • Ta bort alla Visual Studio-artefakter

    Om du använde Visual Studio för att registrera dig för Application Insights kan du ha fler filer kvar i projektet.

    • Properties/ServiceDependencies-katalogen kan ha en referens till Application Insights-resursen.

Tips

Vår produktgrupp söker aktivt feedback om den här dokumentationen. Ge feedback till otel@microsoft.com eller se avsnittet Support .

Nästa steg

Tips

Vår produktgrupp söker aktivt feedback om den här dokumentationen. Ge feedback till otel@microsoft.com eller se avsnittet Support .

Stöd