mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
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:
parent
d8ae905758
commit
28f2a4078d
@ -7,12 +7,13 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/go-sql-driver/mysql"
|
"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"
|
"github.com/grafana/grafana/pkg/storage/unified/sql/db"
|
||||||
"go.opentelemetry.io/otel/trace"
|
|
||||||
"xorm.io/xorm"
|
"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 := mysql.NewConfig()
|
||||||
config.User = getter.String("db_user")
|
config.User = getter.String("db_user")
|
||||||
config.Passwd = getter.String("db_pass")
|
config.Passwd = getter.String("db_pass")
|
||||||
@ -50,7 +51,8 @@ func getEngineMySQL(getter *sectionGetter, _ trace.Tracer) (*xorm.Engine, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: get rid of xorm
|
// 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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("open database: %w", err)
|
return nil, fmt.Errorf("open database: %w", err)
|
||||||
}
|
}
|
||||||
@ -62,7 +64,7 @@ func getEngineMySQL(getter *sectionGetter, _ trace.Tracer) (*xorm.Engine, error)
|
|||||||
return engine, nil
|
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{
|
dsnKV := map[string]string{
|
||||||
"user": getter.String("db_user"),
|
"user": getter.String("db_user"),
|
||||||
"password": getter.String("db_pass"),
|
"password": getter.String("db_pass"),
|
||||||
@ -104,7 +106,8 @@ func getEnginePostgres(getter *sectionGetter, _ trace.Tracer) (*xorm.Engine, err
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: get rid of xorm
|
// 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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("open database: %w", err)
|
return nil, fmt.Errorf("open database: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,8 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/dlmiddlecote/sqlstats"
|
"github.com/dlmiddlecote/sqlstats"
|
||||||
|
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
"go.opentelemetry.io/otel/trace"
|
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
|
|
||||||
infraDB "github.com/grafana/grafana/pkg/infra/db"
|
infraDB "github.com/grafana/grafana/pkg/infra/db"
|
||||||
@ -23,7 +23,7 @@ const (
|
|||||||
dbTypePostgres = "postgres"
|
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)
|
p, err := newResourceDBProvider(grafanaDB, cfg, features, tracer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("provide Resource DB: %w", err)
|
return nil, fmt.Errorf("provide Resource DB: %w", err)
|
||||||
@ -54,7 +54,7 @@ type resourceDBProvider struct {
|
|||||||
logQueries bool
|
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
|
// TODO: This should be renamed resource_api
|
||||||
getter := §ionGetter{
|
getter := §ionGetter{
|
||||||
DynamicSection: cfg.SectionWithEnvOverrides("resource_api"),
|
DynamicSection: cfg.SectionWithEnvOverrides("resource_api"),
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package sql
|
package sql
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"go.opentelemetry.io/otel/trace"
|
|
||||||
|
|
||||||
infraDB "github.com/grafana/grafana/pkg/infra/db"
|
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/services/featuremgmt"
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||||
@ -11,7 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Creates a ResourceServer
|
// 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{
|
opts := resource.ResourceServerOptions{
|
||||||
Tracer: tracer,
|
Tracer: tracer,
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"go.opentelemetry.io/otel/trace/noop"
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
|
|
||||||
@ -33,15 +32,13 @@ func newServer(t *testing.T) (sql.Backend, resource.ResourceServer) {
|
|||||||
dbstore := infraDB.InitTestDB(t)
|
dbstore := infraDB.InitTestDB(t)
|
||||||
cfg := setting.NewCfg()
|
cfg := setting.NewCfg()
|
||||||
features := featuremgmt.WithFeatures(featuremgmt.FlagUnifiedStorage)
|
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.NoError(t, err)
|
||||||
require.NotNil(t, eDB)
|
require.NotNil(t, eDB)
|
||||||
|
|
||||||
ret, err := sql.NewBackend(sql.BackendOptions{
|
ret, err := sql.NewBackend(sql.BackendOptions{
|
||||||
DBProvider: eDB,
|
DBProvider: eDB,
|
||||||
Tracer: tr,
|
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotNil(t, ret)
|
require.NotNil(t, ret)
|
||||||
|
Loading…
Reference in New Issue
Block a user