From 49d1ed2e1e0c0d012ae34d85fbf2055beef176b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Tue, 23 Jan 2018 21:37:56 -0800 Subject: [PATCH] Pass HTTP transport to the proxy When we proxy requests we should use same transport as we use when collecting alerts & silences --- internal/alertmanager/models.go | 2 +- internal/alertmanager/upstream.go | 4 ++-- proxy.go | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/alertmanager/models.go b/internal/alertmanager/models.go index de69f4423..012501774 100644 --- a/internal/alertmanager/models.go +++ b/internal/alertmanager/models.go @@ -40,7 +40,7 @@ type Alertmanager struct { reader uri.Reader // implements how we fetch requests from the Alertmanager, we don't set it // by default so it's nil and http.DefaultTransport is used - httpTransport http.RoundTripper + HTTPTransport http.RoundTripper `json:"-"` // lock protects data access while updating lock sync.RWMutex // fields for storing pulled data diff --git a/internal/alertmanager/upstream.go b/internal/alertmanager/upstream.go index 610349363..1da5b0def 100644 --- a/internal/alertmanager/upstream.go +++ b/internal/alertmanager/upstream.go @@ -46,7 +46,7 @@ func NewAlertmanager(name, upstreamURI string, opts ...Option) (*Alertmanager, e } var err error - am.reader, err = uri.NewReader(am.URI, am.RequestTimeout, am.httpTransport) + am.reader, err = uri.NewReader(am.URI, am.RequestTimeout, am.HTTPTransport) if err != nil { return am, err } @@ -112,7 +112,7 @@ func WithRequestTimeout(timeout time.Duration) Option { // a custom HTTP transport (http.RoundTripper implementation) func WithHTTPTransport(httpTransport http.RoundTripper) Option { return func(am *Alertmanager) error { - am.httpTransport = httpTransport + am.HTTPTransport = httpTransport return nil } } diff --git a/proxy.go b/proxy.go index e11f83d3d..a8e26d93f 100644 --- a/proxy.go +++ b/proxy.go @@ -37,6 +37,7 @@ func NewAlertmanagerProxy(alertmanager *alertmanager.Alertmanager) (*httputil.Re req.Header.Del("Accept-Encoding") log.Debugf("[%s] Proxy request for %s", alertmanager.Name, req.URL.Path) }, + Transport: alertmanager.HTTPTransport, ModifyResponse: func(resp *http.Response) error { // drop Content-Length header from upstream responses, gzip middleware // will compress those and that could cause a mismatch