Merged in feature/movetocfg (pull request #44)

Move OTEL to Config

* move
This commit is contained in:
Michael McGuinness
2025-02-03 19:01:37 +00:00
parent 00e7dca3c7
commit 84abc3a813
6 changed files with 55 additions and 74 deletions
@@ -1,7 +1,17 @@
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 {
@@ -11,3 +21,29 @@ type ObsConfig struct {
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
}
}
@@ -1,6 +1,8 @@
package observability_test
import (
"context"
"fmt"
"queryorchestration/internal/serviceconfig/observability"
"testing"
@@ -13,3 +15,19 @@ func TestIsOtelEnabled(t *testing.T) {
c.EnableOtel = true
assert.True(t, c.IsOtelEnabled())
}
func TestSetOtel(t *testing.T) {
ctx := context.Background()
cfg := &observability.ObsConfig{
EnableOtel: true,
}
clean := cfg.SetOtel(ctx)
assert.NotNil(t, clean)
defer func() {
if err := clean(); err != nil {
// Log cleanup error but don't panic since we're shutting down
fmt.Printf("Error during clean: %v", err)
}
}()
}