OpenTelemetry — Observability Štandard
OpenTelemetry (OTel) je open-source framework a CNCF projekt, ktorý zjednocuje zber traces, metrík a logov. Je to vendor-neutral štandard — zbierajte telemetriu raz a posielajte ju kamkoľvek.
Čo je OpenTelemetry?
OpenTelemetry vznikol zlúčením projektov OpenTracing a OpenCensus. Poskytuje jednotné API, SDK a nástroje na inštrumentáciu aplikácií a infraštruktúry. Podporuje všetky tri piliere observability:
- Traces — sledovanie požiadavky naprieč mikroslužbami (distributed tracing)
- Metriky — numerické merania (latencia, počet requestov, CPU usage)
- Logy — štruktúrované záznamy udalostí
Kľúčová výhoda: inštrumentujete aplikáciu raz a dáta môžete posielať do Jaeger, Zipkin, Prometheus, Grafana Tempo, Datadog alebo akéhokoľvek iného backendu.
Ako funguje
Komponenty OpenTelemetry:
- API — rozhranie pre inštrumentáciu kódu
- SDK — implementácia API s konfigurácou exportérov
- Auto-instrumentácia — automatická inštrumentácia bez zmeny kódu
- Collector — agent na príjem, spracovanie a export telemetrie
OTel Collector architektúra:
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
memory_limiter:
limit_mib: 512
exporters:
prometheus:
endpoint: 0.0.0.0:8889
otlp/tempo:
endpoint: tempo:4317
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: [prometheus]
logs:
receivers: [otlp]
processors: [batch]
exporters: [loki]
Auto-instrumentácia je najrýchlejší štart — pre Node.js stačí:
npm install @opentelemetry/auto-instrumentations-node
node --require @opentelemetry/auto-instrumentations-node/register app.js
Automaticky zachytáva HTTP requesty, databázové volania, gRPC a ďalšie.
Praktické použitie
- Distributed tracing — vizualizácia celej cesty requestu cez 10+ mikroslužieb
- Korelácia — prepojenie traces, metrík a logov cez spoločné trace ID
- Performance debugging — identifikácia pomalých spanов v trace waterfall
- Vendor migration — zmena backendu bez zmeny inštrumentácie
- Service mesh integrácia — Envoy a Istio natívne podporujú OTel
Best Practices
- Začnite s auto-instrumentáciou — pridajte custom spany až keď treba
- Používajte OTel Collector — nikdy neposielajte telemetriu priamo z aplikácie do backendu
- Sampling — v produkcii nezbierajte 100% traces, používajte tail-based sampling
- Semantic conventions — dodržujte OTel konvencie pre názvy atribútov
- Context propagation — zabezpečte propagáciu trace contextu medzi službami
OpenTelemetry je budúcnosť observability — jeden štandard pre všetku telemetriu.