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
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
|
|
}
|