diff --git a/tracer/otel_tracer.go b/tracer/otel_tracer.go index 3f9ba1b..81b0b54 100644 --- a/tracer/otel_tracer.go +++ b/tracer/otel_tracer.go @@ -34,10 +34,22 @@ func Init(ctx context.Context) func(context.Context) error { slog.Error("[OTEL] Failed to create resource", "err", err) } - traceExporter, _ := otlptracegrpc.New(ctx, + retryConfig := otlptracegrpc.RetryConfig{ + Enabled: true, + InitialInterval: 1 * time.Second, + MaxInterval: 10 * time.Second, + } + + // Trace Exporter + traceExporter, err := otlptracegrpc.New(ctx, otlptracegrpc.WithEndpoint(endpoint), otlptracegrpc.WithInsecure(), + otlptracegrpc.WithRetry(retryConfig), ) + if err != nil { + slog.Error("[OTEL] Failed to create trace exporter", "err", err) + } + tp := sdktrace.NewTracerProvider( sdktrace.WithBatcher(traceExporter), sdktrace.WithResource(res), @@ -45,10 +57,16 @@ func Init(ctx context.Context) func(context.Context) error { ) otel.SetTracerProvider(tp) - metricExporter, _ := otlpmetricgrpc.New(ctx, + // Metric Exporter + metricExporter, err := otlpmetricgrpc.New(ctx, otlpmetricgrpc.WithEndpoint(endpoint), otlpmetricgrpc.WithInsecure(), + otlpmetricgrpc.WithRetry(otlpmetricgrpc.RetryConfig(retryConfig)), ) + if err != nil { + slog.Error("[OTEL] Failed to create metric exporter", "err", err) + } + mp := sdkmetric.NewMeterProvider( sdkmetric.WithResource(res), sdkmetric.WithReader(sdkmetric.NewPeriodicReader(metricExporter, @@ -56,10 +74,16 @@ func Init(ctx context.Context) func(context.Context) error { ) otel.SetMeterProvider(mp) - logExporter, _ := otlploggrpc.New(ctx, + // Log Exporter + logExporter, err := otlploggrpc.New(ctx, otlploggrpc.WithEndpoint(endpoint), otlploggrpc.WithInsecure(), + otlploggrpc.WithRetry(otlploggrpc.RetryConfig(retryConfig)), ) + if err != nil { + slog.Error("[OTEL] Failed to create log exporter", "err", err) + } + lp := sdklog.NewLoggerProvider( sdklog.WithResource(res), sdklog.WithProcessor(sdklog.NewBatchProcessor(logExporter)),