Aktivieren von Azure Monitor OpenTelemetry für .NET-, Node.js-, Python und Java-Anwendungen

In diesem Artikel wird beschrieben, wie Sie die auf OpenTelemetry basierende Datensammlung aktivieren und konfigurieren, um die Funktionen in Azure Monitor Application Insights zu nutzen. Wir erfahren, wie Sie die „Azure Monitor OpenTelemetry-Distro“ installieren. Die Distribution erfasst automatisch Ablaufverfolgungen, Metriken, Protokolle und Ausnahmen für Ihre Anwendung und deren Abhängigkeiten. Weitere Informationen zum Sammeln von Daten mittels OpenTelemetry finden Sie unter Grundlagen der Datensammlung oder in den FAQ zu OpenTelemetry.

OpenTelemetry-Releasestatus

OpenTelemetry-Angebote sind für .NET-, Node.js-, Python- und Java-Anwendungen verfügbar.

Hinweis

Einen Releasestatus für die einzelnen Features finden Sie in den häufig gestellten Fragen.

Erste Schritte

Führen Sie die Schritte in diesem Abschnitt aus, um Ihre Anwendung mit OpenTelemetry zu instrumentieren.

Voraussetzungen

Tipp

Es wird nicht empfohlen, das SDK/die API für OTel Community mit der Azure Monitor OTel-Distribution zu verwenden, da diese automatisch als Abhängigkeiten geladen werden.

Installieren der Clientbibliothek

Installieren Sie das neueste NuGet-Paket Azure.Monitor.OpenTelemetry.Exporter:

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Aktivieren von Azure Monitor Application Insights

Um Azure Monitor Application Insights zu aktivieren, nehmen Sie eine geringfügige Änderung an Ihrer Anwendung vor und legen Ihre „Verbindungszeichenfolge“ fest. Die Verbindungszeichenfolge teilt Ihrer Anwendung mit, wo die von der Distribution erfassten Telemetriedaten gesendet werden soll, und sie ist für Sie eindeutig.

Ändern Ihrer Anwendung

Fügen Sie Ihrem Anwendungsstart UseAzureMonitor() hinzu. Dies befindet sich in Ihrer program.cs-Klasse.

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the application.
var app = builder.Build();

// Run the application.
app.Run();

Kopieren der Verbindungszeichenfolge aus Ihrer Application Insights-Ressource

So kopieren Sie ihre eindeutige Verbindungszeichenfolge

Screenshot that shows Application Insights overview and connection string.

  1. Wechseln Sie zum Bereich Übersicht Ihrer Application Insights-Ressource.
  2. Suchen Sie die Verbindungszeichenfolge.
  3. Zeigen Sie mit der Maus auf die Verbindungszeichenfolge, und wählen Sie das Symbol In Zwischenablage kopieren aus.

Einfügen der Verbindungszeichenfolge in Ihre Umgebung

Zum Einfügen der Verbindungszeichenfolge wählen Sie eine der folgenden Optionen aus:

A. Festlegen über die Umgebungsvariable (empfohlen)

Ersetzen Sie <Your Connection String> im folgenden Befehl durch Ihre eindeutige Verbindungszeichenfolge.

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

B. Festlegen über die Konfigurationsdatei – nur Java (empfohlen)

Erstellen Sie eine Konfigurationsdatei mit dem Namen applicationinsights.json, und legen Sie sie im gleichen Verzeichnis wie applicationinsights-agent-3.4.19.jar mit folgendem Inhalt ab:

{
  "connectionString": "<Your Connection String>"
}

Ersetzen Sie <Your Connection String> im vorherigen JSON-Code durch Ihre eindeutige Verbindungszeichenfolge.

C. Festlegen über Code: ASP.NET Core, Node.js und Python (nicht empfohlen)

Ein Beispiel zum Festlegen der Verbindungszeichenfolge über Code finden Sie unter Verbindungszeichenfolgenkonfiguration.

Hinweis

Wenn Sie die Verbindungszeichenfolge an mehreren Stellen festlegen, wird die folgende Rangfolge eingehalten:

  1. Code
  2. Umgebungsvariable
  3. Konfigurationsdatei

Bestätigen des Datenflusses

Führen Sie Ihre Anwendung aus, und öffnen Sie die Registerkarte Ihrer Application Insights-Ressource im Azure-Portal. Es kann einige Minuten dauern, bis Daten im Portal angezeigt werden.

Screenshot of the Application Insights Overview tab with server requests and server response time highlighted.

Application Insights ist jetzt für Ihre Anwendung aktiviert. Alle folgenden Schritte sind optional und ermöglichen weitere Anpassungen.

Wichtig

Wenn Sie über zwei oder mehr Dienste verfügen, die Telemetriedaten an dieselbe Application Insights-Ressource ausgeben, müssen Sie Cloudrollennamen festlegen, um sie ordnungsgemäß in der Anwendungsübersicht darzustellen.

Tipp

Das Sampling ist standardmäßig mit einer Rate von 5 Anforderungen pro Sekunde aktiviert, was die Kostenverwaltung unterstützt. Telemetriedaten können in Szenarien fehlen, die diese Rate überschreiten. Weitere Informationen zum Ändern der Samplingkonfiguration finden Sie unter Sampling-Außerkraftsetzungen.

Im Rahmen der Verwendung der Application Insights-Instrumentierung sammeln und senden wir Diagnosedaten an Microsoft. Diese Daten helfen uns, Application Insights auszuführen und zu verbessern. Weitere Informationen finden Sie unter Statsbeat in Azure Application Insights.

Häufig gestellte Fragen

Dieser Abschnitt enthält Antworten auf häufig gestellte Fragen.

Was ist OpenTelemetry?

Es handelt sich um einen neuen Open-Source-Standard für Einblicke. Weitere Informationen finden Sie unter OpenTelemetry.

Warum investiert Microsoft Azure Monitor in OpenTelemetry?

Microsoft gehört zu den Unternehmen, die den größten Beitrag zu OpenTelemetry leisten.

Die wichtigsten Wertversprechen von OpenTelemetry sind, dass es anbieterneutral ist und über einheitliche APIs und SDKs für alle Sprachen verfügt.

Wir glauben, dass OpenTelemetry im Laufe der Zeit Azure Monitor-Kunden ermöglichen wird, auch Anwendungen zu überwachen, die in anderen als den von uns unterstützten Sprachen geschrieben wurden. Außerdem werden die Datentypen erweitert, die Sie über einen umfangreichen Satz von Instrumentierungsbibliotheken erfassen können. Darüber hinaus sind OpenTelemetry-SDKs tendenziell im großen Stil leistungsstärker als ihre Vorgänger, die Application Insights-SDKs.

Darüber hinaus ist OpenTelemetry an der Microsoft-Strategie zur Förderung von Open Source ausgerichtet.

Wie ist der Status von OpenTelemetry?

Siehe OpenTelemetry Status.

Was ist die OpenTelemetry-Distribution von Azure Monitor?

Sie können es sich als dünnen Wrapper vorstellen, der alle OpenTelemetry-Komponenten für eine erstklassige Erfahrung in Azure bündelt. Dies wird auch als Distribution in OpenTelemetry bezeichnet.

Warum sollte ich die OpenTelemetry-Distribution von Azure Monitor verwenden?

Die Verwendung der OpenTelemetry-Distribution von Azure Monitor hat gegenüber der nativen OpenTelemetry aus der Community mehrere Vorteile:

Im Sinne von OpenTelemetry haben wir die Distribution so konzipiert, dass sie offen und erweiterbar ist. Sie können beispielsweise Folgendes tun:

  • Hinzufügen eines OTLP-Exporters und gleichzeitiges Senden an ein zweites Ziel
  • Andere Instrumentierungsbibliotheken, die nicht in der Distribution enthalten sind

Wie kann ich die OpenTelemetry-Distribution von Azure Monitor testen?

Sehen Sie sich unsere Aktivierungsdokumentation für .NET, Java, JavaScript (Node.js) und Python an.

Sollte ich OpenTelemetry oder das Application Insights-SDK verwenden?

Wir empfehlen die Verwendung der OpenTelemetry-Distribution, es sei denn, Sie benötigen ein Feature, das nur mit formaler Unterstützung im Application Insights-SDK verfügbar ist.

Wenn OpenTelemetry jetzt eingeführt wird, wird verhindert, dass zu einem späteren Zeitpunkt migriert werden muss.

Wann sollte ich den OpenTelemetry-Exporter von Azure Monitor verwenden?

Für ASP.NET Core, Java, Node.js und Python empfehlen wir die Verwendung der OpenTelemetry-Distribution. Es ist nur eine Codezeile, um loszulegen.

Für alle anderen .NET-Szenarien (z. B. klassische ASP.NET, Konsolen-Apps usw.) empfehlen wir die Verwendung unseres Exporters: Azure.Monitor.OpenTelemetry.Exporter.

Wie lautet der aktuelle Releasestatus der Features in der OpenTelemetry-Distribution von Azure Monitor?

Im folgenden Diagramm ist die Unterstützung der OpenTelemetry-Funktion für jede Sprache aufgeschlüsselt.

Funktion .NET Node.js Python Java
Verteilte Ablaufverfolgung
Benutzerdefinierte Metriken
Standardmetriken (Genauigkeit derzeit beeinflusst durch Sampling)
Stichprobenerstellung mit festem Prozentsatz
Offlinespeicher und automatische Wiederholungsversuche
Ausnahmeberichterstattung
Protokollerfassung ⚠️
Benutzerdefinierte Ereignisse ⚠️ ⚠️ ⚠️
Microsoft Entra-Authentifizierung
Livemetriken
Erkennen des Ressourcenkontexts für VM/VMSS und App Service
Erkennen des Ressourcenkontexts für AKS und Functions
Filterung nach Verfügbarkeitstestspanne
Automatisches Auffüllen von Benutzer-ID, authentifizierter Benutzer-ID und Benutzer-IP-Adresse
Manuelles Überschreiben/Festlegen von Vorgangsname, Benutzer-ID oder authentifizierter Benutzer-ID
Adaptive Stichprobenerstellung
Profiler ⚠️
Momentaufnahmedebugger

Schlüssel

Kann OpenTelemetry für Webbrowser verwendet werden?

Ja, aber wir empfehlen es nicht, und Azure unterstützt es nicht. OpenTelemetry JavaScript ist in hohem Maße für Node.js optimiert. Stattdessen wird empfohlen, das Application Insights JavaScript SDK zu verwenden.

Wann können wir damit rechnen, dass das OpenTelemetry SDK für die Verwendung in Webbrowsern verfügbar sein wird?

Für das OpenTelemetry-Web-SDK gibt es keine festgelegte Verfügbarkeitszeitachse. Wir sind wahrscheinlich noch einige Jahre von einem Browser-SDK entfernt, das eine brauchbare Alternative zum Application Insights JavaScript-SDK wäre.

Kann ich OpenTelemetry heute in einem Webbrowser testen?

Die OpenTelemetry Web Sandbox ist ein Fork, mit dem OpenTelemetry in einem Browser funktioniert. Es ist aber noch nicht möglich, Telemetriedaten an Application Insights zu senden. Das SDK definiert keine allgemeinen Clientereignisse.

Wird die Ausführung von Application Insights zusammen mit Agents von Mitbewerbern wie AppDynamics, DataDog und NewRelic unterstützt?

Nein. Wir haben nicht vor, diese Praxis zu testen oder zu unterstützen, obwohl unsere Distributionen es Ihnen ermöglichen, gleichzeitig neben Azure Monitor einen OTLP-Endpunkt zu exportieren.

Kann ich in Produktionsumgebungen die Previewfunktionen verwenden?

Wir raten davon ab. Siehe Ergänzende Nutzungsbedingungen für Microsoft Azure-Vorschauversionen.

Was ist der Unterschied zwischen manueller und automatischer Instrumentierung?

Weitere Informationen finden Sie in der OpenTelemetry-Übersicht.

Kann ich den OpenTelemetry-Collector verwenden?

Einige Kunden verwenden den OpenTelemetry-Collector als Agent-Alternative, obwohl Microsoft einen Agent-basierenden Ansatz für die Anwendungsüberwachung noch nicht offiziell unterstützt. In der Zwischenzeit wurde von der Open-Source-Community ein Azure Monitor-Exporter für den OpenTelemetry-Collector bereitgestellt, der von einigen Kunden zum Senden von Daten an Azure Monitor Application Insights verwendet wird. Dies wird von Microsoft nicht unterstützt.

Worin besteht der Unterschied zwischen OpenCensus und OpenTelemetry?

OpenCensus ist der Vorgänger von OpenTelemetry. Mit der Hilfe von Microsoft entstand OpenTelemetry aus einer Zusammenführung von OpenTracing und OpenCensus als einzelner Einblickstandard für die ganze Welt. Das aktuelle für die Produktion empfohlene Python SDK für Azure Monitor basiert auf OpenCensus. Microsoft hat sich verpflichtet, Azure Monitor auf der Grundlage von OpenTelemetry zu entwickeln.

Problembehandlung

Funktioniert etwas nicht? Sehen Sie sich die Problembehandlungsseite für ASP.NET Core an.

Unterstützung

Wählen Sie eine Registerkarte für die Sprache Ihrer Wahl aus, um Supportoptionen zu ermitteln.

OpenTelemetry-Feedback

So können Sie Feedback geben

Nächste Schritte