From 28f2a4078daa815ef2542c20df4adb8e8089fc1f Mon Sep 17 00:00:00 2001 From: owensmallwood Date: Thu, 15 Aug 2024 11:13:36 -0600 Subject: [PATCH] Unified Storage: Records grafana database metrics (#91932) * records grafana database metrics for unified storage * update type to tracing.Tracer * use nil for tracer in tests --- pkg/storage/unified/sql/db/dbimpl/dbEngine.go | 13 ++++++++----- pkg/storage/unified/sql/db/dbimpl/dbimpl.go | 6 +++--- pkg/storage/unified/sql/server.go | 5 ++--- pkg/storage/unified/sql/test/integration_test.go | 5 +---- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/pkg/storage/unified/sql/db/dbimpl/dbEngine.go b/pkg/storage/unified/sql/db/dbimpl/dbEngine.go index 3ec1aeba2ee..1a37751bcc9 100644 --- a/pkg/storage/unified/sql/db/dbimpl/dbEngine.go +++ b/pkg/storage/unified/sql/db/dbimpl/dbEngine.go @@ -7,12 +7,13 @@ import ( "time" "github.com/go-sql-driver/mysql" + "github.com/grafana/grafana/pkg/infra/tracing" + "github.com/grafana/grafana/pkg/services/sqlstore" "github.com/grafana/grafana/pkg/storage/unified/sql/db" - "go.opentelemetry.io/otel/trace" "xorm.io/xorm" ) -func getEngineMySQL(getter *sectionGetter, _ trace.Tracer) (*xorm.Engine, error) { +func getEngineMySQL(getter *sectionGetter, tracer tracing.Tracer) (*xorm.Engine, error) { config := mysql.NewConfig() config.User = getter.String("db_user") config.Passwd = getter.String("db_pass") @@ -50,7 +51,8 @@ func getEngineMySQL(getter *sectionGetter, _ trace.Tracer) (*xorm.Engine, error) } // FIXME: get rid of xorm - engine, err := xorm.NewEngine(db.DriverMySQL, config.FormatDSN()) + driverName := sqlstore.WrapDatabaseDriverWithHooks(db.DriverMySQL, tracer) + engine, err := xorm.NewEngine(driverName, config.FormatDSN()) if err != nil { return nil, fmt.Errorf("open database: %w", err) } @@ -62,7 +64,7 @@ func getEngineMySQL(getter *sectionGetter, _ trace.Tracer) (*xorm.Engine, error) return engine, nil } -func getEnginePostgres(getter *sectionGetter, _ trace.Tracer) (*xorm.Engine, error) { +func getEnginePostgres(getter *sectionGetter, tracer tracing.Tracer) (*xorm.Engine, error) { dsnKV := map[string]string{ "user": getter.String("db_user"), "password": getter.String("db_pass"), @@ -104,7 +106,8 @@ func getEnginePostgres(getter *sectionGetter, _ trace.Tracer) (*xorm.Engine, err } // FIXME: get rid of xorm - engine, err := xorm.NewEngine(db.DriverPostgres, dsn) + driverName := sqlstore.WrapDatabaseDriverWithHooks(db.DriverPostgres, tracer) + engine, err := xorm.NewEngine(driverName, dsn) if err != nil { return nil, fmt.Errorf("open database: %w", err) } diff --git a/pkg/storage/unified/sql/db/dbimpl/dbimpl.go b/pkg/storage/unified/sql/db/dbimpl/dbimpl.go index 02583d269dc..af533ef0180 100644 --- a/pkg/storage/unified/sql/db/dbimpl/dbimpl.go +++ b/pkg/storage/unified/sql/db/dbimpl/dbimpl.go @@ -6,8 +6,8 @@ import ( "sync" "github.com/dlmiddlecote/sqlstats" + "github.com/grafana/grafana/pkg/infra/tracing" "github.com/prometheus/client_golang/prometheus" - "go.opentelemetry.io/otel/trace" "xorm.io/xorm" infraDB "github.com/grafana/grafana/pkg/infra/db" @@ -23,7 +23,7 @@ const ( dbTypePostgres = "postgres" ) -func ProvideResourceDB(grafanaDB infraDB.DB, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer trace.Tracer) (db.DBProvider, error) { +func ProvideResourceDB(grafanaDB infraDB.DB, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer tracing.Tracer) (db.DBProvider, error) { p, err := newResourceDBProvider(grafanaDB, cfg, features, tracer) if err != nil { return nil, fmt.Errorf("provide Resource DB: %w", err) @@ -54,7 +54,7 @@ type resourceDBProvider struct { logQueries bool } -func newResourceDBProvider(grafanaDB infraDB.DB, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer trace.Tracer) (p *resourceDBProvider, err error) { +func newResourceDBProvider(grafanaDB infraDB.DB, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer tracing.Tracer) (p *resourceDBProvider, err error) { // TODO: This should be renamed resource_api getter := §ionGetter{ DynamicSection: cfg.SectionWithEnvOverrides("resource_api"), diff --git a/pkg/storage/unified/sql/server.go b/pkg/storage/unified/sql/server.go index 844c218a386..49a1c91a975 100644 --- a/pkg/storage/unified/sql/server.go +++ b/pkg/storage/unified/sql/server.go @@ -1,9 +1,8 @@ package sql import ( - "go.opentelemetry.io/otel/trace" - infraDB "github.com/grafana/grafana/pkg/infra/db" + "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/storage/unified/resource" @@ -11,7 +10,7 @@ import ( ) // Creates a ResourceServer -func ProvideResourceServer(db infraDB.DB, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer trace.Tracer) (resource.ResourceServer, error) { +func ProvideResourceServer(db infraDB.DB, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer tracing.Tracer) (resource.ResourceServer, error) { opts := resource.ResourceServerOptions{ Tracer: tracer, } diff --git a/pkg/storage/unified/sql/test/integration_test.go b/pkg/storage/unified/sql/test/integration_test.go index f519480d061..d3b6ed37303 100644 --- a/pkg/storage/unified/sql/test/integration_test.go +++ b/pkg/storage/unified/sql/test/integration_test.go @@ -6,7 +6,6 @@ import ( "time" "github.com/stretchr/testify/require" - "go.opentelemetry.io/otel/trace/noop" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" @@ -33,15 +32,13 @@ func newServer(t *testing.T) (sql.Backend, resource.ResourceServer) { dbstore := infraDB.InitTestDB(t) cfg := setting.NewCfg() features := featuremgmt.WithFeatures(featuremgmt.FlagUnifiedStorage) - tr := noop.NewTracerProvider().Tracer("integrationtests") - eDB, err := dbimpl.ProvideResourceDB(dbstore, cfg, features, tr) + eDB, err := dbimpl.ProvideResourceDB(dbstore, cfg, features, nil) require.NoError(t, err) require.NotNil(t, eDB) ret, err := sql.NewBackend(sql.BackendOptions{ DBProvider: eDB, - Tracer: tr, }) require.NoError(t, err) require.NotNil(t, ret)