Teilen über


Migrieren von .NET Application Insights SDKs zu Azure Monitor OpenTelemetry

Dieser Leitfaden enthält eine Schritt-für-Schritt Anleitung für die Migration verschiedener .NET-Anwendungen von der Verwendung von Application Insights Software Development Kits (SDKs) zu Azure Monitor OpenTelemetry.

Erwarten Sie ähnliche Erfahrungen mit der Azure Monitor OpenTelemetry-Instrumentierung wie mit den Application Insights SDKs. Weitere Informationen und einen Vergleich nach einzelnen Features finden Sie unter Releasestatus von Features.

Wenn Sie mit der Verwendung von Application Insights beginnen und nicht von der Classic API migrieren müssen, finden Sie Informationen unter Enable Azure Monitor OpenTelemetry.

Hinweis

Informationen zu Azure-Funktions-Apps finden Sie unter Verwenden von OpenTelemetry mit Azure-Funktionen.

Voraussetzungen

  • Eine bereits mit Application Insights instrumentierte ASP.NET Core-Webanwendung ohne Anpassungen
  • Eine aktiv unterstützte Version von .NET

Tipp

Unsere Produktgruppe freut sich über Feedback zu dieser Dokumentation. Senden Sie Feedback an otel@microsoft.com, oder sehen Sie den Abschnitt Support an.

Entfernen des Application Insights SDK

Hinweis

Vergewissern Sie sich, dass Sie über eine aktuelle Sicherung Ihrer Anwendung verfügen, bevor Sie mit den hier beschriebenen Schritten fortfahren.

  1. Entfernen von NuGet-Paketen

    Entfernen Sie das Microsoft.ApplicationInsights.AspNetCore-Paket aus Ihrem csproj.

    dotnet remove package Microsoft.ApplicationInsights.AspNetCore
    
  2. Entfernen von Initialisierungscode und Anpassungen

    Entfernen Sie alle Verweise auf Application Insights-Typen aus Ihrer Codebasis.

    Tipp

    Nachdem Sie das Application Insights-Paket entfernt haben, können Sie Ihre Anwendung neu erstellen, um eine Liste von Verweisen abzurufen, die entfernt werden müssen.

    • Entfernen Sie Application Insights aus ServiceCollection, indem Sie die folgende Zeile löschen:

      builder.Services.AddApplicationInsightsTelemetry();
      
    • Entfernen Sie den Abschnitt ApplicationInsights aus appsettings.json.

      {
          "ApplicationInsights": {
              "ConnectionString": "<Your Connection String>"
          }
      }
      
  3. Bereinigen und Erstellen

    Überprüfen Sie ihr Bin-Verzeichnis, um sich zu vergewissern, dass alle Verweise auf Microsoft.ApplicationInsights.* entfernt wurden.

  4. Testen Ihrer Anwendung

    Vergewissern Sie sich, dass Ihre Anwendung keine unerwarteten Auswirkungen hat.

Tipp

Unsere Produktgruppe freut sich über Feedback zu dieser Dokumentation. Senden Sie Feedback an otel@microsoft.com, oder sehen Sie den Abschnitt Support an.

Aktivieren von OpenTelemetry

Es wird empfohlen, eine Ressource für die Entwicklung zu erstellen und deren Verbindungszeichenfolge zu verwenden, wenn Sie dieser Anleitung folgen.

Screenshot, der die Application Insights-Übersicht und die Verbindungszeichenfolge zeigt.

Planen Sie ein, die Verbindungszeichenfolge zu aktualisieren, um Telemetriedaten an die ursprüngliche Ressource zu senden, nachdem Sie sich vergewissert haben, dass die Migration erfolgreich war.

  1. Installieren Sie das Azure Monitor Distro

    Unsere Azure Monitor-Distribution ermöglicht die automatische Erfassung von Telemetriedaten durch die Integration von OpenTelemetry-Instrumentierungsbibliotheken zur Sammlung von Traces, Metriken, Logs und Ausnahmen und bietet darüber hinaus die Möglichkeit, benutzerdefinierte Telemetriedaten zu erfassen.

    Die Installation der Azure Monitor-Distribution ist mit dem OpenTelemetry SDK als Abhängigkeit verbunden.

    dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore
    
  2. Hinzufügen und Konfigurieren von OpenTelemetry und Azure Monitor

    Das OpenTelemery SDK muss beim Starten der Anwendung als Teil von ServiceCollection konfiguriert werden (in der Regel in der Datei Program.cs).

    Das Konzept von OpenTelemetry umfasst drei Signale: Ablaufverfolgungen, Metriken und Protokolle. Die Azure Monitor-Distribution konfiguriert jedes dieser Signale.

Program.cs

Im folgenden Codebeispiel werden die Grundlagen veranschaulicht:

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

Es empfiehlt sich, die Verbindungszeichenfolge in einer Umgebungsvariablen festzulegen:

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

Weitere Optionen zum Konfigurieren der Verbindungszeichenfolge finden Sie hier: Konfigurieren der Verbindungszeichenfolge für Application Insights.

Tipp

Unsere Produktgruppe freut sich über Feedback zu dieser Dokumentation. Senden Sie Feedback an otel@microsoft.com, oder sehen Sie den Abschnitt Support an.

Installieren und Konfigurieren von Instrumentierungsbibliotheken

Instrumentierungsbibliotheken können Ihrem Projekt hinzugefügt werden, um automatisch Telemetriedaten zu bestimmten Komponenten oder Abhängigkeiten zu sammeln.

Folgende Bibliotheken sind in der Distribution enthalten:

Anpassen von Instrumentierungsbibliotheken

Die Azure Monitor-Distribution beinhaltet die .NET OpenTelemetry-Instrumentierung für ASP.NET Core, HttpClient und SQLClient. Sie können diese enthaltenen Instrumentierungen anpassen oder mithilfe der OpenTelemetry-API manuell eine zusätzliche Instrumentierung hinzufügen.

Hier sind einige Beispiele für die Anpassung der Instrumentierung:

Anpassen von 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);
    };
});
Anpassen von 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);
    };
});
Anpassen von SqlClientInstrumentationOptions

Wir bieten zwar die SQLClient-Instrumentierung innerhalb unseres Pakets an, diese befindet sich allerdings noch in der Betaphase. Wenn sie ein stabiles Release erreicht, fügen wir sie als Standardpaketreferenz hinzu. Fügen Sie bis dahin Ihrem Projekt den OpenTelemetry.Instrumentation.SqlClient-Paketverweis hinzu, und verwenden Sie die zugehörige öffentliche API, um die SQLClient-Instrumentierung anzupassen.

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

Konfigurieren von Azure Monitor

Application Insights bietet über ApplicationInsightsServiceOptions viele weitere Konfigurationsoptionen.

Application Insights-Einstellung OpenTelemetry-Alternative
AddAutoCollectedMetricExtractor Nicht verfügbar
Anwendungsversion Legen Sie „service.version“ für die Ressource fest.
ConnectionString Sehen Sie sich die Anleitung zum Konfigurieren der Verbindungszeichenfolge an.
DependencyCollectionOptions N/V. Um Abhängigkeiten anzupassen, überprüfen Sie die verfügbaren Konfigurationsoptionen für entsprechende Instrumentierungsbibliotheken.
Entwicklermodus Nicht verfügbar
EnableActiveTelemetryConfigurationSetup Nicht verfügbar
Adaptivesampling aktivieren N/V. Nur die Stichprobenentnahme mit fester Rate wird unterstützt.
Modul für die Aktivierung der Herzschlag-Telemetrie von App-Diensten Nicht verfügbar
AktivierenSieDieJavaScript-Authentifizierungsverfolgung Nicht verfügbar
Modul zur Aktivierung der Azure-Instance-Metadaten-Telemetrie Nicht verfügbar
AktivierenSieDasAbhängigkeitsverfolgungstelemetriemodul Sehen Sie sich die Anleitung zum Filtern von Ablaufverfolgungen an.
Modul zur Aktivierung der Diagnosetelemetrie Nicht verfügbar
Ereigniszähler-Sammelmodul aktivieren Nicht verfügbar
HerzschlagAktivieren Nicht verfügbar
EnablePerformanceCounterCollectionModule Nicht verfügbar
AktiviereQuickPulseMetrikStream AzureMonitorOptions.EnableLiveMetrics
EnableRequestTrackingTelemetryModule Sehen Sie sich die Anleitung zum Filtern von Ablaufverfolgungen an.
Endpunktadresse Verwenden Sie „ConnectionString“.
InstrumentationKey Verwenden Sie „ConnectionString“.
RequestCollectionOptions N/V. Sehen Sie sich die Optionen für „OpenTelemetry.Instrumentation.AspNetCore“ an.

Entfernen benutzerdefinierter Konfigurationen

Die folgenden Szenarien sind optional und nur für erfahrene Benutzer bestimmt.

  • Wenn Sie über weitere Verweise auf TelemetryClient verfügen, die zur manuellen Erfassung von Telemetriedaten verwendet werden können, müssen diese entfernt werden.

  • Wenn Sie benutzerdefinierte Filter oder Anreicherungen in Form eines benutzerdefinierten Elements vom Typ TelemetryProcessor oder TelemetryInitializer hinzugefügt haben, müssen diese entfernt werden. Sie befinden sich in ServiceCollection.

    builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
    
    builder.Services.AddApplicationInsightsTelemetryProcessor<MyCustomTelemetryProcessor>();
    
  • Entfernen des JavaScript-Codeschnipsels

    Wenn Sie den vom Application Insights .NET SDK bereitgestellten Codeschnipsel verwendet haben, muss dieser ebenfalls entfernt werden. Vollständige Codebeispiele, die zeigen, was entfernt werden muss, finden Sie im Leitfaden Aktivieren der clientseitigen Telemetrie für Webanwendungen.

    Wenn Sie das JavaScript SDK zum Sammeln clientseitiger Telemetriedaten hinzugefügt haben, kann es ebenfalls entfernt werden, auch wenn es ohne .NET SDK weiterhin funktioniert. Vollständige Codebeispiele, die zeigen, was entfernt werden muss, finden Sie im Onboardingleitfaden für das JavaScript SDK.

  • Entfernen aller ggf. vorhandenen Visual Studio-Artefakte

    Wenn Sie Visual Studio für das Onboarding in Application Insights verwendet haben, sind in Ihrem Projekt möglicherweise noch mehr Dateien übrig.

    • Das Verzeichnis Properties/ServiceDependencies enthält unter Umständen einen Verweis auf Ihre Application Insights-Ressource.

Tipp

Unsere Produktgruppe freut sich über Feedback zu dieser Dokumentation. Senden Sie Feedback an otel@microsoft.com, oder sehen Sie den Abschnitt Support an.

Nächste Schritte

Tipp

Unsere Produktgruppe freut sich über Feedback zu dieser Dokumentation. Senden Sie Feedback an otel@microsoft.com, oder sehen Sie den Abschnitt Support an.

Unterstützung