From 180b67ca6ce2bf65aaa0a221566af505967a8fd5 Mon Sep 17 00:00:00 2001 From: Santiago Date: Mon, 19 May 2025 12:52:12 +0200 Subject: [PATCH] Remote Alertmanager: Make timeout configurable in alert senders (#105599) --- pkg/services/ngalert/remote/alertmanager.go | 2 +- pkg/services/ngalert/sender/sender.go | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/services/ngalert/remote/alertmanager.go b/pkg/services/ngalert/remote/alertmanager.go index 8eadbdb446e..5a207d83218 100644 --- a/pkg/services/ngalert/remote/alertmanager.go +++ b/pkg/services/ngalert/remote/alertmanager.go @@ -167,7 +167,7 @@ func NewAlertmanager(ctx context.Context, cfg AlertmanagerConfig, store stateSto return nil, err } s.Run() - err = s.ApplyConfig(cfg.OrgID, 0, []sender.ExternalAMcfg{{URL: cfg.URL + "/alertmanager"}}) + err = s.ApplyConfig(cfg.OrgID, 0, []sender.ExternalAMcfg{{URL: cfg.URL + "/alertmanager", Timeout: cfg.Timeout}}) if err != nil { return nil, err } diff --git a/pkg/services/ngalert/sender/sender.go b/pkg/services/ngalert/sender/sender.go index 96b1edb9fa9..1df7315ffd2 100644 --- a/pkg/services/ngalert/sender/sender.go +++ b/pkg/services/ngalert/sender/sender.go @@ -46,6 +46,7 @@ type ExternalAlertmanager struct { type ExternalAMcfg struct { URL string Headers http.Header + Timeout time.Duration } type Option func(*ExternalAlertmanager) @@ -229,11 +230,16 @@ func buildNotifierConfig(alertmanagers []ExternalAMcfg) (*config.Config, map[str }, } + timeout := am.Timeout + if timeout == 0 { + timeout = defaultTimeout + } + amConfig := &config.AlertmanagerConfig{ APIVersion: config.AlertmanagerAPIVersionV2, Scheme: u.Scheme, PathPrefix: u.Path, - Timeout: model.Duration(defaultTimeout), + Timeout: model.Duration(timeout), ServiceDiscoveryConfigs: sdConfig, }