diff --git a/services/collaboration/pkg/command/server.go b/services/collaboration/pkg/command/server.go index 5732c55890f..d66c7a75dd9 100644 --- a/services/collaboration/pkg/command/server.go +++ b/services/collaboration/pkg/command/server.go @@ -68,6 +68,7 @@ func Server(cfg *config.Config) *cli.Command { grpc.AppURLs(appUrls), grpc.Config(cfg), grpc.Logger(logger), + grpc.TraceProvider(traceProvider), ) defer teardown() if err != nil { diff --git a/services/collaboration/pkg/server/grpc/server.go b/services/collaboration/pkg/server/grpc/server.go index a0be59dccab..43964afe229 100644 --- a/services/collaboration/pkg/server/grpc/server.go +++ b/services/collaboration/pkg/server/grpc/server.go @@ -2,15 +2,25 @@ package grpc import ( appproviderv1beta1 "github.com/cs3org/go-cs3apis/cs3/app/provider/v1beta1" + "github.com/owncloud/ocis/v2/ocis-pkg/tracing" svc "github.com/owncloud/ocis/v2/services/collaboration/pkg/service/grpc/v0" + "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "google.golang.org/grpc" ) // Server initializes a new grpc service ready to run // THIS SERVICE IS REGISTERED AGAINST REVA, NOT GO-MICRO func Server(opts ...Option) (*grpc.Server, func(), error) { - grpcOpts := []grpc.ServerOption{} options := newOptions(opts...) + + grpcOpts := []grpc.ServerOption{ + grpc.StatsHandler( + otelgrpc.NewServerHandler( + otelgrpc.WithTracerProvider(options.TraceProvider), + otelgrpc.WithPropagators(tracing.GetPropagator()), + ), + ), + } grpcServer := grpc.NewServer(grpcOpts...) handle, teardown, err := svc.NewHandler(