# Jäger: Distributed Tracing für Microservices & Cloud-Stacks

TL;DR / Management Summary In einer Microservice-Umgebung (Docker/Kubernetes) ist ein einzelner HTTP-Request oft an 10 verschiedenen Containern beteiligt. Wenn die Antwort langsam ist, sagen Logs (ELK) und Metriken (Prometheus) oft nicht aus, welcher dieser 10 Container schuld ist. Jäger implementiert Distributed Tracing: Jede Anfrage bekommt eine eindeutige ID (Trace ID) und wird durch den gesamten Stack verfolgt. Ein Senior Admin nutzt Jäger, um Latenzen auf Millisekunden-Ebene zu visualisieren und “Bottleneck-Services” sofort zu identifizieren.


# 1. Was ist Distributed Tracing?

Die Reise eines Pakets.

Ein Trace besteht aus mehreren Spans (Zeitspannen):


# 2. Die Komponenten von Jäger

Vom Agent zum Collector.

  1. Jäger Agent: Ein kleiner Sidecar-Prozess (Artikel 812), der die Spans von der Applikation via UDP entgegennimmt.
  2. Collector: Empfängt die Traces von den Agenten und schreibt sie in eine Datenbank (Elasticsearch oder Cassandra).
  3. Query & UI: Die Web-Oberfläche zur Visualisierung der Traces als Gantt-Chart.

# 3. Deep Dive: OpenTelemetry (OTel)

Der moderne Standard.

Jäger ist heute Teil der OpenTelemetry Initiative.


# 4. Day-2 Operations: Sampling-Strategien

Datenflut vermeiden.

Tracing erzeugt enorme Datenmengen.


# 5. Troubleshooting & “War Stories”

Wenn der Pfad im Dunkeln liegt.

# Top 3 Fehlerbilder

  1. Symptom: “Broken Trace”. Die Kette bricht nach dem ersten Service ab.

    • Ursache: Die Applikation reicht die trace-id Header nicht an den nächsten Service weiter.
    • Lösung: OTel-Middleware in der Applikation prüfen.
  2. Symptom: Jäger Collector überlastet.

    • Ursache: Zu hohe Sampling-Rate in einem High-Traffic Cluster.
    • Fix: UDP-Buffer am Host erhöhen oder Sampling auf 0.1% senken.
  3. Symptom: Keine Daten in der UI.

    • Lösung: Prüfen, ob die Firewall Port 14268 (HTTP) oder 6831 (UDP) blockiert.

# “War Story”: Der “Geister-Wait” in der Cloud

Ein Admin untersuchte eine Latenz von 500ms in einem K8s-Cluster. Prometheus zeigte normale CPU-Werte. ELK zeigte keine Fehler. Die Entdeckung via Jäger: Im Gantt-Chart sah der Admin eine Lücke von 450ms zwischen dem Frontend und dem Auth-Service. In dieser Zeit passierte scheinbar gar nichts. Die Ursache: Ein fehlerhafter DNS-Resolver im Kubernetes-VNet (Artikel 774) versuchte erst IPv6 (Timeout), bevor er auf IPv4 zurückfiel. Lehre: Metriken zeigen, dass es langsam ist. Tracing zeigt, wo genau die Zeit verschwendet wird – auch wenn kein Code ausgeführt wird.


# 6. Monitoring & Reporting

Service-Qualität.

# Service Dependency Graph

Jäger generiert automatisch eine Landkarte Ihrer Applikation:


# 7. Fazit & Empfehlung

Jäger ist das ultimative Werkzeug für die Performance-Analyse in komplexen Systemen.


# Anhang: Cheatsheet (Jäger Ports)

Port Protokoll Zweck
6831 UDP Agent (Thrift/Compact)
14268 HTTP Collector (Direct)
16686 HTTP Web-UI
4317 GRPC OpenTelemetry (OTLP)

# Referenzen