DevOps Fortgeschritten
OpenTelemetry — Unified Observability¶
OpenTelemetryObservabilityTracingMetrics 6 min Lesezeit
OpenTelemetry als Standard für Traces, Metriken und Logs. Instrumentierung, Collector und Integration mit Backends.
Was ist OpenTelemetry¶
OpenTelemetry (OTel) ist ein CNCF-Projekt, das Traces, Metriken und Logs in einem Standard vereinheitlicht.
- API — Definition der Instrumentierungs-Schnittstelle
- SDK — Implementierung für jede Sprache
- Collector — Agent zum Empfangen, Verarbeiten und Exportieren von Telemetrie
- OTLP — Protokoll zur Datenübertragung
Auto-Instrumentierung¶
# Java agent
java -javaagent:opentelemetry-javaagent.jar \
-Dotel.service.name=order-service \
-Dotel.exporter.otlp.endpoint=http://otel-collector:4317 \
-jar app.jar
Auto-Instrumentierung erfasst HTTP-Requests, DB-Abfragen, Messaging und mehr ohne Codeänderungen.
Manuelle Instrumentierung (Python)¶
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
provider = TracerProvider()
provider.add_span_processor(
BatchSpanProcessor(OTLPSpanExporter(endpoint="otel-collector:4317")))
trace.set_tracer_provider(provider)
tracer = trace.get_tracer("order-service")
@tracer.start_as_current_span("process_order")
def process_order(order_id: str):
span = trace.get_current_span()
span.set_attribute("order.id", order_id)
span.add_event("payment_processed")
OTel Collector¶
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
batch:
timeout: 5s
send_batch_size: 1024
exporters:
otlp/tempo:
endpoint: tempo:4317
prometheusremotewrite:
endpoint: http://prometheus:9090/api/v1/write
loki:
endpoint: http://loki:3100/loki/api/v1/push
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp/tempo]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheusremotewrite]
Zusammenfassung¶
OpenTelemetry ist die Zukunft der Observability. Ein Standard für Traces, Metriken und Logs — herstellerneutral, mit Unterstützung für Auto-Instrumentierung.
Brauchen Sie Hilfe bei der Implementierung?¶
Unser Team hat Erfahrung mit dem Entwurf und der Implementierung moderner Architekturen. Wir helfen Ihnen gerne.