Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7e51069595 |
@@ -10,7 +10,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
_ "gitea.redpowerfuture.com/red-future/common/consul"
|
_ "gitea.redpowerfuture.com/red-future/common/consul"
|
||||||
"gitea.redpowerfuture.com/red-future/common/jaeger"
|
|
||||||
"gitea.redpowerfuture.com/red-future/common/utils"
|
"gitea.redpowerfuture.com/red-future/common/utils"
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
"github.com/gogf/gf/v2/frame/g"
|
||||||
"github.com/gogf/gf/v2/net/gclient"
|
"github.com/gogf/gf/v2/net/gclient"
|
||||||
@@ -80,7 +79,6 @@ func RouteRegister(controllers []interface{}) {
|
|||||||
return fmt.Sprintf("/%s", strings.ToLower(s))
|
return fmt.Sprintf("/%s", strings.ToLower(s))
|
||||||
})
|
})
|
||||||
Httpserver.Group(convertedStr, func(group *ghttp.RouterGroup) {
|
Httpserver.Group(convertedStr, func(group *ghttp.RouterGroup) {
|
||||||
group.Middleware(jaeger.NewTracer)
|
|
||||||
group.Bind(t)
|
group.Bind(t)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,9 +11,12 @@ import (
|
|||||||
"github.com/gogf/gf/v2/frame/g"
|
"github.com/gogf/gf/v2/frame/g"
|
||||||
"github.com/gogf/gf/v2/net/ghttp"
|
"github.com/gogf/gf/v2/net/ghttp"
|
||||||
"github.com/gogf/gf/v2/net/gtrace"
|
"github.com/gogf/gf/v2/net/gtrace"
|
||||||
|
"go.opentelemetry.io/otel"
|
||||||
"go.opentelemetry.io/otel/attribute"
|
"go.opentelemetry.io/otel/attribute"
|
||||||
"go.opentelemetry.io/otel/codes"
|
"go.opentelemetry.io/otel/codes"
|
||||||
"go.opentelemetry.io/otel/trace"
|
"go.opentelemetry.io/otel/trace"
|
||||||
|
"go.opentelemetry.io/otel/trace/embedded"
|
||||||
|
"go.opentelemetry.io/otel/trace/noop"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -41,6 +44,10 @@ func Init() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
ShutDown = shutdown
|
ShutDown = shutdown
|
||||||
|
|
||||||
|
// 包装 TracerProvider:只保留 HTTP Server 追踪,屏蔽 DB/Redis/Client 等内部 span
|
||||||
|
wrapTracerProvider()
|
||||||
|
|
||||||
g.Log().Infof(ctx, "✅ Jaeger 初始化成功: %s", jaegerAgent)
|
g.Log().Infof(ctx, "✅ Jaeger 初始化成功: %s", jaegerAgent)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -50,6 +57,32 @@ func init() {
|
|||||||
Init()
|
Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// filterTracerProvider 只放行指定 instrument 的 span,其余返回 noop tracer
|
||||||
|
type filterTracerProvider struct {
|
||||||
|
embedded.TracerProvider
|
||||||
|
real trace.TracerProvider
|
||||||
|
noop trace.TracerProvider
|
||||||
|
allowed map[string]bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *filterTracerProvider) Tracer(instrumentName string, opts ...trace.TracerOption) trace.Tracer {
|
||||||
|
if f.allowed[instrumentName] {
|
||||||
|
return f.real.Tracer(instrumentName, opts...)
|
||||||
|
}
|
||||||
|
return f.noop.Tracer(instrumentName, opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// wrapTracerProvider 包装全局 TracerProvider,只保留 HTTP Server 追踪
|
||||||
|
func wrapTracerProvider() {
|
||||||
|
otel.SetTracerProvider(&filterTracerProvider{
|
||||||
|
real: otel.GetTracerProvider(),
|
||||||
|
noop: noop.NewTracerProvider(),
|
||||||
|
allowed: map[string]bool{
|
||||||
|
"github.com/gogf/gf/v2/net/ghttp.Server": true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// NewSpan 创建新的链路追踪 Span
|
// NewSpan 创建新的链路追踪 Span
|
||||||
// spanName: Span 名称,用于在 Jaeger UI 中标识
|
// spanName: Span 名称,用于在 Jaeger UI 中标识
|
||||||
// 返回带有 Span 的 context 和 Span 对象,调用方需 defer span.End()
|
// 返回带有 Span 的 context 和 Span 对象,调用方需 defer span.End()
|
||||||
|
|||||||
Reference in New Issue
Block a user