fix(observabillity): propagate ctx to every log call and add resource to logging
All checks were successful
Build Docker Image / Build-Docker-Image (push) Successful in 5m5s
Build and Push Docker Image / Build-And-Push-Docker-Image (push) Successful in 5m36s

This commit was merged in pull request #187.
This commit is contained in:
2025-06-17 09:42:19 +02:00
parent ff3c7bdf52
commit 6c92206b3c
27 changed files with 288 additions and 266 deletions

View File

@@ -3,6 +3,7 @@ package internal
import (
"context"
"errors"
"log/slog"
"time"
"go.opentelemetry.io/otel"
@@ -13,7 +14,9 @@ import (
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/log"
"go.opentelemetry.io/otel/sdk/metric"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
)
var (
@@ -47,6 +50,14 @@ func setupOTelSDK(ctx context.Context) (func(context.Context) error, error) {
prop := newPropagator()
otel.SetTextMapPropagator(prop)
resources, err := resource.New(
ctx,
resource.WithAttributes(semconv.ServiceName("spend-sparrow")),
)
if err != nil {
slog.ErrorContext(ctx, "failed to create resource", "error", err)
}
// Set up trace provider.
tracerProvider, err := newTracerProvider(ctx)
if err != nil {
@@ -66,7 +77,7 @@ func setupOTelSDK(ctx context.Context) (func(context.Context) error, error) {
otel.SetMeterProvider(meterProvider)
// Set up logger provider.
loggerProvider, err := newLoggerProvider(ctx)
loggerProvider, err := newLoggerProvider(ctx, resources)
if err != nil {
handleErr(ctx, err)
return nil, err
@@ -85,7 +96,8 @@ func newPropagator() propagation.TextMapPropagator {
}
func newTracerProvider(ctx context.Context) (*trace.TracerProvider, error) {
exp, err := otlptracegrpc.New(ctx,
exp, err := otlptracegrpc.New(
ctx,
otlptracegrpc.WithEndpoint(otelEndpoint),
otlptracegrpc.WithInsecure(),
)
@@ -97,7 +109,8 @@ func newTracerProvider(ctx context.Context) (*trace.TracerProvider, error) {
}
func newMeterProvider(ctx context.Context) (*metric.MeterProvider, error) {
exp, err := otlpmetricgrpc.New(ctx,
exp, err := otlpmetricgrpc.New(
ctx,
otlpmetricgrpc.WithInsecure(),
otlpmetricgrpc.WithEndpoint(otelEndpoint))
if err != nil {
@@ -110,7 +123,7 @@ func newMeterProvider(ctx context.Context) (*metric.MeterProvider, error) {
exp, metric.WithInterval(15*time.Second)))), nil
}
func newLoggerProvider(ctx context.Context) (*log.LoggerProvider, error) {
func newLoggerProvider(ctx context.Context, resource *resource.Resource) (*log.LoggerProvider, error) {
logExporter, err := otlploggrpc.New(
ctx,
otlploggrpc.WithInsecure(),
@@ -121,6 +134,7 @@ func newLoggerProvider(ctx context.Context) (*log.LoggerProvider, error) {
loggerProvider := log.NewLoggerProvider(
log.WithProcessor(log.NewBatchProcessor(logExporter)),
log.WithResource(resource),
)
return loggerProvider, nil
}