EMZETT.
Login

OpenTelemetry: Einheitliche Beobachtbarkeit

Kurz: Ein offener Standard samt Bibliotheken, um Traces, Metriken und Logs aus Anwendungen einheitlich zu erzeugen und an beliebige Auswertungs-Werkzeuge zu schicken.

Genauer: OpenTelemetry (kurz OTel) ist ein Projekt der Cloud Native Computing Foundation. Früher hatte jeder Anbieter eigene Bibliotheken, ein Wechsel hieß Umbau des Codes. OTel definiert gemeinsame APIs, SDKs und ein Datenformat (OTLP), sodass Anwendungen einmal instrumentiert werden und die Daten an Jaeger, Prometheus, Grafana, Datadog oder andere gehen können.

Im Detail

Die drei Signale

  • Traces: der Weg einer Anfrage durch mehrere Dienste, aufgeteilt in Spans (einzelne Arbeitsschritte mit Dauer und Eigenschaften). Eine Trace-ID verbindet alle Spans.
  • Metriken: Zahlenreihen wie Anfragen pro Sekunde oder Speicherverbrauch.
  • Logs: Textereignisse, die mit der Trace-ID verknüpft werden können.

Bausteine

Die Instrumentierung erzeugt Daten, automatisch (Agenten für Java, Node.js, Python u. a. erfassen HTTP-Aufrufe und Datenbankzugriffe) oder manuell per API. Das SDK sammelt und verarbeitet sie. Der Collector ist ein eigener Dienst, der Daten empfängt, filtert, anreichert und weiterleitet. Der Kontext wandert zwischen Diensten über Header wie traceparent (W3C Trace Context).

Beispiel für einen manuellen Span (JavaScript)

import { trace } from '@opentelemetry/api';
const tracer = trace.getTracer('shop');
await tracer.startActiveSpan('berechne-versand', async (span) => {
  span.setAttribute('land', 'DE');
  // ... Arbeit ...
  span.end();
});

Hinweise

Traces sind teuer, wenn man alles speichert: Üblich ist Sampling, also nur ein Teil der Anfragen oder alle fehlerhaften und langsamen. Achte darauf, keine personenbezogenen Daten oder Geheimnisse in Attribute zu schreiben. Das Projekt ist für die verschiedenen Signale unterschiedlich weit ausgereift, Traces und Metriken gelten als stabil.

Siehe auch: Observability, Prometheus und Metriken, Logging