From 23e3ac0ac99fad37e2d18b1f031d1cf0a42d2006 Mon Sep 17 00:00:00 2001 From: Will Browne Date: Tue, 21 Mar 2023 12:42:57 +0000 Subject: [PATCH] Plugins: Improve client instrumentation by adding cancelled status and logging errors (#65099) add cancelled status and log err --- .../instrumentation/instrumentation.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/pkg/plugins/backendplugin/instrumentation/instrumentation.go b/pkg/plugins/backendplugin/instrumentation/instrumentation.go index 277246937e2..87438e4bd6f 100644 --- a/pkg/plugins/backendplugin/instrumentation/instrumentation.go +++ b/pkg/plugins/backendplugin/instrumentation/instrumentation.go @@ -3,6 +3,7 @@ package instrumentation import ( "context" + "errors" "time" "github.com/grafana/grafana-plugin-sdk-go/backend" @@ -30,19 +31,27 @@ var ( }, []string{"plugin_id", "endpoint", "target"}) ) +const ( + statusOK = "ok" + statusError = "error" + statusCancelled = "cancelled" +) + var logger = plog.New("plugin.instrumentation") // instrumentPluginRequest instruments success rate and latency of `fn` func instrumentPluginRequest(ctx context.Context, cfg Cfg, pluginCtx *backend.PluginContext, endpoint string, fn func() error) error { - status := "ok" + status := statusOK start := time.Now() - timeBeforePluginRequest := log.TimeSinceStart(ctx, start) err := fn() if err != nil { - status = "error" + status = statusError + if errors.Is(err, context.Canceled) { + status = statusCancelled + } } elapsed := time.Since(start) @@ -73,6 +82,10 @@ func instrumentPluginRequest(ctx context.Context, cfg Cfg, pluginCtx *backend.Pl logParams = append(logParams, "dsUID", pluginCtx.DataSourceInstanceSettings.UID) } + if status == statusError { + logParams = append(logParams, "error", err) + } + logger.Info("Plugin Request Completed", logParams...) }