@@ -19,9 +19,7 @@ import (
1919 "strings"
2020 "time"
2121
22- "contrib.go.opencensus.io/exporter/jaeger"
2322 oc_prom "contrib.go.opencensus.io/exporter/prometheus"
24- datadog "github.com/DataDog/opencensus-go-exporter-datadog"
2523 "github.com/dustin/go-humanize"
2624 "github.com/golang/glog"
2725 "github.com/prometheus/client_golang/prometheus"
@@ -30,7 +28,6 @@ import (
3028 ostats "go.opencensus.io/stats"
3129 "go.opencensus.io/stats/view"
3230 "go.opencensus.io/tag"
33- "go.opencensus.io/trace"
3431 "go.opentelemetry.io/otel"
3532 "go.opentelemetry.io/otel/exporters/otlp/otlptrace"
3633 "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
@@ -651,34 +648,69 @@ func SinceMs(startTime time.Time) float64 {
651648func RegisterExporters (conf * viper.Viper , service string ) {
652649 if traceFlag := conf .GetString ("trace" ); len (traceFlag ) > 0 {
653650 t := z .NewSuperFlag (traceFlag ).MergeAndCheckDefault (TraceDefaults )
651+ // Create resource with service information
652+ res := resource .NewWithAttributes (
653+ semconv .SchemaURL ,
654+ semconv .ServiceNameKey .String (service ),
655+ )
656+
657+ // Configure the batch span processor options
658+ batchOpts := []traceTel.BatchSpanProcessorOption {
659+ traceTel .WithMaxExportBatchSize (traceTel .DefaultMaxExportBatchSize ),
660+ traceTel .WithBatchTimeout (traceTel .DefaultScheduleDelay * time .Millisecond ),
661+ }
662+
663+ // Set up Jaeger exporter if configured
654664 if collector := t .GetString ("jaeger" ); len (collector ) > 0 {
655- // Port details: https://www.jaegertracing.io/docs/getting-started/
656- // Default collectorEndpointURI := "http://localhost:14268"
657- je , err := jaeger .NewExporter (jaeger.Options {
658- Endpoint : collector ,
659- ServiceName : service ,
660- })
665+ // Create Jaeger exporter using OpenTelemetry OTLP
666+ jaegerExp , err := otlptrace .New (
667+ context .Background (),
668+ otlptracehttp .NewClient (
669+ otlptracehttp .WithEndpoint (collector ),
670+ otlptracehttp .WithInsecure (),
671+ ),
672+ )
661673 if err != nil {
662674 log .Fatalf ("Failed to create the Jaeger exporter: %v" , err )
663675 }
664- // And now finally register it as a Trace Exporter
665- trace .RegisterExporter (je )
676+
677+ // Create trace provider with Jaeger exporter
678+ tp := traceTel .NewTracerProvider (
679+ traceTel .WithBatcher (jaegerExp , batchOpts ... ),
680+ traceTel .WithResource (res ),
681+ traceTel .WithSampler (traceTel .AlwaysSample ()),
682+ )
683+
684+ // Set the trace provider
685+ otel .SetTracerProvider (tp )
686+ glog .Infof ("Registered Jaeger exporter for tracing" )
666687 }
688+
689+ // Set up OTLP exporter for Datadog if configured
690+ // Note: In OpenTelemetry, typically Datadog integration uses the OTLP exporter
667691 if collector := t .GetString ("datadog" ); len (collector ) > 0 {
668- exporter , err := datadog .NewExporter (datadog.Options {
669- Service : service ,
670- TraceAddr : collector ,
671- })
692+ // Create OTLP exporter for Datadog
693+ ddExporter , err := otlptrace .New (
694+ context .Background (),
695+ otlptracehttp .NewClient (
696+ otlptracehttp .WithEndpoint (collector ),
697+ otlptracehttp .WithInsecure (),
698+ ),
699+ )
672700 if err != nil {
673- log .Fatal ( err )
701+ log .Fatalf ( "Failed to create OTLP exporter for Datadog: %v" , err )
674702 }
675703
676- trace .RegisterExporter (exporter )
704+ // Create trace provider with Datadog exporter
705+ tp := traceTel .NewTracerProvider (
706+ traceTel .WithBatcher (ddExporter , batchOpts ... ),
707+ traceTel .WithResource (res ),
708+ traceTel .WithSampler (traceTel .AlwaysSample ()),
709+ )
677710
678- // For demoing purposes, always sample.
679- trace .ApplyConfig (trace.Config {
680- DefaultSampler : trace .AlwaysSample (),
681- })
711+ // Set the trace provider
712+ otel .SetTracerProvider (tp )
713+ glog .Infof ("Registered Datadog exporter for tracing" )
682714 }
683715 }
684716
0 commit comments