Как работает tracing (OpenTelemetry)?

Middle+
635 просмотров
AFK Offer AI

Tracing — отслеживание пути запроса через все сервисы. Каждый запрос получает уникальный trace ID, а каждая операция внутри — span. OpenTelemetry (OTel) — стандарт для сбора traces, metrics и logs.

tracer := otel.Tracer("my-service")

func handleRequest(ctx context.Context) error { ctx, span := tracer.Start(ctx, "handleRequest") defer span.End()

span.SetAttributes(attribute.String("user_id", "42"))

// вложенный span ctx, dbSpan := tracer.Start(ctx, "db.query") result := db.QueryContext(ctx, "SELECT ...") dbSpan.End()

return nil }

Trace ID передаётся между сервисами через заголовки (traceparent). В UI (Jaeger, Tempo) видишь waterfall — какой сервис сколько времени занял. Это незаменимо для дебага в микросервисах: запрос тормозит — открываешь trace и видишь, что 2 секунды ушло на запрос к payment-сервису. Без трейсинга дебаг распределённой системы — стрельба в темноте.

Следующий вопрос

Что такое BFS и DFS?