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?.
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.
- Die zweite Registerkarte dieses Artikels behandelt alle .NET-Szenarien, einschließlich klassischer ASP.NET, Konsolen-Apps, Windows Forms (WinForms) usw.
Erste Schritte
Führen Sie die Schritte in diesem Abschnitt aus, um Ihre Anwendung mit OpenTelemetry zu instrumentieren.
Voraussetzungen
- Ein Azure-Abonnement: Kostenloses Azure-Abonnement erstellen
- Eine Application Insights-Ressource: Application Insights-Ressource erstellen
- ASP.NET Core-Anwendung mit einer offiziell unterstützten Version von .NET
Tipp
Wenn Sie aus der Application Insights Classic API migrieren, lesen Sie unsere Migrationsdokumentation.
Installieren der Clientbibliothek
Installieren Sie das aktuelle Azure.Monitor.OpenTelemetry.AspNetCore
NuGet-Paket:
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
Tipp
Wenn noch keine vorhanden ist, sollten Sie jetzt eine Application Insights-Ressource erstellen. Hier wird empfohlen, eine neue Application Insights-Ressource zu erstellen anstatt eine vorhandene Ressource zu verwenden.
So kopieren Sie ihre eindeutige Verbindungszeichenfolge
- Wechseln Sie zum Bereich Übersicht Ihrer Application Insights-Ressource.
- Suchen Sie die Verbindungszeichenfolge.
- 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.4.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:
- Code
- Umgebungsvariable
- 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.
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
- Details zum Hinzufügen und Ändern von Azure Monitor OpenTelemetry finden Sie unter Hinzufügen und Ändern von Azure Monitor OpenTelemetry.
- Informationen zum weiteren Konfigurieren der OpenTelemetry-Distribution finden Sie unter Konfiguration von Azure Monitor OpenTelemetry.
- Informationen zum Überprüfen des Quellcodes finden Sie im GitHub-Repository zu Azure Monitor AspNetCore.
- Um das NuGet-Paket zu installieren, nach Updates zu suchen oder Versionshinweise anzuzeigen, besuchen Sie die Seite mit dem NuGet-Paket zu Azure Monitor AspNetCore.
- Weitere Informationen zu Azure Monitor und OpenTelemetry finden Sie im Azure Monitor-Beispielanwendung.
- Weitere Informationen zu OpenTelemetry und seiner Community finden Sie im OpenTelemetry ,NET GitHub-Repository.
- Um Nutzungserfahrungen zu aktivieren, aktivieren Sie die Web- oder Browserbenutzerüberwachung.
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 investiert aus folgenden Gründen in OpenTelemetry:
- Es ist anbieterneutral und bietet konsistente APIs und SDKs für alle Sprachen.
- 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.
- Es erweitert die Datentypen, die Sie über eine Vielzahl von Instrumentierungsbibliotheken erfassen können.
- OpenTelemetry-SDKs sind tendenziell im großen Stil leistungsstärker als ihre Vorgänger, die Application Insights-SDKs.
- OpenTelemetry entspricht der Microsoft-Strategie zur Förderung von Open Source.
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:
- Reduziert den Aktivierungsaufwand
- Unterstützt von Microsoft
- Bietet Azure-spezifische Features, z. B.:
- Sampling kompatibel mit klassischen Application Insights SDKs
- Microsoft Entra-Authentifizierung
- Offlinespeicher und automatische Wiederholungen
- Statsbeat
- Application Insights-Standardmetriken
- Erkennen von Ressourcenmetadaten zum automatischen Auffüllen von Cloudrollennamen und Cloudrolleninstanzen in verschiedenen Azure-Umgebungen
- Livemetriken
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, Windows Forms (WinForms) 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 | ✅ | ✅ | ✅ | ✅ |
Stichprobenerstellung mit festem Prozentsatz | ✅ | ✅ | ✅ | ✅ |
Offlinespeicher und automatische Wiederholungsversuche | ✅ | ✅ | ✅ | ✅ |
Ausnahmeberichterstattung | ✅ | ✅ | ✅ | ✅ |
Protokollerfassung | ✅ | ⚠️ | ✅ | ✅ |
Benutzerdefinierte Ereignisse | ⚠️ | ⚠️ | ⚠️ | ✅ |
Microsoft Entra-Authentifizierung | ✅ | ✅ | ✅ | ✅ |
Livemetriken | ✅ | ✅ | ✅ | ✅ |
Filtern von Livemetriken | ✅ | ❌ | ❌ | ❌ |
Erkennen des Ressourcenkontexts für VM/VMSS und App Service | ✅ | ❌ | ✅ | ✅ |
Erkennen des Ressourcenkontexts für Azure Kubernetes Service (AKS) und Funktionen | ❌ | ❌ | ❌ | ✅ |
Verfügbarkeitstestereignisse, die mit der API zum Nachverfolgen der Verfügbarkeit (Track Availability-API) generiert werden | ❌ | ❌ | ❌ | ✅ |
Filtern von Anforderungen, Abhängigkeiten, Protokollen und Ausnahmen nach anonymer Benutzer-ID und synthetischer Quelle | ❌ | ❌ | ❌ | ✅ |
Filtern von Abhängigkeiten, Protokollen und Ausnahmen nach Vorgangsname | ❌ | ❌ | ❌ | ✅ |
Adaptive Stichprobenerstellung | ❌ | ❌ | ❌ | ✅ |
Profiler | ❌ | ❌ | ❌ | ⚠️ |
Momentaufnahmedebugger | ❌ | ❌ | ❌ | ❌ |
Schlüssel
- ✅: Dieses Feature steht allen Kunden mit formellem Support zur Verfügung.
- ⚠: Dieses Feature ist als Public Preview (öffentliche Vorschau) verfügbar. Siehe Ergänzende Nutzungsbedingungen für Microsoft Azure-Vorschauversionen.
- ❌ Dieses Feature ist nicht verfügbar oder nicht anwendbar.
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?
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.
Warum sehe ich in Grafana Status: 500. Can't visualize trace events using the trace visualizer
?
Sie könnten versuchen, unformatierte Textprotokolle anstelle von OpenTelemetry-Ablaufverfolgungen zu visualisieren.
In Application Insights speichert die Tabelle „Traces“ Rohtextprotokolle zu Diagnosezwecken. Sie helfen bei der Identifizierung und Korrelation von Traces im Zusammenhang mit Benutzeranforderungen, anderen Ereignissen und Ausnahmeberichten. Die Tabelle „Traces“ trägt jedoch nicht direkt zur End-to-End-Transaktionsansicht (Wasserfalldiagramm) in Visualisierungstools wie Grafana bei.
Mit der zunehmenden Einführung von Cloud-nativen Verfahren entwickelt sich auch die Telemetrieerfassung und -terminologie weiter. OpenTelemetry wurde zu einem Standard für die Erfassung und Instrumentierung von Telemetriedaten. In diesem Zusammenhang bekam der Begriff „Traces“ eine neue Bedeutung. Anstelle von Rohprotokollen beziehen sich „Traces“ in OpenTelemetry auf eine reichhaltigere, strukturierte Form der Telemetrie, die Spans enthält, die einzelne Arbeitseinheiten darstellen. Diese Spans sind entscheidend für die Erstellung von detaillierten Transaktionsansichten, die eine bessere Überwachung und Diagnose von Cloud-nativen Anwendungen ermöglichen.
Problembehandlung
Schritt 1: Aktivieren der Diagnoseprotokollierung
Azure Monitor Exporter verwendet EventSource für die interne Protokollierung. Die Exporterprotokolle sind für alle EventListener verfügbar, indem Sie sich für die Quelle anmelden, die OpenTelemetry-AzureMonitor-Exporter
genannt wird. Schritte zur Problembehandlung finden Sie unter OpenTelemetry Troubleshooting auf GitHub.
Schritt 2: Testen der Konnektivität zwischen Ihrem Anwendungshost und dem Erfassungsdienst
Application Insights SDKs und -Agents senden Telemetriedaten, die als REST-Aufrufe unserer Erfassungsendpunkte erfasst werden sollen. Verwenden Sie cURL-Befehle oder unformatierte REST-Anforderungen von PowerShell, um die Konnektivität von Ihrem Webserver- oder Anwendungshostcomputer mit den Endpunkten des Aufnahmediensts zu testen. Ausführliche Informationen finden Sie unter Problembehandlung bei fehlender Anwendungstelemetrie in Azure Monitor Application Insights.
Bekannte Probleme
Die folgenden Elemente sind bekannte Probleme für die OpenTelemetry-Exporter von Azure Monitor:
Der Vorgangsname fehlt in der Abhängigkeitstelemetrie. Der fehlende Name des Vorgangs verursacht Fehler und wirkt sich negativ auf die Leistung der Registerkartenerfahrung aus.
Das Gerätemodell fehlt bei der Anforderungs- und Abhängigkeitstelemetrie. Das fehlende Gerätemodell wirkt sich negativ auf die Analyse der Gerätekohorten aus.
Unterstützung
Wählen Sie eine Registerkarte für die Sprache Ihrer Wahl aus, um Supportoptionen zu ermitteln.
- Bei Azure-Supportproblemen öffnen Sie ein Azure-Supportticket.
- Wenden Sie sich bei OpenTelemetry-Problemen direkt an die OpenTelemetry .NET-Community.
- Eine Liste der offenen Probleme im Zusammenhang mit Azure Monitor Exporter finden Sie auf der Issues-Seite auf GitHub.
OpenTelemetry-Feedback
So können Sie Feedback geben
- Füllen Sie die Kundenfeedbackumfrage der OpenTelemetry-Community aus.
- Erzählen Sie Microsoft von sich, indem Sie der OpenTelemetry Early Adopter-Community beitreten.
- Interagieren Sie mit anderen Azure Monitor-Benutzern in der Technischen Community von Microsoft.
- Featureanfragen können Sie im Azure-Feedbackforum stellen.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für