Verteilte Anfragen untersuchen? Mit OpenTelemetry verfolgen
Ein langsamer Checkout kann seine Ursache in einem anderen Dienst haben. Distributed Tracing verbindet die eingehende Anfrage, den ausgehenden Aufruf und die Anfrage beim empfangenden Dienst. Sie teilen eine Trace-ID. Jede einzelne Operation ist ein Span mit eigener Dauer und Elternbeziehung. OpenTelemetry überträgt diesen Kontext zwischen Diensten über HTTP-Header wie traceparent.
Verwende ai-ctmonitorweu aus Application Insights aktivieren. In diesem Lab laufen zwei kleine Dienste auf deinem Computer und senden Telemetrie an Azure. Du brauchst Node.js ab Version 22 und Internetzugang. Das vorbereitete Beispiel enthält die Instrumentierung; du lädst es herunter und startest es, ohne Anwendungscode schreiben zu müssen.
Vorbereitetes Beispiel starten
Lade das Tracing-Demo als ZIP herunter und entpacke es. Öffne ein Terminal im Ordner otel-trace-demo und führe aus:
node --version
npm ci
Kopiere die Verbindungszeichenfolge aus ai-ctmonitorweu → Overview. Setze sie im selben Terminal und starte das Beispiel. Für macOS, Linux oder Bash:
export APPLICATIONINSIGHTS_CONNECTION_STRING='PASTE_YOUR_CONNECTION_STRING'
npm start
Für Windows PowerShell:
$env:APPLICATIONINSIGHTS_CONNECTION_STRING = 'PASTE_YOUR_CONNECTION_STRING'
npm start
Lass dieses Terminal geöffnet. Der Starter führt ct-front auf 127.0.0.1:4000 und ct-back auf 127.0.0.1:4001 aus. Beide verwenden dasselbe Application-Insights-Ziel und unterschiedliche OpenTelemetry-Dienstnamen. Das SDK startet vor dem Laden der HTTP-Bibliothek und kann dadurch HTTP-Operationen automatisch erfassen und korrelieren.
Öffne http://127.0.0.1:4000/checkout im Browser. Wiederhole das fünfmal mit einigen Sekunden Abstand. Die Antwort lautet Inventory available. Öffne danach zweimal http://127.0.0.1:4000/checkout?fail=1; dieser Aufruf liefert absichtlich einen Inventarfehler. Das Backend wartet jeweils ungefähr 750 ms, damit sein Anteil an der Gesamtdauer sichtbar wird.
Gemeinsamen Trace verfolgen
Öffne nach einigen Minuten ai-ctmonitorweu → Performance und wähle Last 30 minutes. Wähle die Rolle ct-front und öffne die End-to-End-Details eines Checkout-Beispiels. Die Transaktion sollte die Frontend-Anfrage, ihren HTTP-Dependency-Aufruf und die Backend-Anfrage enthalten.
Screenshot 1: End-to-End-Transaktion mit dem Aufruf von ct-front an ct-back und der Backend-Dauer.

Die Frontend-Dauer enthält die Wartezeit auf das Backend. Würdest du die Dauer der übergeordneten Anfrage und der verschachtelten Dependency addieren, würdest du diese Wartezeit doppelt zählen.
Suche unter law-ctmonitorweu → Logs eine Frontend-Operation-ID:
AppRequests
| where TimeGenerated > ago(1h)
| where AppRoleName == "ct-front"
| project TimeGenerated, Name, Success, OperationId
| order by TimeGenerated desc
Kopiere eine ID in diese Abfrage:
union withsource=TelemetryTable AppRequests, AppDependencies
| where TimeGenerated > ago(1h)
| where OperationId == "PASTE_OPERATION_ID"
| project TimeGenerated, TelemetryTable, AppRoleName,
Name, Id, ParentId, DurationMs, Success, ResultCode
| order by TimeGenerated asc
Screenshot 2: Korrelierte Request- und Dependency-Datensätze mit der ausgewählten OperationId.

Application Map untersuchen
Öffne ai-ctmonitorweu → Application Map, wähle denselben Zeitraum und aktualisiere. Suche ct-front → ct-back. Wähle Verbindung oder Backend, um Aufrufzahlen, Dauer und Fehler zu prüfen. Öffne über Failures einen fehlgeschlagenen Checkout und verfolge den HTTP-500-Fehler des Backends.
Screenshot 3: Application Map mit beiden Dienstrollen und ihrer Abhängigkeit.

Fehlt Telemetrie, prüfe, ob die Verbindungszeichenfolge vor npm start gesetzt war und ausgehendes HTTPS erlaubt ist. Siehst du nur eine Rolle, prüfe den Start beider Prozesse und rufe /checkout auf. Eine neue Map kann später erscheinen als die zugrunde liegenden Request-Datensätze.
Abschluss
Drücke im Terminal Strg+C, um beide Dienste zu stoppen und Telemetrie zu übertragen. Das Beispiel erfasst bei seinem kleinen Lab-Volumen alle Traces; für eine stark genutzte Anwendung brauchst du eine bewusste Sampling- und Aufbewahrungsstrategie. Behalte Application Insights, solange du die Daten oder weitere Monitoring-Übungen benötigst.