You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

78 lines
2.2 KiB

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
}