Distributed Tracing — ключевой модуль в системе наблюдаемости контейнерных платформ, используемый для сквозного трассирования и анализа распределённых систем. Этот модуль построен на основе стандарта OpenTelemetry (OTel), предоставляя комплексное решение от сбора данных и их хранения до визуального анализа, помогая разработчикам и операционному персоналу быстро выявлять аномалии вызовов сервисов, анализировать узкие места в производительности и отслеживать поведение запросов на протяжении всего их жизненного цикла.
Интегрируясь с open-source технологическими стеками и собственными компонентами, модуль поддерживает возможности сквозного трассирования: приложения генерируют трассировочные данные через методы OTel automatic injection
или интеграции с SDK
, которые затем централизованно собираются и сохраняются в Elasticsearch, а в итоге реализуются через кастомный UI для многомерного визуального анализа. Пользователи могут выполнять точный поиск по богатым условиям, таким как TraceID
, имя сервиса, теги и другие.
Основные преимущества трассирования заключаются в следующем:
Возможность сквозного трассирования
Поддержка полного восстановления трассировки между сервисами, процессами и контейнерами, точное отображение сложных взаимосвязей вызовов в микросервисной архитектуре.
Гибкие методы сбора данных
Предоставление двух режимов: автоматическая инъекция (без изменения кода) и интеграция через SDK, совместимые с основными языками программирования, такими как Java/Python/Go.
Высокопроизводительные решения для хранения
Использование Elasticsearch в качестве backend для хранения, поддержка записи и быстрого поиска огромных объёмов данных спанов.
Гибкие возможности запросов и анализа
Собственный UI интегрирован с API jaeger-query
, поддерживает гибкие запросы по многомерным условиям, таким как TraceID, принадлежность к сервису, теги и типы спанов, что облегчает пользователям быстро находить корневые причины проблем.
Поддержка стандартизированных протоколов
Построен на стандарте OpenTelemetry, может интегрировать трассировочные данные, сгенерированные другими облачными компонентами OTel.
Основные сценарии применения трассирования включают:
Диагностика сбоев в распределённых системах
В микросервисной архитектуре полное трассирование позволяет быстро выявлять сбои сервисов и аномальные вызовы, сокращая время диагностики.
Анализ узких мест в производительности
Анализируя задержки между вызовами сервисов, можно выявлять узкие места в производительности, что помогает оптимизировать систему и корректировать ресурсы.
Анализ зависимостей сервисов
Временная диаграмма-водопад наглядно показывает пути вызовов и зависимости между сервисами, помогая архитекторам в проектировании и улучшении системы.
При использовании трассирования следует учитывать следующие ограничения: