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.
Voraussetzungen
- Eine bereits mit Application Insights instrumentierte ASP.NET Core-Webanwendung ohne Anpassungen
- Eine aktiv unterstützte Version von .NET
- Eine bereits mit Application Insights instrumentierte ASP.NET-Webanwendung
- Eine aktiv unterstützte Version von .NET Framework
- Eine bereits mit Application Insights instrumentierte Konsolenanwendung
- Eine aktiv unterstützte Version von .NET Framework oder .NET
- Eine bereits mit Application Insights instrumentierte WorkerService-Anwendung 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.
Entfernen von NuGet-Paketen
Entfernen Sie das Microsoft.ApplicationInsights.AspNetCore
-Paket aus Ihrem csproj
.
dotnet remove package Microsoft.ApplicationInsights.AspNetCore
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>"
}
}
Bereinigen und Erstellen
Überprüfen Sie ihr Bin-Verzeichnis, um sich zu vergewissern, dass alle Verweise auf Microsoft.ApplicationInsights.*
entfernt wurden.
Testen Ihrer Anwendung
Vergewissern Sie sich, dass Ihre Anwendung keine unerwarteten Auswirkungen hat.
Entfernen von NuGet-Paketen
Entfernen Sie das Paket Microsoft.AspNet.TelemetryCorrelation
und alle ggf. vorhandenen Pakete vom Typ Microsoft.ApplicationInsights.*
aus csproj
und packages.config
.
Löschen der Datei ApplicationInsights.config
Löschen eines Abschnitts aus der Datei Web.config
Ihrer Anwendung
Beim ersten Hinzufügen von Application Insights zu Ihrem Projekt wurden der Datei „web.config“ automatisch zwei HTTP-Module (HttpModules) hinzugefügt.
Alle Verweise auf TelemetryCorrelationHttpModule
und ApplicationInsightsWebTracking
müssen entfernt werden.
Wenn Sie Application Insights zu Ihren Internet Information Server (IIS) Modulen hinzugefügt haben, sollte es ebenfalls entfernt werden.
<configuration>
<system.web>
<httpModules>
<add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
</system.web>
<system.webServer>
<modules>
<remove name="TelemetryCorrelationHttpModule" />
<add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="managedHandler" />
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>
</system.webServer>
</configuration>
Überprüfen Sie außerdem alle Umleitungen von Assemblyversionen, die der Datei „web.config“ hinzugefügt wurden.
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 Verweise auf
TelemetryConfiguration
oder TelemetryClient
. Dies ist Teil Ihres Anwendungsstarts, um das Application Insights SDK zu initialisieren.
Die folgenden Szenarien sind optional und für erfahrene Benutzer bestimmt.
- Wenn Sie über weitere Verweise auf
TelemetryClient
verfügen, die zur manuellen Erfassung von Telemetriedaten verwendet werden, 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. Auf sie wird in Ihrer Konfiguration verwiesen.
- Wenn Ihr Projekt über eine Datei vom Typ
FilterConfig.cs
im Verzeichnis App_Start
verfügt, suchen Sie nach ggf. vorhandenen benutzerdefinierten Ausnahmehandlern, die auf Application Insights verweisen, und entfernen Sie sie.
Entfernen des JavaScript-Codeschnipsels
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.
ConnectedService.json
enthält unter Umständen einen Verweis auf Ihre Application Insights-Ressource.
[Your project's name].csproj
enthält unter Umständen einen Verweis auf Ihre Application Insights-Ressource:
<ApplicationInsightsResourceId>/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4</ApplicationInsightsResourceId>
Bereinigen und Erstellen
Überprüfen Sie ihr Bin-Verzeichnis, um sich zu vergewissern, dass alle Verweise auf Microsoft.ApplicationInsights.
entfernt wurden.
Testen Ihrer Anwendung
Vergewissern Sie sich, dass Ihre Anwendung keine unerwarteten Auswirkungen hat.
Entfernen von NuGet-Paketen
Entfernen Sie alle ggf. vorhandenen Pakete vom Typ Microsoft.ApplicationInsights.*
aus csproj
und packages.config
.
dotnet remove package Microsoft.ApplicationInsights
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 Verweise auf TelemetryConfiguration
oder TelemetryClient
. Dies muss Teil Ihres Anwendungsstarts sein, um das Application Insights SDK zu initialisieren.
var config = TelemetryConfiguration.CreateDefault();
var client = new TelemetryClient(config);
Tipp
Wenn Sie AddApplicationInsightsTelemetryWorkerService()
verwendet haben, um Application Insights zu ServiceCollection
hinzuzufügen, sehen Sie sich die Registerkarten für WorkerService an.
Bereinigen und Erstellen
Überprüfen Sie ihr Bin-Verzeichnis, um sich zu vergewissern, dass alle Verweise auf Microsoft.ApplicationInsights.
entfernt wurden.
Testen Ihrer Anwendung
Vergewissern Sie sich, dass Ihre Anwendung keine unerwarteten Auswirkungen hat.
Entfernen von NuGet-Paketen
Entfernen Sie das Microsoft.ApplicationInsights.WorkerService
-Paket aus Ihrem csproj
.
dotnet remove package Microsoft.ApplicationInsights.WorkerService
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.AddApplicationInsightsTelemetryWorkerService();
Entfernen Sie den Abschnitt ApplicationInsights
aus appsettings.json
.
{
"ApplicationInsights": {
"ConnectionString": "<Your Connection String>"
}
}
Bereinigen und Erstellen
Überprüfen Sie ihr Bin-Verzeichnis, um sich zu vergewissern, dass alle Verweise auf Microsoft.ApplicationInsights.*
entfernt wurden.
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.
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.
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
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.
Installieren des OpenTelemetry SDK über Azure Monitor
Die Installation der Azure Monitor Exporter-Komponente ist mit dem OpenTelemetry SDK als Abhängigkeit verbunden.
dotnet add package Azure.Monitor.OpenTelemetry.Exporter
Konfigurieren von OpenTelemetry als Teil des Anwendungsstarts
Das OpenTelemery SDK muss beim Starten der Anwendung konfiguriert werden (in der Regel in der Datei Global.asax.cs
).
Das Konzept von OpenTelemetry umfasst drei Signale: Ablaufverfolgungen, Metriken und Protokolle.
Jedes dieser Signale muss als Teil des Anwendungsstarts konfiguriert werden.
TracerProvider
, MeterProvider
und ILoggerFactory
müssen einmal für Ihre Anwendung erstellt und wieder gelöscht werden, wenn die Anwendung heruntergefahren wird.
Global.asax.cs
Das folgende einfache Codebeispiel zeigt lediglich die Grundlagen.
An diesem Punkt werden keine Telemetriedaten gesammelt.
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
public class Global : System.Web.HttpApplication
{
private TracerProvider? tracerProvider;
private MeterProvider? meterProvider;
// The LoggerFactory needs to be accessible from the rest of your application.
internal static ILoggerFactory loggerFactory;
protected void Application_Start()
{
this.tracerProvider = Sdk.CreateTracerProviderBuilder()
.Build();
this.meterProvider = Sdk.CreateMeterProviderBuilder()
.Build();
loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry();
});
}
protected void Application_End()
{
this.tracerProvider?.Dispose();
this.meterProvider?.Dispose();
loggerFactory?.Dispose();
}
}
Installieren des OpenTelemetry SDK über Azure Monitor
Die Installation von Azure Monitor Exporter ist mit dem OpenTelemetry SDK als Abhängigkeit verbunden.
dotnet add package Azure.Monitor.OpenTelemetry.Exporter
Konfigurieren von OpenTelemetry als Teil des Anwendungsstarts
Das OpenTelemery SDK muss beim Starten der Anwendung konfiguriert werden (in der Regel in der Datei Program.cs
).
Das Konzept von OpenTelemetry umfasst drei Signale: Ablaufverfolgungen, Metriken und Protokolle.
Jedes dieser Signale muss als Teil des Anwendungsstarts konfiguriert werden.
TracerProvider
, MeterProvider
und ILoggerFactory
müssen einmal für Ihre Anwendung erstellt und wieder gelöscht werden, wenn die Anwendung heruntergefahren wird.
Das folgende einfache Codebeispiel zeigt lediglich die Grundlagen.
An diesem Punkt werden keine Telemetriedaten gesammelt.
Program.cs
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
internal class Program
{
static void Main(string[] args)
{
TracerProvider tracerProvider = Sdk.CreateTracerProviderBuilder()
.Build();
MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder()
.Build();
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry();
});
Console.WriteLine("Hello, World!");
// Dispose tracer provider before the application ends.
// It will flush the remaining spans and shutdown the tracing pipeline.
tracerProvider.Dispose();
// Dispose meter provider before the application ends.
// It will flush the remaining metrics and shutdown the metrics pipeline.
meterProvider.Dispose();
// Dispose logger factory before the application ends.
// It will flush the remaining logs and shutdown the logging pipeline.
loggerFactory.Dispose();
}
}
Installieren des OpenTelemetry SDK über Azure Monitor
Die Installation von Azure Monitor Exporter ist mit dem OpenTelemetry SDK als Abhängigkeit verbunden.
dotnet add package Azure.Monitor.OpenTelemetry.Exporter
Auch das Paket OpenTelemetry Extensions Hosting muss installiert werden.
dotnet add package OpenTelemetry.Extensions.Hosting
Konfigurieren von OpenTelemetry als Teil des Anwendungsstarts
Das OpenTelemery SDK muss beim Starten der Anwendung konfiguriert werden (in der Regel in der Datei Program.cs
).
Das Konzept von OpenTelemetry umfasst drei Signale: Ablaufverfolgungen, Metriken und Protokolle.
Jedes dieser Signale muss als Teil des Anwendungsstarts konfiguriert werden.
TracerProvider
, MeterProvider
und ILoggerFactory
müssen einmal für Ihre Anwendung erstellt und wieder gelöscht werden, wenn die Anwendung heruntergefahren wird.
Das folgende einfache Codebeispiel zeigt lediglich die Grundlagen.
An diesem Punkt werden keine Telemetriedaten gesammelt.
Program.cs
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class Program
{
public static void Main(string[] args)
{
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService<Worker>();
builder.Services.AddOpenTelemetry()
.WithTracing()
.WithMetrics();
builder.Logging.AddOpenTelemetry();
var host = builder.Build();
host.Run();
}
}
Tipp
Unsere Produktgruppe freut sich über Feedback zu dieser Dokumentation. Senden Sie Feedback an otel@microsoft.com, oder sehen Sie den Abschnitt Support an.
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;
});
});
Instrumentierungsbibliotheken können Ihrem Projekt hinzugefügt werden, um automatisch Telemetriedaten zu bestimmten Komponenten oder Abhängigkeiten zu sammeln. Folgende Bibliotheken werden empfohlen:
OpenTelemetry.Instrumentation.AspNet kann verwendet werden, um Telemetriedaten für eingehende Anforderungen zu sammeln. Azure Monitor ordnet es der Anforderungstelemetrie zu.
dotnet add package OpenTelemetry.Instrumentation.AspNet
Hierzu muss Web.config
ein zusätzliches HTTP-Modul (HttpModule) hinzugefügt werden:
<system.webServer>
<modules>
<add
name="TelemetryHttpModule"
type="OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule,
OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule"
preCondition="integratedMode,managedHandler" />
</modules>
</system.webServer>
Einen vollständigen Leitfaden für die ersten Schritte finden Sie hier: OpenTelemetry.Instrumentation.AspNet Readme.
OpenTelemetry.Instrumentation.Http kann verwendet werden, um Telemetriedaten für ausgehende HTTP-Abhängigkeiten zu sammeln. Azure Monitor ordnet sie Abhängigkeitstelemetrie zu.
dotnet add package OpenTelemetry.Instrumentation.Http
Einen vollständigen Leitfaden für den Einstieg finden Sie hier: OpenTelemetry.Instrumentation.Http Readme.
OpenTelemetry.Instrumentation.SqlClient kann verwendet werden, um Telemetriedaten für MS SQL-Abhängigkeiten zu sammeln. Azure Monitor ordnet sie Abhängigkeitstelemetrie zu.
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
Einen vollständigen Einführungsleitfaden finden Sie hier: OpenTelemetry.Instrumentation.SqlClient Readme.
Global.asax.cs
Im folgenden Codebeispiel wird das vorherige Beispiel erweitert.
Nun werden Telemetriedaten gesammelt, aber noch nicht an Application Insights gesendet.
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
public class Global : System.Web.HttpApplication
{
private TracerProvider? tracerProvider;
private MeterProvider? meterProvider;
internal static ILoggerFactory loggerFactory;
protected void Application_Start()
{
this.tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAspNetInstrumentation()
.AddHttpClientInstrumentation()
.AddSqlClientInstrumentation()
.Build();
this.meterProvider = Sdk.CreateMeterProviderBuilder()
.AddAspNetInstrumentation()
.AddHttpClientInstrumentation()
.Build();
loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry();
});
}
protected void Application_End()
{
this.tracerProvider?.Dispose();
this.meterProvider?.Dispose();
loggerFactory?.Dispose();
}
}
Instrumentierungsbibliotheken können Ihrem Projekt hinzugefügt werden, um automatisch Telemetriedaten zu bestimmten Komponenten oder Abhängigkeiten zu sammeln. Folgende Bibliotheken werden empfohlen:
OpenTelemetry.Instrumentation.Http kann verwendet werden, um Telemetriedaten für ausgehende HTTP-Abhängigkeiten zu sammeln. Azure Monitor ordnet sie Abhängigkeitstelemetrie zu.
dotnet add package OpenTelemetry.Instrumentation.Http
Einen vollständigen Leitfaden für den Einstieg finden Sie hier: OpenTelemetry.Instrumentation.Http Readme.
OpenTelemetry.Instrumentation.SqlClient kann verwendet werden, um Telemetriedaten für MS SQL-Abhängigkeiten zu sammeln. Azure Monitor ordnet sie Abhängigkeitstelemetrie zu.
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
Einen vollständigen Einführungsleitfaden finden Sie hier: OpenTelemetry.Instrumentation.SqlClient Readme.
Im folgenden Codebeispiel wird das vorherige Beispiel erweitert.
Nun werden Telemetriedaten gesammelt, aber noch nicht an Application Insights gesendet.
Program.cs
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
internal class Program
{
static void Main(string[] args)
{
TracerProvider tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddHttpClientInstrumentation()
.AddSqlClientInstrumentation()
.Build();
MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder()
.AddHttpClientInstrumentation()
.Build();
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry();
});
Console.WriteLine("Hello, World!");
tracerProvider.Dispose();
meterProvider.Dispose();
loggerFactory.Dispose();
}
}
Instrumentierungsbibliotheken können Ihrem Projekt hinzugefügt werden, um automatisch Telemetriedaten zu bestimmten Komponenten oder Abhängigkeiten zu sammeln. Folgende Bibliotheken werden empfohlen:
OpenTelemetry.Instrumentation.Http kann verwendet werden, um Telemetriedaten für ausgehende HTTP-Abhängigkeiten zu sammeln. Azure Monitor ordnet sie Abhängigkeitstelemetrie zu.
dotnet add package OpenTelemetry.Instrumentation.Http
Einen vollständigen Leitfaden für den Einstieg finden Sie hier: OpenTelemetry.Instrumentation.Http Readme.
OpenTelemetry.Instrumentation.SqlClient kann verwendet werden, um Telemetriedaten für MS SQL-Abhängigkeiten zu sammeln. Azure Monitor ordnet sie Abhängigkeitstelemetrie zu.
dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
Einen vollständigen Einführungsleitfaden finden Sie hier: OpenTelemetry.Instrumentation.SqlClient Readme.
Im folgenden Codebeispiel wird das vorherige Beispiel erweitert.
Nun werden Telemetriedaten gesammelt, aber noch nicht an Application Insights gesendet.
Program.cs
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class Program
{
public static void Main(string[] args)
{
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService<Worker>();
builder.Services.AddOpenTelemetry()
.WithTracing(builder =>
{
builder.AddHttpClientInstrumentation();
builder.AddSqlClientInstrumentation();
})
.WithMetrics(builder =>
{
builder.AddHttpClientInstrumentation();
});
builder.Logging.AddOpenTelemetry();
var host = builder.Build();
host.Run();
}
}
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.
Um Ihre Telemetrie an Application Insights zu senden, muss der Azure Monitor-Exporter der Konfiguration aller drei Signale hinzugefügt werden.
Global.asax.cs
Im folgenden Codebeispiel wird das vorherige Beispiel erweitert.
Nun werden Telemetriedaten gesammelt und an Application Insights gesendet.
public class Global : System.Web.HttpApplication
{
private TracerProvider? tracerProvider;
private MeterProvider? meterProvider;
internal static ILoggerFactory loggerFactory;
protected void Application_Start()
{
this.tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAspNetInstrumentation()
.AddHttpClientInstrumentation()
.AddSqlClientInstrumentation()
.AddAzureMonitorTraceExporter()
.Build();
this.meterProvider = Sdk.CreateMeterProviderBuilder()
.AddAspNetInstrumentation()
.AddHttpClientInstrumentation()
.AddAzureMonitorMetricExporter()
.Build();
loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(logging => logging.AddAzureMonitorLogExporter());
});
}
protected void Application_End()
{
this.tracerProvider?.Dispose();
this.meterProvider?.Dispose();
loggerFactory?.Dispose();
}
}
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.
Um Ihre Telemetrie an Application Insights zu senden, muss der Azure Monitor-Exporter der Konfiguration aller drei Signale hinzugefügt werden.
Program.cs
Im folgenden Codebeispiel wird das vorherige Beispiel erweitert.
Nun werden Telemetriedaten gesammelt und an Application Insights gesendet.
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
internal class Program
{
static void Main(string[] args)
{
TracerProvider tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddHttpClientInstrumentation()
.AddSqlClientInstrumentation()
.AddAzureMonitorTraceExporter()
.Build();
MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder()
.AddHttpClientInstrumentation()
.AddAzureMonitorMetricExporter()
.Build();
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(logging => logging.AddAzureMonitorLogExporter());
});
Console.WriteLine("Hello, World!");
tracerProvider.Dispose();
meterProvider.Dispose();
loggerFactory.Dispose();
}
}
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.
Entfernen benutzerdefinierter Konfigurationen
Die folgenden Szenarien sind optional und für erfahrene Benutzer bestimmt.
Wenn Sie über weitere Verweise auf TelemetryClient
verfügen, was zur manuellen Erfassung von Telemetriedaten verwendet wird, müssen diese entfernt werden.
Entfernen Sie alle ggf. vorhandenen benutzerdefinierten Filter oder Anreicherungen, die als benutzerdefiniertes Element vom Typ TelemetryProcessor
oder TelemetryInitializer
hinzugefügt wurden. Die Konfiguration bezieht sich auf sie.
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.
ConnectedService.json
enthält unter Umständen einen Verweis auf Ihre Application Insights-Ressource.
[Your project's name].csproj
enthält unter Umständen einen Verweis auf Ihre Application Insights-Ressource:
<ApplicationInsightsResourceId>/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4</ApplicationInsightsResourceId>
Um Ihre Telemetrie an Application Insights zu senden, muss der Azure Monitor-Exporter der Konfiguration aller drei Signale hinzugefügt werden.
Program.cs
Im folgenden Codebeispiel wird das vorherige Beispiel erweitert.
Nun werden Telemetriedaten gesammelt und an Application Insights gesendet.
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class Program
{
public static void Main(string[] args)
{
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService<Worker>();
builder.Services.AddOpenTelemetry()
.WithTracing(builder =>
{
builder.AddHttpClientInstrumentation();
builder.AddSqlClientInstrumentation();
builder.AddAzureMonitorTraceExporter();
})
.WithMetrics(builder =>
{
builder.AddHttpClientInstrumentation();
builder.AddAzureMonitorMetricExporter();
});
builder.Logging.AddOpenTelemetry(logging => logging.AddAzureMonitorLogExporter());
var host = builder.Build();
host.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.
Weitere Konfigurationen
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 |
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 |
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 |
Endpunktadresse |
Verwenden Sie „ConnectionString“. |
InstrumentationKey |
Verwenden Sie „ConnectionString“. |
Entfernen benutzerdefinierter Konfigurationen
Die folgenden Szenarien sind optional und für erfahrene Benutzer bestimmt.
Wenn Sie über weitere Verweise auf TelemetryClient
verfügen, die zur manuellen Erfassung von Telemetriedaten verwendet werden, 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. Entsprechende Verweise befinden sich in ServiceCollection
.
builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
builder.Services.AddApplicationInsightsTelemetryProcessor<MyCustomTelemetryProcessor>();
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