Что такое Jaeger?

Jaeger – это программное обеспечение, которое вы можете использовать для отслеживания и устранения проблем во взаимосвязанных программных компонентах, называемых микросервисами. Несколько микросервисов взаимодействуют между собой с целью выполнения единой программной функции. Разработчики используют Jaeger для визуализации цепочки событий при взаимодействии микросервисов, чтобы изолировать проблему, когда что-то идет не так, как требуется. Jaeger также называется трассировкой Jaeger, потому что отслеживает, или трассирует, путь запроса через серию взаимодействий между микросервисами.   

Почему сервис Jaeger настолько важен?

Раньше создавались монолитные приложения, в которых несколько функций поставлялись в одной базе кода. Например, когда создавалось приложение для заказа продуктов, в один блок программного обеспечения помещались меню, рестораны и платежные системы. Из-за такого проектирования решение становилось сложным, и его было сложно поддерживать. Если разработчики вносили изменения в код в одной области, это затрагивало систему целиком, потому управление изменениями было долгим и утомительным процессом. Для решения этой проблемы была создана более модульная архитектура.

Микросервисы

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

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

 

Каждый микросервис работает как независимое приложение и имеет доступ к собственной базе данных и логике. Микросервисы взаимодействуют друг с другом, используя запросы и ответы, как интернет-приложение. Базовая система микросервисов называется распределенной системой.

Архитектура микросервисов устранения ошибок

В распределенных системах сложно анализировать проблемы из-за сложного поведения микросервисов. Например, при размещении заказа на продукты в модульном приложении может быть отправлено несколько запросов к разным микросервисам. Эти запросы могут быть созданы одновременно и независимо друг от друга. Они не обязательно отправляются в последовательности. Если при заказе продуктов возникает проблема, разработчикам необходимо определить, какой микросервис ее вызвал. Обычные подходы к отслеживанию проблем дают лишь частичное представление о запросе, что усложняет работу микросервисов.

 

Jaeger – это программный инструмент, который используется ИТ-командами для получения ясного и четкого представления о полной цепочке событий. Они могут быстрее решать проблемы и улучшать взаимодействие с клиентами.

Для чего используется Jaeger?

Разработчики используют Jaeger для повышения производительности распределенной системы несколькими различными способами. Ниже представлены несколько примеров.

Отслеживание распределенных транзакций

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

Оптимизация задержки

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

Анализ первопричин

В архитектуре микросервисов одна проблема может стать причиной других. Разработчики могут использовать Jaeger для поиска начальной точки в серии взаимосвязанных проблем в приложении.

Анализ зависимостей сервиса

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

Распространение распределенного контента

Распространение распределенного контента – это передача приложением описательной информации вместе с данными. Это помогает разработчикам оценивать общую производительность микросервисов. Например, Jaeger помечает запросы на заказы тегами с именем клиента, чтобы разработчики могли связать путь запроса с конкретным клиентом. 

Как работает Jaeger?

Jaeger основывается на принципах распределенного отслеживания и использует платформу OpenTracing.

Распределенное отслеживание

Распределенное отслеживание – это программная технология, которая отслеживает последовательности событий микросервисов. Она отслеживает все подключения и предоставляет диаграммы и графы для визуализации путей запросов в приложении. Как инструмент распределенного отслеживания Jaeger отслеживает движение запросов, назначая уникальные идентификаторы каждому запросу и собирая информацию, когда отдельный сервис обрабатывает запрос. 

OpenTracing

OpenTracing – это платформа с открытым исходным кодом, или свободно доступная платформа, которая предоставляет стандарты для точного и готового к использованию решению для отслеживания в современных программных системах. Например, она предоставляет общий стандарт для определения структуры отслеживаемой информации, которая передается между микросервисами. Jaeger использует OpenTracing для предоставления комплексного решения для сбора, хранения, анализа и визуализации данных микросервисов и управления ими.  

Модель данных OpenTracing

Модель данных OpenTracing предоставляет базовое определение для подключения данных из различных компонентов. В ней используются два основных термина: отрезок и отслеживание.

Отрезок

Отрезок – это отдельный блок работы, выполненной в распределенной системе отслеживания. Каждый отрезок состоит из следующих компонентов.

  • Название операции.
  • Время начала и завершения.
  • Теги или значения, которые помогают разработчикам анализировать отрезок.
  • Журналы, в которых хранятся сообщения, генерируемые микросервисы.
  • Контекст отрезка или его дополнительное описание.

Отслеживание

Отслеживание – это коллекция из одного или нескольких отрезков, принадлежащих одному и тому же процессу. Оно предоставляет собой события, произошедшие за определенный период. Отрезки, которые принадлежат одному и тому же отслеживанию, используют один и тот же идентификатор отслеживания. Например, отслеживание, которое генерируется, когда клиент заказывает продукты, охватывает следующие отрезки. 

  • Клиент отправляет заказ.
  • Обрабатывается платеж.
  • Список товаров из заказа отправляется в ресторан.
  • Подбираются продукты.
  • Производится доставка продуктов.

Из каких компонентов состоит Jaeger?

Платформа распределенного отслеживания Jaeger состоит из перечисленных ниже компонентов. 

Клиент Jaeger

Клиент Jaeger содержит реализации API OpenTracing для определенных языков программирования, например Go, JavaScript, Java, Python, Ruby и PHP.

Разработчики используют эти API для создания отрезков Jaeger без записи исходного кода для распределенного отслеживания. 

Агент Jaeger

Агент Jaeger – это сетевой демон или процесс, который непрерывно выполняется в фоновом режиме и выполняет функции, необходимые для других процессов. Он ожидает данные, периодически отправляемые клиентом по протоколу пользовательских дейтаграмм (UDP), который представляет собой способ связи, позволяющий приложениям обмениваться сообщениями по сети.  

Агент подключается к клиенту в контейнерных средах, таких как Amazon Elastic Kubernetes Service. Группы агентов создают пакеты отрезков и отправляют их сборщику. Это позволяет приложению работать без активной отправки информации об отслеживании серверной части Jaeger. 

Сборщик Jaeger

Сборщик Jaeger – это программный компонент, принимающий трассировку от сборщика Jaeger. Он проверяет, обрабатывает и хранит трассировки в базе данных.

Хранилище

Система отслеживания Jaeger получает отрезки и хранит их в серверной части постоянного хранилища или в базе данных. Постоянное хранилище – это хранилище, в котором хранимые данные остаются незатронутыми, даже если компьютер выключен. Например, разработчики используют Сервис AWS OpenSearch как постоянное хранилище для хранения и приема отрезков.

Средство приема

Один из способов развертывания Jaeger является отправка данных отслеживания в Kafka, распределенную систему, в которой приложения хранят и в которую принимают потоки информации. Средство приема – это модуль, который читает данные отслеживания из Kafka и хранит их отдельно. 

Запрос

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

Консоль Jaeger

Консоль Jaeger – это программа с пользовательским интерфейсом, которую можно использовать для просмотра и анализа данных отслеживания. Она выводит данные отслеживания в виде графов и диаграмм. 

Как разработчики используют Jaeger?

Когда разработчики компонуют приложение, они используют клиентские библиотеки Jaeger для создания отрезков. Добавляя в программу код для создания данных отслеживания, они создают то, что называется инструментальным приложением. Инструментальное приложение автоматически генерирует указанные ниже данные.

 

  1. Отрезки с идентификатором отрезка, идентификатором отслеживания, тегами, журналами и контекстом интервала. 
  2. Отслеживание для каждого запроса.

 

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

Каковы стратегии выборок в Jaeger?

Инструментальное приложение автоматически передает данные трассировки во время выполнения приложения. Вы можете использовать эти данные трассировки для измерения производительности приложения. Также они называются данными телеметрии. Чтобы не перегрузить серверную часть Jaeger избыточными данными телеметрии, вы можете отфильтровать их или сделать выборку, настроив стратегии выборки в реализации Jaeger. Существует несколько стратегий выборки.

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

Что такое AWS App Mesh?

AWS App Mesh — это сервисная сетка или программная инфраструктура, которая выполняет всю тяжелую работу, чтобы вам было проще управлять распределенными системами на основе микросервисов. AWS App Mesh выполняет следующие функции: 

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

Вы можете использовать AWS App Mesh в качестве автономного решения для распределенного отслеживания. Он также поддерживает несколько сторонних инструментов, не относящихся к AWS, таких как Jaeger, которые можно использовать для мониторинга, регистрации в журнале или отслеживания взаимодействия микросервисов.

Создайте учетную запись AWS и начните работу с технологией Jaeger на App Mesh уже сегодня.

Jaeger в AWS: дальнейшие шаги

Изучите дополнительные ресурсы по продукту
Подробнее об AWS App Mesh 
Зарегистрировать бесплатный аккаунт

Получите мгновенный доступ к уровню бесплатного пользования AWS. 

Регистрация 
Начать разработку в консоли

Начните разработку с использованием AWS в консоли управления AWS.

Вход