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