From 2d9db01d721215f4696b51744a66d09557e2cd72 Mon Sep 17 00:00:00 2001 From: SoXX Date: Sun, 11 Aug 2024 22:17:00 +0200 Subject: [PATCH] feat(telemetry): Implement telemetry setup in database client Add OpenTelemetry integration to the database client by creating a `setupTelemetry` function. Initialize a tracer and configure logging with the otellogrus hook. Call this function during the connection process to enable tracing and logging for database operations. --- pkg/database/client.go | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/pkg/database/client.go b/pkg/database/client.go index 57d59e2..7433440 100644 --- a/pkg/database/client.go +++ b/pkg/database/client.go @@ -8,13 +8,22 @@ import ( "git.anthrove.art/Anthrove/otter-space-sdk/v2/pkg/models" migrate "github.com/rubenv/sql-migrate" log "github.com/sirupsen/logrus" + "go.opentelemetry.io/contrib/bridges/otellogrus" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/trace" "gorm.io/driver/postgres" "gorm.io/gorm" ) -//go:embed migrations/*.sql -var embedMigrations embed.FS -var client *gorm.DB +const tracingName = "git.anthrove.art/Anthrove/otter-space-sdk/v2/pkg/database" + +var ( + //go:embed migrations/*.sql + embedMigrations embed.FS + client *gorm.DB + tracer trace.Tracer + logger *log.Logger +) func Connect(_ context.Context, config models.DatabaseConfig) error { var localSSL string @@ -32,12 +41,14 @@ func Connect(_ context.Context, config models.DatabaseConfig) error { return err } - client = sqlDB err = migrateDatabase(sqlDB, config) if err != nil { return err } + setupTelemetry() + + client = sqlDB return nil } @@ -68,6 +79,14 @@ func migrateDatabase(dbPool *gorm.DB, config models.DatabaseConfig) error { return nil } +func setupTelemetry() { + tracer = otel.Tracer(tracingName) + + hook := otellogrus.NewHook(tracingName) + logger.AddHook(hook) + +} + func GetGorm(ctx context.Context) (*gorm.DB, error) { if client == nil { return nil, &otterError.Database{Reason: otterError.DatabaseIsNotConnected}