[hw-7] add metrics, tracing

This commit is contained in:
Никита Шубин
2025-07-26 14:15:40 +00:00
parent 342bd3f726
commit 4396bebe80
38 changed files with 717 additions and 36 deletions

View File

@@ -0,0 +1,48 @@
package tracing
import (
"context"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
oteltrace "go.opentelemetry.io/otel/trace"
)
var (
globalTracer oteltrace.Tracer
provider *trace.TracerProvider
)
func NewTracer(serviceName string, option ...trace.TracerProviderOption) oteltrace.Tracer {
option = append([]trace.TracerProviderOption{
trace.WithResource(resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceName(serviceName),
)),
}, option...)
provider = trace.NewTracerProvider(option...)
otel.SetTracerProvider(provider)
globalTracer = otel.GetTracerProvider().Tracer("loms")
return globalTracer
}
func Shutdown(ctx context.Context) error {
if provider != nil {
return provider.Shutdown(ctx)
}
return nil
}
func Tracer() oteltrace.Tracer {
if globalTracer == nil {
return otel.Tracer("loms")
}
return globalTracer
}

View File

@@ -0,0 +1,22 @@
package tracing
import (
"context"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
)
func InitOTLP(ctx context.Context, serviceName, endpoint string) (shutdown func(context.Context) error, err error) {
exp, err := otlptracehttp.New(ctx,
otlptracehttp.WithEndpoint(endpoint),
otlptracehttp.WithInsecure(),
)
if err != nil {
return nil, err
}
NewTracer(serviceName, sdktrace.WithBatcher(exp))
return Shutdown, nil
}