Plugins: Add status_source label to plugin request logs (#76676)

This commit is contained in:
Giuseppe Guerra 2023-10-17 11:09:01 +02:00 committed by GitHub
parent e1838f92cf
commit c4fefd8da9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 7 deletions

View File

@ -10,12 +10,14 @@ 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
@ -24,6 +26,7 @@ func NewLoggerMiddleware(cfg *setting.Cfg, logger plog.Logger) plugins.ClientMid
return &LoggerMiddleware{
next: next,
logger: logger,
features: features,
}
})
}
@ -31,6 +34,7 @@ func NewLoggerMiddleware(cfg *setting.Cfg, logger plog.Logger) plugins.ClientMid
type LoggerMiddleware struct {
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
}

View File

@ -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),