mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Fix: add default nop trace exporter to opentelemetry (#48869)
This commit is contained in:
parent
897db011eb
commit
31ff23f542
@ -24,8 +24,10 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
jaegerExporter string = "jaeger"
|
||||
otlpExporter string = "otlp"
|
||||
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…
Reference in New Issue
Block a user