84abc3a813
Move OTEL to Config * move
50 lines
953 B
Go
50 lines
953 B
Go
package observability
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
|
|
"go.opentelemetry.io/otel"
|
|
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
|
|
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
|
)
|
|
|
|
type ConfigProvider interface {
|
|
IsOtelEnabled() bool
|
|
SetOtel(context.Context) func() error
|
|
}
|
|
|
|
type ObsConfig struct {
|
|
EnableOtel bool `env:"ENABLE_OTEL" envDefault:"false"`
|
|
}
|
|
|
|
func (o *ObsConfig) IsOtelEnabled() bool {
|
|
return o.EnableOtel
|
|
}
|
|
|
|
func (o *ObsConfig) SetOtel(ctx context.Context) func() error {
|
|
if !o.EnableOtel {
|
|
slog.Warn("OpenTelemetry is disabled. Set ENABLE_OTEL to true to enable.")
|
|
return func() error { return nil }
|
|
}
|
|
|
|
exporter, err := otlptracegrpc.New(ctx)
|
|
if err != nil {
|
|
return func() error { return nil }
|
|
}
|
|
|
|
tp := sdktrace.NewTracerProvider(
|
|
sdktrace.WithBatcher(exporter),
|
|
)
|
|
|
|
otel.SetTracerProvider(tp)
|
|
|
|
return func() error {
|
|
err := tp.Shutdown(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
}
|