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