{"record":{"id":"b1a2a65283c61a9b","repo":"googleapis/mcp-toolbox","slug":"error-setting-up-opentelemetry-w","errorCode":null,"errorMessage":"error setting up OpenTelemetry: %w","messagePattern":"error setting up OpenTelemetry: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/internal/options.go","lineNumber":111,"sourceCode":"\t}\n\n\t// Handle logger separately from config\n\tlogger, err := log.NewLogger(opts.Cfg.LoggingFormat.String(), opts.Cfg.LogLevel.String(), loggerOut, opts.IOStreams.ErrOut)\n\tif err != nil {\n\t\treturn ctx, nil, fmt.Errorf(\"unable to initialize logger: %w\", err)\n\t}\n\n\tctx = util.WithLogger(ctx, logger)\n\topts.Logger = logger\n\n\tctx = util.WithIgnoreUnknownTools(ctx, opts.Cfg.IgnoreUnknownTools)\n\n\tlogger.InfoContext(ctx, fmt.Sprintf(\"Starting MCP Toolbox for Databases version %s\", opts.Cfg.Version))\n\n\t// Set up OpenTelemetry\n\totelShutdown, err := telemetry.SetupOTel(ctx, opts.Cfg.Version, opts.Cfg.TelemetryOTLP, opts.Cfg.TelemetryGCP, opts.Cfg.TelemetryGCPProject, opts.Cfg.TelemetryServiceName)\n\tif err != nil {\n\t\terrMsg := fmt.Errorf(\"error setting up OpenTelemetry: %w\", err)\n\t\tlogger.ErrorContext(ctx, errMsg.Error())\n\t\treturn ctx, nil, errMsg\n\t}\n\n\tshutdownFunc := func(ctx context.Context) error {\n\t\terr := otelShutdown(ctx)\n\t\tif err != nil {\n\t\t\terrMsg := fmt.Errorf(\"error shutting down OpenTelemetry: %w\", err)\n\t\t\tlogger.ErrorContext(ctx, errMsg.Error())\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t}\n\n\tinstrumentation, err := telemetry.CreateTelemetryInstrumentation(opts.Cfg.Version)\n\tif err != nil {\n\t\terrMsg := fmt.Errorf(\"unable to create telemetry instrumentation: %w\", err)\n\t\tlogger.ErrorContext(ctx, errMsg.Error())","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/googleapis/mcp-toolbox/blob/8cc6e09de2ad7b8bffc77751799585a1401a48eb/cmd/internal/options.go#L93-L129","documentation":"MCP Toolbox wraps any failure from telemetry.SetupOTel — which initializes OpenTelemetry exporters (OTLP, GCP) and the global tracer/meter provider — with this message and aborts startup. It is thrown during command Setup, before the server or invocation begins, whenever tracing/metrics cannot be configured.","triggerScenarios":"telemetry.SetupOTel returns an error: invalid telemetryOTLP endpoint, failed GCP/Cloud Trace client creation, missing or unusable telemetryGCPProject, or an exporter/provider construction failure.","commonSituations":"Setting telemetryGCP or telemetryGCPProject without valid GCP credentials (GOOGLE_APPLICATION_CREDENTIALS), pointing telemetryOTLP at a malformed URL, or a broken OTEL_* environment variable leaking into the exporter config.","solutions":["Check the wrapped root cause (%w) printed after this message — it names the actual telemetry failure","If using GCP telemetry, set valid Application Default Credentials (gcloud auth application-default login) and a correct project ID","Validate the OTLP endpoint URL and remove invalid OTEL_* env vars","If telemetry is not needed, disable all telemetry flags (telemetryOTLP, telemetryGCP) so no exporter is created"],"exampleFix":"// before\ntelemetryOTLP: \"localhost:4317\"  // missing scheme\n// after\ntelemetryOTLP: \"http://localhost:4317\"","handlingStrategy":"validation","validationCode":"// before starting toolbox, validate telemetry inputs\nif cfg.TelemetryGCP && os.Getenv(\"GOOGLE_APPLICATION_CREDENTIALS\") == \"\" {\n    log.Fatal(\"telemetryGCP requires Application Default Credentials\")\n}\nif cfg.TelemetryOTLP != \"\" {\n    if _, err := url.Parse(cfg.TelemetryOTLP); err != nil {\n        log.Fatalf(\"invalid telemetryOTLP endpoint: %v\", err)\n    }\n}","typeGuard":null,"tryCatchPattern":"otelShutdown, err := telemetry.SetupOTel(ctx, ...)\nif err != nil {\n    return fmt.Errorf(\"error setting up OpenTelemetry: %w\", err)\n}","preventionTips":["Set credentials and project IDs before enabling telemetry flags","Validate OTLP endpoint URLs in deployment config linting","Avoid exporting raw OTEL_* env vars into the toolbox container unless intended"],"tags":["opentelemetry","startup","telemetry","go"],"backgroundTag":"telemetry-exporter-init-failure","analyzedSha":"8cc6e09de2ad7b8bffc77751799585a1401a48eb","analyzedAt":"2026-09-05T01:10:36.887Z","contentChangedAt":"2026-09-05T01:10:36.887Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}