Logging & Telemetrie

Wie die DataBridge Logs erzeugt, welche Telemetrie sie sendet und wie Sampling die Kosten steuert.

Die DataBridge steuert ihr Telemetrie-Volumen über zwei voneinander unabhängige Mechanismen:

  • Gepuffertes Logging — Log-Einträge werden pro Funktionsausführung gesammelt und erst am Ende des Laufs, abhängig vom Ergebnis, selektiv gesendet.
  • Sampling von Abhängigkeiten — ausgehende Aufrufe an Quell- und Zielsysteme werden nur anteilig gesendet, sofern sie erfolgreich und schnell waren.

Der zweite Mechanismus ist der eigentliche Kostenhebel: In einer Volumenanalyse über 90 Tage entfielen rund 78 % des gesamten Datenvolumens auf Abhängigkeiten und nur ein Bruchteil auf Log-Einträge.

SeiteInhalt
MetrikenCustom Metrics — die einzige nicht gesampelte Mengenangabe
Performance & LaufzeitenKQL-Abfragen für Laufzeiten, Fehler, Abhängigkeiten und Datenvolumen

Gepuffertes Logging — drei Lauf-Ergebnisse

ErgebnisKriteriumGesendete Log-Level
Normaler LaufKeine Fehler, keine WarnungenNur Warning + Error + ~20 % der Information-Einträge (konfigurierbar)
Lauf mit WarnungenMindestens eine Warning, kein FehlerAlle Information + Warning + Error
FehlerlaufMindestens ein unbehandelter FehlerAlle Debug + Information + Warning + Error

Der Anteil der Information-Einträge im Normalbetrieb wird über TELEMETRY_INFO_SAMPLE_RATE gesteuert (Standard: 20 = 20 %). Die Stichprobe wird pro Eintrag gezogen — es entstehen also vereinzelte Traces aus allen Läufen, keine vollständigen Ketten. Lückenlose Ketten gibt es nur bei Warning- und Fehler-Läufen.

Trace-Level erreicht Application Insights nie


Sampling von Abhängigkeiten

Ausgehende Aufrufe an Quell- und Zielsysteme (D365 OData, SQL, Table Storage, Service Bus) werden von Application Insights automatisch als Dependencies erfasst. Ohne Filterung verursachen sie bei kurzem Polling-Intervall ein Vielfaches aller Log-Einträge zusammen.

AufrufWird gesendet
FehlgeschlagenImmer vollständig
Langsam (≥ TELEMETRY_DEPENDENCY_SLOW_MS)Immer vollständig
Erfolgreich und schnellNur zum Anteil TELEMETRY_DEPENDENCY_SAMPLE_RATE (Standard 10 %)

Steuerung über TELEMETRY_CONTROL

Die Einstellung wirkt auf beide Mechanismen — Traces und Abhängigkeiten:

WertWirkung
TRACE_SAMPLE (Standard)Selektives Sampling wie oben beschrieben
TRACE_ALLSendet alles, deaktiviert jedes Sampling (für aktive Fehlersuche)
TRACE_NONEUnterdrückt Traces und Abhängigkeiten vollständig

Eine leere Variable entspricht TRACE_SAMPLE. Details zu allen Telemetrie-Einstellungen stehen unter Umgebungsvariablen.


Auswirkung auf bestehende Auswertungen

Nicht betroffen sind:

  • Fehleranzahlen und Fehlerursachen — fehlgeschlagene Aufrufe werden nie verworfen
  • Auswertungen langsamer Aufrufe — ab dem Schwellwert immer vollständig
  • Requests, Exceptions, Traces und Custom Metrics — unverändert

Wichtige Log-Felder in Application Insights

FeldBeschreibung
operation_IdKorrelations-ID — verknüpft alle Einträge einer einzigen Funktionsausführung
operation_ParentIdSpan-ID des Requests — sorgt für die korrekte Einordnung in der End-to-End-Transaktionsansicht
operation_NameName der ausgeführten Function (z. B. GetChanges, ProcessStandardQueueItems)
timestampZeitpunkt des ursprünglichen Log-Aufrufs, nicht des Sendens am Ende der Ausführung
messageLog-Text
severityLevel0 = Verbose, 1 = Information, 2 = Warning, 3 = Error, 4 = Critical
customDimensions.Category.NET-Logger-Kategorie
customDimensions.ExceptionVollständiger Stack Trace (nur bei Exceptions)

Automatisch erfasste Telemetrie

Neben den eigenen Log-Einträgen erfasst Application Insights selbstständig:

  • Requests — je Funktionsausführung, mit Laufzeit und Erfolgskennzeichen
  • Exceptions — jede aufgetretene Ausnahme mit Stack Trace
  • Dependencies — jeder ausgehende Aufruf (unterliegt dem Sampling, siehe oben)

Auswertung im Azure Portal

Schnelle Übersicht — Performance Blade

Application Insights → Untersuchen → Leistung

Zeigt alle Funktionsausführungen mit Durchschnittslaufzeit und P50/P95/P99-Perzentilen. Ein hoher P95-Wert deutet auf gelegentliche Verzögerungen hin (langsames Zielsystem, Queue-Stau).

Fehlerdiagnose — Failures Blade

Application Insights → Untersuchen → Fehler

Fehlgeschlagene Aufrufe, gruppiert nach Fehlertyp, mit direktem Zugriff auf Stack Traces.

Application Insights → Untersuchen → Transaktionssuche

Filter nach operation_Id, um alle Einträge einer einzigen Ausführung zu sehen.


Tipps für die Fehlersuche

  1. operation_Id finden: Im Failures Blade auf einen fehlgeschlagenen Request klicken → End-to-End Transaction Details → operation_Id ist in der URL bzw. in den Details sichtbar.

  2. Komplette Traces aktivieren: TELEMETRY_CONTROL = TRACE_ALL setzen, den problematischen Job über ExecuteJob manuell auslösen, anschließend zurücksetzen.

  3. Zwischen Funktionen korrelieren: Schlägt eine der Process…QueueItems-Funktionen fehl, ist die operation_Id der ursprünglichen GetChanges-Ausführung in der Nachricht gespeichert — so lässt sich der vollständige Pfad eines Datensatzes nachvollziehen. Beachten Sie dabei die Einschränkung beim Dependency-Sampling (siehe oben).


Metriken

Custom Metrics der DataBridge — vorab aggregiert und ohne Sampling.

Performance & Laufzeiten

KQL-Abfragen für Laufzeiten, Fehlerquoten, Abhängigkeiten und Datenvolumen.