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

51 lines
1.2 KiB
Go

package tracing
import (
appConfig "github.com/exhibition-main/internal/config"
"github.com/google/wire"
"github.com/opentracing/opentracing-go"
"github.com/uber/jaeger-client-go"
jaegerConfig "github.com/uber/jaeger-client-go/config"
"go.uber.org/zap"
"io"
"time"
)
var Provider = wire.NewSet(NewTracing)
type JaegerProvider struct {
Tracer opentracing.Tracer
Closer io.Closer
}
var JaegerPoint *JaegerProvider
func NewTracing() (jaegerProvider *JaegerProvider) {
if !appConfig.Data.Jaeger.Open {
return
}
jaegerProvider = &JaegerProvider{}
cfg := jaegerConfig.Configuration{
ServiceName: "fonchain-baidu",
Sampler: &jaegerConfig.SamplerConfig{
Type: jaeger.SamplerTypeRemote,
Param: 1,
},
Reporter: &jaegerConfig.ReporterConfig{
LocalAgentHostPort: appConfig.Data.Jaeger.Addr,
LogSpans: true,
BufferFlushInterval: 5 * time.Second,
},
}
nativeTracerIo, closerIo, err := cfg.NewTracer(jaegerConfig.Logger(jaeger.StdLogger))
if err != nil {
zap.L().Error("nativeTracer err", zap.Error(err))
return
}
opentracing.SetGlobalTracer(nativeTracerIo)
jaegerProvider.Tracer = nativeTracerIo
jaegerProvider.Closer = closerIo
JaegerPoint = jaegerProvider
return
}