mirror of
https://github.com/go-kratos/kratos.git
synced 2026-05-22 10:15:24 +02:00
+4
-4
@@ -32,10 +32,10 @@ require (
|
||||
github.com/sirupsen/logrus v1.8.1
|
||||
github.com/stretchr/testify v1.7.0
|
||||
go.etcd.io/etcd/client/v3 v3.5.0
|
||||
go.opentelemetry.io/otel v1.0.0-RC1
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.0.0-RC1
|
||||
go.opentelemetry.io/otel/sdk v1.0.0-RC1
|
||||
go.opentelemetry.io/otel/trace v1.0.0-RC1
|
||||
go.opentelemetry.io/otel v1.0.0-RC2
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.0.0-RC2
|
||||
go.opentelemetry.io/otel/sdk v1.0.0-RC2
|
||||
go.opentelemetry.io/otel/trace v1.0.0-RC2
|
||||
go.uber.org/zap v1.18.1
|
||||
golang.org/x/text v0.3.6
|
||||
google.golang.org/genproto v0.0.0-20210701191553-46259e63a0a9
|
||||
|
||||
@@ -709,8 +709,12 @@ go.opentelemetry.io/otel v0.17.0/go.mod h1:Oqtdxmf7UtEvL037ohlgnaYa1h7GtMh0NcSd9
|
||||
go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo=
|
||||
go.opentelemetry.io/otel v1.0.0-RC1 h1:4CeoX93DNTWt8awGK9JmNXzF9j7TyOu9upscEdtcdXc=
|
||||
go.opentelemetry.io/otel v1.0.0-RC1/go.mod h1:x9tRa9HK4hSSq7jf2TKbqFbtt58/TGk0f9XiEYISI1I=
|
||||
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/exporters/jaeger v1.0.0-RC1 h1:tVhw2BMSAk248rhdeirOe9hlXKwGHDvVtF7P8F+H2DU=
|
||||
go.opentelemetry.io/otel/exporters/jaeger v1.0.0-RC1/go.mod h1:FXJnjGCoTQL6nQ8OpFJ0JI1DrdOvMoVx49ic0Hg4+D4=
|
||||
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/internal/metric v0.21.0 h1:gZlIBo5O51hZOOZz8vEcuRx/l5dnADadKfpT70AELoo=
|
||||
go.opentelemetry.io/otel/internal/metric v0.21.0/go.mod h1:iOfAaY2YycsXfYD4kaRSbLx2LKmfpKObWBEv9QK5zFo=
|
||||
go.opentelemetry.io/otel/metric v0.17.0/go.mod h1:hUz9lH1rNXyEwWAhIWCMFWKhYtpASgSnObJFnU26dJ0=
|
||||
@@ -723,10 +727,14 @@ go.opentelemetry.io/otel/oteltest v1.0.0-RC1 h1:G685iP3XiskCwk/z0eIabL55XUl2gk0c
|
||||
go.opentelemetry.io/otel/oteltest v1.0.0-RC1/go.mod h1:+eoIG0gdEOaPNftuy1YScLr1Gb4mL/9lpDkZ0JjMRq4=
|
||||
go.opentelemetry.io/otel/sdk v1.0.0-RC1 h1:Sy2VLOOg24bipyC29PhuMXYNJrLsxkie8hyI7kUlG9Q=
|
||||
go.opentelemetry.io/otel/sdk v1.0.0-RC1/go.mod h1:kj6yPn7Pgt5ByRuwesbaWcRLA+V7BSDg3Hf8xRvsvf8=
|
||||
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/trace v0.17.0/go.mod h1:bIujpqg6ZL6xUTubIUgziI1jSaUPthmabA/ygf/6Cfg=
|
||||
go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw=
|
||||
go.opentelemetry.io/otel/trace v1.0.0-RC1 h1:jrjqKJZEibFrDz+umEASeU3LvdVyWKlnTh7XEfwrT58=
|
||||
go.opentelemetry.io/otel/trace v1.0.0-RC1/go.mod h1:86UHmyHWFEtWjfWPSbu0+d0Pf9Q6e1U+3ViBOc+NXAg=
|
||||
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/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
@@ -922,6 +930,7 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
|
||||
|
||||
@@ -12,12 +12,12 @@ import (
|
||||
"github.com/go-kratos/kratos/v2/middleware/recovery"
|
||||
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
||||
"github.com/go-kratos/kratos/v2/transport/grpc"
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/exporters/jaeger"
|
||||
"go.opentelemetry.io/otel/sdk/resource"
|
||||
tracesdk "go.opentelemetry.io/otel/sdk/trace"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
)
|
||||
|
||||
// go build -ldflags "-X main.Version=x.y.z"
|
||||
@@ -31,28 +31,28 @@ var (
|
||||
// server is used to implement helloworld.GreeterServer.
|
||||
type server struct {
|
||||
v1.UnimplementedMessageServiceServer
|
||||
tracer trace.TracerProvider
|
||||
}
|
||||
|
||||
// Get trace provider
|
||||
func tracerProvider(url string) (*tracesdk.TracerProvider, error) {
|
||||
// set trace provider
|
||||
func setTracerProvider(url string) error {
|
||||
// Create the Jaeger exporter
|
||||
exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url)))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
tp := tracesdk.NewTracerProvider(
|
||||
tracesdk.WithSampler(tracesdk.AlwaysSample()),
|
||||
// Set the sampling rate based on the parent span to 100%
|
||||
tracesdk.WithSampler(tracesdk.ParentBased(tracesdk.TraceIDRatioBased(1.0))),
|
||||
// Always be sure to batch in production.
|
||||
tracesdk.WithBatcher(exp),
|
||||
// Record information about this application in an Resource.
|
||||
tracesdk.WithResource(resource.NewSchemaless(
|
||||
semconv.ServiceNameKey.String(v1.MessageService_ServiceDesc.ServiceName),
|
||||
attribute.String("environment", "development"),
|
||||
attribute.Int64("ID", 1),
|
||||
semconv.ServiceNameKey.String(Name),
|
||||
attribute.String("env", "dev"),
|
||||
)),
|
||||
)
|
||||
return tp, nil
|
||||
otel.SetTracerProvider(tp)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *server) GetUserMessage(ctx context.Context, request *v1.GetUserMessageRequest) (*v1.GetUserMessageReply, error) {
|
||||
@@ -69,12 +69,16 @@ func main() {
|
||||
logger = log.With(logger, "span_id", log.SpanID())
|
||||
log := log.NewHelper(logger)
|
||||
|
||||
tp, err := tracerProvider("http://jaeger:14268/api/traces")
|
||||
url := "http://jaeger:14268/api/traces"
|
||||
if os.Getenv("jaeger_url") != "" {
|
||||
url = os.Getenv("jaeger_url")
|
||||
}
|
||||
err := setTracerProvider(url)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
}
|
||||
|
||||
s := &server{tracer: tp}
|
||||
s := &server{}
|
||||
// grpc server
|
||||
grpcSrv := grpc.NewServer(
|
||||
grpc.Address(":9000"),
|
||||
@@ -82,9 +86,7 @@ func main() {
|
||||
middleware.Chain(
|
||||
recovery.Recovery(),
|
||||
// Configuring tracing Middleware
|
||||
tracing.Server(
|
||||
tracing.WithTracerProvider(tp),
|
||||
),
|
||||
tracing.Server(),
|
||||
logging.Server(logger),
|
||||
),
|
||||
))
|
||||
|
||||
@@ -14,12 +14,14 @@ import (
|
||||
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
||||
"github.com/go-kratos/kratos/v2/transport/grpc"
|
||||
"github.com/go-kratos/kratos/v2/transport/http"
|
||||
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/exporters/jaeger"
|
||||
"go.opentelemetry.io/otel/sdk/resource"
|
||||
tracesdk "go.opentelemetry.io/otel/sdk/trace"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
grpcx "google.golang.org/grpc"
|
||||
)
|
||||
|
||||
// go build -ldflags "-X main.Version=x.y.z"
|
||||
@@ -33,41 +35,42 @@ var (
|
||||
// server is used to implement helloworld.GreeterServer.
|
||||
type server struct {
|
||||
v1.UnimplementedUserServer
|
||||
tracer trace.TracerProvider
|
||||
}
|
||||
|
||||
// Get trace provider
|
||||
func tracerProvider(url string) (*tracesdk.TracerProvider, error) {
|
||||
// Set global trace provider
|
||||
func setTracerProvider(url string) error {
|
||||
// Create the Jaeger exporter
|
||||
exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url)))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
tp := tracesdk.NewTracerProvider(
|
||||
tracesdk.WithSampler(tracesdk.AlwaysSample()),
|
||||
// Set the sampling rate based on the parent span to 100%
|
||||
tracesdk.WithSampler(tracesdk.ParentBased(tracesdk.TraceIDRatioBased(1.0))),
|
||||
// Always be sure to batch in production.
|
||||
tracesdk.WithBatcher(exp),
|
||||
// Record information about this application in an Resource.
|
||||
tracesdk.WithResource(resource.NewSchemaless(
|
||||
semconv.ServiceNameKey.String(v1.User_ServiceDesc.ServiceName),
|
||||
attribute.String("environment", "development"),
|
||||
attribute.Int64("ID", 1),
|
||||
semconv.ServiceNameKey.String(Name),
|
||||
attribute.String("env", "dev"),
|
||||
)),
|
||||
)
|
||||
return tp, nil
|
||||
otel.SetTracerProvider(tp)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *server) GetMyMessages(ctx context.Context, in *v1.GetMyMessagesRequest) (*v1.GetMyMessagesReply, error) {
|
||||
// create grpc conn
|
||||
// only for demo, use single instance in production env
|
||||
conn, err := grpc.DialInsecure(ctx,
|
||||
grpc.WithEndpoint("127.0.0.1:9000"),
|
||||
grpc.WithMiddleware(
|
||||
recovery.Recovery(),
|
||||
tracing.Client(
|
||||
tracing.WithTracerProvider(s.tracer),
|
||||
),
|
||||
tracing.Client(),
|
||||
),
|
||||
grpc.WithTimeout(2*time.Second),
|
||||
// for tracing remote ip recording
|
||||
grpc.WithOptions(grpcx.WithStatsHandler(&tracing.ClientHandler{})),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -91,7 +94,11 @@ func main() {
|
||||
logger = log.With(logger, "span_id", log.SpanID())
|
||||
log := log.NewHelper(logger)
|
||||
|
||||
tp, err := tracerProvider("http://jaeger:14268/api/traces")
|
||||
url := "http://jaeger:14268/api/traces"
|
||||
if os.Getenv("jaeger_url") != "" {
|
||||
url = os.Getenv("jaeger_url")
|
||||
}
|
||||
err := setTracerProvider(url)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
}
|
||||
@@ -101,13 +108,11 @@ func main() {
|
||||
http.Middleware(
|
||||
recovery.Recovery(),
|
||||
// Configuring tracing middleware
|
||||
tracing.Server(
|
||||
tracing.WithTracerProvider(tp),
|
||||
),
|
||||
tracing.Server(),
|
||||
logging.Server(logger),
|
||||
),
|
||||
)
|
||||
s := &server{tracer: tp}
|
||||
s := &server{}
|
||||
v1.RegisterUserHTTPServer(httpSrv, s)
|
||||
|
||||
app := kratos.New(
|
||||
|
||||
Reference in New Issue
Block a user