51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package globals
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"go.opentelemetry.io/otel"
|
|
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
|
|
"go.opentelemetry.io/otel/propagation"
|
|
"go.opentelemetry.io/otel/sdk/resource"
|
|
"go.opentelemetry.io/otel/sdk/trace"
|
|
|
|
semconv "go.opentelemetry.io/otel/semconv/v1.21.0"
|
|
)
|
|
|
|
var tp *trace.TracerProvider
|
|
|
|
func initOtel(ctx context.Context) error {
|
|
exporter, err := otlptracegrpc.New(ctx,
|
|
otlptracegrpc.WithEndpoint("localhost:4317"),
|
|
otlptracegrpc.WithInsecure(),
|
|
)
|
|
if err != nil {
|
|
return fmt.Errorf("初始化 trace exporter 失败: %w", err)
|
|
}
|
|
|
|
tp = trace.NewTracerProvider(
|
|
trace.WithBatcher(exporter),
|
|
trace.WithSampler(trace.AlwaysSample()),
|
|
trace.WithResource(
|
|
resource.NewWithAttributes(
|
|
semconv.SchemaURL,
|
|
semconv.ServiceNameKey.String("lanhu-platform"),
|
|
),
|
|
),
|
|
)
|
|
|
|
otel.SetTracerProvider(tp)
|
|
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))
|
|
|
|
return nil
|
|
}
|
|
|
|
func closeOtel() error {
|
|
err := tp.Shutdown(context.Background())
|
|
if err != nil {
|
|
return fmt.Errorf("关闭 trace provider 失败: %v", err)
|
|
}
|
|
return nil
|
|
}
|