From 1d49a267f2f5ee13303cc14c81cf71a053318fa4 Mon Sep 17 00:00:00 2001 From: "A.Unger" Date: Thu, 18 Mar 2021 12:09:00 +0100 Subject: [PATCH] handle error + refactor graph tracing config --- glauth/pkg/command/server.go | 4 +- graph/pkg/command/server.go | 111 ++++------------------------------- graph/pkg/tracing/tracing.go | 90 ++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+), 101 deletions(-) create mode 100644 graph/pkg/tracing/tracing.go diff --git a/glauth/pkg/command/server.go b/glauth/pkg/command/server.go index 182fef993..3fa6d6db5 100644 --- a/glauth/pkg/command/server.go +++ b/glauth/pkg/command/server.go @@ -41,7 +41,9 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - tracing.Configure(cfg, logger) + if err := tracing.Configure(cfg, logger); err != nil { + return err + } gr := run.Group{} ctx, cancel := func() (context.Context, context.CancelFunc) { diff --git a/graph/pkg/command/server.go b/graph/pkg/command/server.go index bb184c8e1..e186c23eb 100644 --- a/graph/pkg/command/server.go +++ b/graph/pkg/command/server.go @@ -3,23 +3,16 @@ package command import ( "context" "strings" - "time" - "contrib.go.opencensus.io/exporter/jaeger" - "contrib.go.opencensus.io/exporter/ocagent" - "contrib.go.opencensus.io/exporter/zipkin" "github.com/micro/cli/v2" "github.com/oklog/run" - openzipkin "github.com/openzipkin/zipkin-go" - zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http" "github.com/owncloud/ocis/graph/pkg/config" "github.com/owncloud/ocis/graph/pkg/flagset" "github.com/owncloud/ocis/graph/pkg/metrics" "github.com/owncloud/ocis/graph/pkg/server/debug" "github.com/owncloud/ocis/graph/pkg/server/http" + "github.com/owncloud/ocis/graph/pkg/tracing" "github.com/owncloud/ocis/ocis-pkg/sync" - "go.opencensus.io/stats/view" - "go.opencensus.io/trace" ) // Server is the entrypoint for the server command. @@ -45,100 +38,18 @@ func Server(cfg *config.Config) *cli.Command { Action: func(c *cli.Context) error { logger := NewLogger(cfg) - if cfg.Tracing.Enabled { - switch t := cfg.Tracing.Type; t { - case "agent": - exporter, err := ocagent.NewExporter( - ocagent.WithReconnectionPeriod(5*time.Second), - ocagent.WithAddress(cfg.Tracing.Endpoint), - ocagent.WithServiceName(cfg.Tracing.Service), - ) - - if err != nil { - logger.Error(). - Err(err). - Str("endpoint", cfg.Tracing.Endpoint). - Str("collector", cfg.Tracing.Collector). - Msg("Failed to create agent tracing") - - return err - } - - trace.RegisterExporter(exporter) - view.RegisterExporter(exporter) - - case "jaeger": - exporter, err := jaeger.NewExporter( - jaeger.Options{ - AgentEndpoint: cfg.Tracing.Endpoint, - CollectorEndpoint: cfg.Tracing.Collector, - ServiceName: cfg.Tracing.Service, - }, - ) - - if err != nil { - logger.Error(). - Err(err). - Str("endpoint", cfg.Tracing.Endpoint). - Str("collector", cfg.Tracing.Collector). - Msg("Failed to create jaeger tracing") - - return err - } - - trace.RegisterExporter(exporter) - - case "zipkin": - endpoint, err := openzipkin.NewEndpoint( - cfg.Tracing.Service, - cfg.Tracing.Endpoint, - ) - - if err != nil { - logger.Error(). - Err(err). - Str("endpoint", cfg.Tracing.Endpoint). - Str("collector", cfg.Tracing.Collector). - Msg("Failed to create zipkin tracing") - - return err - } - - exporter := zipkin.NewExporter( - zipkinhttp.NewReporter( - cfg.Tracing.Collector, - ), - endpoint, - ) - - trace.RegisterExporter(exporter) - - default: - logger.Warn(). - Str("type", t). - Msg("Unknown tracing backend") - } - - trace.ApplyConfig( - trace.Config{ - DefaultSampler: trace.AlwaysSample(), - }, - ) - } else { - logger.Debug(). - Msg("Tracing is not enabled") + if err := tracing.Configure(cfg, logger); err != nil { + return err } - var ( - gr = run.Group{} - ctx, cancel = func() (context.Context, context.CancelFunc) { - if cfg.Context == nil { - return context.WithCancel(context.Background()) - } - return context.WithCancel(cfg.Context) - }() - mtrcs = metrics.New() - ) + gr := run.Group{} + ctx, cancel := func() (context.Context, context.CancelFunc) { + if cfg.Context == nil { + return context.WithCancel(context.Background()) + } + return context.WithCancel(cfg.Context) + }() + mtrcs := metrics.New() defer cancel() diff --git a/graph/pkg/tracing/tracing.go b/graph/pkg/tracing/tracing.go new file mode 100644 index 000000000..124d9238b --- /dev/null +++ b/graph/pkg/tracing/tracing.go @@ -0,0 +1,90 @@ +package tracing + +import ( + "time" + + "contrib.go.opencensus.io/exporter/jaeger" + "contrib.go.opencensus.io/exporter/ocagent" + "contrib.go.opencensus.io/exporter/zipkin" + openzipkin "github.com/openzipkin/zipkin-go" + zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http" + "github.com/owncloud/ocis/graph/pkg/config" + "github.com/owncloud/ocis/ocis-pkg/log" + "go.opencensus.io/stats/view" + "go.opencensus.io/trace" +) + +func Configure(cfg *config.Config, logger log.Logger) error { + if cfg.Tracing.Enabled { + switch t := cfg.Tracing.Type; t { + case "agent": + exporter, err := ocagent.NewExporter( + ocagent.WithReconnectionPeriod(5*time.Second), + ocagent.WithAddress(cfg.Tracing.Endpoint), + ocagent.WithServiceName(cfg.Tracing.Service), + ) + if err != nil { + logger.Error(). + Err(err). + Str("endpoint", cfg.Tracing.Endpoint). + Str("collector", cfg.Tracing.Collector). + Msg("Failed to create agent tracing") + return err + } + trace.RegisterExporter(exporter) + view.RegisterExporter(exporter) + case "jaeger": + exporter, err := jaeger.NewExporter( + jaeger.Options{ + AgentEndpoint: cfg.Tracing.Endpoint, + CollectorEndpoint: cfg.Tracing.Collector, + Process: jaeger.Process{ + ServiceName: cfg.Tracing.Service, + }, + }, + ) + if err != nil { + logger.Error(). + Err(err). + Str("endpoint", cfg.Tracing.Endpoint). + Str("collector", cfg.Tracing.Collector). + Msg("Failed to create jaeger tracing") + return err + } + trace.RegisterExporter(exporter) + case "zipkin": + endpoint, err := openzipkin.NewEndpoint( + cfg.Tracing.Service, + cfg.Tracing.Endpoint, + ) + if err != nil { + logger.Error(). + Err(err). + Str("endpoint", cfg.Tracing.Endpoint). + Str("collector", cfg.Tracing.Collector). + Msg("Failed to create zipkin tracing") + return err + } + exporter := zipkin.NewExporter( + zipkinhttp.NewReporter( + cfg.Tracing.Collector, + ), + endpoint, + ) + trace.RegisterExporter(exporter) + default: + logger.Warn(). + Str("type", t). + Msg("Unknown tracing backend") + } + trace.ApplyConfig( + trace.Config{ + DefaultSampler: trace.AlwaysSample(), + }, + ) + } else { + logger.Debug(). + Msg("Tracing is not enabled") + } + return nil +}