Skip to content

Commit

Permalink
- update opentelemetry
Browse files Browse the repository at this point in the history
  • Loading branch information
dtapps committed Jun 12, 2024
1 parent 2b2ddf2 commit 521b82a
Show file tree
Hide file tree
Showing 21 changed files with 379 additions and 170 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@
#### 安装

```shell
go get -v -u go.dtapp.net/golog@v1.0.142
go get -v -u go.dtapp.net/golog@v1.0.143
```
15 changes: 15 additions & 0 deletions api_gorm.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,20 +67,35 @@ func NewApiGorm(ctx context.Context, gormClient *gorm.DB, gormTableName string)

// Middleware 中间件
func (ag *ApiGorm) Middleware(ctx context.Context, request gorequest.Response) {

// OpenTelemetry链路追踪
ctx = ag.TraceStartSpan(ctx)
defer ag.TraceEndSpan()

if ag.gormConfig.stats {
ag.gormMiddleware(ctx, request)
}
}

// MiddlewareXml 中间件
func (ag *ApiGorm) MiddlewareXml(ctx context.Context, request gorequest.Response) {

// OpenTelemetry链路追踪
ctx = ag.TraceStartSpan(ctx)
defer ag.TraceEndSpan()

if ag.gormConfig.stats {
ag.gormMiddlewareXml(ctx, request)
}
}

// MiddlewareCustom 中间件
func (ag *ApiGorm) MiddlewareCustom(ctx context.Context, api string, request gorequest.Response) {

// OpenTelemetry链路追踪
ctx = ag.TraceStartSpan(ctx)
defer ag.TraceEndSpan()

if ag.gormConfig.stats {
ag.gormMiddlewareCustom(ctx, api, request)
}
Expand Down
60 changes: 60 additions & 0 deletions api_gorm.opentelemetry.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package golog

import (
"context"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
)

// SetTrace 设置OpenTelemetry链路追踪
func (ag *ApiGorm) SetTrace(trace bool) {
ag.trace = trace
}

// TraceStartSpan 开始OpenTelemetry链路追踪状态
func (ag *ApiGorm) TraceStartSpan(ctx context.Context) context.Context {
if ag.trace {
tr := otel.Tracer("go.dtapp.net/golog", trace.WithInstrumentationVersion(Version))
ctx, ag.span = tr.Start(ctx, "golog.api")
}
return ctx
}

// TraceEndSpan 结束OpenTelemetry链路追踪状态
func (ag *ApiGorm) TraceEndSpan() {
if ag.trace {
ag.span.End()
}
}

// TraceSetAttributes 设置OpenTelemetry链路追踪属性
func (ag *ApiGorm) TraceSetAttributes(kv ...attribute.KeyValue) {
if ag.trace {
ag.span.SetAttributes(kv...)
}
}

// TraceSetStatus 设置OpenTelemetry链路追踪状态
func (ag *ApiGorm) TraceSetStatus(code codes.Code, description string) {
if ag.trace {
ag.span.SetStatus(code, description)
}
}

// TraceGetTraceID 获取OpenTelemetry链路追踪TraceID
func (ag *ApiGorm) TraceGetTraceID() string {
if ag.trace {
return ag.span.SpanContext().TraceID().String()
}
return ""
}

// TraceGetSpanID 获取OpenTelemetry链路追踪SpanID
func (ag *ApiGorm) TraceGetSpanID() string {
if ag.trace {
return ag.span.SpanContext().SpanID().String()
}
return ""
}
6 changes: 0 additions & 6 deletions api_gorm.option.go

This file was deleted.

15 changes: 3 additions & 12 deletions api_gorm_record.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import (
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"go.dtapp.net/gourl"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
"go.opentelemetry.io/otel/codes"
"log/slog"
"unicode/utf8"
)
Expand All @@ -18,13 +17,6 @@ func (ag *ApiGorm) gormRecord(ctx context.Context, data GormApiLogModel) {
return
}

// OpenTelemetry链路追踪
if ag.trace {
tr := otel.Tracer("go.dtapp.net/golog", trace.WithInstrumentationVersion(Version))
ctx, ag.span = tr.Start(ctx, "api")
defer ag.span.End()
}

data.GoVersion = ag.config.GoVersion //【程序】GoVersion
data.SdkVersion = ag.config.SdkVersion //【程序】SdkVersion
data.SystemInfo = gojson.JsonEncodeNoError(ag.config.system) //【系统】SystemInfo
Expand All @@ -34,9 +26,7 @@ func (ag *ApiGorm) gormRecord(ctx context.Context, data GormApiLogModel) {
}

// OpenTelemetry链路追踪
if ag.trace {
data.TraceID = ag.span.SpanContext().TraceID().String() // 跟踪编号
}
data.TraceID = ag.TraceGetTraceID() // 跟踪编号

// 请求编号
data.RequestID = gorequest.GetRequestIDContext(ctx)
Expand All @@ -45,6 +35,7 @@ func (ag *ApiGorm) gormRecord(ctx context.Context, data GormApiLogModel) {
Table(ag.gormConfig.tableName).
Create(&data).Error
if err != nil {
ag.TraceSetStatus(codes.Error, err.Error())
slog.Error(fmt.Sprintf("记录接口日志错误:%s", err))
slog.Error(fmt.Sprintf("记录接口日志数据:%+v", data))
}
Expand Down
14 changes: 3 additions & 11 deletions gin_gorm.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"go.dtapp.net/gorequest"
"go.dtapp.net/gotime"
"go.dtapp.net/gourl"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
"gorm.io/gorm"
"io"
Expand Down Expand Up @@ -106,13 +105,8 @@ func (gg *GinGorm) Middleware() gin.HandlerFunc {
return func(g *gin.Context) {

// OpenTelemetry链路追踪
if gg.trace {
tr := otel.Tracer("go.dtapp.net/golog", trace.WithInstrumentationVersion(Version))
ctx, span := tr.Start(g, "gin")
gg.span = span
g.Request = g.Request.WithContext(ctx)
defer gg.span.End()
}
g.Request = g.Request.WithContext(gg.TraceStartSpan(g))
defer gg.TraceEndSpan()

// 开始时间
start := time.Now().UTC()
Expand Down Expand Up @@ -152,9 +146,7 @@ func (gg *GinGorm) Middleware() gin.HandlerFunc {
log.ResponseTime = gotime.Current().Time

// OpenTelemetry链路追踪
if gg.trace {
log.TraceID = gg.span.SpanContext().TraceID().String() // 跟踪编号
}
log.TraceID = gg.TraceGetTraceID() // 跟踪编号

// 请求编号
log.RequestID = gorequest.GetRequestIDContext(g)
Expand Down
60 changes: 60 additions & 0 deletions gin_gorm.opentelemetry.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package golog

import (
"context"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
)

// SetTrace 设置OpenTelemetry链路追踪
func (gg *GinGorm) SetTrace(trace bool) {
gg.trace = trace
}

// TraceStartSpan 开始OpenTelemetry链路追踪状态
func (gg *GinGorm) TraceStartSpan(ctx context.Context) context.Context {
if gg.trace {
tr := otel.Tracer("go.dtapp.net/golog", trace.WithInstrumentationVersion(Version))
ctx, gg.span = tr.Start(ctx, "golog.gin")
}
return ctx
}

// TraceEndSpan 结束OpenTelemetry链路追踪状态
func (gg *GinGorm) TraceEndSpan() {
if gg.trace {
gg.span.End()
}
}

// TraceSetAttributes 设置OpenTelemetry链路追踪属性
func (gg *GinGorm) TraceSetAttributes(kv ...attribute.KeyValue) {
if gg.trace {
gg.span.SetAttributes(kv...)
}
}

// TraceSetStatus 设置OpenTelemetry链路追踪状态
func (gg *GinGorm) TraceSetStatus(code codes.Code, description string) {
if gg.trace {
gg.span.SetStatus(code, description)
}
}

// TraceGetTraceID 获取OpenTelemetry链路追踪TraceID
func (gg *GinGorm) TraceGetTraceID() string {
if gg.trace {
return gg.span.SpanContext().TraceID().String()
}
return ""
}

// TraceGetSpanID 获取OpenTelemetry链路追踪SpanID
func (gg *GinGorm) TraceGetSpanID() string {
if gg.trace {
return gg.span.SpanContext().SpanID().String()
}
return ""
}
6 changes: 0 additions & 6 deletions gin_gorm.option.go

This file was deleted.

2 changes: 2 additions & 0 deletions gin_gorm_record.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"fmt"
"go.dtapp.net/gojson"
"go.opentelemetry.io/otel/codes"
"log/slog"
)

Expand All @@ -20,6 +21,7 @@ func (gg *GinGorm) gormRecord(ctx context.Context, data GormGinLogModel) {
Table(gg.gormConfig.tableName).
Create(&data).Error
if err != nil {
gg.TraceSetStatus(codes.Error, err.Error())
slog.Error(fmt.Sprintf("记录接口日志错误:%s", err))
slog.Error(fmt.Sprintf("记录接口日志数据:%+v", data))
}
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ require (
github.com/hertz-contrib/requestid v1.1.0
github.com/shirou/gopsutil v3.21.11+incompatible
go.dtapp.net/gojson v1.0.4
go.dtapp.net/gorequest v1.0.62
go.dtapp.net/gorequest v1.0.63
go.dtapp.net/gotime v1.0.11
go.dtapp.net/gourl v1.0.0
go.opentelemetry.io/otel v1.27.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@ go.dtapp.net/gojson v1.0.4 h1:9en9iyOOLWoEIo2eKhqt3/Djh/3HhwsTpXxgI9efPRo=
go.dtapp.net/gojson v1.0.4/go.mod h1:G9CMVzNSRkbNzIic/vJqHCOyKtw6BW2YM8Vyn64zfM0=
go.dtapp.net/gorandom v1.0.3 h1:6RNDFMJfLlHFR98c2tbecaMzg4vEIHyEpduMBUdd0jc=
go.dtapp.net/gorandom v1.0.3/go.mod h1:Qd6ywCSrk7sCkh9OdR0wygcbQBFt53WDIrx8rqGBvis=
go.dtapp.net/gorequest v1.0.62 h1:+FvbuOGE7kUFGb77NCNi18lGvthxgzbXur+SQylz0es=
go.dtapp.net/gorequest v1.0.62/go.mod h1:buYy18+d4jO3DbTl88BXyagilw5unU5FFDq5VfCehEg=
go.dtapp.net/gorequest v1.0.63 h1:M9iX/9K9rsQKAq2l8OOoxLlI7xLft0/ULH4i7UL5KVQ=
go.dtapp.net/gorequest v1.0.63/go.mod h1:buYy18+d4jO3DbTl88BXyagilw5unU5FFDq5VfCehEg=
go.dtapp.net/gostring v1.0.15 h1:MxvbgsBHSstIUdtwHf1FGtfh1bPbAlxxC+9NFVk396M=
go.dtapp.net/gostring v1.0.15/go.mod h1:AJLixiPhpBZrSKQ7yW46a+42iEIrOlfkJJ+Hta/j8RE=
go.dtapp.net/gotime v1.0.11 h1:VAmi1kFhkwJweIujeUOWf16wSmAZd4VyhyD25ku/J2Y=
Expand Down
12 changes: 3 additions & 9 deletions hertz_gorm.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"github.com/hertz-contrib/requestid"
"go.dtapp.net/gojson"
"go.dtapp.net/gotime"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
"gorm.io/gorm"
"strings"
Expand Down Expand Up @@ -77,11 +76,8 @@ func (hg *HertzGorm) Middleware() app.HandlerFunc {
return func(ctx context.Context, h *app.RequestContext) {

// OpenTelemetry链路追踪
if hg.trace {
tr := otel.Tracer("go.dtapp.net/golog", trace.WithInstrumentationVersion(Version))
ctx, hg.span = tr.Start(ctx, "hertz")
defer hg.span.End()
}
ctx = hg.TraceStartSpan(ctx)
defer hg.TraceEndSpan()

// 开始时间
start := time.Now().UTC()
Expand Down Expand Up @@ -115,9 +111,7 @@ func (hg *HertzGorm) Middleware() app.HandlerFunc {
)

// OpenTelemetry链路追踪
if hg.trace {
log.TraceID = hg.span.SpanContext().TraceID().String() // 跟踪编号
}
log.TraceID = hg.TraceGetTraceID() // 跟踪编号

// 请求编号
log.RequestID = requestid.Get(h)
Expand Down
60 changes: 60 additions & 0 deletions hertz_gorm.opentelemetry.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package golog

import (
"context"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
)

// SetTrace 设置OpenTelemetry链路追踪
func (hg *HertzGorm) SetTrace(trace bool) {
hg.trace = trace
}

// TraceStartSpan 开始OpenTelemetry链路追踪状态
func (hg *HertzGorm) TraceStartSpan(ctx context.Context) context.Context {
if hg.trace {
tr := otel.Tracer("go.dtapp.net/golog", trace.WithInstrumentationVersion(Version))
ctx, hg.span = tr.Start(ctx, "golog.hertz")
}
return ctx
}

// TraceEndSpan 结束OpenTelemetry链路追踪状态
func (hg *HertzGorm) TraceEndSpan() {
if hg.trace {
hg.span.End()
}
}

// TraceSetAttributes 设置OpenTelemetry链路追踪属性
func (hg *HertzGorm) TraceSetAttributes(kv ...attribute.KeyValue) {
if hg.trace {
hg.span.SetAttributes(kv...)
}
}

// TraceSetStatus 设置OpenTelemetry链路追踪状态
func (hg *HertzGorm) TraceSetStatus(code codes.Code, description string) {
if hg.trace {
hg.span.SetStatus(code, description)
}
}

// TraceGetTraceID 获取OpenTelemetry链路追踪TraceID
func (hg *HertzGorm) TraceGetTraceID() string {
if hg.trace {
return hg.span.SpanContext().TraceID().String()
}
return ""
}

// TraceGetSpanID 获取OpenTelemetry链路追踪SpanID
func (hg *HertzGorm) TraceGetSpanID() string {
if hg.trace {
return hg.span.SpanContext().SpanID().String()
}
return ""
}
6 changes: 0 additions & 6 deletions hertz_gorm.option.go

This file was deleted.

Loading

0 comments on commit 521b82a

Please sign in to comment.