From 59ef1558e826db23284d85e9c15d0462a6a3f60c Mon Sep 17 00:00:00 2001 From: Kyle Brandt Date: Mon, 23 Oct 2023 13:11:12 -0400 Subject: [PATCH] Prometheus: (Chore) Switch to sdk tracing from infra tracing (#76975) --- .../pluginsintegration/plugins_integration_test.go | 2 +- pkg/tsdb/prometheus/healthcheck_test.go | 4 ++-- pkg/tsdb/prometheus/heuristics_test.go | 4 ++-- pkg/tsdb/prometheus/prometheus.go | 9 ++++----- pkg/tsdb/prometheus/prometheus_test.go | 2 +- pkg/tsdb/prometheus/querydata/request.go | 8 ++++---- pkg/tsdb/prometheus/querydata/request_test.go | 4 +--- pkg/tsdb/prometheus/utils/utils.go | 4 +--- 8 files changed, 16 insertions(+), 21 deletions(-) diff --git a/pkg/services/pluginsintegration/plugins_integration_test.go b/pkg/services/pluginsintegration/plugins_integration_test.go index 91d7c6356c0..c0d75900477 100644 --- a/pkg/services/pluginsintegration/plugins_integration_test.go +++ b/pkg/services/pluginsintegration/plugins_integration_test.go @@ -87,7 +87,7 @@ func TestIntegrationPluginManager(t *testing.T) { idb := influxdb.ProvideService(hcp) lk := loki.ProvideService(hcp, features, tracer) otsdb := opentsdb.ProvideService(hcp) - pr := prometheus.ProvideService(hcp, cfg, features, tracer) + pr := prometheus.ProvideService(hcp, cfg, features) tmpo := tempo.ProvideService(hcp) td := testdatasource.ProvideService() pg := postgres.ProvideService(cfg) diff --git a/pkg/tsdb/prometheus/healthcheck_test.go b/pkg/tsdb/prometheus/healthcheck_test.go index 9a17cda32f8..eaf38c317e7 100644 --- a/pkg/tsdb/prometheus/healthcheck_test.go +++ b/pkg/tsdb/prometheus/healthcheck_test.go @@ -84,7 +84,7 @@ func Test_healthcheck(t *testing.T) { t.Run("should do a successful health check", func(t *testing.T) { httpProvider := getMockProvider[*healthCheckSuccessRoundTripper]() s := &Service{ - im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, nil, backend.NewLoggerWith("logger", "test"))), + im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, backend.NewLoggerWith("logger", "test"))), } req := &backend.CheckHealthRequest{ @@ -100,7 +100,7 @@ func Test_healthcheck(t *testing.T) { t.Run("should return an error for an unsuccessful health check", func(t *testing.T) { httpProvider := getMockProvider[*healthCheckFailRoundTripper]() s := &Service{ - im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, nil, backend.NewLoggerWith("logger", "test"))), + im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, backend.NewLoggerWith("logger", "test"))), } req := &backend.CheckHealthRequest{ diff --git a/pkg/tsdb/prometheus/heuristics_test.go b/pkg/tsdb/prometheus/heuristics_test.go index 26ae2f630d5..70de2738dfc 100644 --- a/pkg/tsdb/prometheus/heuristics_test.go +++ b/pkg/tsdb/prometheus/heuristics_test.go @@ -52,7 +52,7 @@ func Test_GetHeuristics(t *testing.T) { //httpProvider := getHeuristicsMockProvider(&rt) httpProvider := newHeuristicsSDKProvider(rt) s := &Service{ - im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, nil, backend.NewLoggerWith("logger", "test"))), + im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, backend.NewLoggerWith("logger", "test"))), } req := HeuristicsRequest{ @@ -72,7 +72,7 @@ func Test_GetHeuristics(t *testing.T) { } httpProvider := newHeuristicsSDKProvider(rt) s := &Service{ - im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, nil, backend.NewLoggerWith("logger", "test"))), + im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, backend.NewLoggerWith("logger", "test"))), } req := HeuristicsRequest{ diff --git a/pkg/tsdb/prometheus/prometheus.go b/pkg/tsdb/prometheus/prometheus.go index c5e42ea05b8..9c1a0db794a 100644 --- a/pkg/tsdb/prometheus/prometheus.go +++ b/pkg/tsdb/prometheus/prometheus.go @@ -15,7 +15,6 @@ import ( apiv1 "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" - "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/tsdb/prometheus/client" @@ -36,17 +35,17 @@ type instance struct { versionCache *cache.Cache } -func ProvideService(httpClientProvider *httpclient.Provider, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer tracing.Tracer) *Service { +func ProvideService(httpClientProvider *httpclient.Provider, cfg *setting.Cfg, features featuremgmt.FeatureToggles) *Service { plog := backend.NewLoggerWith("logger", "tsdb.prometheus") plog.Debug("Initializing") return &Service{ - im: datasource.NewInstanceManager(newInstanceSettings(httpClientProvider, cfg, features, tracer, plog)), + im: datasource.NewInstanceManager(newInstanceSettings(httpClientProvider, cfg, features, plog)), features: features, logger: plog, } } -func newInstanceSettings(httpClientProvider *httpclient.Provider, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer tracing.Tracer, log log.Logger) datasource.InstanceFactoryFunc { +func newInstanceSettings(httpClientProvider *httpclient.Provider, cfg *setting.Cfg, features featuremgmt.FeatureToggles, log log.Logger) datasource.InstanceFactoryFunc { return func(ctx context.Context, settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) { // Creates a http roundTripper. opts, err := client.CreateTransportOptions(ctx, settings, cfg, log) @@ -59,7 +58,7 @@ func newInstanceSettings(httpClientProvider *httpclient.Provider, cfg *setting.C } // New version using custom client and better response parsing - qd, err := querydata.New(httpClient, features, tracer, settings, log) + qd, err := querydata.New(httpClient, features, settings, log) if err != nil { return nil, err } diff --git a/pkg/tsdb/prometheus/prometheus_test.go b/pkg/tsdb/prometheus/prometheus_test.go index 1b476cc3b0d..735ed25e38c 100644 --- a/pkg/tsdb/prometheus/prometheus_test.go +++ b/pkg/tsdb/prometheus/prometheus_test.go @@ -69,7 +69,7 @@ func TestService(t *testing.T) { f := &fakeHTTPClientProvider{} httpProvider := getMockPromTestSDKProvider(f) service := &Service{ - im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, nil, backend.NewLoggerWith("logger", "test"))), + im: datasource.NewInstanceManager(newInstanceSettings(httpProvider, &setting.Cfg{}, &featuremgmt.FeatureManager{}, backend.NewLoggerWith("logger", "test"))), } req := &backend.CallResourceRequest{ diff --git a/pkg/tsdb/prometheus/querydata/request.go b/pkg/tsdb/prometheus/querydata/request.go index cf41e60cac6..5992e5ded63 100644 --- a/pkg/tsdb/prometheus/querydata/request.go +++ b/pkg/tsdb/prometheus/querydata/request.go @@ -10,9 +10,10 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/data" "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/trace" "github.com/grafana/grafana-plugin-sdk-go/backend/log" - "github.com/grafana/grafana/pkg/infra/tracing" + "github.com/grafana/grafana-plugin-sdk-go/backend/tracing" "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/tsdb/intervalv2" "github.com/grafana/grafana/pkg/tsdb/prometheus/client" @@ -36,7 +37,7 @@ type ExemplarEvent struct { // client. type QueryData struct { intervalCalculator intervalv2.Calculator - tracer tracing.Tracer + tracer trace.Tracer client *client.Client log log.Logger ID int64 @@ -49,7 +50,6 @@ type QueryData struct { func New( httpClient *http.Client, features featuremgmt.FeatureToggles, - tracer tracing.Tracer, settings backend.DataSourceInstanceSettings, plog log.Logger, ) (*QueryData, error) { @@ -75,7 +75,7 @@ func New( return &QueryData{ intervalCalculator: intervalv2.NewCalculator(), - tracer: tracer, + tracer: tracing.DefaultTracer(), log: plog, client: promClient, TimeInterval: timeInterval, diff --git a/pkg/tsdb/prometheus/querydata/request_test.go b/pkg/tsdb/prometheus/querydata/request_test.go index a66b42e33c6..82a701db46a 100644 --- a/pkg/tsdb/prometheus/querydata/request_test.go +++ b/pkg/tsdb/prometheus/querydata/request_test.go @@ -23,7 +23,6 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" "github.com/grafana/grafana-plugin-sdk-go/backend/log" "github.com/grafana/grafana-plugin-sdk-go/data" - "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/tsdb/prometheus/client" "github.com/grafana/grafana/pkg/tsdb/prometheus/models" @@ -427,7 +426,6 @@ type testContext struct { } func setup() (*testContext, error) { - tracer := tracing.InitializeTracerForTest() httpProvider := &fakeHttpClientProvider{ opts: httpclient.Options{ Timeouts: &httpclient.DefaultTimeoutOptions, @@ -454,7 +452,7 @@ func setup() (*testContext, error) { return nil, err } - queryData, _ := querydata.New(httpClient, features, tracer, settings, log.New()) + queryData, _ := querydata.New(httpClient, features, settings, log.New()) return &testContext{ httpProvider: httpProvider, diff --git a/pkg/tsdb/prometheus/utils/utils.go b/pkg/tsdb/prometheus/utils/utils.go index 366dc1ba192..68894fc7d7b 100644 --- a/pkg/tsdb/prometheus/utils/utils.go +++ b/pkg/tsdb/prometheus/utils/utils.go @@ -8,8 +8,6 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" - - "github.com/grafana/grafana/pkg/infra/tracing" ) // GetJsonData just gets the json in easier to work with type. It's used on multiple places which isn't super effective @@ -24,7 +22,7 @@ func GetJsonData(settings backend.DataSourceInstanceSettings) (map[string]any, e } // StartTrace setups a trace but does not panic if tracer is nil which helps with testing -func StartTrace(ctx context.Context, tracer tracing.Tracer, name string, attributes ...attribute.KeyValue) (context.Context, func()) { +func StartTrace(ctx context.Context, tracer trace.Tracer, name string, attributes ...attribute.KeyValue) (context.Context, func()) { if tracer == nil { return ctx, func() {} }