From 7f7ab324449a0927551ab9df025cd008d0a5e64a Mon Sep 17 00:00:00 2001 From: Sven Grossmann Date: Fri, 16 Feb 2024 16:28:46 +0100 Subject: [PATCH] Elasticsearch: Add error source to logs (#82901) --- pkg/tsdb/elasticsearch/client/client.go | 5 +++++ pkg/tsdb/elasticsearch/elasticsearch.go | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/pkg/tsdb/elasticsearch/client/client.go b/pkg/tsdb/elasticsearch/client/client.go index 577a40f2756..ad80f1caede 100644 --- a/pkg/tsdb/elasticsearch/client/client.go +++ b/pkg/tsdb/elasticsearch/client/client.go @@ -18,6 +18,7 @@ import ( "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" + exp "github.com/grafana/grafana-plugin-sdk-go/experimental/errorsource" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/infra/tracing" ) @@ -191,6 +192,10 @@ func (c *baseClientImpl) ExecuteMultisearch(r *MultiSearchRequest) (*MultiSearch status = "cancelled" } lp := []any{"error", err, "status", status, "duration", time.Since(start), "stage", StageDatabaseRequest} + sourceErr := exp.Error{} + if errors.As(err, &sourceErr) { + lp = append(lp, "statusSource", sourceErr.Source()) + } if clientRes != nil { lp = append(lp, "statusCode", clientRes.StatusCode) } diff --git a/pkg/tsdb/elasticsearch/elasticsearch.go b/pkg/tsdb/elasticsearch/elasticsearch.go index 7a064154876..b15b725cd3f 100644 --- a/pkg/tsdb/elasticsearch/elasticsearch.go +++ b/pkg/tsdb/elasticsearch/elasticsearch.go @@ -18,6 +18,7 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend/datasource" sdkhttpclient "github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" "github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt" + exp "github.com/grafana/grafana-plugin-sdk-go/experimental/errorsource" exphttpclient "github.com/grafana/grafana-plugin-sdk-go/experimental/errorsource/httpclient" "github.com/grafana/grafana/pkg/infra/httpclient" @@ -225,6 +226,10 @@ func (s *Service) CallResource(ctx context.Context, req *backend.CallResourceReq status = "cancelled" } lp := []any{"error", err, "status", status, "duration", time.Since(start), "stage", es.StageDatabaseRequest, "resourcePath", req.Path} + sourceErr := exp.Error{} + if errors.As(err, &sourceErr) { + lp = append(lp, "statusSource", sourceErr.Source()) + } if response != nil { lp = append(lp, "statusCode", response.StatusCode) }