From c4fefd8da962deadd696d81ee13798b55a928b8d Mon Sep 17 00:00:00 2001 From: Giuseppe Guerra Date: Tue, 17 Oct 2023 11:09:01 +0200 Subject: [PATCH] Plugins: Add status_source label to plugin request logs (#76676) --- .../clientmiddleware/logger_middleware.go | 18 ++++++++++++------ .../pluginsintegration/pluginsintegration.go | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/pkg/services/pluginsintegration/clientmiddleware/logger_middleware.go b/pkg/services/pluginsintegration/clientmiddleware/logger_middleware.go index 8230997e236..45e3eec7e3e 100644 --- a/pkg/services/pluginsintegration/clientmiddleware/logger_middleware.go +++ b/pkg/services/pluginsintegration/clientmiddleware/logger_middleware.go @@ -10,27 +10,31 @@ import ( "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/plugins" plog "github.com/grafana/grafana/pkg/plugins/log" + "github.com/grafana/grafana/pkg/plugins/pluginrequestmeta" + "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/setting" ) // NewLoggerMiddleware creates a new plugins.ClientMiddleware that will // log requests. -func NewLoggerMiddleware(cfg *setting.Cfg, logger plog.Logger) plugins.ClientMiddleware { +func NewLoggerMiddleware(cfg *setting.Cfg, logger plog.Logger, features featuremgmt.FeatureToggles) plugins.ClientMiddleware { return plugins.ClientMiddlewareFunc(func(next plugins.Client) plugins.Client { if !cfg.PluginLogBackendRequests { return next } return &LoggerMiddleware{ - next: next, - logger: logger, + next: next, + logger: logger, + features: features, } }) } type LoggerMiddleware struct { - next plugins.Client - logger plog.Logger + next plugins.Client + logger plog.Logger + features featuremgmt.FeatureToggles } func (m *LoggerMiddleware) logRequest(ctx context.Context, fn func(ctx context.Context) error) error { @@ -45,7 +49,6 @@ func (m *LoggerMiddleware) logRequest(ctx context.Context, fn func(ctx context.C status = statusCancelled } } - logParams := []any{ "status", status, "duration", time.Since(start), @@ -55,6 +58,9 @@ func (m *LoggerMiddleware) logRequest(ctx context.Context, fn func(ctx context.C if status == statusError { logParams = append(logParams, "error", err) } + if m.features.IsEnabled(featuremgmt.FlagPluginsInstrumentationStatusSource) { + logParams = append(logParams, "status_source", pluginrequestmeta.StatusSourceFromContext(ctx)) + } m.logger.FromContext(ctx).Info("Plugin Request Completed", logParams...) return err } diff --git a/pkg/services/pluginsintegration/pluginsintegration.go b/pkg/services/pluginsintegration/pluginsintegration.go index 9b7bcbb9af9..6d3db3a8f44 100644 --- a/pkg/services/pluginsintegration/pluginsintegration.go +++ b/pkg/services/pluginsintegration/pluginsintegration.go @@ -158,7 +158,7 @@ func CreateMiddlewares(cfg *setting.Cfg, oAuthTokenService oauthtoken.OAuthToken clientmiddleware.NewTracingMiddleware(tracer), clientmiddleware.NewMetricsMiddleware(promRegisterer, registry, features), clientmiddleware.NewContextualLoggerMiddleware(), - clientmiddleware.NewLoggerMiddleware(cfg, log.New("plugin.instrumentation")), + clientmiddleware.NewLoggerMiddleware(cfg, log.New("plugin.instrumentation"), features), clientmiddleware.NewTracingHeaderMiddleware(), clientmiddleware.NewClearAuthHeadersMiddleware(), clientmiddleware.NewOAuthTokenMiddleware(oAuthTokenService),