feat: 完善后端脚手架基础能力

This commit is contained in:
2026-08-09 01:06:21 +08:00
parent e311f416f2
commit f95311a107
61 changed files with 5630 additions and 521 deletions
+39
View File
@@ -0,0 +1,39 @@
package observability
import (
"context"
"skeleton/config"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/resource"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.34.0"
)
func InitTracing(ctx context.Context, cfg config.ObservabilityConfig) (func(context.Context) error, error) {
if !cfg.TracingEnabled {
return func(context.Context) error { return nil }, nil
}
options := []otlptracehttp.Option{otlptracehttp.WithEndpoint(cfg.TracingEndpoint)}
if cfg.TracingInsecure {
options = append(options, otlptracehttp.WithInsecure())
}
exporter, err := otlptracehttp.New(ctx, options...)
if err != nil {
return nil, err
}
res, err := resource.New(ctx, resource.WithAttributes(semconv.ServiceName(cfg.TracingService)))
if err != nil {
return nil, err
}
provider := sdktrace.NewTracerProvider(sdktrace.WithBatcher(exporter), sdktrace.WithResource(res))
otel.SetTracerProvider(provider)
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(
propagation.TraceContext{}, propagation.Baggage{},
))
return provider.Shutdown, nil
}