diff --git a/pkg/infra/tracing/tracing.go b/pkg/infra/tracing/tracing.go index 3ad2551cce5..73140e1c7cb 100644 --- a/pkg/infra/tracing/tracing.go +++ b/pkg/infra/tracing/tracing.go @@ -25,6 +25,7 @@ import ( trace "go.opentelemetry.io/otel/trace" "github.com/go-kit/log/level" + "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/setting" ) @@ -110,6 +111,10 @@ func ParseSettings(cfg *setting.Cfg) (*TracingService, error) { return ots, err } +func (ots *TracingService) GetTracerProvider() tracerProvider { + return ots.tracerProvider +} + func TraceIDFromContext(ctx context.Context, requireSampled bool) string { spanCtx := trace.SpanContextFromContext(ctx) if !spanCtx.HasTraceID() || !spanCtx.IsValid() || (requireSampled && !spanCtx.IsSampled()) { diff --git a/pkg/services/grafana-apiserver/service.go b/pkg/services/grafana-apiserver/service.go index 6f8010e75ac..932b936e01d 100644 --- a/pkg/services/grafana-apiserver/service.go +++ b/pkg/services/grafana-apiserver/service.go @@ -28,6 +28,7 @@ import ( "github.com/grafana/grafana/pkg/api/routing" "github.com/grafana/grafana/pkg/infra/appcontext" + "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/middleware" "github.com/grafana/grafana/pkg/modules" "github.com/grafana/grafana/pkg/registry" @@ -89,6 +90,8 @@ type service struct { handler web.Handler builders []APIGroupBuilder + tracing *tracing.TracingService + authorizer authorizer.Authorizer } @@ -96,12 +99,14 @@ func ProvideService( cfg *setting.Cfg, rr routing.RouteRegister, authz authorizer.Authorizer, + tracing *tracing.TracingService, ) (*service, error) { s := &service{ config: newConfig(cfg), rr: rr, stopCh: make(chan struct{}), builders: []APIGroupBuilder{}, + tracing: tracing, authorizer: authz, } @@ -258,6 +263,8 @@ func (s *service) start(ctx context.Context) error { return genericapiserver.DefaultBuildHandlerChain(requestHandler, c) } + serverConfig.TracerProvider = s.tracing.GetTracerProvider() + // Create the server server, err := serverConfig.Complete().New("grafana-apiserver", genericapiserver.NewEmptyDelegate()) if err != nil {