package main import ( "context" "log" "net/http" "time" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/otel" otel2 "standard/open_telemetry/otel" ) func main() { ctx := context.Background() serviceName := "ServiceC" // 服务名称 jaegerEndpoint := "http://7162377c.r11.cpolar.top/api/v2/spans" // Jaeger 的 Collector Endpoint // 初始化 OpenTelemetry SDK shutdown, err := otel2.SetupOTelSDK(ctx, serviceName, jaegerEndpoint) if err != nil { log.Fatalf("Failed to setup OpenTelemetry SDK: %v", err) } defer shutdown(ctx) // 注册 /serviceC 路由 http.HandleFunc("/serviceC", func(w http.ResponseWriter, r *http.Request) { _, span := otel.Tracer(serviceName).Start(r.Context(), "ServiceC.serviceC") // 创建一个 Span log.Printf("Request headers: %+v", r.Header) defer span.End() // 模拟一些工作 time.Sleep(time.Second) }) log.Println("Starting ServiceC on :8082") log.Fatal(http.ListenAndServe(":8082", otelhttp.NewHandler(http.DefaultServeMux, serviceName))) }