Введение

Распределенное трассирование является ключевым модулем в системе наблюдаемости, используемым для достижения сквозного трассирования и анализа распределенных систем. Этот модуль предоставляет полное решение от сбора данных, хранения до визуального анализа, помогая разработчикам и операционному персоналу быстро находить аномалии вызовов сервисов, анализировать узкие места производительности и отслеживать поведение запросов на протяжении всего жизненного цикла.

Интегрируя с открытыми технологическими стеками и разработанными компонентами, этот модуль поддерживает возможности сквозного распределенного трассирования: приложения генерируют данные трассировки через методы инъекции или интеграции SDK, которые затем единообразно собираются и хранятся в Elasticsearch, что в конечном итоге реализуется через настроенный пользовательский интерфейс для многомерного визуального анализа. Пользователи могут проводить точные поиски, используя богатые условия, такие как TraceID, имя сервиса, теги и т. д.

Содержание

Преимущества

Ключевые преимущества трассировки следующие:

  • Способность к сквозному трассированию
    Поддерживает полное восстановление трассировки по сервисам, процессам и границам контейнеров, точно представляя сложные взаимосвязи вызовов в архитектурах микросервисов.

  • Гибкие методы сбора данных
    Поддерживает автоматическое трассирование на основе сервисной сетки через инъекцию прокси-сервера Istio, которое захватывает данные о взаимодействии между сервисами без изменения кода. Кроме того, предоставляет два режима автоматической инъекции OpenTelemetry (без изменения кода) и интеграции SDK, совместимые с основными языковыми приложениями, такими как Java/Python/Go.

  • Высокопроизводительные решения для хранения
    Использует Elasticsearch в качестве бэкенда хранения, поддерживая запись и быстрое извлечение массивных данных о спанах.

  • Гибкие возможности запросов и анализа
    Разработанный собственный пользовательский интерфейс интегрируется с API jaeger-query, поддерживая гибкие запросы на основе многомерных условий, таких как TraceID, принадлежность к сервису, теги и типы спанов, что облегчает пользователям быстрое выявление коренных причин проблем.

Сценарии применения

Основные сценарии применения трассировки следующие:

  • Диагностика ошибок распределенной системы
    В архитектурах микросервисов полное трассирование позволяет быстро выявлять ошибки сервисов и аномальные вызовы, что сокращает время диагностики неполадок.

  • Анализ узких мест производительности
    Анализируя задержки между вызовами сервисов, можно выявить узкие места производительности, что способствует оптимизации системы и корректировке ресурсов.

  • Анализ зависимостей сервисов
    Диаграмма водопадов временных рядов четко показывает пути вызовов и зависимости между сервисами, помогая архитекторам в проектировании систем и их улучшении.

Ограничения использования

При использовании трассировки следует обращать внимание на следующие ограничения:

  • Балансировка стратегий выборки и производительности
    • В сценариях высокой нагрузки сбор данных трассировки может оказывать определенное давление на производительность и хранилище Elasticsearch; рекомендуется настраивать коэффициент выборки разумно на основе условий бизнеса.