package gomicro import ( "gitea.baoapi.com/root/stu_uuos/config" log "github.com/micro/go-micro/v2/logger" "github.com/micro/go-micro/v2/server" ocplugin "github.com/micro/go-plugins/wrapper/trace/opentracing/v2" opentracing "github.com/opentracing/opentracing-go" "github.com/uber/jaeger-client-go" jaegercfg "github.com/uber/jaeger-client-go/config" jaegerlog "github.com/uber/jaeger-client-go/log" "github.com/uber/jaeger-client-go/rpcmetrics" "github.com/uber/jaeger-lib/metrics" "io" "time" ) func NewTracerHandlerWrapper() server.HandlerWrapper { tracer, _, err := NewTracer(config.GetConfig().ServiceName, "") //"127.0.0.1:16686") if err != nil { log.Fatal(err) } return ocplugin.NewHandlerWrapper(tracer) } // NewTracer 创建一个jaeger Tracer func NewTracer(serviceName string, addr string) (opentracing.Tracer, io.Closer, error) { //os.Setenv("JAEGER_SERVICE_NAME", "not-effective") //cfg, err := jaegercfg.FromEnv() cfg := jaegercfg.Configuration{ ServiceName: serviceName, Sampler: &jaegercfg.SamplerConfig{ Type: jaeger.SamplerTypeConst, Param: 1, }, Reporter: &jaegercfg.ReporterConfig{ LogSpans: true, BufferFlushInterval: 1 * time.Second, //CollectorEndpoint :"http://192.168.0.111:14268/api/traces", //LocalAgentHostPort: "192.168.0.111:6831", }, } jaegerLogger := jaegerlog.StdLogger metricsFactory := metrics.NullFactory //metricsFactory := jprom.New().Namespace(metrics.NSOptions{Name: serviceName, Tags: nil}) //jaegerLogger := jaegerLoggerAdapter{log.With("serviceName", serviceName)} sender, err := jaeger.NewUDPTransport(addr, 0) if err != nil { return nil, nil, err } reporter := jaeger.NewRemoteReporter(sender) tracer, closer, err := cfg.NewTracer( jaegercfg.Logger(jaegerLogger), jaegercfg.Metrics(metricsFactory), jaegercfg.Reporter(reporter), jaegercfg.Observer(rpcmetrics.NewObserver(metricsFactory, rpcmetrics.DefaultNameNormalizer)), ) if err != nil { log.Error("cannot initialize Jaeger Tracer", err) return nil, nil, err } /*defer func() { if err := closer.Close(); err != nil { log.Error(err) } }()*/ opentracing.SetGlobalTracer(tracer) return tracer, closer, nil }