From 6691f1eb1fc22ac737186251e25b0c277d31e15f Mon Sep 17 00:00:00 2001 From: Aditi Ahuja Date: Tue, 7 Jun 2022 22:08:33 +0530 Subject: [PATCH] added jaeger exporter Signed-off-by: Aditi Ahuja --- pkg/tracing/client/factory.go | 8 ++++++-- pkg/tracing/jaeger/jaeger.go | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/pkg/tracing/client/factory.go b/pkg/tracing/client/factory.go index 55753724f93..94073ef9a70 100644 --- a/pkg/tracing/client/factory.go +++ b/pkg/tracing/client/factory.go @@ -100,8 +100,12 @@ func NewTracer(ctx context.Context, logger log.Logger, metrics *prometheus.Regis tracer, closerFunc := migration.Bridge(tracerProvider, logger) return tracer, closerFunc, nil case string(Jaeger): - // next step - create newTracerProvider like google_cloud - return jaeger.NewTracer(ctx, logger, metrics, config) + tracerProvider, err := jaeger.NewTracerProvider(ctx, logger, config) + if err != nil { + return nil, nil, errors.Wrap(err, "new tracer provider err") + } + tracer, closerFunc := migration.Bridge(tracerProvider, logger) + return tracer, closerFunc, nil case string(ElasticAPM): return elasticapm.NewTracer(config) case string(Lightstep): diff --git a/pkg/tracing/jaeger/jaeger.go b/pkg/tracing/jaeger/jaeger.go index 872976e5f73..b2646555784 100644 --- a/pkg/tracing/jaeger/jaeger.go +++ b/pkg/tracing/jaeger/jaeger.go @@ -19,6 +19,10 @@ import ( "github.com/uber/jaeger-client-go/config" jaeger_prometheus "github.com/uber/jaeger-lib/metrics/prometheus" otel_jaeger "go.opentelemetry.io/otel/exporters/jaeger" + "go.opentelemetry.io/otel/sdk/resource" + tracesdk "go.opentelemetry.io/otel/sdk/trace" + semconv "go.opentelemetry.io/otel/semconv/v1.4.0" + "gopkg.in/yaml.v2" ) // Tracer extends opentracing.Tracer. @@ -34,6 +38,29 @@ func (t *Tracer) GetTraceIDFromSpanContext(ctx opentracing.SpanContext) (string, return "", false } +func NewTracerProvider(ctx context.Context, logger log.Logger, conf []byte) (*tracesdk.TracerProvider, error) { + config := Config{} + if err := yaml.Unmarshal(conf, &config); err != nil { + return nil, err + } + + exporter, err := otel_jaeger.New(otel_jaeger.WithCollectorEndpoint()) + if err != nil { + return nil, err + } + + processor := tracesdk.NewBatchSpanProcessor(exporter) + tp := tracesdk.NewTracerProvider( + tracesdk.WithSpanProcessor(processor), + tracesdk.WithBatcher(exporter), + tracesdk.WithResource(resource.NewWithAttributes( + semconv.SchemaURL, + semconv.ServiceNameKey.String(config.ServiceName), + )), + ) + return tp, nil +} + // NewTracer create tracer from YAML. func NewTracer(ctx context.Context, logger log.Logger, metrics *prometheus.Registry, conf []byte) (opentracing.Tracer, io.Closer, error) { var (