From 5ab4952fe6eeb91db247f58d5b5611cf5bfd706d Mon Sep 17 00:00:00 2001 From: Robin Dittmar Date: Thu, 9 Jul 2026 13:45:24 +0200 Subject: [PATCH] Added OpenTelemetry config object --- cmd/api-server/main.go | 12 ++++++++++-- internal/telemetry/otel.go | 17 ++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/cmd/api-server/main.go b/cmd/api-server/main.go index 7242c7e..ae191bc 100644 --- a/cmd/api-server/main.go +++ b/cmd/api-server/main.go @@ -15,6 +15,9 @@ import ( "github.com/robindittmar/dttmr-api/internal/telemetry" ) +type Config struct { +} + func main() { serviceName := "dttmr-api" serviceVersion := "0.1.0" @@ -32,13 +35,18 @@ func run(serviceName string, serviceVersion string) error { Level: slog.LevelInfo, }) traceHandler := &telemetry.TraceHandler{Handler: baseHandler} - logger := slog.New(traceHandler) slog.SetDefault(logger) slog.Info("Starting service", slog.String("service", serviceName), slog.String("version", serviceVersion)) - shutdownTelemetry, err := telemetry.Init(context.Background(), serviceName, serviceVersion) + telCfg := telemetry.Config{ + ServiceName: serviceName, + ServiceVersion: serviceVersion, + Endpoint: "localhost:4317", + Environment: "development", + } + shutdownTelemetry, err := telemetry.Init(context.Background(), telCfg) if err != nil { slog.Error("Failed to initialize telemetry", err) return err diff --git a/internal/telemetry/otel.go b/internal/telemetry/otel.go index 9b28412..d24c86a 100644 --- a/internal/telemetry/otel.go +++ b/internal/telemetry/otel.go @@ -14,11 +14,18 @@ import ( semconv "go.opentelemetry.io/otel/semconv/v1.24.0" ) -func Init(ctx context.Context, serviceName string, version string) (func(context.Context) error, error) { +type Config struct { + ServiceName string + ServiceVersion string + Endpoint string + Environment string +} + +func Init(ctx context.Context, cfg Config) (func(context.Context) error, error) { res, err := resource.New(ctx, resource.WithAttributes( - semconv.ServiceName(serviceName), - semconv.ServiceVersion(version), + semconv.ServiceName(cfg.ServiceName), + semconv.ServiceVersion(cfg.ServiceVersion), ), ) if err != nil { @@ -34,7 +41,7 @@ func Init(ctx context.Context, serviceName string, version string) (func(context traceExporter, err := otlptracegrpc.New(ctx, otlptracegrpc.WithInsecure(), // TODO: for local development - otlptracegrpc.WithEndpoint("localhost:4317"), + otlptracegrpc.WithEndpoint(cfg.Endpoint), ) if err != nil { return nil, err @@ -47,7 +54,7 @@ func Init(ctx context.Context, serviceName string, version string) (func(context metricExporter, err := otlpmetricgrpc.New(ctx, otlpmetricgrpc.WithInsecure(), - otlpmetricgrpc.WithEndpoint("localhost:4317"), + otlpmetricgrpc.WithEndpoint(cfg.Endpoint), ) if err != nil { return nil, err