diff options
author | 2023-11-20 17:43:55 +0200 | |
---|---|---|
committer | 2023-11-20 16:43:55 +0100 | |
commit | 1ba3e14b36c8f00475bdd41cd4a487ef7636836e (patch) | |
tree | 17405b2de75bb6faaefb9bbfc6487fd7a5efc35a /cmd | |
parent | [bugfix] self-referencing collection pages for status replies (#2364) (diff) | |
download | gotosocial-1ba3e14b36c8f00475bdd41cd4a487ef7636836e.tar.xz |
[feature] Initial Prometheus metrics implementation (#2334)
* feat: Initial OTEL metrics
* docs: add metrics documentation
* fix: metrics endpoint conditional check
* feat: metrics endpoint basic auth
* fix: make metrics-auth-enabled default false
* fix: go fmt helpers.gen.go
* fix: add metric-related env vars to envparsing.sh
* fix: metrics docs
* fix: metrics related stuff in envparsing.sh
* fix: metrics docs
* chore: metrics docs wording
* fix: metrics stuff in envparsing?
* bump otel versions
---------
Co-authored-by: Tsuribori <user@acertaindebian>
Co-authored-by: Tsuribori <none@example.org>
Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/gotosocial/action/server/server.go | 13 | ||||
-rw-r--r-- | cmd/gotosocial/action/testrig/testrig.go | 10 |
2 files changed, 22 insertions, 1 deletions
diff --git a/cmd/gotosocial/action/server/server.go b/cmd/gotosocial/action/server/server.go index 2ab8bb7cf..a9896a81c 100644 --- a/cmd/gotosocial/action/server/server.go +++ b/cmd/gotosocial/action/server/server.go @@ -33,6 +33,7 @@ import ( apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util" "github.com/superseriousbusiness/gotosocial/internal/cleaner" "github.com/superseriousbusiness/gotosocial/internal/gtserror" + "github.com/superseriousbusiness/gotosocial/internal/metrics" "github.com/superseriousbusiness/gotosocial/internal/middleware" tlprocessor "github.com/superseriousbusiness/gotosocial/internal/processing/timeline" "github.com/superseriousbusiness/gotosocial/internal/timeline" @@ -81,6 +82,11 @@ var Start action.GTSAction = func(ctx context.Context) error { return fmt.Errorf("error initializing tracing: %w", err) } + // Initialize Metrics + if err := metrics.Initialize(); err != nil { + return fmt.Errorf("error initializing metrics: %w", err) + } + // Open connection to the database dbService, err := bundb.NewBunDBService(ctx, &state) if err != nil { @@ -213,13 +219,18 @@ var Start action.GTSAction = func(ctx context.Context) error { if err != nil { return fmt.Errorf("error creating router: %s", err) } - middlewares := []gin.HandlerFunc{ middleware.AddRequestID(config.GetRequestIDHeader()), // requestID middleware must run before tracing } + if config.GetTracingEnabled() { middlewares = append(middlewares, tracing.InstrumentGin()) } + + if config.GetMetricsEnabled() { + middlewares = append(middlewares, metrics.InstrumentGin()) + } + middlewares = append(middlewares, []gin.HandlerFunc{ // note: hooks adding ctx fields must be ABOVE // the logger, otherwise won't be accessible. diff --git a/cmd/gotosocial/action/testrig/testrig.go b/cmd/gotosocial/action/testrig/testrig.go index 452df805c..f08bec609 100644 --- a/cmd/gotosocial/action/testrig/testrig.go +++ b/cmd/gotosocial/action/testrig/testrig.go @@ -38,6 +38,7 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/gtserror" "github.com/superseriousbusiness/gotosocial/internal/language" "github.com/superseriousbusiness/gotosocial/internal/log" + "github.com/superseriousbusiness/gotosocial/internal/metrics" "github.com/superseriousbusiness/gotosocial/internal/middleware" "github.com/superseriousbusiness/gotosocial/internal/oidc" tlprocessor "github.com/superseriousbusiness/gotosocial/internal/processing/timeline" @@ -68,6 +69,10 @@ var Start action.GTSAction = func(ctx context.Context) error { return fmt.Errorf("error initializing tracing: %w", err) } + if err := metrics.Initialize(); err != nil { + return fmt.Errorf("error initializing metrics: %w", err) + } + // Initialize caches and database state.DB = testrig.NewTestDB(&state) @@ -142,6 +147,11 @@ var Start action.GTSAction = func(ctx context.Context) error { if config.GetTracingEnabled() { middlewares = append(middlewares, tracing.InstrumentGin()) } + + if config.GetMetricsEnabled() { + middlewares = append(middlewares, metrics.InstrumentGin()) + } + middlewares = append(middlewares, []gin.HandlerFunc{ middleware.Logger(config.GetLogClientIP()), middleware.UserAgent(), |