Рубрики
Uncategorized

Использование Jaeger для ваших микросервисов

Jaeger-это популярный инструмент с открытым исходным кодом, используемый для распределенной трассировки в архитектуре микросервиса. В… Tagged с DevOps, мониторинг, микросервисы, Jaeger.

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

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

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

Что такое распределенная трассировка?

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

Микросервисная архитектура вымышленного приложения электронной коммерции

Распределенная трассировка дает вам представление о том, как конкретная услуга выполняется как часть целого в распределенной программной системе. Есть две важные понятия, связанные с распределенной трассировкой: Пролеты и Трассировка контекста Анкет

Запросы пользователя разбиты на пролеты.

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

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

Контекст трассировки передается, когда запросы пользователя передают одну службу в другую

Что такое Jaeger?

Jaeger — это инструмент распределенного отслеживания, предназначенный для мониторинга и устранения неполадок транзакций в архитектуре микросервиса. Он был разработан командами в Uber, а затем в 2015 году. Он был принят в качестве инкубационного проекта инкубационного фонда Cloud Computing Foundation (CNCF) в 2017 году и был повышен до статуса выпускника в 2019 году.

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

Как Jaeger отслеживает транзакции через архитектуру микросервиса?

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

Четыре ключевых компонента:

  • Приборы
  • Трубопровод данных
  • Бэкэнд -хранение
  • Интернет -интерфейс/визуализация

Jaeger Architecture (Источник: Jaeger сайт)

Давайте подробно посмотрим, что это за компоненты и как эти компоненты объединяются для мониторинга архитектуры микросервиса.

Приборы

Что такое инструменты?

Инструментация — это процесс генерации данных телеметрии (журналы, метрики и следы) из вашего кода приложения. По сути, это написание кода, который позволяет вашему коду приложения издавать данные телеметрии, которые можно использовать позже для изучения проблем.

Большинство инструментов распределенного отслеживания предлагают клиентам библиотеки, агенты и SDK для кода приложения прибора. Клиентские библиотеки Jaeger для инструментов основаны на APIS Opentracing Анкет

OpenTracing был проектом с открытым исходным кодом, направленным на предоставление API-интерфейсов и инструментов для распределенного отслеживания, нейтрального, нейтрального поставщика. Позже он был объединен в Opentelemetry Анкет У Jaeger есть официальные клиентские библиотеки на следующих языках:

  • Идти
  • Ява
  • Node.js
  • Питон
  • C++
  • C#

Когда услуга инструментация, она генерирует пролеты для входящих транзакций и прикрепляет следующий контекст к исходящим транзакциям.

Трубопровод данных

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

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

Бэкэнд -хранение

Jaeger поставляется с простой хранилищем в памяти для настройки тестирования. Jaeger поддерживает две популярные базы данных NOSQL с открытым исходным кодом в качестве бэкэндов хранения трассировки:

  • Кассандра
  • Elasticsearch

Интернет -интерфейс/визуализация

Пользовательский интерфейс Jaeger является основным, но всеобъемлющим, когда речь идет о распределенной трассировке.

Jaeger пользовательский интерфейс показывает услуги и соответствующие следы

Пользовательский интерфейс Jaeger показывает пролеты для выбранных трассов

Проблемы использования Jaeger

Jaeger является предпочтительным выбором, когда дело доходит до распределенной трассировки. Но инженерные команды нуждаются в нечто большее, чем следы, чтобы быстро решить проблемы. Им нужен доступ как к показателям, так и следам. Метрики, такие как время отклика, частота ошибок, показатели запросов и использование ЦП, одинаково важны для понимания производительности приложения.

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

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

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

Signoz — альтернатива Jaeger для микросервисов

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

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

Signoz также обеспечивает гибкость пользователей с точки зрения хранения данных. Вы можете выбрать между Clickhouse или Kafka + Druid в качестве бэкэнд -хранилища при установке Signoz. Оба являются отраслевыми и высоко масштабируемыми базами данных.

Архитектура Signoz с Clickhouse в качестве бэкэнда хранения и OpenteLemetry для кода InstrumentAtiion

Signoz поставляется с визуализацией из коробки таких вещей, как красные метрики.

Пользовательский интерфейс Signoz, показывающий метрики обзора приложений, такие как RPS, 50 -й/90 -й/99 -й процентиль задержек и частота ошибок

Вы также можете использовать Flamegraphs для визуализации пролетов из ваших трассировки. Все это выходит из коробки с Signoz.

Flamegraphs, показывающие точную продолжительность, взятая каждые пролеты — концепция распределенной трассировки »

Некоторые из вещей могут помочь вам отслеживать:

  • Метрики обзора приложений, такие как RPS, 50 -й/90/99 -й процентиль задержек и Частота ошибок
  • Самые медленные конечные точки в вашем приложении
  • См. Точный след запроса, чтобы выяснить проблемы в сфере услуг, медленные запросы DB, позвоните в сторонние услуги, такие как платежные шлюзы, так далее
  • Фильтрующие следы по имени службы, операции, задержке, ошибке, тегами/аннотациям.
  • Запустите агрегаты на данных трассировки
  • Унифицированный пользовательский интерфейс как для метрик, так и для следов

Вы можете проверить здесь Signoz Github Repo 👇

Оригинал: «https://dev.to/signoz/using-jaeger-for-your-microservices-4goi»