فهرست منبع

use sdktrace instead of trace for opentelemetry to avoid conflicts (#1005)

* use sdktrace instead of trace for opentelemetry to avoid conflicts

* disable opentelemetry for right now
Kevin Wan 3 سال پیش
والد
کامیت
bdec5f2349
6فایلهای تغییر یافته به همراه30 افزوده شده و 21 حذف شده
  1. 11 9
      core/service/serviceconf.go
  2. 5 5
      core/trace/opentelemetry/agent.go
  3. 4 3
      core/trace/opentelemetry/tracer.go
  4. 4 0
      go.sum
  5. 6 2
      tools/goctl/api/gogen/genhandlers.go
  6. 0 2
      zrpc/internal/rpcserver.go

+ 11 - 9
core/service/serviceconf.go

@@ -7,7 +7,6 @@ import (
 	"github.com/tal-tech/go-zero/core/logx"
 	"github.com/tal-tech/go-zero/core/logx"
 	"github.com/tal-tech/go-zero/core/prometheus"
 	"github.com/tal-tech/go-zero/core/prometheus"
 	"github.com/tal-tech/go-zero/core/stat"
 	"github.com/tal-tech/go-zero/core/stat"
-	"github.com/tal-tech/go-zero/core/trace/opentelemetry"
 )
 )
 
 
 const (
 const (
@@ -27,10 +26,11 @@ const (
 type ServiceConf struct {
 type ServiceConf struct {
 	Name       string
 	Name       string
 	Log        logx.LogConf
 	Log        logx.LogConf
-	Mode       string               `json:",default=pro,options=dev|test|rt|pre|pro"`
-	MetricsUrl string               `json:",optional"`
-	Prometheus prometheus.Config    `json:",optional"`
-	Telemetry  opentelemetry.Config `json:",optional"`
+	Mode       string            `json:",default=pro,options=dev|test|rt|pre|pro"`
+	MetricsUrl string            `json:",optional"`
+	Prometheus prometheus.Config `json:",optional"`
+	// TODO: enable it in v1.2.1
+	// Telemetry  opentelemetry.Config `json:",optional"`
 }
 }
 
 
 // MustSetUp sets up the service, exits on error.
 // MustSetUp sets up the service, exits on error.
@@ -45,16 +45,18 @@ func (sc ServiceConf) SetUp() error {
 	if len(sc.Log.ServiceName) == 0 {
 	if len(sc.Log.ServiceName) == 0 {
 		sc.Log.ServiceName = sc.Name
 		sc.Log.ServiceName = sc.Name
 	}
 	}
-	if len(sc.Telemetry.Name) == 0 {
-		sc.Telemetry.Name = sc.Name
-	}
 	if err := logx.SetUp(sc.Log); err != nil {
 	if err := logx.SetUp(sc.Log); err != nil {
 		return err
 		return err
 	}
 	}
 
 
 	sc.initMode()
 	sc.initMode()
 	prometheus.StartAgent(sc.Prometheus)
 	prometheus.StartAgent(sc.Prometheus)
-	opentelemetry.StartAgent(sc.Telemetry)
+
+	// TODO: enable it in v1.2.1
+	// if len(sc.Telemetry.Name) == 0 {
+	// 	sc.Telemetry.Name = sc.Name
+	// }
+	// opentelemetry.StartAgent(sc.Telemetry)
 
 
 	if len(sc.MetricsUrl) > 0 {
 	if len(sc.MetricsUrl) > 0 {
 		stat.SetReportWriter(stat.NewRemoteWriter(sc.MetricsUrl))
 		stat.SetReportWriter(stat.NewRemoteWriter(sc.MetricsUrl))

+ 5 - 5
core/trace/opentelemetry/agent.go

@@ -9,7 +9,7 @@ import (
 	"go.opentelemetry.io/otel/exporters/jaeger"
 	"go.opentelemetry.io/otel/exporters/jaeger"
 	"go.opentelemetry.io/otel/propagation"
 	"go.opentelemetry.io/otel/propagation"
 	"go.opentelemetry.io/otel/sdk/resource"
 	"go.opentelemetry.io/otel/sdk/resource"
-	tracesdk "go.opentelemetry.io/otel/sdk/trace"
+	sdktrace "go.opentelemetry.io/otel/sdk/trace"
 	semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
 	semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
 )
 )
 
 
@@ -41,13 +41,13 @@ func StartAgent(c Config) {
 			return
 			return
 		}
 		}
 
 
-		tp := tracesdk.NewTracerProvider(
+		tp := sdktrace.NewTracerProvider(
 			// Set the sampling rate based on the parent span to 100%
 			// Set the sampling rate based on the parent span to 100%
-			tracesdk.WithSampler(tracesdk.ParentBased(tracesdk.TraceIDRatioBased(c.Sampler))),
+			sdktrace.WithSampler(sdktrace.ParentBased(sdktrace.TraceIDRatioBased(c.Sampler))),
 			// Always be sure to batch in production.
 			// Always be sure to batch in production.
-			tracesdk.WithBatcher(exp),
+			sdktrace.WithBatcher(exp),
 			// Record information about this application in an Resource.
 			// Record information about this application in an Resource.
-			tracesdk.WithResource(resource.NewSchemaless(semconv.ServiceNameKey.String(c.Name))),
+			sdktrace.WithResource(resource.NewSchemaless(semconv.ServiceNameKey.String(c.Name))),
 		)
 		)
 
 
 		otel.SetTracerProvider(tp)
 		otel.SetTracerProvider(tp)

+ 4 - 3
core/trace/opentelemetry/tracer.go

@@ -5,7 +5,7 @@ import (
 
 
 	"go.opentelemetry.io/otel/baggage"
 	"go.opentelemetry.io/otel/baggage"
 	"go.opentelemetry.io/otel/propagation"
 	"go.opentelemetry.io/otel/propagation"
-	"go.opentelemetry.io/otel/trace"
+	sdktrace "go.opentelemetry.io/otel/trace"
 	"google.golang.org/grpc/metadata"
 	"google.golang.org/grpc/metadata"
 )
 )
 
 
@@ -46,10 +46,11 @@ func Inject(ctx context.Context, p propagation.TextMapPropagator, metadata *meta
 }
 }
 
 
 // Extract extracts the metadata from ctx.
 // Extract extracts the metadata from ctx.
-func Extract(ctx context.Context, p propagation.TextMapPropagator, metadata *metadata.MD) (baggage.Baggage, trace.SpanContext) {
+func Extract(ctx context.Context, p propagation.TextMapPropagator, metadata *metadata.MD) (
+	baggage.Baggage, sdktrace.SpanContext) {
 	ctx = p.Extract(ctx, &metadataSupplier{
 	ctx = p.Extract(ctx, &metadataSupplier{
 		metadata: metadata,
 		metadata: metadata,
 	})
 	})
 
 
-	return baggage.FromContext(ctx), trace.SpanContextFromContext(ctx)
+	return baggage.FromContext(ctx), sdktrace.SpanContextFromContext(ctx)
 }
 }

+ 4 - 0
go.sum

@@ -358,12 +358,16 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
 go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
 go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
 go.opentelemetry.io/otel v1.0.0-RC2 h1:SHhxSjB+omnGZPgGlKe+QMp3MyazcOHdQ8qwo89oKbg=
 go.opentelemetry.io/otel v1.0.0-RC2 h1:SHhxSjB+omnGZPgGlKe+QMp3MyazcOHdQ8qwo89oKbg=
 go.opentelemetry.io/otel v1.0.0-RC2/go.mod h1:w1thVQ7qbAy8MHb0IFj8a5Q2QU0l2ksf8u/CN8m3NOM=
 go.opentelemetry.io/otel v1.0.0-RC2/go.mod h1:w1thVQ7qbAy8MHb0IFj8a5Q2QU0l2ksf8u/CN8m3NOM=
+go.opentelemetry.io/otel v1.0.0-RC3 h1:kvwiyEkiUT/JaadXzVLI/R1wDO934A7r3Bs2wEe6wqA=
+go.opentelemetry.io/otel v1.0.0-RC3/go.mod h1:Ka5j3ua8tZs4Rkq4Ex3hwgBgOchyPVq5S6P2lz//nKQ=
 go.opentelemetry.io/otel/exporters/jaeger v1.0.0-RC2 h1:RF0nWsIDpDBe+s06lkLxUw9CWQUAhO6hBSxxB7dz45s=
 go.opentelemetry.io/otel/exporters/jaeger v1.0.0-RC2 h1:RF0nWsIDpDBe+s06lkLxUw9CWQUAhO6hBSxxB7dz45s=
 go.opentelemetry.io/otel/exporters/jaeger v1.0.0-RC2/go.mod h1:sZZqN3Vb0iT+NE6mZ1S7sNyH3t4PFk6ElK5TLGFBZ7E=
 go.opentelemetry.io/otel/exporters/jaeger v1.0.0-RC2/go.mod h1:sZZqN3Vb0iT+NE6mZ1S7sNyH3t4PFk6ElK5TLGFBZ7E=
 go.opentelemetry.io/otel/sdk v1.0.0-RC2 h1:ROuteeSCBaZNjiT9JcFzZepmInDvLktR28Y6qKo8bCs=
 go.opentelemetry.io/otel/sdk v1.0.0-RC2 h1:ROuteeSCBaZNjiT9JcFzZepmInDvLktR28Y6qKo8bCs=
 go.opentelemetry.io/otel/sdk v1.0.0-RC2/go.mod h1:fgwHyiDn4e5k40TD9VX243rOxXR+jzsWBZYA2P5jpEw=
 go.opentelemetry.io/otel/sdk v1.0.0-RC2/go.mod h1:fgwHyiDn4e5k40TD9VX243rOxXR+jzsWBZYA2P5jpEw=
 go.opentelemetry.io/otel/trace v1.0.0-RC2 h1:dunAP0qDULMIT82atj34m5RgvsIK6LcsXf1c/MsYg1w=
 go.opentelemetry.io/otel/trace v1.0.0-RC2 h1:dunAP0qDULMIT82atj34m5RgvsIK6LcsXf1c/MsYg1w=
 go.opentelemetry.io/otel/trace v1.0.0-RC2/go.mod h1:JPQ+z6nNw9mqEGT8o3eoPTdnNI+Aj5JcxEsVGREIAy4=
 go.opentelemetry.io/otel/trace v1.0.0-RC2/go.mod h1:JPQ+z6nNw9mqEGT8o3eoPTdnNI+Aj5JcxEsVGREIAy4=
+go.opentelemetry.io/otel/trace v1.0.0-RC3 h1:9F0ayEvlxv8BmNmPbU005WK7hC+7KbOazCPZjNa1yME=
+go.opentelemetry.io/otel/trace v1.0.0-RC3/go.mod h1:VUt2TUYd8S2/ZRX09ZDFZQwn2RqfMB5MzO17jBojGxo=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
 go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
 go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=

+ 6 - 2
tools/goctl/api/gogen/genhandlers.go

@@ -13,7 +13,9 @@ import (
 	"github.com/tal-tech/go-zero/tools/goctl/vars"
 	"github.com/tal-tech/go-zero/tools/goctl/vars"
 )
 )
 
 
-const handlerTemplate = `package {{.PkgName}}
+const (
+	defaultLogicPackage = "logic"
+	handlerTemplate     = `package {{.PkgName}}
 
 
 import (
 import (
 	"net/http"
 	"net/http"
@@ -40,6 +42,7 @@ func {{.HandlerName}}(ctx *svc.ServiceContext) http.HandlerFunc {
 	}
 	}
 }
 }
 `
 `
+)
 
 
 type handlerInfo struct {
 type handlerInfo struct {
 	PkgName        string
 	PkgName        string
@@ -58,7 +61,7 @@ func genHandler(dir, rootPkg string, cfg *config.Config, group spec.Group, route
 	handler := getHandlerName(route)
 	handler := getHandlerName(route)
 	handlerPath := getHandlerFolderPath(group, route)
 	handlerPath := getHandlerFolderPath(group, route)
 	pkgName := handlerPath[strings.LastIndex(handlerPath, "/")+1:]
 	pkgName := handlerPath[strings.LastIndex(handlerPath, "/")+1:]
-	logicName := "logic"
+	logicName := defaultLogicPackage
 	if handlerPath != handlerDir {
 	if handlerPath != handlerDir {
 		handler = strings.Title(handler)
 		handler = strings.Title(handler)
 		logicName = pkgName
 		logicName = pkgName
@@ -150,6 +153,7 @@ func getHandlerFolderPath(group spec.Group, route spec.Route) string {
 			return handlerDir
 			return handlerDir
 		}
 		}
 	}
 	}
+
 	folder = strings.TrimPrefix(folder, "/")
 	folder = strings.TrimPrefix(folder, "/")
 	folder = strings.TrimSuffix(folder, "/")
 	folder = strings.TrimSuffix(folder, "/")
 	return path.Join(handlerDir, folder)
 	return path.Join(handlerDir, folder)

+ 0 - 2
zrpc/internal/rpcserver.go

@@ -59,13 +59,11 @@ func (s *rpcServer) Start(register RegisterFn) error {
 		serverinterceptors.UnaryStatInterceptor(s.metrics),
 		serverinterceptors.UnaryStatInterceptor(s.metrics),
 		serverinterceptors.UnaryPrometheusInterceptor(),
 		serverinterceptors.UnaryPrometheusInterceptor(),
 		serverinterceptors.UnaryBreakerInterceptor(),
 		serverinterceptors.UnaryBreakerInterceptor(),
-		serverinterceptors.UnaryOpenTracingInterceptor(),
 	}
 	}
 	unaryInterceptors = append(unaryInterceptors, s.unaryInterceptors...)
 	unaryInterceptors = append(unaryInterceptors, s.unaryInterceptors...)
 	streamInterceptors := []grpc.StreamServerInterceptor{
 	streamInterceptors := []grpc.StreamServerInterceptor{
 		serverinterceptors.StreamCrashInterceptor,
 		serverinterceptors.StreamCrashInterceptor,
 		serverinterceptors.StreamBreakerInterceptor,
 		serverinterceptors.StreamBreakerInterceptor,
-		serverinterceptors.StreamOpenTracingInterceptor(),
 	}
 	}
 	streamInterceptors = append(streamInterceptors, s.streamInterceptors...)
 	streamInterceptors = append(streamInterceptors, s.streamInterceptors...)
 	options := append(s.options, WithUnaryServerInterceptors(unaryInterceptors...),
 	options := append(s.options, WithUnaryServerInterceptors(unaryInterceptors...),