OpenTelemetry in Kubernetes bereitstellen¶
OpenTelemetry (OTel) ist ein Open-Source-Standard für Observability — Traces, Metriken und Logs aus einem SDK. Hier ist eine Anleitung zur Bereitstellung in Kubernetes.
Voraussetzungen¶
- Kubernetes Cluster (1.26+)
- kubectl + helm
- Grafana Stack (Tempo, Mimir, Loki) oder ein anderes Backend
Schritt 1: OTel Collector installieren¶
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm install otel-collector open-telemetry/opentelemetry-collector \
--namespace observability \
--create-namespace \
-f values.yaml
Schritt 2: Collector konfigurieren¶
# values.yaml
mode: deployment
config:
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
batch:
timeout: 5s
send_batch_size: 1000
exporters:
otlp/tempo:
endpoint: tempo.observability:4317
tls:
insecure: true
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp/tempo]
Schritt 3: Anwendung instrumentieren¶
Für Python:
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
provider = TracerProvider()
exporter = OTLPSpanExporter(endpoint="otel-collector.observability:4317")
provider.add_span_processor(BatchSpanProcessor(exporter))
trace.set_tracer_provider(provider)
Schritt 4: Verifizierung¶
kubectl port-forward svc/grafana 3000:3000 -n observability
# Öffnen Sie Grafana → Explore → Tempo → suchen Sie nach Traces
Tipps¶
- Sampling: Für Produktion Tail-Based Sampling einstellen (1-10% Traces)
- Resource Detection: K8s Resource Detector für automatische Labels hinzufügen
- Kosten: OTel ist kostenlos, aber Backend Storage kostet Geld — Retention planen
Fazit¶
OpenTelemetry ist die Zukunft der Observability. Einmal instrumentieren, Backend jederzeit wechseln.
opentelemetrykubernetesmonitoringtracesmetriky