DevOps Pokročilý
OpenTelemetry — Unified Observability¶
OpenTelemetryObservabilityTracingMetrics 6 min čtení
OpenTelemetry jako standard pro traces, metriky a logy. Instrumentace, Collector a integrace s backendy.
Co je OpenTelemetry¶
OpenTelemetry (OTel) je CNCF projekt sjednocující traces, metriky a logy do jednoho standardu.
- API — definice rozhraní pro instrumentaci
- SDK — implementace pro každý jazyk
- Collector — agent pro příjem, zpracování a export telemetrie
- OTLP — protokol pro přenos dat
Auto-instrumentace¶
# Java agent
java -javaagent:opentelemetry-javaagent.jar \
-Dotel.service.name=order-service \
-Dotel.exporter.otlp.endpoint=http://otel-collector:4317 \
-jar app.jar
Auto-instrumentace zachytí HTTP requesty, DB dotazy, messaging a další bez změny kódu.
Manuální Instrumentace (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]
Shrnutí¶
OpenTelemetry je budoucnost observability. Jeden standard pro traces, metriky a logy — vendor-neutral, s podporou auto-instrumentace.
Potřebujete pomoct s implementací?¶
Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.