Files
K3S/addons/tempo/README.md
Sergey Antropoff 38aaadbfb1 docs: sync addon docs with explicit external/internal service modes
Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
2026-04-29 23:21:04 +03:00

3.5 KiB
Raw Blame History

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 — просмотр трейсов

  1. Grafana → Explore
  2. Выбери datasource: Tempo
  3. Введи Trace ID или используй поиск по тегам
  4. Для корреляции логов и трейсов: в Loki логе кликни на Trace ID

Интеграция Loki ↔ Tempo (корреляция)

В Grafana → Datasources → Loki → Derived Fields:

  • Name: TraceID
  • Regex: trace_id=(\w+)
  • URL: ${__value.raw} (с datasource Tempo)

Официальные ресурсы