github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/tracing/jaeger.go (about) 1 package tracing 2 3 import ( 4 "fmt" 5 6 "go.opentelemetry.io/otel/exporters/trace/jaeger" 7 export "go.opentelemetry.io/otel/sdk/export/trace" 8 ) 9 10 // Jaeger service to export traces to 11 type Jaeger struct { 12 Endpoint string `long:"jaeger-endpoint" description:"jaeger http-based thrift collector"` 13 Tags map[string]string `long:"jaeger-tags" description:"tags to add to the components"` 14 Service string `long:"jaeger-service" description:"jaeger process service name" default:"web"` 15 } 16 17 // IsConfigured identifies if an endpoint has been set 18 func (j Jaeger) IsConfigured() bool { 19 return j.Endpoint != "" 20 } 21 22 // Exporter returns a SpanExporter to sync spans to Jaeger 23 func (j Jaeger) Exporter() (export.SpanSyncer, error) { 24 exporter, err := jaeger.NewRawExporter( 25 jaeger.WithCollectorEndpoint(j.Endpoint), 26 jaeger.WithProcess(jaeger.Process{ 27 ServiceName: j.Service, 28 Tags: keyValueSlice(j.Tags), 29 }), 30 ) 31 if err != nil { 32 err = fmt.Errorf("failed to create jaeger exporter: %w", err) 33 return nil, err 34 } 35 36 return exporter, nil 37 }