thanos-io/thanos · error
tracing with type is not supported
Error message
tracing with type %s is not supported
What it means
NewTracer switches on tracingConf.Type and falls through to the default branch when the type matches none of the supported backends (stackdriver/googlecloud, jaeger, elasticapm, lightstep, otlp). It returns errors.Errorf('tracing with type %s is not supported'). The type string is matched after ToUpper, so casing is not the issue — only the literal backend name.
Solutions
- Set type to one of the supported values: JAEGER, OTLP, ELASTIC_APM, LIGHTSTEP, or STACKDRIVER/GOOGLE_CLOUD
- Fix typos in the type field (exact string match, e.g. 'JAEGER' not 'jager')
- Check Thanos docs/version for the backend name; some backends were removed or renamed across versions
- Use an OTLP collector as a bridge if your vendor backend is unsupported
Example fix
// before
tracing:
type: zipkin
// after
tracing:
type: OTLP
config:
client_type: http
endpoint: http://otel:4318 Defensive patterns
Strategy: validation
Validate before calling
supported := map[string]bool{"STACKDRIVER": true, "GOOGLE_CLOUD": true, "JAEGER": true, "ELASTIC_APM": true, "LIGHTSTEP": true, "OTLP": true}
if !supported[strings.ToUpper(tracingType)] {
return fmt.Errorf("tracing type %q not supported; use one of %v", tracingType, []string{"JAEGER", "OTLP", "STACKDRIVER", "ELASTIC_APM"})
} Try / catch
tracer, closer, err := tracing.NewTracer(ctx, logger, reg, cfgYaml)
if err != nil && strings.Contains(err.Error(), "is not supported") {
logger.Error(err, "unsupported tracing backend; fix the 'type' field")
return err
} Prevention
- Copy the backend name exactly from Thanos docs (case-insensitive but spelling matters)
- Prefer OTLP as the universal backend for vendors without native support
- Check the release notes when upgrading Thanos for removed/renamed backends
- Add a CI check that asserts tracing.type against the supported list
When it happens
Trigger: Passing a tracing config whose 'type' value is anything other than the supported constants, e.g. 'zipkin', 'datadog', 'otlpgrpc', or a misspelling like 'jager'.
Common situations: Migrating configs from other tools (zipkin/datadog users), typos in the type field, or older configs using names removed/renamed in newer Thanos versions (e.g. lightstep deprecation).
Related errors
- parsing config tracing YAML
- new tracer provider err
- raw resolution must be higher than the minimum block size…
- 5m resolution retention must be higher than the minimum…
- building gRPC client
AI-assisted analysis of thanos-io/thanos@35b8b99117 (2026-09-07).
Data as JSON: /api/errors/60764a51b9c88a96.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/tracing/client/factory.go:86
tracerProvider, err := jaeger.NewTracerProvider(ctx, logger, config)
if err != nil {
return nil, nil, errors.Wrap(err, "new tracer provider err")
}
tracer, closerFunc := migration.Bridge(tracerProvider, logger)
return tracer, closerFunc, nil
case string(ElasticAPM):
return elasticapm.NewTracer(config)
case string(Lightstep):
return lightstep.NewTracer(ctx, config)
case string(OpenTelemetryProtocol):
tracerProvider, err := otlp.NewTracerProvider(ctx, logger, config)
if err != nil {
return nil, nil, errors.Wrap(err, "new tracer provider err")
}
tracer, closerFunc := migration.Bridge(tracerProvider, logger)
return tracer, closerFunc, nil
default:
return nil, nil, errors.Errorf("tracing with type %s is not supported", tracingConf.Type)
}
}
func NoopTracer() opentracing.Tracer {
return &opentracing.NoopTracer{}
}
View on GitHub (pinned to 35b8b99117)