tracing: support for shutting down the trace provider

This commit is contained in:
Ask Bjørn Hansen 2023-10-21 21:59:10 -07:00
parent 9d136b2502
commit a4447c97f6

View File

@ -19,6 +19,8 @@ import (
// https://github.com/open-telemetry/opentelemetry-go/blob/main/exporters/otlp/otlptrace/otlptracehttp/example_test.go // https://github.com/open-telemetry/opentelemetry-go/blob/main/exporters/otlp/otlptrace/otlptracehttp/example_test.go
type TpShutdownFunc func(ctx context.Context) error
func Tracer() trace.Tracer { func Tracer() trace.Tracer {
traceProvider := otel.GetTracerProvider() traceProvider := otel.GetTracerProvider()
return traceProvider.Tracer("ntppool-tracer") return traceProvider.Tracer("ntppool-tracer")
@ -29,7 +31,11 @@ type TracerConfig struct {
Environment string Environment string
} }
func InitTracer(ctx context.Context, cfg *TracerConfig) error { var emptyTpShutdownFunc = func(_ context.Context) error {
return nil
}
func InitTracer(ctx context.Context, cfg *TracerConfig) (TpShutdownFunc, error) {
log := logger.Setup() log := logger.Setup()
@ -43,10 +49,14 @@ func InitTracer(ctx context.Context, cfg *TracerConfig) error {
} }
if err != nil { if err != nil {
return err return emptyTpShutdownFunc, err
}
if exporter == nil {
log.Warn("tracing not configured")
return emptyTpShutdownFunc, nil
} }
if exporter != nil {
tp := otelsdktrace.NewTracerProvider( tp := otelsdktrace.NewTracerProvider(
otelsdktrace.WithSampler(otelsdktrace.AlwaysSample()), otelsdktrace.WithSampler(otelsdktrace.AlwaysSample()),
otelsdktrace.WithBatcher(exporter), otelsdktrace.WithBatcher(exporter),
@ -55,11 +65,8 @@ func InitTracer(ctx context.Context, cfg *TracerConfig) error {
otel.SetTracerProvider(tp) otel.SetTracerProvider(tp)
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})) otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))
} else {
log.Warn("tracing not configured")
}
return nil return tp.Shutdown, nil
} }
func newOLTPExporter(ctx context.Context) (otelsdktrace.SpanExporter, error) { func newOLTPExporter(ctx context.Context) (otelsdktrace.SpanExporter, error) {