Ответ вслух Middle Трейсы и OpenTelemetry обновлено

Внедрение трейсинга

Вопрос

Интервьюер: «В компании 30 сервисов на Java, Go и Python, трейсинга нет. Как внедрите и с чего начнёте?»

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Беру OpenTelemetry, чтобы не привязываться к вендору. Начинаю с одного критичного пути, например оформления заказа, где сервисов пять-шесть.

Что должно прозвучать в ответе

  • OpenTelemetry как стандарт: SDK и авто-инструментирование для всех языков

  • Collector агентом и шлюзом, бэкенд (Tempo или Jaeger)

  • Распространение контекста W3C через HTTP, gRPC и очереди

  • Сэмплирование: head-based для старта, tail-based для ошибок и медленных

  • Связь с логами (trace_id) и метриками (exemplars)

  • Начать с критичного пользовательского пути, а не со всех сразу

Что могут спросить следом

  • Как проверить, что контекст не теряется?
  • Сколько это будет стоить?

Разбор

Образцовый ответ: «Беру OpenTelemetry, чтобы не привязываться к вендору. Начинаю с одного критичного пути, например оформления заказа, где сервисов пять-шесть. Подключаю авто-инструментирование: Java-агент, пакеты для Go и opentelemetry-instrument для Python, задаю service.name, версию и окружение. Данные идут по OTLP в Collector-агент на узлах, оттуда в шлюз и в Tempo с объектным хранилищем. Контекст W3C пробрасываю через HTTP, gRPC и заголовки Kafka, где авто-инструментирование не справилось, дописываю вручную. Сэмплирование сначала 10% head-based, затем tail-based: все ошибки и медленные, 1% остальных. Добавляю trace_id в логи и exemplars в гистограммы. Проверяю разрывы метрикой доли трейсов с одним сервисом на пути, где их должно быть пять».

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

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