From b13863b717508f44411ee27ba56908e540579404 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Mon, 9 Aug 2021 18:03:01 +0200 Subject: [PATCH] refactor traceprovider initialization --- accounts/pkg/command/server.go | 2 +- accounts/pkg/tracing/tracing.go | 52 +++----------------------- glauth/pkg/command/server.go | 2 +- glauth/pkg/tracing/tracing.go | 54 ++++----------------------- graph-explorer/pkg/command/server.go | 2 +- graph-explorer/pkg/tracing/tracing.go | 52 +++----------------------- graph/pkg/command/server.go | 2 +- graph/pkg/tracing/tracing.go | 54 ++++----------------------- idp/pkg/command/server.go | 2 +- idp/pkg/tracing/tracing.go | 54 ++++----------------------- ocis-pkg/tracing/tracing.go | 4 ++ ocs/pkg/command/server.go | 2 +- ocs/pkg/tracing/tracing.go | 54 ++++----------------------- onlyoffice/pkg/command/server.go | 2 +- onlyoffice/pkg/tracing/tracing.go | 54 ++++----------------------- proxy/pkg/command/server.go | 2 +- proxy/pkg/proxy/proxy.go | 4 +- proxy/pkg/tracing/tracing.go | 52 +++----------------------- settings/pkg/command/server.go | 2 +- settings/pkg/tracing/tracing.go | 54 ++++----------------------- store/pkg/command/server.go | 2 +- store/pkg/tracing/tracing.go | 54 ++++----------------------- thumbnails/pkg/command/server.go | 2 +- thumbnails/pkg/service/v0/tracing.go | 8 ++-- thumbnails/pkg/tracing/tracing.go | 54 ++++----------------------- web/pkg/command/server.go | 2 +- web/pkg/tracing/tracing.go | 54 ++++----------------------- webdav/pkg/command/server.go | 2 +- webdav/pkg/tracing/tracing.go | 52 +++----------------------- 29 files changed, 111 insertions(+), 625 deletions(-) diff --git a/accounts/pkg/command/server.go b/accounts/pkg/command/server.go index 5e0ce5f33..3ff1dcd8d 100644 --- a/accounts/pkg/command/server.go +++ b/accounts/pkg/command/server.go @@ -40,7 +40,7 @@ func Server(cfg *config.Config) *cli.Command { }, Action: func(c *cli.Context) error { logger := NewLogger(cfg) - err := tracing.Configure(cfg, logger) + err := tracing.Configure(cfg) if err != nil { return err } diff --git a/accounts/pkg/tracing/tracing.go b/accounts/pkg/tracing/tracing.go index dbef82f75..678976da9 100644 --- a/accounts/pkg/tracing/tracing.go +++ b/accounts/pkg/tracing/tracing.go @@ -2,60 +2,20 @@ package tracing import ( "github.com/owncloud/ocis/accounts/pkg/config" - "github.com/owncloud/ocis/ocis-pkg/log" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - // TraceProvider is the global trace provider for the proxy service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("accounts")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "accounts"); err != nil { + return err } + return nil } diff --git a/glauth/pkg/command/server.go b/glauth/pkg/command/server.go index 5a2f1f10d..526e3152d 100644 --- a/glauth/pkg/command/server.go +++ b/glauth/pkg/command/server.go @@ -41,7 +41,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if err := tracing.Configure(cfg, logger); err != nil { + if err := tracing.Configure(cfg); err != nil { return err } diff --git a/glauth/pkg/tracing/tracing.go b/glauth/pkg/tracing/tracing.go index 6778a0127..043ef5804 100644 --- a/glauth/pkg/tracing/tracing.go +++ b/glauth/pkg/tracing/tracing.go @@ -2,60 +2,20 @@ package tracing import ( "github.com/owncloud/ocis/glauth/pkg/config" - "github.com/owncloud/ocis/ocis-pkg/log" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - - // TraceProvider is the global trace provider for the proxy service. + // TraceProvider is the global trace provider for the glauth service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("glauth")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "glauth"); err != nil { + return err } + return nil } diff --git a/graph-explorer/pkg/command/server.go b/graph-explorer/pkg/command/server.go index 9c3e42669..9893e554a 100644 --- a/graph-explorer/pkg/command/server.go +++ b/graph-explorer/pkg/command/server.go @@ -38,7 +38,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - tracing.Configure(cfg, logger) + tracing.Configure(cfg) var ( gr = run.Group{} diff --git a/graph-explorer/pkg/tracing/tracing.go b/graph-explorer/pkg/tracing/tracing.go index 9f9318e0f..228c7c3de 100644 --- a/graph-explorer/pkg/tracing/tracing.go +++ b/graph-explorer/pkg/tracing/tracing.go @@ -2,60 +2,20 @@ package tracing import ( "github.com/owncloud/ocis/graph-explorer/pkg/config" - "github.com/owncloud/ocis/ocis-pkg/log" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - // TraceProvider is the global trace provider for the proxy service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("graph-explorer")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "graph-explorer"); err != nil { + return err } + return nil } diff --git a/graph/pkg/command/server.go b/graph/pkg/command/server.go index e186c23eb..e1700f564 100644 --- a/graph/pkg/command/server.go +++ b/graph/pkg/command/server.go @@ -38,7 +38,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if err := tracing.Configure(cfg, logger); err != nil { + if err := tracing.Configure(cfg); err != nil { return err } diff --git a/graph/pkg/tracing/tracing.go b/graph/pkg/tracing/tracing.go index 8d8701761..aea3b9af9 100644 --- a/graph/pkg/tracing/tracing.go +++ b/graph/pkg/tracing/tracing.go @@ -2,60 +2,20 @@ package tracing import ( "github.com/owncloud/ocis/graph/pkg/config" - "github.com/owncloud/ocis/ocis-pkg/log" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - - // TraceProvider is the global trace provider for the proxy service. + // TraceProvider is the global trace provider for the graph service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("graph")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "graph"); err != nil { + return err } + return nil } diff --git a/idp/pkg/command/server.go b/idp/pkg/command/server.go index ba9fde668..ebc79749e 100644 --- a/idp/pkg/command/server.go +++ b/idp/pkg/command/server.go @@ -50,7 +50,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - tracing.Configure(cfg, logger) + tracing.Configure(cfg) var ( gr = run.Group{} diff --git a/idp/pkg/tracing/tracing.go b/idp/pkg/tracing/tracing.go index 7919a1a7f..b94bac504 100644 --- a/idp/pkg/tracing/tracing.go +++ b/idp/pkg/tracing/tracing.go @@ -2,60 +2,20 @@ package tracing import ( "github.com/owncloud/ocis/idp/pkg/config" - "github.com/owncloud/ocis/ocis-pkg/log" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - - // TraceProvider is the global trace provider for the proxy service. + // TraceProvider is the global trace provider for the idp service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("idp")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "idp"); err != nil { + return err } + return nil } diff --git a/ocis-pkg/tracing/tracing.go b/ocis-pkg/tracing/tracing.go index 196553559..acd1cc91f 100644 --- a/ocis-pkg/tracing/tracing.go +++ b/ocis-pkg/tracing/tracing.go @@ -4,11 +4,15 @@ import ( "fmt" "go.opentelemetry.io/otel/exporters/jaeger" + "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) +// Propagator ensures the importer module uses the same trace propagation strategy. +var Propagator propagation.TextMapPropagator + // GetTraceProvider returns a configured open-telemetry trace provider. func GetTraceProvider(collectorEndpoint, traceType, serviceName string) (*sdktrace.TracerProvider, error) { switch t := traceType; t { diff --git a/ocs/pkg/command/server.go b/ocs/pkg/command/server.go index c88a24294..18b2d151b 100644 --- a/ocs/pkg/command/server.go +++ b/ocs/pkg/command/server.go @@ -38,7 +38,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if err := tracing.Configure(cfg, logger); err != nil { + if err := tracing.Configure(cfg); err != nil { return err } diff --git a/ocs/pkg/tracing/tracing.go b/ocs/pkg/tracing/tracing.go index 309270d04..8139cae7d 100644 --- a/ocs/pkg/tracing/tracing.go +++ b/ocs/pkg/tracing/tracing.go @@ -1,61 +1,21 @@ package tracing import ( - "github.com/owncloud/ocis/ocis-pkg/log" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" "github.com/owncloud/ocis/ocs/pkg/config" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - - // TraceProvider is the global trace provider for the proxy service. + // TraceProvider is the global trace provider for the ocs service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("ocs")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "ocs"); err != nil { + return err } + return nil } diff --git a/onlyoffice/pkg/command/server.go b/onlyoffice/pkg/command/server.go index 1558d61dc..211b378e8 100644 --- a/onlyoffice/pkg/command/server.go +++ b/onlyoffice/pkg/command/server.go @@ -38,7 +38,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if err := tracing.Configure(cfg, logger); err != nil { + if err := tracing.Configure(cfg); err != nil { return err } diff --git a/onlyoffice/pkg/tracing/tracing.go b/onlyoffice/pkg/tracing/tracing.go index 96cd3d890..71a1fda67 100644 --- a/onlyoffice/pkg/tracing/tracing.go +++ b/onlyoffice/pkg/tracing/tracing.go @@ -1,61 +1,21 @@ package tracing import ( - "github.com/owncloud/ocis/ocis-pkg/log" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" "github.com/owncloud/ocis/onlyoffice/pkg/config" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - - // TraceProvider is the global trace provider for the proxy service. + // TraceProvider is the global trace provider for the onlyoffice service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("onlyoffice")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "onlyoffice"); err != nil { + return err } + return nil } diff --git a/proxy/pkg/command/server.go b/proxy/pkg/command/server.go index 48420db85..027967eea 100644 --- a/proxy/pkg/command/server.go +++ b/proxy/pkg/command/server.go @@ -59,7 +59,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if err := tracing.Configure(cfg, logger); err != nil { + if err := tracing.Configure(cfg); err != nil { return err } diff --git a/proxy/pkg/proxy/proxy.go b/proxy/pkg/proxy/proxy.go index a7d27a7c5..5f4536e32 100644 --- a/proxy/pkg/proxy/proxy.go +++ b/proxy/pkg/proxy/proxy.go @@ -11,6 +11,8 @@ import ( "strings" "time" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" + "go.opentelemetry.io/otel/propagation" "github.com/owncloud/ocis/ocis-pkg/log" @@ -224,7 +226,7 @@ func (p *MultiHostReverseProxy) ServeHTTP(w http.ResponseWriter, r *http.Request tracer := proxytracing.TraceProvider.Tracer("proxy") ctx, span = tracer.Start(ctx, fmt.Sprintf("%s %v", r.Method, r.URL.Path)) defer span.End() - proxytracing.Propagator.Inject(ctx, propagation.HeaderCarrier(r.Header)) + pkgtrace.Propagator.Inject(ctx, propagation.HeaderCarrier(r.Header)) } p.ReverseProxy.ServeHTTP(w, r.WithContext(ctx)) diff --git a/proxy/pkg/tracing/tracing.go b/proxy/pkg/tracing/tracing.go index 5b1b69975..062ffd246 100644 --- a/proxy/pkg/tracing/tracing.go +++ b/proxy/pkg/tracing/tracing.go @@ -1,61 +1,21 @@ package tracing import ( - "github.com/owncloud/ocis/ocis-pkg/log" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" "github.com/owncloud/ocis/proxy/pkg/config" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - // TraceProvider is the global trace provider for the proxy service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("proxy")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "proxy"); err != nil { + return err } + return nil } diff --git a/settings/pkg/command/server.go b/settings/pkg/command/server.go index b8e1823d6..2336de23d 100644 --- a/settings/pkg/command/server.go +++ b/settings/pkg/command/server.go @@ -39,7 +39,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - err := tracing.Configure(cfg, logger) + err := tracing.Configure(cfg) if err != nil { return err } diff --git a/settings/pkg/tracing/tracing.go b/settings/pkg/tracing/tracing.go index 7d15f2efb..6821cd24b 100644 --- a/settings/pkg/tracing/tracing.go +++ b/settings/pkg/tracing/tracing.go @@ -1,61 +1,21 @@ package tracing import ( - "github.com/owncloud/ocis/ocis-pkg/log" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" "github.com/owncloud/ocis/settings/pkg/config" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - - // TraceProvider is the global trace provider for the proxy service. + // TraceProvider is the global trace provider for the settings service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("settings")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "settings"); err != nil { + return err } + return nil } diff --git a/store/pkg/command/server.go b/store/pkg/command/server.go index 68c1e749f..a6ab0704c 100644 --- a/store/pkg/command/server.go +++ b/store/pkg/command/server.go @@ -35,7 +35,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if err := tracing.Configure(cfg, logger); err != nil { + if err := tracing.Configure(cfg); err != nil { return err } diff --git a/store/pkg/tracing/tracing.go b/store/pkg/tracing/tracing.go index 27af6fe2a..bc97bb7c5 100644 --- a/store/pkg/tracing/tracing.go +++ b/store/pkg/tracing/tracing.go @@ -1,61 +1,21 @@ package tracing import ( - "github.com/owncloud/ocis/ocis-pkg/log" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" "github.com/owncloud/ocis/store/pkg/config" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - - // TraceProvider is the global trace provider for the proxy service. + // TraceProvider is the global trace provider for the store service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("store")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "store"); err != nil { + return err } + return nil } diff --git a/thumbnails/pkg/command/server.go b/thumbnails/pkg/command/server.go index 9825b229b..eeeb61d09 100644 --- a/thumbnails/pkg/command/server.go +++ b/thumbnails/pkg/command/server.go @@ -33,7 +33,7 @@ func Server(cfg *config.Config) *cli.Command { }, Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if err := tracing.Configure(cfg, logger); err != nil { + if err := tracing.Configure(cfg); err != nil { return err } diff --git a/thumbnails/pkg/service/v0/tracing.go b/thumbnails/pkg/service/v0/tracing.go index a6d3c15e1..f13a21e2f 100644 --- a/thumbnails/pkg/service/v0/tracing.go +++ b/thumbnails/pkg/service/v0/tracing.go @@ -31,10 +31,10 @@ func (t tracing) GetThumbnail(ctx context.Context, req *v0proto.GetThumbnailRequ defer span.End() span.SetAttributes( - attribute.KeyValue{"filepath", attribute.StringValue(req.Filepath)}, - attribute.KeyValue{"thumbnail_type", attribute.StringValue(req.ThumbnailType.String())}, - attribute.KeyValue{"width", attribute.IntValue(int(req.Width))}, - attribute.KeyValue{"height", attribute.IntValue(int(req.Height))}, + attribute.KeyValue{Key: "filepath", Value: attribute.StringValue(req.Filepath)}, + attribute.KeyValue{Key: "thumbnail_type", Value: attribute.StringValue(req.ThumbnailType.String())}, + attribute.KeyValue{Key: "width", Value: attribute.IntValue(int(req.Width))}, + attribute.KeyValue{Key: "height", Value: attribute.IntValue(int(req.Height))}, ) } diff --git a/thumbnails/pkg/tracing/tracing.go b/thumbnails/pkg/tracing/tracing.go index 29b04b6df..01172bd06 100644 --- a/thumbnails/pkg/tracing/tracing.go +++ b/thumbnails/pkg/tracing/tracing.go @@ -1,61 +1,21 @@ package tracing import ( - "github.com/owncloud/ocis/ocis-pkg/log" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" "github.com/owncloud/ocis/thumbnails/pkg/config" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - - // TraceProvider is the global trace provider for the proxy service. + // TraceProvider is the global trace provider for the thumbnails service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("thumbnails")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "thumbnails"); err != nil { + return err } + return nil } diff --git a/web/pkg/command/server.go b/web/pkg/command/server.go index 2d518000b..578a14577 100644 --- a/web/pkg/command/server.go +++ b/web/pkg/command/server.go @@ -47,7 +47,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if err := tracing.Configure(cfg, logger); err != nil { + if err := tracing.Configure(cfg); err != nil { return err } diff --git a/web/pkg/tracing/tracing.go b/web/pkg/tracing/tracing.go index 7e15196b6..faa43f86e 100644 --- a/web/pkg/tracing/tracing.go +++ b/web/pkg/tracing/tracing.go @@ -1,61 +1,21 @@ package tracing import ( - "github.com/owncloud/ocis/ocis-pkg/log" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" "github.com/owncloud/ocis/web/pkg/config" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - - // TraceProvider is the global trace provider for the proxy service. + // TraceProvider is the global trace provider for the web service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("web")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "web"); err != nil { + return err } + return nil } diff --git a/webdav/pkg/command/server.go b/webdav/pkg/command/server.go index dbe411e02..968e63428 100644 --- a/webdav/pkg/command/server.go +++ b/webdav/pkg/command/server.go @@ -36,7 +36,7 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if err := tracing.Configure(cfg, logger); err != nil { + if err := tracing.Configure(cfg); err != nil { return err } diff --git a/webdav/pkg/tracing/tracing.go b/webdav/pkg/tracing/tracing.go index d0aaf0879..7735e43ad 100644 --- a/webdav/pkg/tracing/tracing.go +++ b/webdav/pkg/tracing/tracing.go @@ -1,61 +1,21 @@ package tracing import ( - "github.com/owncloud/ocis/ocis-pkg/log" + pkgtrace "github.com/owncloud/ocis/ocis-pkg/tracing" "github.com/owncloud/ocis/webdav/pkg/config" - "go.opentelemetry.io/otel/exporters/jaeger" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" ) var ( - // Propagator ensures the entire module uses the same trace propagation strategy. - Propagator propagation.TextMapPropagator - // TraceProvider is the global trace provider for the proxy service. TraceProvider = sdktrace.NewTracerProvider() ) -func Configure(cfg *config.Config, logger log.Logger) error { - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "jaeger": - { - exp, err := jaeger.New( - jaeger.WithCollectorEndpoint( - jaeger.WithEndpoint(cfg.Tracing.Collector), - ), - ) - if err != nil { - panic(err) - } - - // set package level trace provider and propagator. - TraceProvider = sdktrace.NewTracerProvider( - sdktrace.WithBatcher(exp), - sdktrace.WithResource(resource.NewWithAttributes( - semconv.SchemaURL, - semconv.ServiceNameKey.String("webdav")), - ), - ) - - Propagator = propagation.NewCompositeTextMapPropagator( - propagation.Baggage{}, - propagation.TraceContext{}, - ) - } - case "agent": - fallthrough - case "zipkin": - fallthrough - default: - logger.Warn().Str("type", t).Msg("Unknown tracing backend") - } - } else { - logger.Debug(). - Msg("Tracing is not enabled") +func Configure(cfg *config.Config) error { + var err error + if TraceProvider, err = pkgtrace.GetTraceProvider(cfg.Tracing.Collector, cfg.Tracing.Type, "webdav"); err != nil { + return err } + return nil }