Infrastruktur

Jaeger

Jaeger ist ein Open-Source-Distributed-Tracing-System, das ursprünglich 2015 von Uber Technologies entwickelt und 2017 als CNCF-Projekt der Cloud Native Computing Foundation gespendet wurde. Es steht unter Apache-2.0-Lizenz, implementierte zunächst den OpenTracing-Standard und ist heute OpenTelemetry-kompatibel (OTLP). Jaeger verfolgt, wie ein eingehender Request durch verschiedene Dienste und Komponenten fließt, und misst die Dauer jedes einzelnen Schritts. Jeder Request erhält eine eindeutige Trace-ID,…

Aktualisiert:

Was ist Jaeger?

Jaeger ist ein Open-Source-Distributed-Tracing-System, das ursprünglich von Uber Technologies entwickelt und 2017 als CNCF-Projekt (Cloud Native Computing Foundation) gespendet wurde. Es implementiert den OpenTracing-Standard und ist heute OpenTelemetry-kompatibel. Jaeger verfolgt, wie ein eingehender Request durch verschiedene Dienste und Komponenten fließt — und misst, wie lange jeder einzelne Schritt dauert.

Für Webseitenbetreiber mit mehrschichtigen Stacks (Nginx → PHP-FPM → WordPress → MySQL + Redis) beantwortet Jaeger Fragen, die mit Logs und Metriken allein nicht zu beantworten sind: Welcher Dienst ist schuld, wenn ein Request 800ms dauert statt 100ms? Ist es die Datenbankabfrage, der Redis-Cache-Miss oder der PHP-Code?

Wie funktioniert Distributed Tracing?

Jeder Request bekommt eine eindeutige Trace-ID. Wenn der Request durch verschiedene Dienste fließt, propagiert jeder Dienst diese ID in ausgehenden HTTP-Requests oder Datenbankabfragen. Jeder Schritt erzeugt einen Span — einen Zeitstempel-geklammerten Abschnitt mit Start, Ende und Metadaten.

Das Ergebnis ist ein Trace: ein hierarchischer Baum von Spans, der den gesamten Request-Pfad visualisiert:

Trace: GET /wp-json/wp/v2/posts (total: 820ms)
├── nginx reverse proxy (2ms)
├── PHP-FPM worker (815ms)
│   ├── WordPress bootstrap (45ms)
│   ├── MySQL query: SELECT * FROM wp_posts (380ms)  ← Bottleneck!
│   ├── Redis get: post_cache_123 (1ms)
│   └── Template rendering (389ms)
└── Response compression (3ms)

In diesem Beispiel zeigt Jaeger, dass die MySQL-Abfrage 380ms dauert — obwohl der gesamte Request 820ms braucht. Ohne Tracing würde man nur “langsam” sehen, nicht wo.

Jaeger für WordPress-Betreiber

Für WordPress ist die Einbindung von OpenTelemetry (das Jaeger als Backend nutzen kann) über PHP-Libraries möglich:

OpenTelemetry PHP SDK:

use OpenTelemetry\SDK\Trace\TracerProvider;
use OpenTelemetry\Contrib\Otlp\OtlpHttpTransport;

$transport = new OtlpHttpTransport('http://jaeger:4318/v1/traces');
$tracerProvider = new TracerProvider(/* ... exporters ... */);

Ein Plugin oder mu-plugin kann so automatisch alle WordPress-Hooks, MySQL-Abfragen und Cache-Zugriffe instrumentieren und als Spans an Jaeger schicken.

Grafana Tempo als Alternative: Grafana Tempo ist ein weiteres Open-Source-Tracing-Backend, das tiefer in den Grafana-Stack integriert ist und häufig als modernere Alternative zu Jaeger eingesetzt wird. Beide sind OpenTelemetry-kompatibel.

Was passiert ohne Tracing?

Ohne Distributed Tracing bleibt bei Latenzen unklar, welcher Dienst die Ursache ist. Prometheus-Metriken zeigen, dass MySQL langsam ist — aber nicht welche Query. Logs zeigen Fehler — aber nicht den Request-Kontext. Tracing schließt diese Lücke und macht Optimierungen zielgerichtet statt spekulativ.

Häufige Fragen

Jaeger vs. Zipkin — was ist der Unterschied? Beide sind Distributed-Tracing-Systeme. Zipkin (von Twitter, 2012) ist älter und einfacher. Jaeger (von Uber, 2015) ist umfangreicher, hat eine bessere UI und ist OpenTelemetry-nativer. Für neue Setups ist Jaeger oder Grafana Tempo die modernere Wahl.

Wie viel Overhead erzeugt Tracing? Bei 1–10 % Sampling-Rate ist der Overhead für die Applikation typischerweise unter 1 %. Die Instrumentierung selbst erzeugt messbare CPU-Zeit, aber in der Praxis selten über 2–5 % bei normalen Web-Workloads.

Verwandte Begriffe

OTLP · OpenTelemetry

Jaeger in drei Sätzen

Jaeger ist ein Open-Source-Distributed-Tracing-System, das ursprünglich 2015 von Uber Technologies entwickelt und 2017 als CNCF-Projekt der Cloud Native Computing Foundation gespendet wurde. Es steht unter Apache-2.0-Lizenz, implementierte zunächst den OpenTracing-Standard und ist heute OpenTelemetry-kompatibel (OTLP). Jaeger verfolgt, wie ein eingehender Request durch verschiedene Dienste und Komponenten fließt, und misst die Dauer jedes einzelnen Schritts. Jeder Request erhält eine eindeutige Trace-ID,…