-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathconfig.go
More file actions
57 lines (48 loc) · 1.76 KB
/
config.go
File metadata and controls
57 lines (48 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package main
import (
"flag"
log "github.com/Sirupsen/logrus"
"net/url"
"strings"
"time"
)
var (
exporterAddress = flag.String("exporter.address", ":55555", "Address of the exporter")
exporterEndpoint = flag.String("exporter.endpoint", "/metrics", "Path where metrics are served")
logLevel = flag.String("log.level", "info", "Log level")
mesosMasters = flag.String("mesos.masters", "http://localhost:5050", "A list of Mesos masters separated by commas")
mesosMasterQueryInterval = flag.Duration("mesos.master-pollinterval", 15*time.Second, "Interval to poll the Mesos master leader for new slaves")
mesosSlaveQueryInterval = flag.Duration("mesos.slave-pollinterval", 15*time.Second, "Interval to poll a Mesos slave for stats of tasks")
)
type Config struct {
ExporterAddress string
ExporterEndpoint string
LogLevel log.Level
MesosMasters []*url.URL
MesosMasterQueryInterval time.Duration
MesosSlaveQueryInterval time.Duration
}
func newConfig() *Config {
flag.Parse()
logLevel, err := log.ParseLevel(*logLevel)
if err != nil {
log.Errorf("Invalid log level '%s' - defaulting to INFO", logLevel)
logLevel = log.InfoLevel
}
masterUrls := []*url.URL{}
for _, rawUrl := range strings.Split(*mesosMasters, ",") {
masterUrl, err := url.Parse(rawUrl)
if err != nil {
log.Fatalf("Unable to parse URL '%s': '%s'", rawUrl, err)
}
masterUrls = append(masterUrls, masterUrl)
}
return &Config{
ExporterAddress: *exporterAddress,
ExporterEndpoint: *exporterEndpoint,
LogLevel: logLevel,
MesosMasters: masterUrls,
MesosMasterQueryInterval: *mesosMasterQueryInterval,
MesosSlaveQueryInterval: *mesosSlaveQueryInterval,
}
}