Add tracing to settings service.

This adds tracing to the settings service. It uses the otelchi package
and passes the tracing provider to the grpc and http servers.
This commit is contained in:
Daniël Franke
2023-06-27 12:31:19 +02:00
parent cd304b4df8
commit 96557a95ae
36 changed files with 2230 additions and 81 deletions
+19 -10
View File
@@ -5,6 +5,7 @@ import (
"github.com/owncloud/ocis/v2/ocis-pkg/log"
"github.com/urfave/cli/v2"
"go.opentelemetry.io/otel/trace"
)
// Option defines a single option function.
@@ -12,16 +13,17 @@ type Option func(o *Options)
// Options defines the available options for this package.
type Options struct {
Logger log.Logger
Namespace string
Name string
Version string
Address string
TLSEnabled bool
TLSCert string
TLSKey string
Context context.Context
Flags []cli.Flag
Logger log.Logger
Namespace string
Name string
Version string
Address string
TLSEnabled bool
TLSCert string
TLSKey string
Context context.Context
Flags []cli.Flag
TraceProvider trace.TracerProvider
}
// newOptions initializes the available default options.
@@ -100,3 +102,10 @@ func Flags(flags ...cli.Flag) Option {
o.Flags = append(o.Flags, flags...)
}
}
// TraceProvider provides a function to set the trace provider option.
func TraceProvider(tp trace.TracerProvider) Option {
return func(o *Options) {
o.TraceProvider = tp
}
}
+9 -3
View File
@@ -62,9 +62,15 @@ func NewService(opts ...Option) (Service, error) {
micro.RegisterTTL(time.Second * 30),
micro.RegisterInterval(time.Second * 10),
micro.WrapHandler(prometheus.NewHandlerWrapper()),
micro.WrapClient(mtracer.NewClientWrapper()),
micro.WrapHandler(mtracer.NewHandlerWrapper()),
micro.WrapSubscriber(mtracer.NewSubscriberWrapper()),
micro.WrapClient(mtracer.NewClientWrapper(
mtracer.WithTraceProvider(sopts.TraceProvider),
)),
micro.WrapHandler(mtracer.NewHandlerWrapper(
mtracer.WithTraceProvider(sopts.TraceProvider),
)),
micro.WrapSubscriber(mtracer.NewSubscriberWrapper(
mtracer.WithTraceProvider(sopts.TraceProvider),
)),
}
return Service{micro.NewService(mopts...)}, nil