不同服务注册不同组件模块
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/gogf/gf/contrib/trace/otlphttp/v2"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
@@ -13,16 +14,38 @@ import (
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
)
|
||||
|
||||
var ShutDown func(ctx context.Context)
|
||||
var (
|
||||
ShutDown func(ctx context.Context)
|
||||
initOnce sync.Once
|
||||
)
|
||||
|
||||
// Init 初始化 Jaeger 链路追踪(延迟初始化,首次调用时执行)
|
||||
func Init() {
|
||||
initOnce.Do(func() {
|
||||
ctx := context.Background()
|
||||
jaegerAgent := g.Cfg().MustGet(ctx, "jaeger.addr").String()
|
||||
serverName := g.Cfg().MustGet(ctx, "server.name").String()
|
||||
|
||||
if jaegerAgent == "" {
|
||||
g.Log().Warning(ctx, "⚠️ Jaeger 配置未找到,跳过初始化")
|
||||
ShutDown = func(ctx context.Context) {} // 空函数,避免 nil panic
|
||||
return
|
||||
}
|
||||
|
||||
shutdown, err := otlphttp.Init(serverName, jaegerAgent, "/v1/traces")
|
||||
if err != nil {
|
||||
g.Log().Errorf(ctx, "Jaeger 初始化失败: %v", err)
|
||||
ShutDown = func(ctx context.Context) {}
|
||||
return
|
||||
}
|
||||
ShutDown = shutdown
|
||||
g.Log().Infof(ctx, "✅ Jaeger 初始化成功: %s", jaegerAgent)
|
||||
})
|
||||
}
|
||||
|
||||
func init() {
|
||||
jaegerAgent := g.Cfg().MustGet(context.Background(), "jaeger.addr").String()
|
||||
serverName := g.Cfg().MustGet(context.Background(), "server.name").String()
|
||||
shutdown, err := otlphttp.Init(serverName, jaegerAgent, "/v1/traces")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
ShutDown = shutdown
|
||||
// 默认自动初始化(保持向后兼容)
|
||||
Init()
|
||||
}
|
||||
func NewTracer(r *ghttp.Request) {
|
||||
_, span := gtrace.NewSpan(r.Context(), r.GetServeHandler().GetMetaTag("summary"))
|
||||
|
||||
Reference in New Issue
Block a user