From 7cfd470c911b2f1c9d9b0e9b5b0cad3d6978c011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Philippe=20Qu=C3=A9m=C3=A9ner?= Date: Wed, 3 Apr 2024 17:18:02 +0200 Subject: [PATCH] fix(alerting): only expose metrics if executing alerts (#85512) --- pkg/services/ngalert/ngalert.go | 1 + pkg/services/ngalert/state/manager.go | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) 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()) }