Трассировка запросов

Tracing

trace

Трассировка запроса — это процесс отслеживания пути прохождения запроса от сервиса к сервису в распределенных системах.

Сопутствующие данные помогают проводить тестирование производительности, выявлять узкие места (bottleneck) и оптимизировать работу приложений.

Спан

Span

Спан представляет собой логическую единицу работы сервиса и состоит из следующего набора полей:

  1. Идентификатор, например, f1db285a0893f9f6.
  2. Название операции, которую произвел сервис.
  3. Название сервиса, к которому относится спан.
  4. Тэги: дополнительные данные в виде «ключ = значение», добавляемые для фильтрации спанов.
  5. Логи: информация о ходе операции или сообщение об ошибке.
  6. Время: начало и длительность выполнения операции.

Пример спана операции запроса данных клиента

span-example

Трейс

Trace

Трейс в свою очередь отображает путь прохождения запроса через систему и состоит из множества спанов.

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

trace-example

Схема транспортировки трейсов приложения

Рассмотрим минимальную конфигурацию компонентов для поддержки трассировки запросов с Jaeger и OpenTelemetry.

В приложение подключается библиотека OpenTelemetry, которая обеспечивает генерацию и экспорт данных. Трейсы приложения отправляются в Jaeger Collector, который далее сохраняет их в базу данных.

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

jaeger-schema

Анализ трейсов приложения

Основной показатель, с которого можно начать анализ данных трассировки - это время выполнения той или иной операции, так называемая задержка выполнения операции (latency).

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

Как пример, вызвать искусственное повышение фактического показателя задержки может неоптимально написанный SQL запрос, оптимизация которого позволит увеличить производительность системы.

Также мы можем обратить внимание на ошибки при выполнении некоторых операций, такие спаны отображаются в Jaeger UI с восклицательным знаком

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

jaeger-ui-trace-example

Пример трейса в Jaeger UI

Задача
Задача доступна премиум пользователям!

ВВЕДЕНИЕ

БАЗОВЫЕ ЗНАНИЯ

УРОВНИ ТЕСТИРОВАНИЯ

UI ТЕСТИРОВАНИЕ

ТЕСТ ДИЗАЙН

ТЕСТОВАЯ ДОКУМЕНТАЦИЯ

АУТЕНТИФИКАЦИЯ И АВТОРИЗАЦИЯ

POSTMAN

БАЗЫ ДАННЫХ

ТЕСТИРОВАНИЕ РЕЛИЗА

АНАЛИЗ РАБОТЫ ПРИЛОЖЕНИЯ

ПОДГОТОВКА К СОБЕСЕДОВАНИЮ

Как составить резюме Топ вопросов Собеседование