add support for secrets files

This commit is contained in:
Matthias Berkenkamp 2017-04-11 12:18:55 +02:00 committed by Will Rouesnel
parent e701b80fd5
commit 528e347b48

View File

@ -15,6 +15,7 @@ import (
"strconv"
"sync"
"time"
"strings"
"gopkg.in/yaml.v2"
@ -999,6 +1000,45 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
}
}
// try to get the DataSource
// DATA_SOURCE_NAME always wins so we do not break older versions
// reading secrets from files wins over secrets in environment variables
// DATA_SOURCE_NAME > DATA_SOURCE_{USER|FILE}_FILE > DATA_SOURCE_{USER|FILE}
func getDataSource() string {
var dsn string
dsn = os.Getenv("DATA_SOURCE_NAME")
if len(dsn) == 0 {
var user string
var pass string
if(len(os.Getenv("DATA_SOURCE_USER_FILE")) != 0) {
fileContents, err := ioutil.ReadFile(os.Getenv("DATA_SOURCE_USER_FILE"))
if err != nil {
panic(err)
}
user = strings.TrimSpace(string(fileContents))
} else {
user = os.Getenv("DATA_SOURCE_USER")
}
if(len(os.Getenv("DATA_SOURCE_PASS_FILE")) != 0) {
fileContents, err := ioutil.ReadFile(os.Getenv("DATA_SOURCE_PASS_FILE"))
if err != nil {
panic(err)
}
pass = strings.TrimSpace(string(fileContents))
} else {
pass = os.Getenv("DATA_SOURCE_PASS")
}
uri := os.Getenv("DATA_SOURCE_URI")
dsn = "postgresql://" + user + ":" + pass + "@" + uri
}
return dsn
}
func main() {
flag.Parse()
@ -1015,9 +1055,9 @@ func main() {
return
}
dsn := os.Getenv("DATA_SOURCE_NAME")
dsn := getDataSource()
if len(dsn) == 0 {
log.Fatal("couldn't find environment variable DATA_SOURCE_NAME")
log.Fatal("couldn't find environment variables describing the datasource to use")
}
exporter := NewExporter(dsn, *queriesPath)