diff --git a/README.md b/README.md index 9494acb2..5bf5e7a7 100644 --- a/README.md +++ b/README.md @@ -223,6 +223,9 @@ The following environment variables configure the exporter: * `DATA_SOURCE_NAME` the default legacy format. Accepts URI form and key=value form arguments. The URI may contain the username and password to connect with. + +* `DATA_SOURCE_NAME_FILE` + The same as above but reads the URI from a file. * `DATA_SOURCE_URI` an alternative to `DATA_SOURCE_NAME` which exclusively accepts the hostname diff --git a/cmd/postgres_exporter/datasource.go b/cmd/postgres_exporter/datasource.go index 7a22e177..e2327057 100644 --- a/cmd/postgres_exporter/datasource.go +++ b/cmd/postgres_exporter/datasource.go @@ -124,6 +124,16 @@ func getDataSources() ([]string, error) { return strings.Split(dsn, ","), nil } + dataSourceNameFile := os.Getenv("DATA_SOURCE_NAME_FILE") + if len(dataSourceNameFile) != 0 { + fileContents, err := ioutil.ReadFile(dataSourceNameFile) + if err != nil { + return nil, fmt.Errorf("failed loading data source name file %s: %s", dataSourceNameFile, err.Error()) + } + dsnContent := strings.TrimSpace(string(fileContents)) + return strings.Split(dsnContent, ","), nil + } + var user, pass, uri string dataSourceUserFile := os.Getenv("DATA_SOURCE_USER_FILE")