diff --git a/pkg/apiserver/builder/helper.go b/pkg/apiserver/builder/helper.go index f41626e2e2a..e42614687b1 100644 --- a/pkg/apiserver/builder/helper.go +++ b/pkg/apiserver/builder/helper.go @@ -19,6 +19,7 @@ import ( genericapiserver "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/util/openapi" k8sscheme "k8s.io/client-go/kubernetes/scheme" + k8stracing "k8s.io/component-base/tracing" "k8s.io/kube-openapi/pkg/common" "github.com/grafana/grafana/pkg/apiserver/endpoints/filters" @@ -75,6 +76,7 @@ func SetupConfig( handler := genericapiserver.DefaultBuildHandlerChain(requestHandler, c) handler = filters.WithAcceptHeader(handler) + handler = k8stracing.WithTracing(handler, serverConfig.TracerProvider, "grafana-apiserver") return handler } diff --git a/pkg/services/apiserver/standalone/options/tracing.go b/pkg/services/apiserver/standalone/options/tracing.go index a330c7aec26..3a532a67428 100644 --- a/pkg/services/apiserver/standalone/options/tracing.go +++ b/pkg/services/apiserver/standalone/options/tracing.go @@ -11,7 +11,10 @@ import ( "github.com/grafana/grafana/pkg/setting" "github.com/spf13/pflag" "go.opentelemetry.io/otel/attribute" + genericfeatures "k8s.io/apiserver/pkg/features" genericapiserver "k8s.io/apiserver/pkg/server" + utilfeature "k8s.io/apiserver/pkg/util/feature" + k8stracing "k8s.io/component-base/tracing" ) type TracingOptions struct { @@ -69,6 +72,12 @@ func (o *TracingOptions) Validate() []error { } func (o *TracingOptions) ApplyTo(config *genericapiserver.RecommendedConfig) error { + if err := utilfeature.DefaultMutableFeatureGate.SetFromMap(map[string]bool{ + string(genericfeatures.APIServerTracing): false, + }); err != nil { + return err + } + tracingCfg := tracing.NewEmptyTracingConfig() var err error @@ -103,6 +112,10 @@ func (o *TracingOptions) ApplyTo(config *genericapiserver.RecommendedConfig) err o.TracingService = ts config.TracerProvider = ts.GetTracerProvider() + if config.LoopbackClientConfig != nil { + config.LoopbackClientConfig.Wrap(k8stracing.WrapperFor(config.TracerProvider)) + } + config.AddPostStartHookOrDie("grafana-tracing-service", func(hookCtx genericapiserver.PostStartHookContext) error { ctx, cancel := context.WithCancel(context.Background())