feat(observabillity): #115 add traces
All checks were successful
Build Docker Image / Build-Docker-Image (push) Successful in 5m14s

This commit is contained in:
2025-06-07 12:07:13 +02:00
parent 587de563f9
commit 1fc66eca61
12 changed files with 137 additions and 47 deletions

View File

@@ -8,12 +8,16 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
// "go.opentelemetry.io/otel/exporters/stdout/stdoutlog".
// "go.opentelemetry.io/otel/exporters/stdout/stdouttrace".
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
// "go.opentelemetry.io/otel/log/global".
// "go.opentelemetry.io/otel/propagation".
"go.opentelemetry.io/otel/propagation"
// "go.opentelemetry.io/otel/sdk/log".
"go.opentelemetry.io/otel/sdk/metric"
// "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/sdk/trace"
)
var (
otelEndpoint = "192.168.188.155:4317"
)
// setupOTelSDK bootstraps the OpenTelemetry pipeline.
@@ -40,17 +44,17 @@ func setupOTelSDK(ctx context.Context) (func(context.Context) error, error) {
}
// Set up propagator.
// prop := newPropagator()
// otel.SetTextMapPropagator(prop)
prop := newPropagator()
otel.SetTextMapPropagator(prop)
// Set up trace provider.
// tracerProvider, err := newTracerProvider()
// if err != nil {
// handleErr(err)
// return
// }
// shutdownFuncs = append(shutdownFuncs, tracerProvider.Shutdown)
// otel.SetTracerProvider(tracerProvider)
tracerProvider, err := newTracerProvider(ctx)
if err != nil {
handleErr(ctx, err)
return nil, err
}
shutdownFuncs = append(shutdownFuncs, tracerProvider.Shutdown)
otel.SetTracerProvider(tracerProvider)
// Set up meter provider.
meterProvider, err := newMeterProvider(ctx)
@@ -73,42 +77,37 @@ func setupOTelSDK(ctx context.Context) (func(context.Context) error, error) {
return shutdown, nil
}
// func newPropagator() propagation.TextMapPropagator {
// return propagation.NewCompositeTextMapPropagator(
// propagation.TraceContext{},
// propagation.Baggage{},
// )
// }
func newPropagator() propagation.TextMapPropagator {
return propagation.NewCompositeTextMapPropagator(
propagation.TraceContext{},
propagation.Baggage{},
)
}
// func newTracerProvider() (*trace.TracerProvider, error) {
// traceExporter, err := stdouttrace.New(
// stdouttrace.WithPrettyPrint())
// if err != nil {
// return nil, err
// }
//
// tracerProvider := trace.NewTracerProvider(
// trace.WithBatcher(traceExporter,
// // Default is 5s. Set to 1s for demonstrative purposes.
// trace.WithBatchTimeout(time.Second)),
// )
// return tracerProvider, nil
// }
func newMeterProvider(ctx context.Context) (*metric.MeterProvider, error) {
exp, err := otlpmetricgrpc.New(ctx,
otlpmetricgrpc.WithInsecure(),
otlpmetricgrpc.WithEndpoint("192.168.188.155:4317"))
func newTracerProvider(ctx context.Context) (*trace.TracerProvider, error) {
exp, err := otlptracegrpc.New(ctx,
otlptracegrpc.WithEndpoint(otelEndpoint),
otlptracegrpc.WithInsecure(),
)
if err != nil {
return nil, err
}
meterProvider := metric.NewMeterProvider(
return trace.NewTracerProvider(trace.WithBatcher(exp)), nil
}
func newMeterProvider(ctx context.Context) (*metric.MeterProvider, error) {
exp, err := otlpmetricgrpc.New(ctx,
otlpmetricgrpc.WithInsecure(),
otlpmetricgrpc.WithEndpoint(otelEndpoint))
if err != nil {
return nil, err
}
return metric.NewMeterProvider(
metric.WithReader(
metric.NewPeriodicReader(
exp, metric.WithInterval(15*time.Second))))
return meterProvider, nil
exp, metric.WithInterval(15*time.Second)))), nil
}
// func newLoggerProvider() (*log.LoggerProvider, error) {