Распределённая трассировка становится обязательной, когда критический путь запроса уже нельзя восстановить ни по памяти, ни по разрозненным логам.
Глава разбирает Jaeger, Tempo, путь записи, путь чтения и выборку, показывая, как наблюдаемость микросервисов упирается в баланс между глубиной данных, задержкой и стоимостью хранения.
На интервью этот материал помогает чётко объяснить, когда трассировки лучше метрик или логов, как искать участки повышенной задержки и почему полная запись трассировок без выборки не всегда оправдана.
Практическая польза главы
Практика проектирования
Проектируйте путь спана от сервиса до хранилища и обратно к расследованию: инструментирование, коллектор, выборка, хранение и поиск.
Качество решений
Оценивайте стек через скорость поиска трассировки, стоимость хранения, кардинальность меток и полноту критического пути запроса.
Аргументация на интервью
Показывайте, когда трассировка полезнее метрик и логов, как она локализует задержку и почему выборка должна быть осознанной.
Формулировка компромиссов
Явно обсуждайте цену полной записи трассировок, глубину атрибутов, срок хранения и скорость работы интерфейса расследования.
Контекст
Наблюдаемость и проектирование мониторинга
Эта глава углубляет тему распределённой трассировки внутри общей платформы наблюдаемости.
Распределённая трассировка в микросервисах показывает путь запроса через сервисы, очереди и зависимости, чтобы команда могла найти задержку или ошибку не по догадкам, а по связанным спанам. В этой главе мы разбираем , , , , выборку, и хранение трассировок в Jaeger и Tempo. Материал продолжает Наблюдаемость и проектирование мониторинга и фокусируется на операционных решениях, которые ускоряют расследование инцидентов.
Инструменты: Jaeger и Tempo
Jaeger
Классическая с открытым исходным кодом, понятным интерфейсом и быстрым стартом для команд, которые только внедряют .
Сильные стороны
- Даёт : каскадная диаграмма запроса и критический путь видны уже на первом поэтапном запуске.
- Хорошо интегрируется с OpenTelemetry.
- Удобен как интерфейс для дежурных инженеров и .
Компромиссы
- При росте объёма трассировок чувствительными становятся и размер индексов.
- Нужны аккуратная и контроль .
Tempo
Серверная часть системы трассировки от Grafana Labs, ориентированная на дешёвое хранение в и масштабирование большого потока спанов.
Сильные стороны
- Экономичен на масштабе благодаря объектному хранилищу и блочному формату данных.
- Хорошо сочетается с Grafana Explore и метриками в едином диагностическом контуре.
- Подходит для платформ с большим потоком трассировок и длинными .
Компромиссы
- Качество диагностики зависит от атрибутов спанов и корректной .
- Нужен продуманный , иначе становится медленным.
Схема распределённой трассировки
Схема распределённой трассировки в микросервисах
Одна платформа телеметрии обслуживает два разных пути: запись спанов и диагностический поиск.
Как спаны попадают в хранилище
Этапы выстроены сверху вниз: источник, обработка, хранилище и результат расследования.
Инструментированные микросервисы
SDK создают спаны и передают контекст трассировки между HTTP, gRPC и Kafka.
OpenTelemetry Collector
Коллектор обогащает, фильтрует, выбирает и маршрутизирует телеметрию.
Серверная часть приёма
Поток экспортируется в Jaeger Collector и/или Tempo Distributor.
Хранилище трассировок
Jaeger пишет индексы и спаны в хранилище, Tempo складывает блоки в объектное хранилище.
Путь записи: как спаны доходят до хранилищ
- SDK в сервисах создают спаны и передают traceparent между HTTP, gRPC и Kafka.
- OpenTelemetry Collector обогащает телеметрию полями service, env, tenant и применяет политику выборки.
- Коллектор экспортирует поток в Jaeger Collector и/или Tempo Distributor.
- Jaeger пишет индексы и спаны в хранилище, Tempo формирует блоки в объектном хранилище.
Операционные акценты
- Jaeger удобен для быстрого старта и знакомого UX расследований.
- Tempo снижает стоимость за счёт объектного хранилища и отказа от тяжёлого индексирования всех спанов.
- Для сценариев с высокой кардинальностью критичны выборка по результату запроса и уровни хранения.
Решения для пути записи и пути чтения
Путь записи
- должен передаваться на каждой границе: HTTP, gRPC, и .
- OpenTelemetry Collector работает как точка применения правил: , фильтрация, и .
- Для высоконагруженных систем задавайте отдельные квоты на приём трассировок, чтобы они не съедали бюджет логов и метрик.
- Хранение проектируется как продуктовое требование: уровни хранения, TTL и целевая .
Путь чтения
- Начинайте поиск трассировки с сигналов влияния: сервис, status=ERROR и окно высокой задержки p95/p99.
- Jaeger UI и Grafana Explore должны использовать единые правила именования сервисов и .
- Контролируйте как отдельный SLI: инженер должен получить трассировку за секунды, а не минуты.
- обязательна: без неё расследование становится ручным и медленным.
Практический чек-лист внедрения
Согласовать обязательные : service.name, deployment.environment, tenant, error.type.
Ввести отдельные для критичных API, фоновых задач и шумных точек входа.
Проверить нагрузку коллектора телеметрии и хранилища трассировок на синтетическом и похожем на промышленный трафике.
Встроить в операционные инструкции и шаблоны реагирования на инциденты для дежурной команды.
Частые антипаттерны
Включать стопроцентную выборку без оценки стоимости хранения и запросов, а также без профилей по критичности трафика.
Ограничиваться только и терять внутренние .
Смешивать именование спанов и меток между командами без общего контракта .
Проектировать трассировку как отдельный инструмент, а не как часть процесса .
Источники
Связанные главы
- Наблюдаемость и проектирование мониторинга - Базовый контур наблюдаемости, где трассировка дополняет метрики и логи для быстрого первичного разбора инцидента.
- Inter-Service Communication Patterns - Покрывает HTTP, gRPC и асинхронные границы, на которых критична корректная передача контекста трассировки.
- Архитектура сервисной сетки (service mesh) - Показывает телеметрию сервисной сетки и управление трассировкой на уровне контура обработки в микросервисах.
- Prometheus: история и архитектура - Связывает трассировки с метриками для корреляции задержек, спанов и деградаций.
- Performance Engineering - Добавляет методы анализа задержек и поиска узких мест, где распределённая трассировка даёт первичную диагностику.
- Интервью по диагностике инцидентов - Практика первичного разбора и поиска корневой причины, где трассировки сокращают время расследования.
