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