micro/go-micro · error
unsupported tracer: %s
Error message
unsupported tracer: %s
What it means
The CLI rejects a --tracer value that has no registered constructor in c.opts.Tracers. Tracer plugins register themselves from their own packages; only linked tracers are selectable on the command line.
Source
Thrown at cmd/cmd.go:455
*c.opts.Server = s()
}
}
// Set the store
if name := ctx.String("store"); len(name) > 0 {
s, ok := c.opts.Stores[name]
if !ok {
return fmt.Errorf("store %q is not linked into this binary: import go-micro.dev/v6/cmd/defaults to enable flag-selected plugins", name)
}
*c.opts.Store = s(store.WithClient(*c.opts.Client))
}
// Set the tracer
if name := ctx.String("tracer"); len(name) > 0 {
r, ok := c.opts.Tracers[name]
if !ok {
return fmt.Errorf("unsupported tracer: %s", name)
}
*c.opts.Tracer = r()
}
// Setup auth
authOpts := []auth.Option{}
if len(ctx.String("auth_id")) > 0 || len(ctx.String("auth_secret")) > 0 {
authOpts = append(authOpts, auth.Credentials(
ctx.String("auth_id"), ctx.String("auth_secret"),
))
}
if len(ctx.String("auth_public_key")) > 0 {
authOpts = append(authOpts, auth.PublicKey(ctx.String("auth_public_key")))
}
if len(ctx.String("auth_private_key")) > 0 {
authOpts = append(authOpts, auth.PrivateKey(ctx.String("auth_private_key")))View on GitHub (pinned to 24529f1404)
Solutions
- Correct the tracer name spelling to match the registered key (e.g. "jaeger").
- Import the tracer plugin package into your main (or go-micro.dev/v6/cmd/defaults if it includes it) and rebuild.
- Omit --tracer to use the built-in no-op/default tracer.
- Verify available tracers by checking which plugin packages your binary imports.
Example fix
// before micro --tracer jaeger call ... // after: link the plugin in main.go import _ "go-micro.dev/v6/plugins/tracer/jaeger" // or use the default: micro call ...
Defensive patterns
Strategy: validation
Validate before calling
allowedTracers := map[string]bool{"": true, "jaeger": true /* linked ones */}
if !allowedTracers[*tracerFlag] {
return fmt.Errorf("tracer %q not linked; import its plugin package", *tracerFlag)
} Try / catch
if err := c.Run(ctx); err != nil {
if strings.HasPrefix(err.Error(), "unsupported tracer:") {
return fmt.Errorf("%w (link the tracer plugin package and rebuild)", err)
}
return err
} Prevention
- Import the tracer plugin package whenever you pass --tracer in configs/scripts.
- Avoid copy-pasting tracer flags from docs without verifying availability in your build.
- Run a startup self-check that validates all configured plugin flags before serving.
When it happens
Trigger: Passing --tracer jaeger (or zipkin, otel, etc.) to a binary that never imported the tracer plugin package, or misspelling the tracer name.
Common situations: Docs/examples referencing a tracer plugin that the deployment binary does not include; typos like --tracer jagger; custom binaries that import only core defaults without tracer plugins.
Related errors
- failed to load %s profile: %v
- unsupported auth: %s
- unsupported profile: %s
- Selector %s not found
- Cannot use two forms of the same flag: <name> <ff.Name>
AI-assisted analysis of micro/go-micro@24529f1404 (2026-09-01).
Data as JSON: /api/errors/b278da492968b58e.
Report an issue: GitHub.