MCPcopy Index your code
hub / github.com/cortexproject/cortex / initRuler

Method initRuler

pkg/cortex/modules.go:665–742  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

663}
664
665func (t *Cortex) initRuler() (serv services.Service, err error) {
666 var manager *ruler.DefaultMultiTenantManager
667 if t.RulerStorage == nil {
668 level.Info(util_log.Logger).Log("msg", "RulerStorage is nil. Not starting the ruler.")
669 return nil, nil
670 }
671
672 t.Cfg.Ruler.LookbackDelta = t.Cfg.Querier.LookbackDelta
673 t.Cfg.Ruler.FrontendTimeout = t.Cfg.Querier.Timeout
674 t.Cfg.Ruler.PrometheusHTTPPrefix = t.Cfg.API.PrometheusHTTPPrefix
675 t.Cfg.Ruler.Ring.ListenPort = t.Cfg.Server.GRPCListenPort
676 t.Cfg.Ruler.NameValidationScheme = t.Cfg.NameValidationScheme
677 metrics := ruler.NewRuleEvalMetrics(t.Cfg.Ruler, prometheus.DefaultRegisterer)
678
679 rulerRegisterer := prometheus.WrapRegistererWith(prometheus.Labels{"engine": "ruler"}, prometheus.DefaultRegisterer)
680
681 var (
682 pusher ruler.Pusher
683 queryable prom_storage.Queryable
684 queryEngine promql.QueryEngine
685 )
686 if t.Cfg.ExternalPusher != nil {
687 pusher = t.Cfg.ExternalPusher
688 } else {
689 pusher = t.Distributor
690 }
691 if t.Cfg.ExternalQueryable != nil {
692 queryable = t.Cfg.ExternalQueryable
693
694 opts := promql.EngineOpts{
695 Logger: util_log.SLogger,
696 Reg: rulerRegisterer,
697 ActiveQueryTracker: createActiveQueryTracker(t.Cfg.Querier, util_log.SLogger),
698 MaxSamples: t.Cfg.Querier.MaxSamples,
699 Timeout: t.Cfg.Querier.Timeout,
700 LookbackDelta: t.Cfg.Querier.LookbackDelta,
701 EnablePerStepStats: t.Cfg.Querier.EnablePerStepStats,
702 EnableAtModifier: true,
703 EnableNegativeOffset: true,
704 NoStepSubqueryIntervalFn: func(int64) int64 {
705 return t.Cfg.Querier.DefaultEvaluationInterval.Milliseconds()
706 },
707 }
708 queryEngine = engine.New(opts, t.Cfg.Ruler.ThanosEngine, rulerRegisterer)
709 } else {
710 // TODO: Consider wrapping logger to differentiate from querier module logger
711 queryable, _, queryEngine = querier.New(t.Cfg.Querier, t.OverridesConfig, t.Distributor, t.StoreQueryables, rulerRegisterer, util_log.Logger, t.OverridesConfig.RulesPartialData)
712 }
713
714 managerFactory := ruler.DefaultTenantManagerFactory(t.Cfg.Ruler, pusher, queryable, queryEngine, t.OverridesConfig, metrics, prometheus.DefaultRegisterer)
715 manager, err = ruler.NewDefaultMultiTenantManager(t.Cfg.Ruler, t.OverridesConfig, managerFactory, metrics, prometheus.DefaultRegisterer, util_log.Logger)
716
717 if err != nil {
718 return nil, err
719 }
720
721 t.Ruler, err = ruler.NewRuler(
722 t.Cfg.Ruler,

Callers

nothing calls this directly

Calls 11

NewRuleEvalMetricsFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
NewRulerFunction · 0.92
NewAPIFunction · 0.92
RegisterRulerMethod · 0.80
RegisterRulerAPIMethod · 0.80
createActiveQueryTrackerFunction · 0.70
LogMethod · 0.45

Tested by

no test coverage detected