Введение
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.