Программа курса

Модуль 01 / Урок 3 из 27

Архитектура Jaeger

Теория и практика

Путь трейса от вашего кода до экрана Jaeger: SDK → (опционально Collector) → приём → хранилище → query/UI. Понимание этой цепочки нужно, чтобы осознанно выбирать варианты деплоя и знать, где что ломается.

Путь трейса

приложение (OTel SDK) ──OTLP──► [ OTel Collector ] ──► [ Jaeger backend ] ──► хранилище
                                       │                     ▲
                                       │ пайплайны: батчинг,     │
                                       │ сэмплирование,          │
                                       │ PII-фильтры             │
                                       ▼                     │
                                  Kafka ◄────────────────────┘ (опционально: буферизация)
  1. OTel SDK в приложении создаёт спаны, буферизует и экспортирует их по OTLP (gRPC 4317 / HTTP 4318);
  2. OpenTelemetry Collector (опционален, но почти всегда есть в проде) — общий шлюз: принимает OTLP от всех сервисов, делает батчинг, сэмплирование, маскирование данных, маршрутизацию в один или несколько бэкендов;
  3. Jaeger backend — компоненты приёма (receiver), нормализации и записи в хранилище;
  4. Jaeger query + UI — поиск по хранилищу и визуализация (порт 16686).

Варианты деплоя

ВариантЧто внутриКогда
all-in-oneприём + хранилище в памяти (или Badger) + query одним контейнеромразработка, демо, малые команды
Отдельные компоненты (v1-классика)collector + query + Cassandra/ES отдельнопрод классической схемы
Jaeger v2единый бинарник на базе OTel Collector + Jaeger-компоненты как плагинысовременный стандарт (2024+)
Managed (Grafana Cloud, у облачных провайдеров)весь бэкенд как сервисне хотите эксплуатировать сами

Ключевые порты (all-in-one)

ПортПротоколЗачем
16686HTTPвеб-UI и query API
4317OTLP/gRPCосновной приём от OTel SDK/Collector
4318OTLP/HTTPто же поверх HTTP (проще проксировать)
14268HTTP (jaeger.thrift)legacy-приём (старые клиенты Jaeger SDK)
9411HTTP (Zipkin)совместимость с Zipkin-клиентами
💡 UDP-порты 6831/6832 вы встретите в старых гайдах — это jaeger-agent из архитектуры v1. Агент устарел: его роль (client-side буфер и декорация) теперь делает OTel SDK + Collector sidecar/daemonset.

Jaeger v1 vs v2 — что важно знать

  • v1 — историческая архитектура: jaeger-collector, jaeger-query, jaeger-agent, jaeger-ingester (чтение из Kafka). Каждая часть — отдельный процесс и конфиг;
  • v2 (с 2024) — Jaeger переписан как дистрибуция OpenTelemetry Collector: один бинарник jaeger, конфигурация в OTel-стиле (receivers/processors/exporters/pipelines), плюс компоненты Jaeger (хранилище, query). Приём — OTLP как основной; jaeger.thrift — по остаточному принципу;
  • Практический вывод курса: учим OTLP + OTel Collector, потому что это и есть современный Jaeger. Пример конфига v2:
    # config.yaml Jaeger v2 (сокращённо)
    receivers:
      otlp:
        protocols:
          grpc: {}
          http: {}
    exporters:
      otlp/jaeger-storage:
        endpoint: jaeger-storage:4317
        tls:
          insecure: true
    service:
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp/jaeger-storage]

Кто за что отвечает (и кто виноват при проблеме)

СимптомГде искать
Спаны есть в логах приложения, нет в Jaegerпуть доставки: endpoint, TLS, Collector, сеть, сэмплирование
Трейсы есть, но неполные (нет части сервисов)распространение контекста (заголовки), сэмплирование сторон
UI медленно ищетхранилище и объёмы (модуль 5)
Спаны теряются при пикахбатчинг/очереди Collector, лимиты приёма

Практика

  1. Запустите all-in-one и найдите в его логах, какие receivers подняты (docker logs jaeger | grep -i receiver).
  2. Занесите в шпаргалку карту портов из этого урока — она понадобится в каждом практикуме.
  3. Прочитайте страницу архитектуры на jaegertracing.io (Architecture) и сверьте со схемой урока: что совпало, что изменилось в свежих версиях.
Мини-квиз

1. Обязателен ли OTel Collector между SDK и Jaeger? — Нет: SDK может слать OTLP прямо в Jaeger. Collector нужен для батчинга, сэмплирования, маршрутизации и развязки.

2. Что такое Jaeger v2? — Дистрибуция OTel Collector с компонентами Jaeger: один бинарник, конфиг в OTel-стиле.

3. Порт 6831 UDP — жив ли он? — Это legacy jaeger-agent; в новых схемах не используется.