Внедрение трейсинга
Вопрос
Интервьюер: «В компании 30 сервисов на Java, Go и Python, трейсинга нет. Как внедрите и с чего начнёте?»
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
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 ошибок.