diff --git a/pkg/services/ngalert/ngalert.go b/pkg/services/ngalert/ngalert.go index 8c23e3ee7c8..c6d0a380e20 100644 --- a/pkg/services/ngalert/ngalert.go +++ b/pkg/services/ngalert/ngalert.go @@ -279,6 +279,7 @@ func (ng *AlertNG) init() error { cfg := state.ManagerCfg{ Metrics: ng.Metrics.GetStateMetrics(), ExternalURL: appUrl, + DisableExecution: !ng.Cfg.UnifiedAlerting.ExecuteAlerts, InstanceStore: ng.store, Images: ng.ImageService, Clock: clk, diff --git a/pkg/services/ngalert/state/manager.go b/pkg/services/ngalert/state/manager.go index da6d614ff5e..f356b57dad0 100644 --- a/pkg/services/ngalert/state/manager.go +++ b/pkg/services/ngalert/state/manager.go @@ -71,6 +71,8 @@ type ManagerCfg struct { ApplyNoDataAndErrorToAllStates bool RulesPerRuleGroupLimit int64 + DisableExecution bool + Tracer tracing.Tracer Log log.Logger } @@ -78,7 +80,8 @@ type ManagerCfg struct { func NewManager(cfg ManagerCfg, statePersister StatePersister) *Manager { // Metrics for the cache use a collector, so they need access to the register directly. c := newCache() - if cfg.Metrics != nil { + // Only expose the metrics if this grafana server does execute alerts. + if cfg.Metrics != nil && !cfg.DisableExecution { c.RegisterMetrics(cfg.Metrics.Registerer()) }