From c064647d697664a62e32a2f8f257fa97da9b153a Mon Sep 17 00:00:00 2001 From: Owen Smallwood Date: Fri, 10 May 2024 10:13:12 -0600 Subject: [PATCH 1/4] registers sql metrics for unified storage and removes single quotes from postgres connection string format --- pkg/services/store/entity/db/dbimpl/dbimpl.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/services/store/entity/db/dbimpl/dbimpl.go b/pkg/services/store/entity/db/dbimpl/dbimpl.go index 6d2402dfad65..0c7b8867e985 100644 --- a/pkg/services/store/entity/db/dbimpl/dbimpl.go +++ b/pkg/services/store/entity/db/dbimpl/dbimpl.go @@ -5,6 +5,8 @@ import ( "strings" "time" + "github.com/dlmiddlecote/sqlstats" + "github.com/grafana/grafana/pkg/cmd/grafana-cli/logger" "github.com/grafana/grafana/pkg/infra/db" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/services/featuremgmt" @@ -14,6 +16,7 @@ import ( "github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/util" "github.com/jmoiron/sqlx" + "github.com/prometheus/client_golang/prometheus" "xorm.io/xorm" ) @@ -69,7 +72,7 @@ func (db *EntityDB) GetEngine() (*xorm.Engine, error) { } connectionString := fmt.Sprintf( - "user='%s' password='%s' host='%s' port='%s' dbname='%s' sslmode='%s'", // sslcert='%s' sslkey='%s' sslrootcert='%s'", + "user=%s password=%s host=%s port=%s dbname=%s sslmode=%s", // sslcert='%s' sslkey='%s' sslrootcert='%s'", dbUser, dbPass, addr.Host, addr.Port, dbName, dbSslMode, // ss.dbCfg.ClientCertPath, ss.dbCfg.ClientKeyPath, ss.dbCfg.CaCertPath ) @@ -138,6 +141,11 @@ func (db *EntityDB) GetEngine() (*xorm.Engine, error) { return nil, err } + // register the go_sql_stats_connections_* metrics + if err := prometheus.Register(sqlstats.NewStatsCollector("unified_storage", db.engine.DB().DB)); err != nil { + logger.Warn("Failed to register unified storage sql stats collector", "error", err) + } + return db.engine, nil } From a1123422d3096e9975b16946b0d4453ed35c541d Mon Sep 17 00:00:00 2001 From: Owen Smallwood Date: Fri, 10 May 2024 10:19:32 -0600 Subject: [PATCH 2/4] uses db logger --- pkg/services/store/entity/db/dbimpl/dbimpl.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/services/store/entity/db/dbimpl/dbimpl.go b/pkg/services/store/entity/db/dbimpl/dbimpl.go index 0c7b8867e985..34620b2e3124 100644 --- a/pkg/services/store/entity/db/dbimpl/dbimpl.go +++ b/pkg/services/store/entity/db/dbimpl/dbimpl.go @@ -6,7 +6,6 @@ import ( "time" "github.com/dlmiddlecote/sqlstats" - "github.com/grafana/grafana/pkg/cmd/grafana-cli/logger" "github.com/grafana/grafana/pkg/infra/db" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/services/featuremgmt" @@ -143,7 +142,7 @@ func (db *EntityDB) GetEngine() (*xorm.Engine, error) { // register the go_sql_stats_connections_* metrics if err := prometheus.Register(sqlstats.NewStatsCollector("unified_storage", db.engine.DB().DB)); err != nil { - logger.Warn("Failed to register unified storage sql stats collector", "error", err) + db.log.Warn("Failed to register unified storage sql stats collector", "error", err) } return db.engine, nil From 13b1a1f611d0f9851891a0466e950ff4e5bcb0e2 Mon Sep 17 00:00:00 2001 From: Owen Smallwood Date: Fri, 10 May 2024 16:16:59 -0600 Subject: [PATCH 3/4] only register US sql metrics when connecting to another postgres or mysql db --- pkg/services/store/entity/db/dbimpl/dbimpl.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/services/store/entity/db/dbimpl/dbimpl.go b/pkg/services/store/entity/db/dbimpl/dbimpl.go index 34620b2e3124..82ba5e35cba3 100644 --- a/pkg/services/store/entity/db/dbimpl/dbimpl.go +++ b/pkg/services/store/entity/db/dbimpl/dbimpl.go @@ -114,6 +114,11 @@ func (db *EntityDB) GetEngine() (*xorm.Engine, error) { return nil, fmt.Errorf("invalid db type specified: %s", dbType) } + // register sql stat metrics + if err := prometheus.Register(sqlstats.NewStatsCollector("unified_storage", db.engine.DB().DB)); err != nil { + db.log.Warn("Failed to register unified storage sql stats collector", "error", err) + } + // configure sql logging debugSQL := cfgSection.Key("log_queries").MustBool(false) if !debugSQL { @@ -140,11 +145,6 @@ func (db *EntityDB) GetEngine() (*xorm.Engine, error) { return nil, err } - // register the go_sql_stats_connections_* metrics - if err := prometheus.Register(sqlstats.NewStatsCollector("unified_storage", db.engine.DB().DB)); err != nil { - db.log.Warn("Failed to register unified storage sql stats collector", "error", err) - } - return db.engine, nil } From 91dc175a75c6d80e711bfec90c834674929937c8 Mon Sep 17 00:00:00 2001 From: Owen Smallwood Date: Fri, 10 May 2024 16:24:49 -0600 Subject: [PATCH 4/4] use engine --- pkg/services/store/entity/db/dbimpl/dbimpl.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/services/store/entity/db/dbimpl/dbimpl.go b/pkg/services/store/entity/db/dbimpl/dbimpl.go index 82ba5e35cba3..e537b713db7f 100644 --- a/pkg/services/store/entity/db/dbimpl/dbimpl.go +++ b/pkg/services/store/entity/db/dbimpl/dbimpl.go @@ -115,7 +115,7 @@ func (db *EntityDB) GetEngine() (*xorm.Engine, error) { } // register sql stat metrics - if err := prometheus.Register(sqlstats.NewStatsCollector("unified_storage", db.engine.DB().DB)); err != nil { + if err := prometheus.Register(sqlstats.NewStatsCollector("unified_storage", engine.DB().DB)); err != nil { db.log.Warn("Failed to register unified storage sql stats collector", "error", err) }