Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
c363033abd | |||
dd914ed9fb | |||
7d2787c3a6 | |||
a81da5bd2d | |||
44cd4a1e16 |
@@ -39,7 +39,7 @@ func namedValueToLabels(named []driver.NamedValue) []interface{} {
|
||||
|
||||
// getCallerName get the name of the function A where A() -> B() -> GetFunctionCallerName()
|
||||
func getCallerName() string {
|
||||
pc, _, _, ok := runtime.Caller(2)
|
||||
pc, _, _, ok := runtime.Caller(3)
|
||||
details := runtime.FuncForPC(pc)
|
||||
var callerName string
|
||||
if ok && details != nil {
|
||||
|
40
conn.go
40
conn.go
@@ -6,7 +6,8 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"go.unistack.org/micro/v3/tracer"
|
||||
requestid "go.unistack.org/micro-wrapper-requestid/v4"
|
||||
"go.unistack.org/micro/v4/tracer"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -99,12 +100,11 @@ func (w *wrapperConn) Begin() (driver.Tx, error) {
|
||||
// BeginTx implements driver.ConnBeginTx BeginTx
|
||||
func (w *wrapperConn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) {
|
||||
nctx, span := w.opts.Tracer.Start(ctx, "sdk.database", tracer.WithSpanKind(tracer.SpanKindClient))
|
||||
span.AddLabels("method", "BeginTx")
|
||||
span.AddLabels("db.method", "BeginTx")
|
||||
name := getQueryName(ctx)
|
||||
if name != "" {
|
||||
span.AddLabels("db.query", name)
|
||||
} else {
|
||||
name = getCallerName()
|
||||
span.AddLabels("db.statement", name)
|
||||
if id, ok := ctx.Value(requestid.XRequestIDKey).(string); ok {
|
||||
span.AddLabels("x-request-id", id)
|
||||
}
|
||||
labels := []string{labelMethod, "BeginTx", labelQuery, name}
|
||||
|
||||
@@ -178,14 +178,12 @@ func (w *wrapperConn) PrepareContext(ctx context.Context, query string) (driver.
|
||||
} else {
|
||||
nctx, span = w.opts.Tracer.Start(ctx, "sdk.database", tracer.WithSpanKind(tracer.SpanKindClient))
|
||||
}
|
||||
span.AddLabels("method", "PrepareContext")
|
||||
span.AddLabels("db.method", "PrepareContext")
|
||||
name := getQueryName(ctx)
|
||||
if name != "" {
|
||||
span.AddLabels("db.query", name)
|
||||
} else {
|
||||
name = getCallerName()
|
||||
span.AddLabels("db.statement", name)
|
||||
if id, ok := ctx.Value(requestid.XRequestIDKey).(string); ok {
|
||||
span.AddLabels("x-request-id", id)
|
||||
}
|
||||
|
||||
labels := []string{labelMethod, "PrepareContext", labelQuery, name}
|
||||
conn, ok := w.conn.(driver.ConnPrepareContext)
|
||||
if !ok {
|
||||
@@ -259,12 +257,11 @@ func (w *wrapperConn) ExecContext(ctx context.Context, query string, args []driv
|
||||
} else {
|
||||
nctx, span = w.opts.Tracer.Start(ctx, "sdk.database", tracer.WithSpanKind(tracer.SpanKindClient))
|
||||
}
|
||||
span.AddLabels("method", "ExecContext")
|
||||
span.AddLabels("db.method", "ExecContext")
|
||||
name := getQueryName(ctx)
|
||||
if name != "" {
|
||||
span.AddLabels("db.query", name)
|
||||
} else {
|
||||
name = getCallerName()
|
||||
span.AddLabels("db.statement", name)
|
||||
if id, ok := ctx.Value(requestid.XRequestIDKey).(string); ok {
|
||||
span.AddLabels("x-request-id", id)
|
||||
}
|
||||
defer span.Finish()
|
||||
if len(args) > 0 {
|
||||
@@ -382,12 +379,11 @@ func (w *wrapperConn) QueryContext(ctx context.Context, query string, args []dri
|
||||
} else {
|
||||
nctx, span = w.opts.Tracer.Start(ctx, "sdk.database", tracer.WithSpanKind(tracer.SpanKindClient))
|
||||
}
|
||||
span.AddLabels("method", "QueryContext")
|
||||
span.AddLabels("db.method", "QueryContext")
|
||||
name := getQueryName(ctx)
|
||||
if name != "" {
|
||||
span.AddLabels("db.statement", name)
|
||||
} else {
|
||||
name = getCallerName()
|
||||
span.AddLabels("db.statement", name)
|
||||
if id, ok := ctx.Value(requestid.XRequestIDKey).(string); ok {
|
||||
span.AddLabels("x-request-id", id)
|
||||
}
|
||||
defer span.Finish()
|
||||
if len(args) > 0 {
|
||||
|
9
go.mod
9
go.mod
@@ -1,5 +1,8 @@
|
||||
module gitlab.mtsbank.ru/service-platform/framework/framework-modules/micro-wrapper-sql
|
||||
module go.unistack.org/micro-wrapper-sql/v4
|
||||
|
||||
go 1.18
|
||||
go 1.20
|
||||
|
||||
require go.unistack.org/micro/v3 v3.10.25
|
||||
require (
|
||||
go.unistack.org/micro-wrapper-requestid/v4 v4.0.3
|
||||
go.unistack.org/micro/v4 v4.0.8
|
||||
)
|
||||
|
6
go.sum
6
go.sum
@@ -1,2 +1,4 @@
|
||||
go.unistack.org/micro/v3 v3.10.25 h1:A0epdZHOqjnXx103wwFhPKgmvVVbScvfbmn3HmHz1wE=
|
||||
go.unistack.org/micro/v3 v3.10.25/go.mod h1:ALkeXpqChYDjx8KPi7tz9mmIyOnob6nlNswsg8BnZjQ=
|
||||
go.unistack.org/micro-wrapper-requestid/v4 v4.0.3 h1:LhloK8yLLsov4XiKw9i20wdBUfvWCG1TaBNgNVtNa8Q=
|
||||
go.unistack.org/micro-wrapper-requestid/v4 v4.0.3/go.mod h1:vRIkCMyhbBVus1xQlr/Fef65n07znrBGkpSCpjkEiqk=
|
||||
go.unistack.org/micro/v4 v4.0.8 h1:D5n18+fhyRjJkKSPdIcW1ratWUuzy9TzrS5ud/qImWg=
|
||||
go.unistack.org/micro/v4 v4.0.8/go.mod h1:QT3gOIE4qGgBiQGm2Pad/62Sl5R53QfrgYHD448aX14=
|
||||
|
14
options.go
14
options.go
@@ -5,9 +5,9 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"go.unistack.org/micro/v3/logger"
|
||||
"go.unistack.org/micro/v3/meter"
|
||||
"go.unistack.org/micro/v3/tracer"
|
||||
"go.unistack.org/micro/v4/logger"
|
||||
"go.unistack.org/micro/v4/meter"
|
||||
"go.unistack.org/micro/v4/tracer"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -17,7 +17,7 @@ var (
|
||||
DefaultMeterMetricPrefix = "micro_sql_"
|
||||
// DefaultLoggerObserver used to prepare labels for logger
|
||||
DefaultLoggerObserver = func(ctx context.Context, method string, query string, td time.Duration, err error) []interface{} {
|
||||
labels := []interface{}{"method", method, "took", fmt.Sprintf("%v", td)}
|
||||
labels := []interface{}{"db.method", method, "took", fmt.Sprintf("%v", td)}
|
||||
if err != nil {
|
||||
labels = append(labels, "error", err.Error())
|
||||
}
|
||||
@@ -44,8 +44,8 @@ var (
|
||||
meterRequestDurationSeconds = "request_duration_seconds"
|
||||
|
||||
labelUnknown = "unknown"
|
||||
labelQuery = "query"
|
||||
labelMethod = "method"
|
||||
labelQuery = "db_statement"
|
||||
labelMethod = "db_method"
|
||||
labelStatus = "status"
|
||||
labelSuccess = "success"
|
||||
labelFailure = "failure"
|
||||
@@ -180,5 +180,5 @@ func getQueryName(ctx context.Context) string {
|
||||
if v, ok := ctx.Value(queryNameKey{}).(string); ok && v != labelUnknown {
|
||||
return v
|
||||
}
|
||||
return ""
|
||||
return getCallerName()
|
||||
}
|
||||
|
2
stats.go
2
stats.go
@@ -1,4 +1,4 @@
|
||||
package wrapper // import "go.unistack.org/micro-wrapper-sql/v3"
|
||||
package wrapper // import "go.unistack.org/micro-wrapper-sql/v4"
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
25
stmt.go
25
stmt.go
@@ -6,7 +6,8 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"go.unistack.org/micro/v3/tracer"
|
||||
requestid "go.unistack.org/micro-wrapper-requestid/v4"
|
||||
"go.unistack.org/micro/v4/tracer"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -140,17 +141,16 @@ func (w *wrapperStmt) ExecContext(ctx context.Context, args []driver.NamedValue)
|
||||
} else {
|
||||
nctx, span = w.opts.Tracer.Start(ctx, "sdk.database", tracer.WithSpanKind(tracer.SpanKindClient))
|
||||
}
|
||||
span.AddLabels("method", "ExecContext")
|
||||
span.AddLabels("db.method", "ExecContext")
|
||||
name := getQueryName(ctx)
|
||||
if name != "" {
|
||||
span.AddLabels("db.query", name)
|
||||
} else {
|
||||
name = getCallerName()
|
||||
}
|
||||
span.AddLabels("db.statement", name)
|
||||
defer span.Finish()
|
||||
if len(args) > 0 {
|
||||
span.AddLabels("db.args", fmt.Sprintf("%v", namedValueToLabels(args)))
|
||||
}
|
||||
if id, ok := ctx.Value(requestid.XRequestIDKey).(string); ok {
|
||||
span.AddLabels("x-request-id", id)
|
||||
}
|
||||
labels := []string{labelMethod, "ExecContext", labelQuery, name}
|
||||
|
||||
if conn, ok := w.stmt.(driver.StmtExecContext); ok {
|
||||
@@ -214,17 +214,16 @@ func (w *wrapperStmt) QueryContext(ctx context.Context, args []driver.NamedValue
|
||||
} else {
|
||||
nctx, span = w.opts.Tracer.Start(ctx, "sdk.database", tracer.WithSpanKind(tracer.SpanKindClient))
|
||||
}
|
||||
span.AddLabels("method", "QueryContext")
|
||||
span.AddLabels("db.method", "QueryContext")
|
||||
name := getQueryName(ctx)
|
||||
if name != "" {
|
||||
span.AddLabels("db.query", name)
|
||||
} else {
|
||||
name = getCallerName()
|
||||
}
|
||||
span.AddLabels("db.statement", name)
|
||||
defer span.Finish()
|
||||
if len(args) > 0 {
|
||||
span.AddLabels("db.args", fmt.Sprintf("%v", namedValueToLabels(args)))
|
||||
}
|
||||
if id, ok := ctx.Value(requestid.XRequestIDKey).(string); ok {
|
||||
span.AddLabels("x-request-id", id)
|
||||
}
|
||||
labels := []string{labelMethod, "QueryContext", labelQuery, name}
|
||||
if conn, ok := w.stmt.(driver.StmtQueryContext); ok {
|
||||
ts := time.Now()
|
||||
|
Reference in New Issue
Block a user