mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Merge pull request #7761 from roidelapluie/reload
Log duration of reloads
This commit is contained in:
commit
db57f31325
|
@ -436,10 +436,16 @@ func main() {
|
||||||
conntrack.DialWithTracing(),
|
conntrack.DialWithTracing(),
|
||||||
)
|
)
|
||||||
|
|
||||||
reloaders := []func(cfg *config.Config) error{
|
reloaders := []reloader{
|
||||||
remoteStorage.ApplyConfig,
|
{
|
||||||
webHandler.ApplyConfig,
|
name: "remote_storage",
|
||||||
func(cfg *config.Config) error {
|
reloader: remoteStorage.ApplyConfig,
|
||||||
|
}, {
|
||||||
|
name: "web_handler",
|
||||||
|
reloader: webHandler.ApplyConfig,
|
||||||
|
}, {
|
||||||
|
name: "query_engine",
|
||||||
|
reloader: func(cfg *config.Config) error {
|
||||||
if cfg.GlobalConfig.QueryLogFile == "" {
|
if cfg.GlobalConfig.QueryLogFile == "" {
|
||||||
queryEngine.SetQueryLogger(nil)
|
queryEngine.SetQueryLogger(nil)
|
||||||
return nil
|
return nil
|
||||||
|
@ -452,25 +458,35 @@ func main() {
|
||||||
queryEngine.SetQueryLogger(l)
|
queryEngine.SetQueryLogger(l)
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
}, {
|
||||||
// The Scrape and notifier managers need to reload before the Discovery manager as
|
// The Scrape and notifier managers need to reload before the Discovery manager as
|
||||||
// they need to read the most updated config when receiving the new targets list.
|
// they need to read the most updated config when receiving the new targets list.
|
||||||
scrapeManager.ApplyConfig,
|
name: "scrape",
|
||||||
func(cfg *config.Config) error {
|
reloader: scrapeManager.ApplyConfig,
|
||||||
|
}, {
|
||||||
|
name: "scrape_sd",
|
||||||
|
reloader: func(cfg *config.Config) error {
|
||||||
c := make(map[string]sd_config.ServiceDiscoveryConfig)
|
c := make(map[string]sd_config.ServiceDiscoveryConfig)
|
||||||
for _, v := range cfg.ScrapeConfigs {
|
for _, v := range cfg.ScrapeConfigs {
|
||||||
c[v.JobName] = v.ServiceDiscoveryConfig
|
c[v.JobName] = v.ServiceDiscoveryConfig
|
||||||
}
|
}
|
||||||
return discoveryManagerScrape.ApplyConfig(c)
|
return discoveryManagerScrape.ApplyConfig(c)
|
||||||
},
|
},
|
||||||
notifierManager.ApplyConfig,
|
}, {
|
||||||
func(cfg *config.Config) error {
|
name: "notify",
|
||||||
|
reloader: notifierManager.ApplyConfig,
|
||||||
|
}, {
|
||||||
|
name: "notify_sd",
|
||||||
|
reloader: func(cfg *config.Config) error {
|
||||||
c := make(map[string]sd_config.ServiceDiscoveryConfig)
|
c := make(map[string]sd_config.ServiceDiscoveryConfig)
|
||||||
for k, v := range cfg.AlertingConfig.AlertmanagerConfigs.ToMap() {
|
for k, v := range cfg.AlertingConfig.AlertmanagerConfigs.ToMap() {
|
||||||
c[k] = v.ServiceDiscoveryConfig
|
c[k] = v.ServiceDiscoveryConfig
|
||||||
}
|
}
|
||||||
return discoveryManagerNotify.ApplyConfig(c)
|
return discoveryManagerNotify.ApplyConfig(c)
|
||||||
},
|
},
|
||||||
func(cfg *config.Config) error {
|
}, {
|
||||||
|
name: "rules",
|
||||||
|
reloader: func(cfg *config.Config) error {
|
||||||
// Get all rule files matching the configuration paths.
|
// Get all rule files matching the configuration paths.
|
||||||
var files []string
|
var files []string
|
||||||
for _, pat := range cfg.RuleFiles {
|
for _, pat := range cfg.RuleFiles {
|
||||||
|
@ -487,6 +503,7 @@ func main() {
|
||||||
cfg.GlobalConfig.ExternalLabels,
|
cfg.GlobalConfig.ExternalLabels,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
prometheus.MustRegister(configSuccess)
|
prometheus.MustRegister(configSuccess)
|
||||||
|
@ -821,7 +838,14 @@ func (i *safePromQLNoStepSubqueryInterval) Get(int64) int64 {
|
||||||
return i.value.Load()
|
return i.value.Load()
|
||||||
}
|
}
|
||||||
|
|
||||||
func reloadConfig(filename string, logger log.Logger, noStepSuqueryInterval *safePromQLNoStepSubqueryInterval, rls ...func(*config.Config) error) (err error) {
|
type reloader struct {
|
||||||
|
name string
|
||||||
|
reloader func(*config.Config) error
|
||||||
|
}
|
||||||
|
|
||||||
|
func reloadConfig(filename string, logger log.Logger, noStepSuqueryInterval *safePromQLNoStepSubqueryInterval, rls ...reloader) (err error) {
|
||||||
|
start := time.Now()
|
||||||
|
timings := []interface{}{}
|
||||||
level.Info(logger).Log("msg", "Loading configuration file", "filename", filename)
|
level.Info(logger).Log("msg", "Loading configuration file", "filename", filename)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
|
@ -840,17 +864,20 @@ func reloadConfig(filename string, logger log.Logger, noStepSuqueryInterval *saf
|
||||||
|
|
||||||
failed := false
|
failed := false
|
||||||
for _, rl := range rls {
|
for _, rl := range rls {
|
||||||
if err := rl(conf); err != nil {
|
rstart := time.Now()
|
||||||
|
if err := rl.reloader(conf); err != nil {
|
||||||
level.Error(logger).Log("msg", "Failed to apply configuration", "err", err)
|
level.Error(logger).Log("msg", "Failed to apply configuration", "err", err)
|
||||||
failed = true
|
failed = true
|
||||||
}
|
}
|
||||||
|
timings = append(timings, rl.name, time.Since(rstart))
|
||||||
}
|
}
|
||||||
if failed {
|
if failed {
|
||||||
return errors.Errorf("one or more errors occurred while applying the new configuration (--config.file=%q)", filename)
|
return errors.Errorf("one or more errors occurred while applying the new configuration (--config.file=%q)", filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
noStepSuqueryInterval.Set(conf.GlobalConfig.EvaluationInterval)
|
noStepSuqueryInterval.Set(conf.GlobalConfig.EvaluationInterval)
|
||||||
level.Info(logger).Log("msg", "Completed loading of configuration file", "filename", filename)
|
l := []interface{}{"msg", "Completed loading of configuration file", "filename", filename, "totalDuration", time.Since(start)}
|
||||||
|
level.Info(logger).Log(append(l, timings...)...)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue