From e15e40fbd3e017b35d9572f277a83cbbda020680 Mon Sep 17 00:00:00 2001 From: Santiago Date: Mon, 10 Jun 2024 13:51:11 +0200 Subject: [PATCH] Alerting: Skip setting up clustering in remote primary/only modes (#88968) * Alerting: Skip setting up clustering in remote primary mode * Update pkg/services/ngalert/notifier/multiorg_alertmanager.go Co-authored-by: Steve Simpson --------- Co-authored-by: Steve Simpson --- pkg/services/ngalert/ngalert.go | 2 ++ pkg/services/ngalert/notifier/multiorg_alertmanager.go | 8 ++++++-- pkg/setting/setting_unified_alerting.go | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/services/ngalert/ngalert.go b/pkg/services/ngalert/ngalert.go index 5e7640bf535..1c4003182ce 100644 --- a/pkg/services/ngalert/ngalert.go +++ b/pkg/services/ngalert/ngalert.go @@ -177,6 +177,7 @@ func (ng *AlertNG) init() error { ng.Log.Debug("Starting Grafana with remote only mode enabled") m := ng.Metrics.GetRemoteAlertmanagerMetrics() m.Info.WithLabelValues(metrics.ModeRemoteOnly).Set(1) + ng.Cfg.UnifiedAlerting.SkipClustering = true // This function will be used by the MOA to create new Alertmanagers. override := notifier.WithAlertmanagerOverride(func(_ notifier.OrgAlertmanagerFactory) notifier.OrgAlertmanagerFactory { @@ -203,6 +204,7 @@ func (ng *AlertNG) init() error { case remotePrimary: ng.Log.Warn("Only remote secondary mode is supported at the moment, falling back to remote secondary") + // TODO: Skip setting up clustering with ng.Cfg.UnifiedAlerting.SkipClustering = true fallthrough case remoteSecondary: diff --git a/pkg/services/ngalert/notifier/multiorg_alertmanager.go b/pkg/services/ngalert/notifier/multiorg_alertmanager.go index 26ee2f13e12..4f70a3b57d9 100644 --- a/pkg/services/ngalert/notifier/multiorg_alertmanager.go +++ b/pkg/services/ngalert/notifier/multiorg_alertmanager.go @@ -142,8 +142,12 @@ func NewMultiOrgAlertmanager( peer: &NilPeer{}, } - if err := moa.setupClustering(cfg); err != nil { - return nil, err + if cfg.UnifiedAlerting.SkipClustering { + l.Info("Skipping setting up clustering for MOA") + } else { + if err := moa.setupClustering(cfg); err != nil { + return nil, err + } } // Set up the default per tenant Alertmanager factory. diff --git a/pkg/setting/setting_unified_alerting.go b/pkg/setting/setting_unified_alerting.go index d6f674979e3..228fb049dc1 100644 --- a/pkg/setting/setting_unified_alerting.go +++ b/pkg/setting/setting_unified_alerting.go @@ -98,6 +98,7 @@ type UnifiedAlertingSettings struct { DefaultRuleEvaluationInterval time.Duration Screenshots UnifiedAlertingScreenshotSettings ReservedLabels UnifiedAlertingReservedLabelSettings + SkipClustering bool StateHistory UnifiedAlertingStateHistorySettings RemoteAlertmanager RemoteAlertmanagerSettings // MaxStateSaveConcurrency controls the number of goroutines (per rule) that can save alert state in parallel.