Skip to content
EN

Что такое Jaeger

Коротко:

Jaeger — open-source distributed tracing system от Uber (2015), CNCF graduated с 2019. Показывает path одного request через множество microservices как tree spans с timings. Used for: debugging slow request, finding bottleneck, understanding service dependencies. Alternatives: Zipkin (Twitter, похожий), Tempo (Grafana, cheaper storage).

Ниже: подробности, пример, смежные термины, FAQ.

Проверить свой сайт →

Подробности

  • Spans: work unit with duration, tags, logs
  • Trace: collection of spans для одного request
  • Service map: auto-generated из spans — видно как services connect
  • Storage backends: Cassandra, Elasticsearch, Kafka, memory
  • Sampling: default 1% чтобы не перегрузить storage

Пример

// Python example (OpenTelemetry)
from opentelemetry import trace
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span('payment.charge') as span:
    span.set_attribute('user.id', user_id)
    result = stripe.charge(amount)
    span.set_status(Status(StatusCode.OK))

Смежные термины

Установка и настройка Jaeger

Для установки Jaeger необходимо выполнить несколько шагов. Сначала нужно скачать последнюю версию Jaeger с официального сайта. Затем распакуйте архив и запустите необходимые службы. jaeger-operator упрощает развёртывание Jaeger в Kubernetes. Пример команды для запуска Jaeger в Kubernetes: kubectl apply -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/jaeger-quickstart.yml. После развёртывания необходимо настроить службы и агенты Jaeger для сбора данных. Важно убедиться, что все компоненты Jaeger правильно настроены и взаимодействуют друг с другом.

Интеграция Jaeger с микросервисной архитектурой

Интеграция Jaeger с микросервисной архитектурой позволяет отслеживать запросы и выявлять проблемы в распределённых системах. Для интеграции Jaeger с микросервисами необходимо настроить сбор данных с помощью агентов Jaeger. Агенты Jaeger собирают данные о запросах и отправляют их в коллектор Jaeger. Коллектор обрабатывает данные и сохраняет их в базе данных. Затем данные отображаются в пользовательском интерфейсе Jaeger. Пример: для настройки агента Jaeger в микросервисе необходимо добавить конфигурацию агента в файл конфигурации микросервиса и запустить агент.

Анализ данных в Jaeger

Jaeger предоставляет мощные инструменты для анализа данных о запросах. В пользовательском интерфейсе Jaeger можно просматривать дерево spans, отображающее путь запроса через микросервисы. Также можно просматривать тайминги каждого span и выявлять узкие места. Для более детального анализа можно использовать фильтры и запросы в Jaeger. Примеры: можно фильтровать spans по тегам, времени выполнения или другим параметрам. Также можно использовать запросы для извлечения данных о запросах, например, для поиска запросов, которые занимают больше определённого времени.

Больше по теме

Часто задаваемые вопросы

Jaeger vs Zipkin?

Похожие. Jaeger более active development (Uber/CNCF), Zipkin — старее + simpler UI. Оба поддерживают OpenTelemetry.

Storage overhead?

With 1% sampling: 500 req/s app → ~5 traces/s → few GB/day. At higher samples — TB/week.

Jaeger alternative?

Grafana Tempo — cheaper (block storage, not DB), integrates с Grafana. Used by DoorDash, Reddit. New stack: Tempo instead of Jaeger.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.