Трейсинг

Тема дорожной карты · Observability

Распределённая трассировка — это третий столп наблюдаемости, обеспечивающий сквозную видимость запросов по мере их прохождения через микросервисы, очереди и базы данных. Трассировка — это ориентированный ациклический граф спанов, каждый из которых представляет единицу работы в рамках отдельного сервиса; вместе они восстанавливают полный путь запроса через всю распределённую систему. Распределённая трассировка незаменима для диагностики узких мест по задержке и понимания сложных каскадов отказов, невидимых только для метрик и логов. Стандарт W3C Trace Context (заголовки HTTP traceparent и tracestate) и OpenTelemetry стали де-факто открытыми стандартами для передачи контекста трассировки между сервисами независимым от поставщика способом. Бэкенды Jaeger, Zipkin и Grafana Tempo хранят и визуализируют распределённые трассировки, позволяя инженерам переходить от высокоуровневого SLO-алерта к конкретному спану и сервису, ответственному за замедление.

Как это работает

Трейсинг захватывает пути запросов через сервисы. Trace = дерево spans; у каждого span — имя, длительность, атрибуты, parent span. Trace context (traceparent-заголовок по W3C) пробрасывается между сервисами — spans из разных сервисов соединяются в один trace. Storage: Jaeger, Tempo (Grafana-стек, масштабируется через object storage), Zipkin, SigNoz. Sampling at the head (решение per-request) или tail (решение после полного trace).

Когда применять

Tracing — когда сервисов > 2 или нужно дебажить latency. OpenTelemetry SDK + auto-instrumentation для популярных фреймворков (Spring, FastAPI, Express, Gin). Sampling 1-10% в production (head sampling); поднимайте до 100% на короткие debug-сессии. Tempo — если уже на Grafana-стеке; иначе Jaeger / SigNoz оба нормальны.

Типичные ошибки

Ловушки Трейсинг: 100% sampling на высоком трафике (storage взрывается + perf-хит); сломанная context propagation (HTTP middleware, стрипающий W3C traceparent — каждый вызов = новый trace); spans без релевантного контекста (service, version, user-segment) — traces сложно фильтровать.

Связанные понятия

Полезные ресурсы