Merge pull request #658 from prometheus/fabxc/pql/rules-manager

Rename RuleManager to Manager, remove interface.
This commit is contained in:
Fabian Reinartz 2015-04-29 16:54:21 +02:00
commit 8d7c479fed
4 changed files with 22 additions and 32 deletions

View file

@ -78,7 +78,7 @@ var (
type prometheus struct {
queryEngine *promql.Engine
ruleManager rules.RuleManager
ruleManager *rules.Manager
targetManager retrieval.TargetManager
notificationHandler *notification.NotificationHandler
storage local.Storage
@ -159,7 +159,7 @@ func NewPrometheus() *prometheus {
queryEngine := promql.NewEngine(memStorage)
ruleManager := rules.NewRuleManager(&rules.RuleManagerOptions{
ruleManager := rules.NewManager(&rules.ManagerOptions{
SampleAppender: sampleAppender,
NotificationHandler: notificationHandler,
EvaluationInterval: conf.EvaluationInterval(),

View file

@ -70,20 +70,8 @@ func init() {
prometheus.MustRegister(evalDuration)
}
// A RuleManager manages recording and alerting rules. Create instances with
// NewRuleManager.
type RuleManager interface {
// Start the rule manager's periodic rule evaluation.
Run()
// Stop the rule manager's rule evaluation cycles.
Stop()
// Return all rules.
Rules() []Rule
// Return all alerting rules.
AlertingRules() []*AlertingRule
}
type ruleManager struct {
// The Manager manages recording and alerting rules.
type Manager struct {
// Protects the rules list.
sync.Mutex
rules []Rule
@ -100,8 +88,8 @@ type ruleManager struct {
pathPrefix string
}
// RuleManagerOptions bundles options for the RuleManager.
type RuleManagerOptions struct {
// ManagerOptions bundles options for the Manager.
type ManagerOptions struct {
EvaluationInterval time.Duration
QueryEngine *promql.Engine
@ -112,10 +100,10 @@ type RuleManagerOptions struct {
PathPrefix string
}
// NewRuleManager returns an implementation of RuleManager, ready to be started
// NewManager returns an implementation of Manager, ready to be started
// by calling the Run method.
func NewRuleManager(o *RuleManagerOptions) RuleManager {
manager := &ruleManager{
func NewManager(o *ManagerOptions) *Manager {
manager := &Manager{
rules: []Rule{},
done: make(chan bool),
@ -131,7 +119,8 @@ func NewRuleManager(o *RuleManagerOptions) RuleManager {
return manager
}
func (m *ruleManager) Run() {
// Run the rule manager's periodic rule evaluation.
func (m *Manager) Run() {
defer glog.Info("Rule manager stopped.")
ticker := time.NewTicker(m.interval)
@ -158,12 +147,13 @@ func (m *ruleManager) Run() {
}
}
func (m *ruleManager) Stop() {
// Stop the rule manager's rule evaluation cycles.
func (m *Manager) Stop() {
glog.Info("Stopping rule manager...")
m.done <- true
}
func (m *ruleManager) queueAlertNotifications(rule *AlertingRule, timestamp clientmodel.Timestamp) {
func (m *Manager) queueAlertNotifications(rule *AlertingRule, timestamp clientmodel.Timestamp) {
activeAlerts := rule.ActiveAlerts()
if len(activeAlerts) == 0 {
return
@ -217,7 +207,7 @@ func (m *ruleManager) queueAlertNotifications(rule *AlertingRule, timestamp clie
m.notificationHandler.SubmitReqs(notifications)
}
func (m *ruleManager) runIteration() {
func (m *Manager) runIteration() {
now := clientmodel.Now()
wg := sync.WaitGroup{}
@ -268,7 +258,7 @@ func (m *ruleManager) runIteration() {
wg.Wait()
}
func (m *ruleManager) AddAlertingRule(ctx context.Context, r *promql.AlertStmt) error {
func (m *Manager) AddAlertingRule(ctx context.Context, r *promql.AlertStmt) error {
rule := NewAlertingRule(r.Name, r.Expr, r.Duration, r.Labels, r.Summary, r.Description)
m.Lock()
@ -277,7 +267,7 @@ func (m *ruleManager) AddAlertingRule(ctx context.Context, r *promql.AlertStmt)
return nil
}
func (m *ruleManager) AddRecordingRule(ctx context.Context, r *promql.RecordStmt) error {
func (m *Manager) AddRecordingRule(ctx context.Context, r *promql.RecordStmt) error {
rule := &RecordingRule{r.Name, r.Expr, r.Labels}
m.Lock()
@ -286,7 +276,7 @@ func (m *ruleManager) AddRecordingRule(ctx context.Context, r *promql.RecordStmt
return nil
}
func (m *ruleManager) Rules() []Rule {
func (m *Manager) Rules() []Rule {
m.Lock()
defer m.Unlock()
@ -295,7 +285,7 @@ func (m *ruleManager) Rules() []Rule {
return rules
}
func (m *ruleManager) AlertingRules() []*AlertingRule {
func (m *Manager) AlertingRules() []*AlertingRule {
m.Lock()
defer m.Unlock()

View file

@ -46,7 +46,7 @@ func (s byAlertStateSorter) Swap(i, j int) {
// AlertsHandler implements http.Handler.
type AlertsHandler struct {
RuleManager rules.RuleManager
RuleManager *rules.Manager
PathPrefix string
mutex sync.Mutex

View file

@ -29,10 +29,10 @@ type PrometheusStatusHandler struct {
BuildInfo map[string]string
Config string
Flags map[string]string
RuleManager rules.RuleManager
RuleManager *rules.Manager
TargetPools map[string]*retrieval.TargetPool
Birth time.Time
Birth time.Time
PathPrefix string
}