From 2d0350e786b128af2d135964e565d8a832e0c7ff Mon Sep 17 00:00:00 2001 From: Kristin Laemmert Date: Wed, 21 Aug 2024 13:26:34 -0400 Subject: [PATCH] add spans to search v2 (#92223) add tracing spans to search v2 service --- pkg/services/searchV2/http.go | 9 +++++---- pkg/services/searchV2/service.go | 10 ++++++++++ pkg/services/searchV2/usage.go | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/pkg/services/searchV2/http.go b/pkg/services/searchV2/http.go index 0b58e134695..2d82b50c55a 100644 --- a/pkg/services/searchV2/http.go +++ b/pkg/services/searchV2/http.go @@ -6,10 +6,9 @@ import ( "io" "net/http" - "github.com/prometheus/client_golang/prometheus" - "github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/data" + "github.com/prometheus/client_golang/prometheus" "github.com/grafana/grafana/pkg/api/response" "github.com/grafana/grafana/pkg/api/routing" @@ -34,7 +33,9 @@ func (s *searchHTTPService) RegisterHTTPRoutes(storageRoute routing.RouteRegiste } func (s *searchHTTPService) doQuery(c *contextmodel.ReqContext) response.Response { - searchReadinessCheckResp := s.search.IsReady(c.Req.Context(), c.SignedInUser.GetOrgID()) + ctx, span := tracer.Start(c.Req.Context(), "searchV2.doQuery") + defer span.End() + searchReadinessCheckResp := s.search.IsReady(ctx, c.SignedInUser.GetOrgID()) if !searchReadinessCheckResp.IsReady { dashboardSearchNotServedRequestsCounter.With(prometheus.Labels{ "reason": searchReadinessCheckResp.Reason, @@ -59,7 +60,7 @@ func (s *searchHTTPService) doQuery(c *contextmodel.ReqContext) response.Respons return response.Error(http.StatusBadRequest, "error parsing body", err) } - resp := s.search.doDashboardQuery(c.Req.Context(), c.SignedInUser, c.SignedInUser.GetOrgID(), *query) + resp := s.search.doDashboardQuery(ctx, c.SignedInUser, c.SignedInUser.GetOrgID(), *query) if resp.Error != nil { return response.Error(http.StatusInternalServerError, "error handling search request", resp.Error) diff --git a/pkg/services/searchV2/service.go b/pkg/services/searchV2/service.go index b0ca3096dfc..d886ec649a0 100644 --- a/pkg/services/searchV2/service.go +++ b/pkg/services/searchV2/service.go @@ -9,6 +9,7 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" + "go.opentelemetry.io/otel" "github.com/grafana/grafana/pkg/infra/db" "github.com/grafana/grafana/pkg/infra/log" @@ -58,6 +59,7 @@ var ( Namespace: namespace, Subsystem: subsystem, }) + tracer = otel.Tracer("github.com/grafana/grafana/pkg/services/searchv2") ) type StandardSearchService struct { @@ -120,6 +122,8 @@ func (s *StandardSearchService) IsDisabled() bool { } func (s *StandardSearchService) Run(ctx context.Context) error { + ctx, span := tracer.Start(ctx, "searchv2.Run") + defer span.End() orgQuery := &org.SearchOrgsQuery{} result, err := s.orgService.Search(ctx, orgQuery) if err != nil { @@ -146,6 +150,8 @@ func (s *StandardSearchService) RegisterDashboardIndexExtender(ext DashboardInde } func (s *StandardSearchService) getUser(ctx context.Context, backendUser *backend.User, orgId int64) (*user.SignedInUser, error) { + ctx, span := tracer.Start(ctx, "searchv2.getUser") + defer span.End() // TODO: get user & user's permissions from the request context var usr *user.SignedInUser @@ -204,6 +210,8 @@ func (s *StandardSearchService) getUser(ctx context.Context, backendUser *backen } func (s *StandardSearchService) DoDashboardQuery(ctx context.Context, user *backend.User, orgID int64, q DashboardQuery) *backend.DataResponse { + ctx, span := tracer.Start(ctx, "searchv2.DoDashboardQuery") + defer span.End() start := time.Now() signedInUser, err := s.getUser(ctx, user, orgID) @@ -232,6 +240,8 @@ func (s *StandardSearchService) DoDashboardQuery(ctx context.Context, user *back } func (s *StandardSearchService) doDashboardQuery(ctx context.Context, signedInUser *user.SignedInUser, orgID int64, q DashboardQuery) *backend.DataResponse { + ctx, span := tracer.Start(ctx, "searchv2.doDashboardQuery") + defer span.End() rsp := &backend.DataResponse{} filter, err := s.auth.GetDashboardReadFilter(ctx, orgID, signedInUser) diff --git a/pkg/services/searchV2/usage.go b/pkg/services/searchV2/usage.go index d3cc1de923d..3bbc4a7032b 100644 --- a/pkg/services/searchV2/usage.go +++ b/pkg/services/searchV2/usage.go @@ -45,7 +45,7 @@ var ( ) func updateUsageStats(ctx context.Context, reader *bluge.Reader, logger log.Logger, tracer tracing.Tracer) { - ctx, span := tracer.Start(ctx, "searchV2 updateUsageStats") + ctx, span := tracer.Start(ctx, "searchV2.updateUsageStats") defer span.End() req := bluge.NewAllMatches(bluge.NewTermQuery("panel").SetField(documentFieldKind)) for _, usage := range panelUsage {