From deebdf2bcc3d61d3cd6fc54c6c55d490879389d7 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Sun, 12 Dec 2021 13:46:31 +0100 Subject: [PATCH] outposts: fix unlabeled transaction Signed-off-by: Jens Langhammer --- internal/outpost/ak/api.go | 5 ++++- internal/outpost/flow.go | 2 +- internal/outpost/proxyv2/application/mode_proxy.go | 4 +++- internal/outpost/proxyv2/refresh.go | 4 +++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/outpost/ak/api.go b/internal/outpost/ak/api.go index 1e49fe7ab7..e054e354c2 100644 --- a/internal/outpost/ak/api.go +++ b/internal/outpost/ak/api.go @@ -11,6 +11,7 @@ import ( "syscall" "time" + "github.com/getsentry/sentry-go" "github.com/google/uuid" "github.com/gorilla/websocket" "github.com/prometheus/client_golang/prometheus" @@ -46,11 +47,13 @@ type APIController struct { // NewAPIController initialise new API Controller instance from URL and API token func NewAPIController(akURL url.URL, token string) *APIController { + rsp := sentry.StartSpan(context.TODO(), "authentik.outposts.init") + config := api.NewConfiguration() config.Host = akURL.Host config.Scheme = akURL.Scheme config.HTTPClient = &http.Client{ - Transport: NewUserAgentTransport(constants.OutpostUserAgent(), NewTracingTransport(context.TODO(), GetTLSTransport())), + Transport: NewUserAgentTransport(constants.OutpostUserAgent(), NewTracingTransport(rsp.Context(), GetTLSTransport())), } config.AddDefaultHeader("Authorization", fmt.Sprintf("Bearer %s", token)) diff --git a/internal/outpost/flow.go b/internal/outpost/flow.go index 1306b7204d..830a6ed62f 100644 --- a/internal/outpost/flow.go +++ b/internal/outpost/flow.go @@ -73,7 +73,7 @@ func NewFlowExecutor(ctx context.Context, flowSlug string, refConfig *api.Config config.Scheme = refConfig.Scheme config.HTTPClient = &http.Client{ Jar: jar, - Transport: ak.NewUserAgentTransport(constants.OutpostUserAgent(), ak.NewTracingTransport(ctx, ak.GetTLSTransport())), + Transport: ak.NewUserAgentTransport(constants.OutpostUserAgent(), ak.NewTracingTransport(rsp.Context(), ak.GetTLSTransport())), } token := strings.Split(refConfig.DefaultHeader["Authorization"], " ")[1] config.AddDefaultHeader(HeaderAuthentikOutpostToken, token) diff --git a/internal/outpost/proxyv2/application/mode_proxy.go b/internal/outpost/proxyv2/application/mode_proxy.go index 72d8311571..3a3b56f56f 100644 --- a/internal/outpost/proxyv2/application/mode_proxy.go +++ b/internal/outpost/proxyv2/application/mode_proxy.go @@ -8,6 +8,7 @@ import ( "net/url" "time" + "github.com/getsentry/sentry-go" "github.com/prometheus/client_golang/prometheus" "goauthentik.io/internal/outpost/ak" "goauthentik.io/internal/outpost/proxyv2/metrics" @@ -28,7 +29,8 @@ func (a *Application) configureProxy() error { return err } rp := &httputil.ReverseProxy{Director: a.proxyModifyRequest(u)} - rp.Transport = ak.NewTracingTransport(context.TODO(), a.getUpstreamTransport()) + rsp := sentry.StartSpan(context.TODO(), "authentik.outposts.proxy.application_transport") + rp.Transport = ak.NewTracingTransport(rsp.Context(), a.getUpstreamTransport()) rp.ErrorHandler = a.newProxyErrorHandler(templates.GetTemplates()) rp.ModifyResponse = a.proxyModifyResponse a.mux.PathPrefix("/").HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { diff --git a/internal/outpost/proxyv2/refresh.go b/internal/outpost/proxyv2/refresh.go index 65733f3043..5fa8372aca 100644 --- a/internal/outpost/proxyv2/refresh.go +++ b/internal/outpost/proxyv2/refresh.go @@ -5,6 +5,7 @@ import ( "fmt" "net/http" + "github.com/getsentry/sentry-go" "goauthentik.io/internal/constants" "goauthentik.io/internal/outpost/ak" "goauthentik.io/internal/outpost/proxyv2/application" @@ -20,9 +21,10 @@ func (ps *ProxyServer) Refresh() error { } apps := make(map[string]*application.Application) for _, provider := range providers.Results { + rsp := sentry.StartSpan(context.Background(), "authentik.outposts.proxy.application_ss") ua := fmt.Sprintf(" (provider=%s)", provider.Name) hc := &http.Client{ - Transport: ak.NewUserAgentTransport(constants.OutpostUserAgent()+ua, ak.NewTracingTransport(context.TODO(), ak.GetTLSTransport())), + Transport: ak.NewUserAgentTransport(constants.OutpostUserAgent()+ua, ak.NewTracingTransport(rsp.Context(), ak.GetTLSTransport())), } a, err := application.NewApplication(provider, hc, ps.cryptoStore, ps.akAPI) if err != nil {