From d921b8513cf39cd4a08cd20f2cc23829064d31f2 Mon Sep 17 00:00:00 2001 From: yyg-max <175597134+yyg-max@users.noreply.github.com> Date: Sun, 25 Jan 2026 15:30:46 +0800 Subject: [PATCH] feat: Specified OT attribute --- internal/db/mysql.go | 22 ++++++++++++++++++---- internal/db/redis.go | 14 ++++++++++++-- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/internal/db/mysql.go b/internal/db/mysql.go index ee97d4e..6968b40 100644 --- a/internal/db/mysql.go +++ b/internal/db/mysql.go @@ -27,12 +27,16 @@ package db import ( "context" "fmt" + "log" + "net" + "strconv" + "time" + "github.com/linux-do/cdk/internal/config" + "go.opentelemetry.io/otel/attribute" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/plugin/opentelemetry/tracing" - "log" - "time" ) var ( @@ -46,6 +50,7 @@ func init() { } var err error + dbConfig := config.Config.Database dsn := fmt.Sprintf( "%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", @@ -61,7 +66,17 @@ func init() { } // Trace 注入 - if err := db.Use(tracing.NewPlugin(tracing.WithoutMetrics())); err != nil { + if err = db.Use( + tracing.NewPlugin( + tracing.WithoutMetrics(), + tracing.WithAttributes( + attribute.String("db.instance", dbConfig.Database), + attribute.String("db.ip", dbConfig.Host), + attribute.String("server.address", net.JoinHostPort(dbConfig.Host, strconv.Itoa(dbConfig.Port))), + attribute.String("db.system", "mysql"), + ), + ), + ); err != nil { log.Fatalf("[MySQL] init trace failed: %v\n", err) } @@ -72,7 +87,6 @@ func init() { } // 设置连接池参数 - dbConfig := config.Config.Database sqlDB.SetMaxIdleConns(dbConfig.MaxIdleConn) sqlDB.SetMaxOpenConns(dbConfig.MaxOpenConn) sqlDB.SetConnMaxLifetime(time.Duration(dbConfig.ConnMaxLifetime) * time.Second) diff --git a/internal/db/redis.go b/internal/db/redis.go index 4603445..654f507 100644 --- a/internal/db/redis.go +++ b/internal/db/redis.go @@ -27,9 +27,12 @@ package db import ( "context" "fmt" + "github.com/linux-do/cdk/internal/config" "github.com/redis/go-redis/extra/redisotel/v9" "github.com/redis/go-redis/v9" + "go.opentelemetry.io/otel/attribute" + "log" "time" ) @@ -62,8 +65,15 @@ func init() { }, ) - // Trace - if err := redisotel.InstrumentTracing(Redis); err != nil { + // OpenTelemetry 追踪(UniversalClient 兼容) + if err := redisotel.InstrumentTracing( + Redis, + redisotel.WithAttributes( + attribute.String("db.instance", fmt.Sprintf("%v", redisConfig.DB)), + attribute.String("db.ip", redisConfig.Host), + attribute.String("db.system", "redis"), + ), + ); err != nil { log.Fatalf("[Redis] failed to init trace: %v\n", err) }