Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor Ruler, introduce MultiTenantManager interface #3019

Merged
merged 15 commits into from
Aug 17, 2020
24 changes: 12 additions & 12 deletions pkg/ruler/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"github.com/go-kit/kit/log/level"
ot "github.com/opentracing/opentracing-go"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
"github.com/prometheus/prometheus/config"
"github.com/prometheus/prometheus/notifier"
promRules "github.com/prometheus/prometheus/rules"
Expand All @@ -20,14 +19,6 @@ import (
"github.com/cortexproject/cortex/pkg/util"
)

var (
managersTotal = promauto.NewGauge(prometheus.GaugeOpts{
Namespace: "cortex",
Name: "ruler_managers_total",
Help: "Total number of managers registered and running in the ruler",
})
)

type MultiTenantManager interface {
annanay25 marked this conversation as resolved.
Show resolved Hide resolved
SyncRuleGroups(ctx context.Context, ruleGroups map[string]store.RuleGroupList)
GetRules(userID string) []*promRules.Group
Expand All @@ -51,8 +42,9 @@ type DefaultMultiTenantManager struct {
notifiersMtx sync.Mutex
notifiers map[string]*rulerNotifier

registry prometheus.Registerer
logger log.Logger
managersTotal prometheus.Gauge
registry prometheus.Registerer
logger log.Logger
}

func NewDefaultMultiTenantManager(cfg Config, managerFactory ManagerFactory, reg prometheus.Registerer, logger log.Logger) (*DefaultMultiTenantManager, error) {
Expand All @@ -66,6 +58,13 @@ func NewDefaultMultiTenantManager(cfg Config, managerFactory ManagerFactory, reg
reg.MustRegister(userManagerMetrics)
}

managersTotal := prometheus.NewGauge(prometheus.GaugeOpts{
Namespace: "cortex",
Name: "ruler_managers_total",
Help: "Total number of managers registered and running in the ruler",
})
reg.MustRegister(managersTotal)
annanay25 marked this conversation as resolved.
Show resolved Hide resolved
annanay25 marked this conversation as resolved.
Show resolved Hide resolved

return &DefaultMultiTenantManager{
cfg: cfg,
notifierCfg: ncfg,
Expand All @@ -74,6 +73,7 @@ func NewDefaultMultiTenantManager(cfg Config, managerFactory ManagerFactory, reg
mapper: newMapper(cfg.RulePath, logger),
userManagers: map[string]*promRules.Manager{},
userManagerMetrics: userManagerMetrics,
managersTotal: managersTotal,
registry: reg,
logger: logger,
}, nil
Expand All @@ -98,7 +98,7 @@ func (r *DefaultMultiTenantManager) SyncRuleGroups(ctx context.Context, ruleGrou
}
}

managersTotal.Set(float64(len(r.userManagers)))
r.managersTotal.Set(float64(len(r.userManagers)))
}

// syncRulesToManager maps the rule files to disk, detects any changes and will create/update the
Expand Down