-
Notifications
You must be signed in to change notification settings - Fork 12
/
config.go
55 lines (44 loc) · 1.86 KB
/
config.go
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
package blackbox
import (
"log"
"time"
envstruct "code.cloudfoundry.org/go-envstruct"
sharedtls "github.com/cloudfoundry/metric-store-release/src/internal/tls"
)
type Config struct {
EmissionInterval time.Duration `env:"EMISSION_INTERVAL, required, report"`
SampleInterval time.Duration `env:"SAMPLE_INTERVAL, required, report"`
WindowInterval time.Duration `env:"WINDOW_INTERVAL, required, report"`
WindowLag time.Duration `env:"WINDOW_LAG, required, report"`
SourceId string `env:"SOURCE_ID, required, report"`
MetricsAddr string `env:"METRICS_ADDR, report"`
CfBlackboxEnabled bool `env:"CF_BLACKBOX_ENABLED, report"`
MetricStoreHTTPAddr string `env:"METRIC_STORE_HTTP_ADDR, required, report"`
MetricStoreIngressAddr string `env:"METRIC_STORE_INGRESS_ADDR, required, report"`
UaaAddr string `env:"UAA_ADDR, report"`
ClientID string `env:"CLIENT_ID, report"`
ClientSecret string `env:"CLIENT_SECRET"`
SkipTLSVerify bool `env:"SKIP_TLS_VERIFY, report"`
MetricStoreGrpcAddr string `env:"METRIC_STORE_GRPC_ADDR, required, report"`
TLS sharedtls.TLS
MetricStoreMetricsTLS MetricStoreMetricsTLS
LogLevel string `env:"LOG_LEVEL, report"`
ProfilingAddr string `env:"PROFILING_ADDR"`
}
type MetricStoreMetricsTLS struct {
CAPath string `env:"METRIC_STORE_METRICS_CA_PATH, required, report"`
CertPath string `env:"METRIC_STORE_METRICS_CERT_PATH, required, report"`
KeyPath string `env:"METRIC_STORE_METRICS_KEY_PATH, required, report"`
}
func LoadConfig() *Config {
cfg := &Config{
LogLevel: "info",
MetricsAddr: ":6066",
ProfilingAddr: "localhost:6076",
}
if err := envstruct.Load(cfg); err != nil {
log.Fatalf("failed to load config from environment: %s", err)
}
_ = envstruct.WriteReport(cfg)
return cfg
}