DevOps Pokročilý
Distributed Tracing — Patterns a Best Practices¶
Distributed TracingObservabilityMicroservices 5 min čtení
Principy distribuovaného trasování. Context propagation, span design, correlation IDs a debugging v praxi.
Proč Distributed Tracing¶
V monolitu stačí stack trace. V mikroservisách request prochází desítkami služeb — bez tracingu je debugging noční můra.
- Trace — celá cesta requestu systémem
- Span — jedna operace (HTTP call, DB query)
- Context Propagation — předávání trace ID mezi službami
Context Propagation¶
# W3C Trace Context (standard)
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
tracestate: vendor=value
# V kódu (Go + OTel)
import "go.opentelemetry.io/otel/propagation"
// Middleware automaticky extrahuje/injectuje context
handler := otelhttp.NewHandler(mux, "api-server")
// Při volání downstream služby
ctx := r.Context()
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)
otel.GetTextMapPropagator().Inject(ctx, propagation.HeaderCarrier(req.Header))
Span Design¶
- Pojmenujte spany podle operace:
HTTP GET /api/orders - Přidejte smysluplné atributy:
order.id,user.id - Používejte span events pro důležité momenty
- Nastavte status na ERROR s popisem chyby
- Nepřehánějte granularitu — span per for-loop iteraci je anti-pattern
Shrnutí¶
Distributed tracing je nezbytný pro debugging a performance analýzu mikroservis. W3C Trace Context je standard, OpenTelemetry nejlepší implementace.
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.