Plugins: Add username to datasource plugin logging (#59893)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Signed-off-by: bergquist <carl.bergquist@gmail.com>
This commit is contained in:
Carl Bergquist 2022-12-07 13:15:42 +01:00 committed by GitHub
parent 1b676d0d49
commit a5ace56be8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 0 deletions

View File

@ -0,0 +1,28 @@
package log
import (
"context"
"time"
)
type requestStartTimeContextKey struct{}
var requestStartTime = requestStartTimeContextKey{}
// InitCounter creates a pointer on the context that can be incremented later
func InitstartTime(ctx context.Context, now time.Time) context.Context {
return context.WithValue(ctx, requestStartTime, now)
}
// TimeSinceStart returns time spend since the request started in grafana
func TimeSinceStart(ctx context.Context, now time.Time) time.Duration {
val := ctx.Value(requestStartTime)
if val != nil {
startTime, ok := val.(time.Time)
if ok {
return now.Sub(startTime)
}
}
return 0
}

View File

@ -35,6 +35,8 @@ func Logger(cfg *setting.Cfg) web.Middleware {
// we have to init the context with the counter here to update the request // we have to init the context with the counter here to update the request
r = r.WithContext(log.InitCounter(r.Context())) r = r.WithContext(log.InitCounter(r.Context()))
// put the start time on context so we can measure it later.
r = r.WithContext(log.InitstartTime(r.Context(), time.Now()))
rw := web.Rw(w, r) rw := web.Rw(w, r)
next.ServeHTTP(rw, r) next.ServeHTTP(rw, r)

View File

@ -51,6 +51,13 @@ func instrumentPluginRequest(ctx context.Context, cfg *config.Cfg, pluginCtx *ba
"duration", elapsed, "duration", elapsed,
"pluginId", pluginCtx.PluginID, "pluginId", pluginCtx.PluginID,
"endpoint", endpoint, "endpoint", endpoint,
"eventName", "grafana-data-egress",
"insight_logs", true,
"since_grafana_request_started", log.TimeSinceStart(ctx, time.Now()),
}
if pluginCtx.User != nil {
logParams = append(logParams, "uname", pluginCtx.User.Login)
} }
traceID := tracing.TraceIDFromContext(ctx, false) traceID := tracing.TraceIDFromContext(ctx, false)