🔴 Advanced

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:

  1. API — rozhranie pre inštrumentáciu kódu
  2. SDK — implementácia API s konfigurácou exportérov
  3. Auto-instrumentácia — automatická inštrumentácia bez zmeny kódu
  4. 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.