diff --git a/telemetry/init.go b/telemetry/init.go index da12db1..3adead3 100644 --- a/telemetry/init.go +++ b/telemetry/init.go @@ -4,10 +4,12 @@ import ( "context" "errors" "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/exporters/otlp/otlptrace" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp" "go.opentelemetry.io/otel/propagation" + "go.opentelemetry.io/otel/sdk/resource" "go.opentelemetry.io/otel/sdk/trace" - "time" + semconv "go.opentelemetry.io/otel/semconv/v1.30.0" ) func InitTelemetry(ctx context.Context) (shutdown func(context.Context) error, err error) { @@ -55,15 +57,28 @@ func newPropagator() propagation.TextMapPropagator { func newJaegerTraceProvider(ctx context.Context) (*trace.TracerProvider, error) { // 创建一个使用 HTTP 协议连接本机Jaeger的 Exporter - traceExporter, err := otlptracehttp.New(ctx, - otlptracehttp.WithEndpointURL("https://oltp.jerryyan.top/v1/traces")) + res, err := resource.New(ctx, + resource.WithFromEnv(), + resource.WithProcess(), + resource.WithTelemetrySDK(), + resource.WithHost(), + resource.WithAttributes( + // 在可观测链路 OpenTelemetry 版后端显示的服务名称。 + semconv.ServiceNameKey.String("VPT"), + ), + ) if err != nil { return nil, err } - traceProvider := trace.NewTracerProvider( - trace.WithBatcher(traceExporter, - // 默认为 5s。为便于演示,设置为 1s。 - trace.WithBatchTimeout(time.Second)), + traceClientHttp := otlptracehttp.NewClient( + otlptracehttp.WithEndpointURL("https://oltp.jerryyan.top/v1/traces")) + otlptracehttp.WithCompression(1) + traceExp, err := otlptrace.New(ctx, traceClientHttp) + bsp := trace.NewBatchSpanProcessor(traceExp) + tracerProvider := trace.NewTracerProvider( + trace.WithSampler(trace.AlwaysSample()), + trace.WithResource(res), + trace.WithSpanProcessor(bsp), ) - return traceProvider, nil + return tracerProvider, nil }