Обзор инструментов (факультатив): Jaeger, Zipkin, Tempo, OpenTelemetry
Обзор инструментов трассировки
Факультативно: можно пропустить, если хотите быстрее перейти к практике и вернуться к сравнению инструментов позже.
Landscape распределенной трассировки
Экосистема tracing развивалась в несколько поколений:
2012: Zipkin (Twitter) — первая open-source система 2015: Jaeger (Uber) — следующее поколение с лучшим UI 2019: OpenTelemetry — объединение OpenTracing + OpenCensus (vendor-agnostic стандарт) 2020: Tempo (Grafana) — cost-effective решение с S3 storage
Таблица сравнения
| Критерий | OpenTelemetry | Jaeger | Zipkin | Tempo | Elastic APM |
|---|---|---|---|---|---|
| Тип | SDK/Standard | Full Platform | Full Platform | Backend Only | Full Platform |
| Лицензия | Apache 2.0 | Apache 2.0 | Apache 2.0 | AGPL 3.0 | Elastic License 2.0 |
| Instrumentation | ✅ Best | ✅ (using OTel) | ✅ (legacy) | ⚠️ Use OTel | ✅ APM agents |
| Storage | - | Cassandra/ES/Badger | MySQL/ES/Cassandra | S3/GCS/Azure | Elasticsearch |
| UI | - | ✅ Modern | ⚠️ Basic | Grafana | Kibana APM |
| Sampling | SDK-level | Adaptive | Probability | Query-time | Adaptive |
| Production Ready | ✅ | ✅ | ✅ | ✅ | ✅ |
| CNCF Status | Graduated | Graduated | - | - | - |
| Community | 🔥 Huge | 🔥 Large | Medium | Growing | Large (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.