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 gehen die Installation der Azure Monitor OpenTelemetry Distro schrittweise durch. Die Azure Monitor OpenTelemetry Distro bietet eine OpenTelemetry-Verteilung, die Unterstützung für Funktionen enthält, die für Azure Monitor spezifisch sind. Die Distro ermöglicht die automatische Telemetrie, indem OpenTelemetry-Instrumentierungsbibliotheken zum Sammeln von Ablaufverfolgungen, Metriken, Protokollen und Ausnahmen eingeschlossen werden und das Sammeln benutzerdefinierter Telemetrie ermöglicht wird. Sie können auch die Funktion Livemetriken verwenden, das in der Distro enthalten ist, um weitere Telemetriedaten von produktiven Live-Webanwendungen zu überwachen und zu sammeln. Weitere Informationen zu den Vorteilen der Verwendung der Azure Monitor OpenTelemetry Distro finden Sie unter Warum sollte ich die „Azure Monitor OpenTelemetry Distro“ verwenden? in OpenTelemetry FAQ.

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

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 UseAzureMonitor() zum Startup Ihrer Anwendung hinzu, der sich in Ihrer program.cs-Klasse befindet.

// 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, der die Application Insights-Übersicht und die Verbindungszeichenfolge zeigt.

  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.5.1.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 der Registerkarte „Übersicht“ von Application Insights mit hervorgehobenen Serveranforderungen und der Serverantwortzeit.

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.

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.

Beispiele

Azure Monitor OpenTelemetry-Beispielanwendungen sind für alle unterstützten Sprachen verfügbar.

Nächste Schritte

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. Dieser Wrapper wird auch als Verteilung 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:

  • Ein OpenTelemetry Protocol (OTLP)-Exporter und gleichzeitiges Senden an ein zweites Ziel
  • Andere Instrumentierungsbibliotheken, die nicht in der Distribution enthalten sind

Da die Distro eine OpenTelemetry-Verteilung bereitstellt, unterstützt die Distro alles, was von OpenTelemetry unterstützt wird. Sie können beispielsweise weitere Telemetrieprozessoren, Exporteure oder Instrumentierungsbibliotheken hinzufügen, wenn OpenTelemetry sie unterstützt.

Hinweis

Die Distro legt den Sampler auf einen benutzerdefinierten Sampler mit fester Rate für Application Insights fest. Sie können dies in einen anderen Sampler ändern, dies kann jedoch einige der enthaltenen Funktionen von Distro deaktivieren. Weitere Informationen zum unterstützten Sampler finden Sie im Abschnitt Aktivieren des Samplings von Konfigurieren von Azure Monitor OpenTelemetry.

Für Sprachen ohne einen unterstützten eigenständigen OpenTelemetry-Exporter ist der Azure Monitor OpenTelemetry Distro die einzige derzeit unterstützte Methode zur Verwendung von OpenTelemetry mit Azure Monitor. Für Sprachen mit einem unterstützten eigenständigen OpenTelemetry-Exporter haben Sie je nach Telemetrieszenario die Möglichkeit, entweder den Azure Monitor OpenTelemetry Distro oder den entsprechenden eigenständigen OpenTelemetry-Exporter zu verwenden. Weitere Informationen finden Sie unter Wann sollte ich den OpenTelemetry-Exporter von Azure Monitor verwenden?.

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 Azure Monitor OpenTelemetry Distro. Es ist nur eine Codezeile, um loszulegen.

Für alle anderen .NET-Szenarien, einschließlich klassischem ASP.NET, Konsolenanwendungen usw., empfehlen wir die Verwendung des .NET Azure Monitor OpenTelemetry-Exporters: Azure.Monitor.OpenTelemetry.Exporter.

Für komplexere Python-Telemetrieszenarien, die eine erweiterte Konfiguration erfordern, empfehlen wir die Verwendung des Python Azure Monitor OpenTelemetry-Exporters.

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