{"record":{"id":"b278da492968b58e","repo":"micro/go-micro","slug":"unsupported-tracer-s","errorCode":null,"errorMessage":"unsupported tracer: %s","messagePattern":"unsupported tracer: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/cmd.go","lineNumber":455,"sourceCode":"\t\t\t*c.opts.Server = s()\n\t\t}\n\t}\n\n\t// Set the store\n\tif name := ctx.String(\"store\"); len(name) > 0 {\n\t\ts, ok := c.opts.Stores[name]\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"store %q is not linked into this binary: import go-micro.dev/v6/cmd/defaults to enable flag-selected plugins\", name)\n\t\t}\n\n\t\t*c.opts.Store = s(store.WithClient(*c.opts.Client))\n\t}\n\n\t// Set the tracer\n\tif name := ctx.String(\"tracer\"); len(name) > 0 {\n\t\tr, ok := c.opts.Tracers[name]\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"unsupported tracer: %s\", name)\n\t\t}\n\n\t\t*c.opts.Tracer = r()\n\t}\n\n\t// Setup auth\n\tauthOpts := []auth.Option{}\n\n\tif len(ctx.String(\"auth_id\")) > 0 || len(ctx.String(\"auth_secret\")) > 0 {\n\t\tauthOpts = append(authOpts, auth.Credentials(\n\t\t\tctx.String(\"auth_id\"), ctx.String(\"auth_secret\"),\n\t\t))\n\t}\n\tif len(ctx.String(\"auth_public_key\")) > 0 {\n\t\tauthOpts = append(authOpts, auth.PublicKey(ctx.String(\"auth_public_key\")))\n\t}\n\tif len(ctx.String(\"auth_private_key\")) > 0 {\n\t\tauthOpts = append(authOpts, auth.PrivateKey(ctx.String(\"auth_private_key\")))","sourceCodeStart":437,"sourceCodeEnd":473,"githubUrl":"https://github.com/micro/go-micro/blob/24529f140421a11a33b6999ab7944f2021cfd69c/cmd/cmd.go#L437-L473","documentation":"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.","triggerScenarios":"Passing --tracer jaeger (or zipkin, otel, etc.) to a binary that never imported the tracer plugin package, or misspelling the tracer name.","commonSituations":"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.","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."],"exampleFix":"// before\nmicro --tracer jaeger call ...\n// after: link the plugin in main.go\nimport _ \"go-micro.dev/v6/plugins/tracer/jaeger\"\n// or use the default:\nmicro call ...","handlingStrategy":"validation","validationCode":"allowedTracers := map[string]bool{\"\": true, \"jaeger\": true /* linked ones */}\nif !allowedTracers[*tracerFlag] {\n    return fmt.Errorf(\"tracer %q not linked; import its plugin package\", *tracerFlag)\n}","typeGuard":null,"tryCatchPattern":"if err := c.Run(ctx); err != nil {\n    if strings.HasPrefix(err.Error(), \"unsupported tracer:\") {\n        return fmt.Errorf(\"%w (link the tracer plugin package and rebuild)\", err)\n    }\n    return err\n}","preventionTips":["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."],"tags":["cli","tracer","plugin-registration"],"backgroundTag":"plugin-not-linked","analyzedSha":"24529f140421a11a33b6999ab7944f2021cfd69c","analyzedAt":"2026-09-01T02:52:24.923Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}