Jak nasadit OpenTelemetry v Kubernetes¶
OpenTelemetry (OTel) je open-source standard pro observabilitu — traces, metriky a logy z jednoho SDK. Tady je návod, jak ho nasadit v Kubernetes.
Předpoklady¶
- Kubernetes cluster (1.26+)
- kubectl + helm
- Grafana stack (Tempo, Mimir, Loki) nebo jiný backend
Krok 1: Instalace OTel Collector¶
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
Krok 2: Konfigurace Collector¶
# 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]
Krok 3: Instrumentace aplikace¶
Pro 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)
Krok 4: Ověření¶
kubectl port-forward svc/grafana 3000:3000 -n observability
# Otevřete Grafana → Explore → Tempo → hledejte traces
Tipy¶
- Sampling: Pro produkci nastavte tail-based sampling (1-10% traces)
- Resource detection: Přidejte k8s resource detector pro automatické labely
- Cost: OTel je zdarma, ale backend storage stojí peníze — plánujte retenci
Závěr¶
OpenTelemetry je budoucnost observability. Jednou instrumentujete, backend měníte kdykoliv.
opentelemetrykubernetesmonitoringtracesmetriky