{"record":{"id":"85db6fc3309a6107","repo":"VictoriaMetrics/VictoriaMetrics","slug":"cannot-parse-proxy-auth-config-w-85db6f","errorCode":null,"errorMessage":"cannot parse proxy auth config: %w","messagePattern":"cannot parse proxy auth config: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"lib/promscrape/discovery/vultr/api.go","lineNumber":47,"sourceCode":"\tport := sdc.Port\n\tif port == 0 {\n\t\tport = 80\n\t}\n\n\t// See: https://www.vultr.com/api/\n\tapiServer := \"https://api.vultr.com\"\n\n\tif sdc.HTTPClientConfig.BearerToken == nil {\n\t\treturn nil, fmt.Errorf(\"missing `bearer_token` option\")\n\t}\n\n\tac, err := sdc.HTTPClientConfig.NewConfig(baseDir)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot parse auth config: %w\", err)\n\t}\n\tproxyAC, err := sdc.ProxyClientConfig.NewConfig(baseDir)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot parse proxy auth config: %w\", err)\n\t}\n\n\tc, err := discoveryutil.NewClient(apiServer, ac, sdc.ProxyURL, proxyAC, &sdc.HTTPClientConfig)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot create client for %q: %w\", apiServer, err)\n\t}\n\n\t// Prepare additional query params for list instance API.\n\t// See https://www.vultr.com/api/#tag/instances/operation/list-instances\n\tvar qp url.Values\n\tif sdc.Label != \"\" {\n\t\tqp.Set(\"label\", sdc.Label)\n\t}\n\tif sdc.MainIP != \"\" {\n\t\tqp.Set(\"main_ip\", sdc.MainIP)\n\t}\n\tif sdc.Region != \"\" {\n\t\tqp.Set(\"region\", sdc.Region)","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/VictoriaMetrics/VictoriaMetrics/blob/5079fb58f1e8e62113f90c945ad71586c797d770/lib/promscrape/discovery/vultr/api.go#L29-L65","documentation":"Analogous to error 938 but for the proxy credentials: ProxyClientConfig.NewConfig(baseDir) fails while building the Vultr client when proxy auth options are invalid (unreadable files, conflicting options), so discovery aborts before contacting api.vultr.com.","triggerScenarios":"vultr SDConfig with `proxy_client_config` containing an invalid basic_auth/bearer/tls option, e.g. password_file that does not exist.","commonSituations":"Corporate proxy environments where proxy secret files are not present in the scrape agent's container or paths changed after a migration.","solutions":["Inspect the wrapped cause to find the failing proxy option.","Fix the proxy auth file paths/permissions or inline credentials.","Remove proxy auth if the proxy needs none.","Re-validate the config after changes."],"exampleFix":"# before\nproxy_client_config:\n  basic_auth:\n    password_file: /gone/proxy_pass\n# after\nproxy_client_config:\n  basic_auth:\n    password_file: /run/secrets/proxy_pass","handlingStrategy":"validation","validationCode":"if sdc.ProxyClientConfig.HasAuth() {\n    for _, p := range sdc.ProxyClientConfig.AuthFilePaths() {\n        if _, err := os.Stat(p); err != nil { return fmt.Errorf(\"missing proxy auth file: %s\", p) }\n    }\n}","typeGuard":null,"tryCatchPattern":"labels, err := sdc.GetLabels(baseDir)\nif err != nil && strings.Contains(err.Error(), \"cannot parse proxy auth config\") { /* fix proxy auth options */ }","preventionTips":["Keep proxy secret files on the same mounted volume in every environment","Remove proxy auth options when the proxy is unauthenticated","Validate proxy connectivity separately from Vultr connectivity","Version-control a config-check step that resolves all file references"],"tags":["config","proxy","auth","vultr"],"backgroundTag":"proxy-auth-config-failed","analyzedSha":"5079fb58f1e8e62113f90c945ad71586c797d770","analyzedAt":"2026-09-03T18:10:26.153Z","contentChangedAt":"2026-09-03T18:10:26.153Z","schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}