diff --git a/main.go b/main.go index 2aaa0e934c..2eda11bb54 100644 --- a/main.go +++ b/main.go @@ -212,6 +212,14 @@ func main() { targetManager := retrieval.NewTargetManager(scrapeResults, *concurrentRetrievalAllowance) targetManager.AddTargetsFromConfig(conf) + // Queue depth will need to be exposed + ruleManager := rules.NewRuleManager(ruleResults, conf.EvaluationInterval(), ts) + err = ruleManager.AddRulesFromConfig(conf) + if err != nil { + log.Fatalf("Error loading rule files: %v", err) + } + go ruleManager.Run() + flags := map[string]string{} flag.VisitAll(func(f *flag.Flag) { @@ -222,6 +230,7 @@ func main() { PrometheusStatus: &web.PrometheusStatus{ BuildInfo: BuildInfo, Config: conf.String(), + Rules: ruleManager.Rules(), TargetPools: targetManager.Pools(), Flags: flags, Birth: time.Now(), @@ -321,15 +330,6 @@ func main() { } }() - // Queue depth will need to be exposed - - ruleManager := rules.NewRuleManager(ruleResults, conf.EvaluationInterval(), ts) - err = ruleManager.AddRulesFromConfig(conf) - if err != nil { - log.Fatalf("Error loading rule files: %v", err) - } - go ruleManager.Run() - go func() { err := webService.ServeForever() if err != nil { diff --git a/rules/manager.go b/rules/manager.go index fe32a60e4f..717e2c9865 100644 --- a/rules/manager.go +++ b/rules/manager.go @@ -30,6 +30,7 @@ type Result struct { type RuleManager interface { AddRulesFromConfig(config config.Config) error Run() + Rules() []Rule } type ruleManager struct { @@ -117,3 +118,12 @@ func (m *ruleManager) AddRulesFromConfig(config config.Config) error { } return nil } + +func (m *ruleManager) Rules() []Rule { + m.Lock() + defer m.Unlock() + + rules := make([]Rule, len(m.rules)) + copy(rules, m.rules) + return rules +} diff --git a/web/status.go b/web/status.go index abd07e6ce1..f420925481 100644 --- a/web/status.go +++ b/web/status.go @@ -15,6 +15,7 @@ package web import ( "github.com/prometheus/prometheus/retrieval" + "github.com/prometheus/prometheus/rules" "github.com/prometheus/prometheus/storage/metric" "net/http" "sync" @@ -26,7 +27,7 @@ type PrometheusStatus struct { Config string Curation metric.CurationState Flags map[string]string - Rules string + Rules []rules.Rule TargetPools map[string]*retrieval.TargetPool Birth time.Time diff --git a/web/templates/status.html b/web/templates/status.html index 2b029202a3..cf90904fa9 100644 --- a/web/templates/status.html +++ b/web/templates/status.html @@ -35,7 +35,7 @@

Rules

-{{.Rules}} +
{{range .Rules}}{{.String}}{{end}}

Targets