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