Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
3.5 KiB
3.5 KiB
Tempo
Distributed tracing backend от Grafana. Принимает трейсы через OTLP, Jaeger, Zipkin. Grafana автоматически настраивается как datasource при addon_prometheus_stack: true.
Быстрый старт
# group_vars/all/addons.yml
addon_tempo: true
addon_prometheus_stack: true # Grafana datasource настраивается автоматически
make addon-tempo
Параметры
| Переменная | Умолч. | Описание |
|---|---|---|
tempo_storage_size |
10Gi |
PVC для трейсов |
tempo_retention_period |
720h |
Срок хранения (30 дней) |
tempo_receivers_otlp_enabled |
true |
OTLP (gRPC 4317, HTTP 4318) |
tempo_receivers_jaeger_enabled |
true |
Jaeger (gRPC 14250, HTTP 14268) |
tempo_receivers_zipkin_enabled |
false |
Zipkin (9411) |
Endpoints
OTLP gRPC: tempo.tempo.svc.cluster.local:4317
OTLP HTTP: tempo.tempo.svc.cluster.local:4318
Jaeger HTTP: tempo.tempo.svc.cluster.local:14268
Jaeger gRPC: tempo.tempo.svc.cluster.local:14250
Zipkin: tempo.tempo.svc.cluster.local:9411
Инструментирование приложений
Python (OpenTelemetry)
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
# Настройка
provider = TracerProvider()
exporter = OTLPSpanExporter(
endpoint="tempo.tempo.svc.cluster.local:4317",
insecure=True
)
provider.add_span_processor(BatchSpanProcessor(exporter))
trace.set_tracer_provider(provider)
tracer = trace.get_tracer(__name__)
# Использование
with tracer.start_as_current_span("my-operation") as span:
span.set_attribute("user.id", "123")
result = do_something()
span.set_attribute("result", result)
Go (OpenTelemetry)
import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
)
exporter, _ := otlptracegrpc.New(ctx,
otlptracegrpc.WithEndpoint("tempo.tempo.svc.cluster.local:4317"),
otlptracegrpc.WithInsecure(),
)
Через переменные окружения (авто-инструментирование)
env:
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://tempo.tempo.svc.cluster.local:4318"
- name: OTEL_SERVICE_NAME
value: "my-service"
- name: OTEL_TRACES_SAMPLER
value: "parentbased_traceidratio"
- name: OTEL_TRACES_SAMPLER_ARG
value: "0.1" # 10% трейсов
Grafana Explore — просмотр трейсов
- Grafana → Explore
- Выбери datasource: Tempo
- Введи Trace ID или используй поиск по тегам
- Для корреляции логов и трейсов: в Loki логе кликни на Trace ID
Интеграция Loki ↔ Tempo (корреляция)
В Grafana → Datasources → Loki → Derived Fields:
- Name:
TraceID - Regex:
trace_id=(\w+) - URL:
${__value.raw}(с datasource Tempo)
Официальные ресурсы
- Официальный сайт: https://grafana.com/oss/tempo/
- Официальная документация: https://grafana.com/docs/tempo/latest/
- Версии Helm chart / ПО: https://artifacthub.io/packages/helm/grafana/tempo