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
This commit is contained in:
owensmallwood 2024-08-15 11:13:36 -06:00 committed by GitHub
parent d8ae905758
commit 28f2a4078d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 14 additions and 15 deletions

View File

@ -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)
}

View File

@ -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 := &sectionGetter{
DynamicSection: cfg.SectionWithEnvOverrides("resource_api"),

View File

@ -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,
}

View File

@ -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)