По порядку Middle Трейсы и OpenTelemetry обновлено

Как рождается распределённый трейс

Вопрос

Расставьте шаги, как появляется трейс запроса, прошедшего через gateway и сервис заказов.

Попробуйте сами

Расставьте шаги по порядку стрелками.

  1. 1
    Спаны завершаются и SDK отправляет их по OTLP в Collector
  2. 2
    Сервис заказов создаёт дочерний SERVER-спан с тем же trace_id
  3. 3
    Gateway вызывает сервис заказов и передаёт traceparent в заголовке
  4. 4
    Gateway получает запрос без traceparent и создаёт корневой спан с новым trace_id
  5. 5
    Сэмплер принимает решение и выставляет флаг sampled
  6. 6
    Collector пересылает спаны в бэкенд, где они собираются в дерево
Показать ответ и разбор

Коротко

Контекст создаётся один раз на входе и дальше только передаётся. Каждый сервис отправляет свои спаны независимо, а бэкенд собирает их по traceid.

Правильный порядок

  1. 1
    Gateway получает запрос без traceparent и создаёт корневой спан с новым trace_id
  2. 2
    Сэмплер принимает решение и выставляет флаг sampled
  3. 3
    Gateway вызывает сервис заказов и передаёт traceparent в заголовке
  4. 4
    Сервис заказов создаёт дочерний SERVER-спан с тем же trace_id
  5. 5
    Спаны завершаются и SDK отправляет их по OTLP в Collector
  6. 6
    Collector пересылает спаны в бэкенд, где они собираются в дерево

Разбор

Контекст создаётся один раз на входе и дальше только передаётся. Каждый сервис отправляет свои спаны независимо, а бэкенд собирает их по trace_id. Поэтому потерянный заголовок на любом шаге разрывает дерево.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.