From 3da0ed10194f669051c5ac45d2be2905fb86a1d2 Mon Sep 17 00:00:00 2001 From: Trong Huu Nguyen Date: Mon, 16 Oct 2023 11:41:51 +0200 Subject: [PATCH] fix(middleware/prometheus): filter out irrelevant paths --- pkg/middleware/prometheus.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/pkg/middleware/prometheus.go b/pkg/middleware/prometheus.go index ca74113..8c7a45a 100644 --- a/pkg/middleware/prometheus.go +++ b/pkg/middleware/prometheus.go @@ -6,12 +6,14 @@ package middleware import ( "net/http" "strconv" + "strings" "time" chi_middleware "github.com/go-chi/chi/v5/middleware" "github.com/prometheus/client_golang/prometheus" "github.com/nais/wonderwall/pkg/metrics" + "github.com/nais/wonderwall/pkg/router/paths" ) var defaultBuckets = []float64{.001, .01, .05, .1, .5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5} @@ -68,7 +70,32 @@ func (m *PrometheusMiddleware) Initialize(path, method string, code int) { } func (m *PrometheusMiddleware) Handler(next http.Handler) http.Handler { + relevantPaths := map[string]bool{ + paths.OAuth2 + paths.Login: true, + paths.OAuth2 + paths.LoginCallback: true, + paths.OAuth2 + paths.Logout: true, + paths.OAuth2 + paths.LogoutCallback: true, + paths.OAuth2 + paths.LogoutFrontChannel: true, + paths.OAuth2 + paths.LogoutLocal: true, + paths.OAuth2 + paths.Ping: false, + paths.OAuth2 + paths.Session: true, + paths.OAuth2 + paths.Session + paths.Refresh: true, + } + fn := func(w http.ResponseWriter, r *http.Request) { + found := false + for path, relevant := range relevantPaths { + if strings.HasSuffix(r.URL.Path, path) && relevant { + found = true + break + } + } + + if !found { + next.ServeHTTP(w, r) + return + } + start := time.Now() ww := chi_middleware.NewWrapResponseWriter(w, r.ProtoMajor) next.ServeHTTP(ww, r)