Fix: add default nop trace exporter to opentelemetry (#48869)

pull/48863/head^2
Serge Zaitsev 3 years ago committed by GitHub
parent 897db011eb
commit 31ff23f542
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 31
      pkg/infra/tracing/opentelemetry_tracing.go

@ -26,6 +26,8 @@ import (
const (
jaegerExporter string = "jaeger"
otlpExporter string = "otlp"
noopExporter string = "noop"
jaegerPropagator string = "jaeger"
w3cPropagator string = "w3c"
)
@ -51,12 +53,18 @@ type Opentelemetry struct {
propagation string
log log.Logger
tracerProvider *tracesdk.TracerProvider
tracerProvider tracerProvider
tracer trace.Tracer
Cfg *setting.Cfg
}
type tracerProvider interface {
trace.TracerProvider
Shutdown(ctx context.Context) error
}
type OpentelemetrySpan struct {
span trace.Span
}
@ -72,11 +80,20 @@ func (o otelErrHandler) Handle(err error) {
o(err)
}
type noopTracerProvider struct {
trace.TracerProvider
}
func (noopTracerProvider) Shutdown(ctx context.Context) error {
return nil
}
func (ots *Opentelemetry) parseSettingsOpentelemetry() error {
section, err := ots.Cfg.Raw.GetSection("tracing.opentelemetry.jaeger")
if err != nil {
return err
}
ots.enabled = noopExporter
ots.address = section.Key("address").MustString("")
if ots.address != "" {
@ -95,7 +112,6 @@ func (ots *Opentelemetry) parseSettingsOpentelemetry() error {
ots.enabled = otlpExporter
}
ots.propagation = section.Key("propagation").MustString("")
return nil
}
@ -148,8 +164,12 @@ func (ots *Opentelemetry) initOTLPTracerProvider() (*tracesdk.TracerProvider, er
return tp, nil
}
func (ots *Opentelemetry) initNoopTracerProvider() (tracerProvider, error) {
return &noopTracerProvider{TracerProvider: trace.NewNoopTracerProvider()}, nil
}
func (ots *Opentelemetry) initOpentelemetryTracer() error {
var tp *tracesdk.TracerProvider
var tp tracerProvider
var err error
switch ots.enabled {
case jaegerExporter:
@ -163,7 +183,10 @@ func (ots *Opentelemetry) initOpentelemetryTracer() error {
return err
}
default:
ots.log.Error("invalid trace exporter")
tp, err = ots.initNoopTracerProvider()
if err != nil {
return err
}
}
// Register our TracerProvider as the global so any imported

Loading…
Cancel
Save