chore(metrics): Add metrics & traces to DB migration (#97181)

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
This commit is contained in:
Dave Henderson
2024-12-05 17:22:19 -05:00
committed by GitHub
parent 0025876659
commit ced7a84f8b
4 changed files with 219 additions and 72 deletions

View File

@ -75,18 +75,6 @@ func ProvideService(cfg *setting.Cfg,
}
s.tracer = tracer
// initialize and register metrics wrapper around the *sql.DB
db := s.engine.DB().DB
// register the go_sql_stats_connections_* metrics
if err := prometheus.Register(sqlstats.NewStatsCollector("grafana", db)); err != nil {
s.log.Warn("Failed to register sqlstore stats collector", "error", err)
}
// TODO: deprecate/remove these metrics
if err := prometheus.Register(newSQLStoreMetrics(db)); err != nil {
s.log.Warn("Failed to register sqlstore metrics", "error", err)
}
return s, nil
}
@ -150,7 +138,14 @@ func (ss *SQLStore) Migrate(isDatabaseLockingEnabled bool) error {
migrator := migrator.NewMigrator(ss.engine, ss.cfg)
ss.migrations.AddMigration(migrator)
return migrator.Start(isDatabaseLockingEnabled, ss.dbCfg.MigrationLockAttemptTimeout)
if err := prometheus.Register(migrator); err != nil {
ss.log.Warn("Failed to register migrator metrics", "error", err)
}
ctx, span := ss.tracer.Start(context.Background(), "SQLStore.Migrate")
defer span.End()
return migrator.RunMigrations(ctx, isDatabaseLockingEnabled, ss.dbCfg.MigrationLockAttemptTimeout)
}
// Reset resets database state.
@ -327,6 +322,19 @@ func (ss *SQLStore) initEngine(engine *xorm.Engine) error {
engine.ShowExecTime(true)
}
// initialize and register metrics wrapper around the *sql.DB
db := engine.DB().DB
// register the go_sql_stats_connections_* metrics
if err := prometheus.Register(sqlstats.NewStatsCollector("grafana", db)); err != nil {
ss.log.Warn("Failed to register sqlstore stats collector", "error", err)
}
// TODO: deprecate/remove these metrics
if err := prometheus.Register(newSQLStoreMetrics(db)); err != nil {
ss.log.Warn("Failed to register sqlstore metrics", "error", err)
}
ss.engine = engine
return nil
}