From 0eb6e31252459e67118cd7a7e8c94e39a37d8513 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Tue, 14 Jun 2022 21:51:33 +1000 Subject: [PATCH] refactor(metrics): simplify names (#3515) --- internal/metrics/prometheus.go | 68 +++++++++--------------- internal/suites/suite_standalone_test.go | 6 +-- 2 files changed, 26 insertions(+), 48 deletions(-) diff --git a/internal/metrics/prometheus.go b/internal/metrics/prometheus.go index c096e090f..61ae96951 100644 --- a/internal/metrics/prometheus.go +++ b/internal/metrics/prometheus.go @@ -28,105 +28,85 @@ type Prometheus struct { } // RecordRequest takes the statusCode string, requestMethod string, and the elapsed time.Duration to record the request and request duration metrics. -func (p *Prometheus) RecordRequest(statusCode, requestMethod string, elapsed time.Duration) { - if p.reqCounter == nil || p.reqDuration == nil { - return - } - - p.reqCounter.WithLabelValues(statusCode, requestMethod).Inc() - p.reqDuration.WithLabelValues(statusCode).Observe(elapsed.Seconds()) +func (r *Prometheus) RecordRequest(statusCode, requestMethod string, elapsed time.Duration) { + r.reqCounter.WithLabelValues(statusCode, requestMethod).Inc() + r.reqDuration.WithLabelValues(statusCode).Observe(elapsed.Seconds()) } // RecordVerifyRequest takes the statusCode string to record the verify endpoint request metrics. -func (p *Prometheus) RecordVerifyRequest(statusCode string) { - if p.reqVerifyCounter == nil { - return - } - - p.reqVerifyCounter.WithLabelValues(statusCode).Inc() +func (r *Prometheus) RecordVerifyRequest(statusCode string) { + r.reqVerifyCounter.WithLabelValues(statusCode).Inc() } // RecordAuthentication takes the success and regulated booleans and a method string to record the authentication metrics. -func (p *Prometheus) RecordAuthentication(success, banned bool, authType string) { +func (r *Prometheus) RecordAuthentication(success, banned bool, authType string) { switch authType { case "1fa", "": - if p.auth1FACounter == nil { - return - } - - p.auth1FACounter.WithLabelValues(strconv.FormatBool(success), strconv.FormatBool(banned)).Inc() + r.auth1FACounter.WithLabelValues(strconv.FormatBool(success), strconv.FormatBool(banned)).Inc() default: - if p.auth2FACounter == nil { - return - } - - p.auth2FACounter.WithLabelValues(strconv.FormatBool(success), strconv.FormatBool(banned), authType).Inc() + r.auth2FACounter.WithLabelValues(strconv.FormatBool(success), strconv.FormatBool(banned), authType).Inc() } } // RecordAuthenticationDuration takes the statusCode string, requestMethod string, and the elapsed time.Duration to record the request and request duration metrics. -func (p *Prometheus) RecordAuthenticationDuration(success bool, elapsed time.Duration) { - if p.authDuration == nil { - return - } - - p.authDuration.WithLabelValues(strconv.FormatBool(success)).Observe(elapsed.Seconds()) +func (r *Prometheus) RecordAuthenticationDuration(success bool, elapsed time.Duration) { + r.authDuration.WithLabelValues(strconv.FormatBool(success)).Observe(elapsed.Seconds()) } -func (p *Prometheus) register() { - p.authDuration = promauto.NewHistogramVec( +func (r *Prometheus) register() { + r.authDuration = promauto.NewHistogramVec( prometheus.HistogramOpts{ Subsystem: "authelia", - Name: "authentication_duration_seconds", + Name: "authentication_duration", Help: "The time an authentication attempt takes in seconds.", Buckets: []float64{.0005, .00075, .001, .005, .01, .025, .05, .075, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 0.9, 1, 5, 10, 15, 30, 60}, }, []string{"success"}, ) - p.reqDuration = promauto.NewHistogramVec( + r.reqDuration = promauto.NewHistogramVec( prometheus.HistogramOpts{ Subsystem: "authelia", - Name: "request_duration_seconds", + Name: "request_duration", Help: "The time a HTTP request takes to process in seconds.", Buckets: []float64{.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10, 15, 20, 30, 40, 50, 60}, }, []string{"code"}, ) - p.reqCounter = promauto.NewCounterVec( + r.reqCounter = promauto.NewCounterVec( prometheus.CounterOpts{ Subsystem: "authelia", - Name: "requests_total", + Name: "request", Help: "The number of HTTP requests processed.", }, []string{"code", "method"}, ) - p.reqVerifyCounter = promauto.NewCounterVec( + r.reqVerifyCounter = promauto.NewCounterVec( prometheus.CounterOpts{ Subsystem: "authelia", - Name: "verify_requests_total", + Name: "verify_request", Help: "The number of verify requests processed.", }, []string{"code"}, ) - p.auth1FACounter = promauto.NewCounterVec( + r.auth1FACounter = promauto.NewCounterVec( prometheus.CounterOpts{ Subsystem: "authelia", - Name: "authentication_first_factor_total", + Name: "authentication_first_factor", Help: "The number of 1FA authentications processed.", }, []string{"success", "banned"}, ) - p.auth2FACounter = promauto.NewCounterVec( + r.auth2FACounter = promauto.NewCounterVec( prometheus.CounterOpts{ Subsystem: "authelia", - Name: "authentication_second_factor_total", + Name: "authentication_second_factor", Help: "The number of 2FA authentications processed.", }, - []string{"success", "banned", "method"}, + []string{"success", "banned", "type"}, ) } diff --git a/internal/suites/suite_standalone_test.go b/internal/suites/suite_standalone_test.go index d5678537f..fc37f2c08 100644 --- a/internal/suites/suite_standalone_test.go +++ b/internal/suites/suite_standalone_test.go @@ -285,10 +285,8 @@ func (s *StandaloneSuite) TestShouldRecordMetrics() { metrics := string(body) - s.Assert().Contains(metrics, "authelia_request_duration_seconds_bucket{") - s.Assert().Contains(metrics, "authelia_request_duration_seconds_sum{") - s.Assert().Contains(metrics, "go_gc_cycles_forced_gc_cycles_total") - s.Assert().Contains(metrics, "go_gc_cycles_total_gc_cycles_total") + s.Assert().Contains(metrics, "authelia_request_duration_bucket{") + s.Assert().Contains(metrics, "authelia_request_duration_sum{") } func (s *StandaloneSuite) TestStandaloneWebDriverScenario() {