From 4f4768925374b4e3aee2c689f02f63b3e1cecec7 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 13 Apr 2025 11:45:37 +0800 Subject: [PATCH] =?UTF-8?q?telemetry=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- telemetry/init.go | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) 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 }