Prometheus: (Chore) Switch to sdk tracing from infra tracing (#76975)

pull/76644/head
Kyle Brandt 2 years ago committed by GitHub
parent 961ed14084
commit 59ef1558e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      pkg/services/pluginsintegration/plugins_integration_test.go
  2. 4
      pkg/tsdb/prometheus/healthcheck_test.go
  3. 4
      pkg/tsdb/prometheus/heuristics_test.go
  4. 9
      pkg/tsdb/prometheus/prometheus.go
  5. 2
      pkg/tsdb/prometheus/prometheus_test.go
  6. 8
      pkg/tsdb/prometheus/querydata/request.go
  7. 4
      pkg/tsdb/prometheus/querydata/request_test.go
  8. 4
      pkg/tsdb/prometheus/utils/utils.go

@ -87,7 +87,7 @@ func TestIntegrationPluginManager(t *testing.T) {
idb := influxdb.ProvideService(hcp) idb := influxdb.ProvideService(hcp)
lk := loki.ProvideService(hcp, features, tracer) lk := loki.ProvideService(hcp, features, tracer)
otsdb := opentsdb.ProvideService(hcp) otsdb := opentsdb.ProvideService(hcp)
pr := prometheus.ProvideService(hcp, cfg, features, tracer) pr := prometheus.ProvideService(hcp, cfg, features)
tmpo := tempo.ProvideService(hcp) tmpo := tempo.ProvideService(hcp)
td := testdatasource.ProvideService() td := testdatasource.ProvideService()
pg := postgres.ProvideService(cfg) pg := postgres.ProvideService(cfg)

@ -84,7 +84,7 @@ func Test_healthcheck(t *testing.T) {
t.Run("should do a successful health check", func(t *testing.T) { t.Run("should do a successful health check", func(t *testing.T) {
httpProvider := getMockProvider[*healthCheckSuccessRoundTripper]() httpProvider := getMockProvider[*healthCheckSuccessRoundTripper]()
s := &Service{ 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{ 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) { t.Run("should return an error for an unsuccessful health check", func(t *testing.T) {
httpProvider := getMockProvider[*healthCheckFailRoundTripper]() httpProvider := getMockProvider[*healthCheckFailRoundTripper]()
s := &Service{ 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{ req := &backend.CheckHealthRequest{

@ -52,7 +52,7 @@ func Test_GetHeuristics(t *testing.T) {
//httpProvider := getHeuristicsMockProvider(&rt) //httpProvider := getHeuristicsMockProvider(&rt)
httpProvider := newHeuristicsSDKProvider(rt) httpProvider := newHeuristicsSDKProvider(rt)
s := &Service{ 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{ req := HeuristicsRequest{
@ -72,7 +72,7 @@ func Test_GetHeuristics(t *testing.T) {
} }
httpProvider := newHeuristicsSDKProvider(rt) httpProvider := newHeuristicsSDKProvider(rt)
s := &Service{ 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{ req := HeuristicsRequest{

@ -15,7 +15,6 @@ import (
apiv1 "github.com/prometheus/client_golang/api/prometheus/v1" apiv1 "github.com/prometheus/client_golang/api/prometheus/v1"
"github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" "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/services/featuremgmt"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/prometheus/client" "github.com/grafana/grafana/pkg/tsdb/prometheus/client"
@ -36,17 +35,17 @@ type instance struct {
versionCache *cache.Cache 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 := backend.NewLoggerWith("logger", "tsdb.prometheus")
plog.Debug("Initializing") plog.Debug("Initializing")
return &Service{ return &Service{
im: datasource.NewInstanceManager(newInstanceSettings(httpClientProvider, cfg, features, tracer, plog)), im: datasource.NewInstanceManager(newInstanceSettings(httpClientProvider, cfg, features, plog)),
features: features, features: features,
logger: plog, 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) { return func(ctx context.Context, settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
// Creates a http roundTripper. // Creates a http roundTripper.
opts, err := client.CreateTransportOptions(ctx, settings, cfg, log) 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 // 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 { if err != nil {
return nil, err return nil, err
} }

@ -69,7 +69,7 @@ func TestService(t *testing.T) {
f := &fakeHTTPClientProvider{} f := &fakeHTTPClientProvider{}
httpProvider := getMockPromTestSDKProvider(f) httpProvider := getMockPromTestSDKProvider(f)
service := &Service{ 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{ req := &backend.CallResourceRequest{

@ -10,9 +10,10 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
"github.com/grafana/grafana-plugin-sdk-go/backend/log" "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/services/featuremgmt"
"github.com/grafana/grafana/pkg/tsdb/intervalv2" "github.com/grafana/grafana/pkg/tsdb/intervalv2"
"github.com/grafana/grafana/pkg/tsdb/prometheus/client" "github.com/grafana/grafana/pkg/tsdb/prometheus/client"
@ -36,7 +37,7 @@ type ExemplarEvent struct {
// client. // client.
type QueryData struct { type QueryData struct {
intervalCalculator intervalv2.Calculator intervalCalculator intervalv2.Calculator
tracer tracing.Tracer tracer trace.Tracer
client *client.Client client *client.Client
log log.Logger log log.Logger
ID int64 ID int64
@ -49,7 +50,6 @@ type QueryData struct {
func New( func New(
httpClient *http.Client, httpClient *http.Client,
features featuremgmt.FeatureToggles, features featuremgmt.FeatureToggles,
tracer tracing.Tracer,
settings backend.DataSourceInstanceSettings, settings backend.DataSourceInstanceSettings,
plog log.Logger, plog log.Logger,
) (*QueryData, error) { ) (*QueryData, error) {
@ -75,7 +75,7 @@ func New(
return &QueryData{ return &QueryData{
intervalCalculator: intervalv2.NewCalculator(), intervalCalculator: intervalv2.NewCalculator(),
tracer: tracer, tracer: tracing.DefaultTracer(),
log: plog, log: plog,
client: promClient, client: promClient,
TimeInterval: timeInterval, TimeInterval: timeInterval,

@ -23,7 +23,6 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" "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/backend/log"
"github.com/grafana/grafana-plugin-sdk-go/data" "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/setting"
"github.com/grafana/grafana/pkg/tsdb/prometheus/client" "github.com/grafana/grafana/pkg/tsdb/prometheus/client"
"github.com/grafana/grafana/pkg/tsdb/prometheus/models" "github.com/grafana/grafana/pkg/tsdb/prometheus/models"
@ -427,7 +426,6 @@ type testContext struct {
} }
func setup() (*testContext, error) { func setup() (*testContext, error) {
tracer := tracing.InitializeTracerForTest()
httpProvider := &fakeHttpClientProvider{ httpProvider := &fakeHttpClientProvider{
opts: httpclient.Options{ opts: httpclient.Options{
Timeouts: &httpclient.DefaultTimeoutOptions, Timeouts: &httpclient.DefaultTimeoutOptions,
@ -454,7 +452,7 @@ func setup() (*testContext, error) {
return nil, err return nil, err
} }
queryData, _ := querydata.New(httpClient, features, tracer, settings, log.New()) queryData, _ := querydata.New(httpClient, features, settings, log.New())
return &testContext{ return &testContext{
httpProvider: httpProvider, httpProvider: httpProvider,

@ -8,8 +8,6 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace" "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 // 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 // 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 { if tracer == nil {
return ctx, func() {} return ctx, func() {}
} }

Loading…
Cancel
Save