Перейти к содержимому
К программе курса
Распределенная трассировка: от основ до production
3 / 1817%

Обзор инструментов (факультатив): Jaeger, Zipkin, Tempo, OpenTelemetry

25 минут

Обзор инструментов трассировки

Факультативно: можно пропустить, если хотите быстрее перейти к практике и вернуться к сравнению инструментов позже.

Landscape распределенной трассировки

Экосистема tracing развивалась в несколько поколений:

2012: Zipkin (Twitter) — первая open-source система 2015: Jaeger (Uber) — следующее поколение с лучшим UI 2019: OpenTelemetry — объединение OpenTracing + OpenCensus (vendor-agnostic стандарт) 2020: Tempo (Grafana) — cost-effective решение с S3 storage

Таблица сравнения

КритерийOpenTelemetryJaegerZipkinTempoElastic APM
ТипSDK/StandardFull PlatformFull PlatformBackend OnlyFull Platform
ЛицензияApache 2.0Apache 2.0Apache 2.0AGPL 3.0Elastic License 2.0
Instrumentation✅ Best✅ (using OTel)✅ (legacy)⚠️ Use OTel✅ APM agents
Storage-Cassandra/ES/BadgerMySQL/ES/CassandraS3/GCS/AzureElasticsearch
UI-✅ Modern⚠️ BasicGrafanaKibana APM
SamplingSDK-levelAdaptiveProbabilityQuery-timeAdaptive
Production Ready
CNCF StatusGraduatedGraduated---
Community🔥 Huge🔥 LargeMediumGrowingLarge (ELK)
Cost (self-hosted)Free$50-200/mo$30-100/mo$10-30/mo$100-300/mo

Детальный обзор инструментов

1. OpenTelemetry — Industry Standard

Что это: Vendor-agnostic стандарт для сбора телеметрии (traces, metrics, logs). Заменяет OpenTracing и OpenCensus.

Плюсы:

  • Vendor lock-in protection — меняете backend без изменения кода
  • Автоинструментация — HTTP/DB/Queue из коробки
  • Semantic conventions — стандартизированные атрибуты
  • Unified observability — traces + metrics + logs одним SDK
  • Multi-language support — Java, Go, Python, Node.js, .NET, PHP, Ruby, Rust

Минусы:

  • ❌ Не является backend/UI (нужен Jaeger/Tempo/etc)
  • ⚠️ Экосистема еще молодая

Когда использовать: Всегда. Это стандарт де-факто.


2. Jaeger — Best UI & Production-Ready

Что это: Full-stack платформа для tracing от Uber (2015), CNCF graduated project.

Плюсы:

  • Лучший UI — интуитивный, быстрый, с Service Dependency Graph
  • Adaptive Sampling — автоматическая адаптация sampling rate
  • Production-proven — используется Uber, Red Hat, Booking.com
  • Multiple storage backends — Elasticsearch, Cassandra, Badger
  • Service Performance Monitoring — метрики RED из коробки

Минусы:

  • Дорогой storage — Elasticsearch требует много ресурсов
  • ⚠️ Retention limited by storage — долгосрочное хранение дорого

Когда использовать:

  • Нужен best-in-class UI для debugging
  • Важен adaptive sampling
  • Уже используете Elasticsearch

Примеры компаний: Uber, Red Hat, Shopify, Grafana Labs


3. Zipkin — Simple & Battle-Tested

Что это: Первая open-source система distributed tracing от Twitter (2012).

Плюсы:

  • Простота — легко деплоить (один Docker контейнер)
  • Battle-tested — 12+ лет в production
  • Low overhead — минимальный footprint
  • Backwards compatible — старые приложения работают

Минусы:

  • Устаревший UI — basic, нет Service Graph
  • Legacy instrumentation — Brave library устарела
  • ⚠️ Меньше активного развития

Когда использовать:

  • Нужно быстро запустить tracing (прототип/MVP)
  • Минимальные требования к UI
  • Уже есть Zipkin-instrumented приложения

Примеры компаний: Twitter (legacy), Yelp, Pinterest


4. Grafana Tempo — Cost-Effective для Production

Что это: Trace backend от Grafana Labs (2020), оптимизирован для дешевого хранения в S3/GCS.

Плюсы:

  • Супер дешевое хранение — S3 на порядок дешевле Elasticsearch
  • Нативная интеграция с Grafana — трейсы рядом с метриками/логами
  • TraceQL — мощный query язык (как PromQL для traces)
  • No indexes — не требует индексации
  • Unlimited retention — можно хранить трейсы годами

Минусы:

  • Медленные queries по тегам — без индексов поиск требует full scan
  • ⚠️ Требует Grafana — нет standalone UI
  • ⚠️ Молодой проект — меньше production кейсов

Когда использовать:

  • High-volume production — миллионы spans/день
  • Стоимость хранения критична
  • Уже используете Grafana Stack
  • Queries в основном по trace ID

Примеры компаний: Grafana Labs, GitLab, Render


5. Elastic APM — All-in-One Stack

Что это: Часть Elastic Observability Stack, интегрирован с Elasticsearch и Kibana.

Плюсы:

  • Единая платформа — traces + logs + metrics + security в одном UI
  • Correlation из коробки — трейсы связаны с логами
  • Machine Learning — автоопределение аномалий в latency
  • Distributed tracing map — визуализация зависимостей

Минусы:

  • Elastic License 2.0 — не полностью open-source
  • Дорогой — Elasticsearch требует много ресурсов
  • ⚠️ APM Agents vs OTel — proprietary agents

Когда использовать:

  • Уже используете ELK stack
  • Нужна полная observability платформа
  • Готовы платить за Elastic Cloud

Рекомендации по выбору

Типовые сценарии

Сценарий 1: Startup (5-10 сервисов, менее 1M requests/day)

  • Stack: OpenTelemetry + Jaeger (in-memory или Badger storage)
  • Sampling: 100% (development) → 10% (production)
  • Cost: $0 (self-hosted на одном сервере)

Сценарий 2: Growing Company (20+ сервисов, 10M requests/day)

  • Stack: OpenTelemetry + Tempo + Grafana
  • Sampling: Tail-based (100% errors, 1% success)
  • Storage: S3 (90-day retention)
  • Cost: ~$50/месяц (S3 + EC2 instances)

Сценарий 3: Enterprise (100+ сервисов, 1B+ requests/day)

  • Stack: OpenTelemetry + Jaeger (Elasticsearch cluster)
  • Sampling: Adaptive (per-service)
  • Storage: Hot tier (7 days) + Cold tier S3 (365 days)
  • Cost: ~$5,000/месяц (managed Elasticsearch + infra)

Наша рекомендация для курса

Мы будем использовать:

Instrumentation: OpenTelemetry SDK (Node.js, Python, Go)

  • Vendor-agnostic
  • Лучшая автоинструментация
  • Легко мигрировать на другой backend

Backend (development): Jaeger All-in-One

  • Лучший UI для обучения
  • Легко запустить (docker run)
  • Все функции out-of-the-box

Backend (production examples): Tempo + Grafana

  • Реалистичный production stack
  • Cost-effective
  • Интеграция с Prometheus/Loki

Такой выбор дает best of both worlds: удобство для обучения + production-ready знания.

Практика уже есть в предыдущем уроке «Первый трейс за 15 минут». Здесь — только сравнение инструментов.

Explore HotROD Demo (встроенное демо):

  • Click "Find Traces"
  • Выберите trace с ошибкой (красный)
  • Изучите span details, tags, logs

Вопросы для самопроверки:

  • Какой сервис самый медленный в chain?
  • Сколько database queries делает один запрос?
  • Какие HTTP status codes встречаются?

Дополнительные материалы

Официальная документация:

Сравнительные статьи:

Следующий урок: Базовые концепции: Traces, Spans, Context Propagation — разберем фундаментальные понятия distributed tracing.

Обзор инструментов (факультатив): Jaeger, Zipkin, Tempo, OpenTelemetry — Распределенная трассировка: от основ до production — Potapov.me