github.com/kamilsk/grafaman@v1.0.0-beta3.0.20201207211242-3e0d02dd84ce/internal/cnf/config.go (about) 1 package cnf 2 3 import ( 4 "strings" 5 "time" 6 7 "github.com/kamilsk/grafaman/internal/model" 8 ) 9 10 // A Config contains all necessary tool configuration. 11 type Config struct { 12 App string `mapstructure:"app"` 13 File string `mapstructure:"-"` 14 Grafana struct { 15 URL string `mapstructure:"grafana"` 16 Dashboard string `mapstructure:"dashboard"` 17 Timeout time.Duration `mapstructure:"grafana_timeout"` 18 } `mapstructure:",squash"` 19 Graphite struct { 20 URL string `mapstructure:"graphite"` 21 Filter string `mapstructure:"filter"` 22 Prefix string `mapstructure:"metrics"` 23 Timeout time.Duration `mapstructure:"graphite_timeout"` 24 } `mapstructure:",squash"` 25 Debug struct { 26 Enabled bool `mapstructure:"enabled"` 27 Host string `mapstructure:"host"` 28 Level int `mapstructure:"level"` 29 } `mapstructure:"debug"` 30 Output struct { 31 Format string `mapstructure:"format"` 32 } `mapstructure:"output"` 33 } 34 35 // FilterQuery returns a Query to filter metrics. 36 func (config *Config) FilterQuery() model.Query { 37 filter, prefix := config.Graphite.Filter, config.Graphite.Prefix 38 if filter == "" { 39 filter = "*" 40 } 41 if !strings.HasPrefix(filter, prefix) { 42 filter = prefix + "." + filter 43 } 44 return model.Query(filter) 45 }