Введение

Jaeger — это open-source инструмент для распределённого трейсинга, разработанный Uber. Используется для мониторинга и отладки микросервисов.

Это руководство покажет, как установить и использовать Jaeger в Kubernetes с примерами.

Зачем использовать Jaeger?

  • Визуализация зависимостей и задержек между сервисами
  • Поиск узких мест в производительности
  • Отслеживание запросов через микросервисы
  • Поддержка OpenTelemetry

Требования

  • Запущенный кластер Kubernetes (например, Minikube, k3s, GKE и т.д.)
  • Настроенный kubectl
  • Установлен Helm

1. Установка Jaeger через Helm

helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
helm repo update
helm install jaeger jaegertracing/jaeger   --set query.basePath=/jaeger   --set ingress.enabled=true   --set ingress.hosts="{jaeger.yourdomain.com}"

Для локального доступа:

kubectl port-forward svc/jaeger-query 16686:16686

Перейдите по адресу http://localhost:16686.

2. Инструментирование приложения

Установите SDK OpenTelemetry. Пример на Python:

pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-jaeger

Пример базовой настройки:

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.jaeger.thrift import JaegerExporter

trace.set_tracer_provider(TracerProvider())
tracer = trace.get_tracer(__name__)

jaeger_exporter = JaegerExporter(
    agent_host_name='localhost',
    agent_port=6831,
)

trace.get_tracer_provider().add_span_processor(
    BatchSpanProcessor(jaeger_exporter)
)

3. Трейсинг операций

with tracer.start_as_current_span("example-operation"):
    # бизнес-логика
    pass

4. Просмотр трейсинга

В интерфейсе Jaeger можно фильтровать по сервису, операции или тегам.

Плюсы и минусы

✅ Плюсы

  • Простая установка через Helm
  • Поддержка OpenTelemetry
  • Удобный интерфейс
  • Масштабируемость под микросервисы

❌ Минусы

  • Занимает много места без настройки хранения
  • Требуется инструментирование кода

Заключение

Jaeger — отличное решение для наблюдаемости микросервисов. Его легко развернуть в Kubernetes с помощью Helm и интегрировать с OpenTelemetry.