Observability: OpenTelemetry Collector in Compose integrieren

Observability ist ein zentraler Bestandteil moderner Container-Infrastrukturen. Mit OpenTelemetry können Metriken, Logs und Traces konsistent erfasst und an zentrale Backends wie Prometheus, Grafana oder Jaeger weitergeleitet werden. In diesem Tutorial zeigen wir, wie der OpenTelemetry Collector in Docker Compose integriert wird, um eine durchgängige Observability-Pipeline aufzubauen.

1. Architekturüberblick OpenTelemetry Collector

Der OpenTelemetry Collector fungiert als universeller Agent oder Gateway. Er sammelt Telemetriedaten von verschiedenen Quellen, verarbeitet diese und exportiert sie an Backends.

  • Receivers: Empfangen von Daten (z. B. OTLP, Prometheus, Jaeger)
  • Processors: Transformation, Aggregation, Sampling
  • Exporters: Weiterleitung an Observability-Systeme

Collector Deployment-Modi

  • Agent: Läuft neben jedem Container/Host und sammelt lokal Telemetrie
  • Gateway: Zentralisiert die Daten von mehreren Agenten
  • Hybrid: Kombination aus beiden Modi für skalierbare Architekturen

2. Vorbereitung des Compose-Stacks

Bevor der Collector integriert wird, sollte der Compose-Stack vorbereitet sein:

  • Compose-Datei auf Version 3.9 setzen: version: "3.9"
  • Netzwerk für den Collector erstellen: networks: observability
  • Volumes für Persistenz von Konfigurationen und temporären Daten definieren

3. OpenTelemetry Collector als Compose Service

Der Collector wird als eigener Service definiert:

services:
  otel-collector:
    image: otel/opentelemetry-collector:latest
    container_name: otel-collector
    networks:
      - observability
    volumes:
      - ./otel-config.yaml:/etc/otel/config.yaml:ro
    command:
      --config /etc/otel/config.yaml
    ports:
      - "4317:4317"   # OTLP gRPC
      - "55681:55681" # OTLP HTTP
      - "8888:8888"   # Metrics endpoint

Wichtige Punkte

  • Readonly-Mount für die Konfiguration
  • Exponierte Ports nur für interne Netzwerke freigeben
  • Container Name für konsistente Log-Auswertung

4. Collector Konfiguration

Die otel-config.yaml definiert Receivers, Processors und Exporters:

receivers:
  otlp:
    protocols:
      grpc:
      http:
  prometheus:
    config:
      scrape_configs:
        - job_name: 'myapp'
          static_configs:
            - targets: ['myapp:8080']

processors:
batch:

exporters:
logging:
loglevel: debug
prometheus:
endpoint: "0.0.0.0:8888"
jaeger:
endpoint: "http://jaeger:14250"

service:
pipelines:
metrics:
receivers: [otlp, prometheus]
processors: [batch]
exporters: [logging, prometheus]
traces:
receivers: [otlp]
processors: [batch]
exporters: [logging, jaeger]

Hinweise zur Konfiguration

  • Receivers: OTLP für generische Instrumentierung, Prometheus für Metriken
  • Processors: Batch reduziert Export-Overhead
  • Exporters: Logging für Debug, Prometheus für Metrics, Jaeger für Tracing

5. Instrumentierung der Compose Services

Die Anwendungen müssen Telemetrie erzeugen:

  • OTLP SDK in Anwendung einbinden
  • Environment Variables in Compose definieren:
  • environment:
      - OTEL_EXPORTER_OTLP_ENDPOINT=otel-collector:4317
      - OTEL_RESOURCE_ATTRIBUTES=service.name=myapp
    
  • Optional Prometheus Endpoint in Services exposen

6. Netzwerk und Service Discovery

Alle Services kommunizieren über ein Compose-Netzwerk:

  • Collector ist über DNS unter otel-collector erreichbar
  • Services können Traces/Metrics direkt an den Collector senden
  • Netzwerk-Isolation für Security Policies nutzen

7. Monitoring und Debugging

Nach Start des Compose-Stacks prüfen:

  • Collector Logs: docker logs otel-collector -f
  • Metrics Endpoint: curl http://localhost:8888/metrics
  • Traces in Jaeger UI anzeigen
  • Prometheus scrape überprüfen: http://prometheus:9090/targets

8. Automatisierung und CI/CD Integration

OpenTelemetry Collector kann in CI/CD Pipelines überprüft und aktualisiert werden:

  • Compose Stacks mit Collector testen: Integrationstests für Metrics & Traces
  • Collector-Konfiguration versionieren und als ConfigMap/Volume bereitstellen
  • Deployment von Collector Image über CI/CD automatisieren

9. Best Practices

  • Collector als readonly Service betreiben
  • Nur notwendige Ports exponieren
  • Batch-Processor nutzen, um Export-Overhead zu minimieren
  • Environment Parity: gleiche Collector-Konfiguration in dev/stage/prod
  • Alerting auf fehlgeschlagene Exports und nicht erreichbare Targets konfigurieren

Mit dieser Integration des OpenTelemetry Collectors in Docker Compose lässt sich eine zentrale Observability-Pipeline aufbauen, die Metriken, Logs und Traces konsistent erfasst, verarbeitet und exportiert. So kann die Leistung, Zuverlässigkeit und Sicherheit von Container-Anwendungen durchgängig überwacht werden.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles