Set failedConfigs only once right after registerProviders finished

Signed-off-by: Nevill <nevill.dutt@gmail.com>
This commit is contained in:
Nevill 2019-09-21 12:01:57 +08:00
parent 048f81218d
commit 55661ab004

View file

@ -195,12 +195,13 @@ func (m *Manager) ApplyConfig(cfg map[string]sd_config.ServiceDiscoveryConfig) e
m.providers = nil m.providers = nil
m.discoverCancel = nil m.discoverCancel = nil
failedConfigs.WithLabelValues(m.name).Set(0) failedCount := 0
for name, scfg := range cfg { for name, scfg := range cfg {
m.registerProviders(scfg, name) failedCount += m.registerProviders(scfg, name)
discoveredTargets.WithLabelValues(m.name, name).Set(0) discoveredTargets.WithLabelValues(m.name, name).Set(0)
} }
failedConfigs.WithLabelValues(m.name).Set(float64(failedCount))
for _, prov := range m.providers { for _, prov := range m.providers {
m.startProvider(m.ctx, prov) m.startProvider(m.ctx, prov)
} }
@ -320,8 +321,12 @@ func (m *Manager) allGroups() map[string][]*targetgroup.Group {
return tSets return tSets
} }
func (m *Manager) registerProviders(cfg sd_config.ServiceDiscoveryConfig, setName string) { // registerProviders returns a number of failed SD config.
var added bool func (m *Manager) registerProviders(cfg sd_config.ServiceDiscoveryConfig, setName string) int {
var (
failedCount int
added bool
)
add := func(cfg interface{}, newDiscoverer func() (Discoverer, error)) { add := func(cfg interface{}, newDiscoverer func() (Discoverer, error)) {
t := reflect.TypeOf(cfg).String() t := reflect.TypeOf(cfg).String()
for _, p := range m.providers { for _, p := range m.providers {
@ -335,7 +340,7 @@ func (m *Manager) registerProviders(cfg sd_config.ServiceDiscoveryConfig, setNam
d, err := newDiscoverer() d, err := newDiscoverer()
if err != nil { if err != nil {
level.Error(m.logger).Log("msg", "Cannot create service discovery", "err", err, "type", t) level.Error(m.logger).Log("msg", "Cannot create service discovery", "err", err, "type", t)
failedConfigs.WithLabelValues(m.name).Inc() failedCount++
return return
} }
@ -424,6 +429,7 @@ func (m *Manager) registerProviders(cfg sd_config.ServiceDiscoveryConfig, setNam
return &StaticProvider{TargetGroups: []*targetgroup.Group{{}}}, nil return &StaticProvider{TargetGroups: []*targetgroup.Group{{}}}, nil
}) })
} }
return failedCount
} }
// StaticProvider holds a list of target groups that never change. // StaticProvider holds a list of target groups that never change.