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

  1. Correct the tracer name spelling to match the registered key (e.g. "jaeger").
  2. Import the tracer plugin package into your main (or go-micro.dev/v6/cmd/defaults if it includes it) and rebuild.
  3. Omit --tracer to use the built-in no-op/default tracer.
  4. 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

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


AI-assisted analysis of micro/go-micro@24529f1404 (2026-09-01). Data as JSON: /api/errors/b278da492968b58e. Report an issue: GitHub.