Linuxguide

OpenTelemetry und Jaeger – Distributed Tracing 2025

Request-Verfolgung durch Microservices-Architekturen

S
SeeColors IT
11. Juni 20264 Min. Lesezeit128 Aufrufe

Was ist Distributed Tracing?

Problem ohne Tracing:
Request → [Service A] → [Service B] → [DB] → [Service C]
              50ms?         200ms?     1ms?      30ms?
Wo ist der Bottleneck?? Unbekannt!

Mit Tracing:
Trace ID: abc123
  Span: frontend (50ms)
    Span: api-service (200ms)  ← HIER ist das Problem!
      Span: database-query (1ms)
    Span: notification-service (30ms)

Jaeger installieren

# docker-compose.yml
services:
  jaeger:
    image: jaegertracing/all-in-one:latest
    container_name: jaeger
    environment:
      COLLECTOR_OTLP_ENABLED: "true"
    ports:
      - "16686:16686"    # Web-UI
      - "4317:4317"      # OTLP gRPC
      - "4318:4318"      # OTLP HTTP
      - "6831:6831/udp"  # Jaeger Agent UDP
    restart: unless-stopped

Node.js Anwendung instrumentieren

npm install @opentelemetry/api     @opentelemetry/sdk-node     @opentelemetry/auto-instrumentations-node     @opentelemetry/exporter-trace-otlp-http
// tracing.js (vor app.js laden!)
const { NodeSDK } = require('@opentelemetry/sdk-node');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node');

const sdk = new NodeSDK({
    traceExporter: new OTLPTraceExporter({
        url: 'http://jaeger:4318/v1/traces',
    }),
    instrumentations: [getNodeAutoInstrumentations()],
    serviceName: 'mein-service',
});

sdk.start();
# Start mit Tracing
node -r ./tracing.js app.js

Python Flask instrumentieren

pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap --action=install

# Automatische Instrumentierung
OTEL_SERVICE_NAME=flask-api OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4318 opentelemetry-instrument flask run

Jaeger Web-UI nutzen

http://jaeger-server:16686

1. Service auswählen (Dropdown)
2. Operation (alle oder spezifische Route)
3. Zeitraum: letzte 1h
4. Min Duration: >500ms (langsame Requests)
5. "Find Traces" klicken

Trace-Detail:
→ Gantt-Chart aller Spans
→ Klick auf Span: Tags, Logs, Fehler
→ "Compare Traces": zwei Anfragen vergleichen

Drei Säulen der Observability

Metrics (Prometheus):    WANN und WIE OFT gibt es ein Problem?
Logs (Loki/Graylog):     WAS ist passiert?
Traces (Jaeger):         WARUM ist es passiert?

Grafana Tempo:
Alternative zu Jaeger, besser Grafana-integriert
→ Traces direkt aus Grafana-Dashboards

FAQ

Ab wann lohnt sich Distributed Tracing?
Bei mehr als 2-3 miteinander kommunizierenden Services. Monolithische Anwendungen profitieren von Profiling statt Tracing.

Fazit

OpenTelemetry + Jaeger ist die moderne Standard-Lösung für Distributed Tracing – essentiell wenn Microservices in Kubernetes-Umgebungen Latenzprobleme haben.

Observability und Tracing für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.

Artikel teilen

War dieser Artikel hilfreich?

Dein Feedback hilft uns, bessere Inhalte zu erstellen.

Kommentar hinterlassen

Verwandte Artikel