51 lines
1.2 KiB
Go
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
|
||
|
}
|