From 0c4d46ee2ff8d2ab0567546666e67852e5cc87cf Mon Sep 17 00:00:00 2001 From: David Christofas Date: Fri, 4 Dec 2020 14:28:59 +0100 Subject: [PATCH] implement tracing in the account service --- accounts/go.mod | 5 ++ accounts/go.sum | 23 ++---- accounts/pkg/command/server.go | 80 ++++++++++++++++++- accounts/pkg/config/config.go | 10 +++ accounts/pkg/flagset/flagset.go | 34 ++++++++ accounts/pkg/service/v0/tracing.go | 76 ++++++++++++++++++ .../unreleased/accounts-service-tracing.md | 5 ++ ocis/pkg/command/accounts.go | 7 +- 8 files changed, 222 insertions(+), 18 deletions(-) create mode 100644 accounts/pkg/service/v0/tracing.go create mode 100644 changelog/unreleased/accounts-service-tracing.md diff --git a/accounts/go.mod b/accounts/go.mod index ba610e9cec4..7bc830f6df6 100644 --- a/accounts/go.mod +++ b/accounts/go.mod @@ -3,6 +3,9 @@ module github.com/owncloud/ocis/accounts go 1.13 require ( + contrib.go.opencensus.io/exporter/jaeger v0.2.1 + contrib.go.opencensus.io/exporter/ocagent v0.6.0 + contrib.go.opencensus.io/exporter/zipkin v0.1.1 github.com/cs3org/go-cs3apis v0.0.0-20201118090759-87929f5bae21 github.com/cs3org/reva v1.4.1-0.20201203135805-655c9babdc3f github.com/go-chi/chi v4.1.2+incompatible @@ -14,6 +17,7 @@ require ( github.com/micro/go-micro/v2 v2.9.1 github.com/oklog/run v1.1.0 github.com/olekukonko/tablewriter v0.0.4 + github.com/openzipkin/zipkin-go v0.2.2 github.com/owncloud/ocis/ocis-pkg v0.0.0-20201103111659-46bf133a3c63 github.com/owncloud/ocis/settings v0.0.0-20200918114005-1a0ddd2190ee github.com/prometheus/client_golang v1.7.1 @@ -21,6 +25,7 @@ require ( github.com/rs/zerolog v1.20.0 github.com/spf13/viper v1.7.0 github.com/stretchr/testify v1.6.1 + go.opencensus.io v0.22.5 golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899 golang.org/x/net v0.0.0-20200822124328-c89045814202 google.golang.org/genproto v0.0.0-20200624020401-64a14ca9d1ad diff --git a/accounts/go.sum b/accounts/go.sum index 99aed44498b..0b23ad6e086 100644 --- a/accounts/go.sum +++ b/accounts/go.sum @@ -24,6 +24,7 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl contrib.go.opencensus.io/exporter/jaeger v0.2.1 h1:yGBYzYMewVL0yO9qqJv3Z5+IRhPdU7e9o/2oKpX4YvI= contrib.go.opencensus.io/exporter/jaeger v0.2.1/go.mod h1:Y8IsLgdxqh1QxYxPC5IgXVmBaeLUeQFfBeBi9PbeZd0= contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= +contrib.go.opencensus.io/exporter/ocagent v0.6.0 h1:Z1n6UAyr0QwM284yUuh5Zd8JlvxUGAhFZcgMJkMPrGM= contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= contrib.go.opencensus.io/exporter/prometheus v0.2.0 h1:9PUk0/8V0LGoPqVCrf8fQZJkFGBxudu8jOjQSMwoD6w= contrib.go.opencensus.io/exporter/prometheus v0.2.0/go.mod h1:TYmVAyE8Tn1lyPcltF5IYYfWp2KHu7lQGIZnj8iZMys= @@ -103,8 +104,7 @@ github.com/aws/aws-sdk-go v1.20.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.34.12 h1:7UbBEYDUa4uW0YmRnOd806MS1yoJMcaodBWDzvBShAI= github.com/aws/aws-sdk-go v1.34.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.35.9 h1:b1HiUpdkFLJyoOQ7zas36YHzjNHH0ivHx/G5lWBeg+U= -github.com/aws/aws-sdk-go v1.35.9/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= +github.com/aws/aws-sdk-go v1.35.23 h1:SCP0d0XvyJTDmfnHEQPvBaYi3kea1VNUo7uQmkVgFts= github.com/aws/aws-sdk-go v1.35.23/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.35.27/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= @@ -180,23 +180,10 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e/go.mod h1:XJEZ3/EQuI3BXTp/6DUzFr850vlxq11I6satRtz0YQ4= github.com/cs3org/go-cs3apis v0.0.0-20200810113633-b00aca449666 h1:E7VsSSN/2YZLSwrDMJJdAWU11lP7W1qkcXbrslb0PM0= github.com/cs3org/go-cs3apis v0.0.0-20200810113633-b00aca449666/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= -github.com/cs3org/go-cs3apis v0.0.0-20201007120910-416ed6cf8b00 h1:LVl25JaflluOchVvaHWtoCynm5OaM+VNai0IYkcCSe0= -github.com/cs3org/go-cs3apis v0.0.0-20201007120910-416ed6cf8b00/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= +github.com/cs3org/go-cs3apis v0.0.0-20201118090759-87929f5bae21 h1:mZpylrgnCgSeaZ5EznvHIPIKuaQHMHZDi2wkJtk4M8Y= github.com/cs3org/go-cs3apis v0.0.0-20201118090759-87929f5bae21/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= github.com/cs3org/reva v1.2.2-0.20200924071957-e6676516e61e h1:khITGSnfDXtByQsLezoXgocUgGHJBBn0BPsUihGvk7w= github.com/cs3org/reva v1.2.2-0.20200924071957-e6676516e61e/go.mod h1:DOV5SjpOBKN+aWfOHLdA4KiLQkpyC786PQaXEdRAZ0M= -github.com/cs3org/reva v1.3.1-0.20201023144216-cdb3d6688da5 h1:nkmk9ywGKpJthWeMYGBiXh4DD6mTCOZLRfGDjp9rsKg= -github.com/cs3org/reva v1.3.1-0.20201023144216-cdb3d6688da5/go.mod h1:V50GXMiT524bvxACFkrkZqBzK4BoXLSprxcPshBlSOY= -github.com/cs3org/reva v1.4.1-0.20201120104232-f5afafc04c3b h1:bDGaeyhTFrdLF3Pm8XdJ60ADrE4f+f/Mz2hkICvQHJM= -github.com/cs3org/reva v1.4.1-0.20201120104232-f5afafc04c3b/go.mod h1:oqkkfe0g/dvrFFrmwd/VVfmrxhfswHp7+IB2PNeADSE= -github.com/cs3org/reva v1.4.1-0.20201123062044-b2c4af4e897d h1:8lqmft08fZJHoi/XGBidmfZyemFXwDKBLUd8UDI/2LY= -github.com/cs3org/reva v1.4.1-0.20201123062044-b2c4af4e897d/go.mod h1:MTBlfobTE8W2hgXQ9+r+75jpJa1TxD04IZm5TpS9H48= -github.com/cs3org/reva v1.4.1-0.20201125144025-57da0c27434c h1:x7HkQqFGA+7FJUfyDO9tM2gF5i540PQePx+1kGUUYgA= -github.com/cs3org/reva v1.4.1-0.20201125144025-57da0c27434c/go.mod h1:MTBlfobTE8W2hgXQ9+r+75jpJa1TxD04IZm5TpS9H48= -github.com/cs3org/reva v1.4.1-0.20201125172625-a5ab834a565d h1:Sr6ZWGjTds5cWDei3mJev2+RPJ0iejKnVrYklr5mO+M= -github.com/cs3org/reva v1.4.1-0.20201125172625-a5ab834a565d/go.mod h1:MTBlfobTE8W2hgXQ9+r+75jpJa1TxD04IZm5TpS9H48= -github.com/cs3org/reva v1.4.1-0.20201127111856-e6a6212c1b7b h1:Bypxdf3vXwyEeL86MMoPPuLbv4P979nkGsuTX6OQ0i8= -github.com/cs3org/reva v1.4.1-0.20201127111856-e6a6212c1b7b/go.mod h1:MTBlfobTE8W2hgXQ9+r+75jpJa1TxD04IZm5TpS9H48= github.com/cs3org/reva v1.4.1-0.20201130061320-ac85e68e0600 h1:4CKU+R4UNvILzsPrcAFwEbk/8Hc6vJqwO7SxK0gAm4I= github.com/cs3org/reva v1.4.1-0.20201130061320-ac85e68e0600/go.mod h1:MTBlfobTE8W2hgXQ9+r+75jpJa1TxD04IZm5TpS9H48= github.com/cs3org/reva v1.4.1-0.20201130150257-7e3efcbd0fc3 h1:H3QnP+eApE2LDJrYjJrIBmJ04KGVdpR2QP+ipdPp3jE= @@ -290,6 +277,7 @@ github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpX github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-ozzo/ozzo-validation/v4 v4.2.1 h1:XALUNshPYumA7UShB7iM3ZVlqIBn0jfwjqAMIoyE1N0= github.com/go-ozzo/ozzo-validation/v4 v4.2.1/go.mod h1:2NKgrcHl3z6cJs+3Oo940FPRiTzuqKbvfrL2RxCj6Ew= +github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= @@ -378,6 +366,7 @@ github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51 github.com/gorilla/handlers v1.4.2 h1:0QniY0USkHQ1RGCLfKxeNHK9bkDHGRYGNDFBCS+YARg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= @@ -668,6 +657,7 @@ github.com/pkg/term v0.0.0-20200520122047-c3ffed290a03/go.mod h1:Z9+Ul5bCbBKnbCv github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= github.com/pkg/xattr v0.4.1 h1:dhclzL6EqOXNaPDWqoeb9tIxATfBSmjqL0b4DpSjwRw= github.com/pkg/xattr v0.4.1/go.mod h1:W2cGD0TBEus7MkUgv0tNZ9JutLtVO3cXu+IBRuHqnFs= +github.com/pkg/xattr v0.4.2 h1:fbVxr9lvkToTGgPljVszvFsOdcbSv5BmGABneyxRgZM= github.com/pkg/xattr v0.4.2/go.mod h1:sBD3RAqlr8Q+RC3FutZcikpT8nyDrIEEBw2J744gVWs= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -1028,6 +1018,7 @@ golang.org/x/sys v0.0.0-20200720211630-cb9d2d5c5666/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200918174421-af09f7315aff h1:1CPUrky56AcgSpxz/KfgzQWzfG09u5YOL8MvPYBlrL8= golang.org/x/sys v0.0.0-20200918174421-af09f7315aff/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201101102859-da207088b7d1 h1:a/mKvvZr9Jcc8oKfcmgzyp7OwF73JPWsQLvH1z2Kxck= golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/accounts/pkg/command/server.go b/accounts/pkg/command/server.go index b5edee2db99..d9dd5b9c900 100644 --- a/accounts/pkg/command/server.go +++ b/accounts/pkg/command/server.go @@ -5,15 +5,23 @@ import ( "os" "os/signal" "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/accounts/pkg/config" "github.com/owncloud/ocis/accounts/pkg/flagset" "github.com/owncloud/ocis/accounts/pkg/metrics" "github.com/owncloud/ocis/accounts/pkg/server/grpc" "github.com/owncloud/ocis/accounts/pkg/server/http" svc "github.com/owncloud/ocis/accounts/pkg/service/v0" + "go.opencensus.io/stats/view" + "go.opencensus.io/trace" ) // Server is the entry point for the server command. @@ -34,7 +42,77 @@ 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, + 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") + } var ( gr = run.Group{} ctx, cancel = context.WithCancel(context.Background()) diff --git a/accounts/pkg/config/config.go b/accounts/pkg/config/config.go index 2e5859a163d..950aa615932 100644 --- a/accounts/pkg/config/config.go +++ b/accounts/pkg/config/config.go @@ -100,6 +100,15 @@ type Bound struct { Lower, Upper int64 } +// Tracing defines the available tracing configuration. +type Tracing struct { + Enabled bool + Type string + Endpoint string + Collector string + Service string +} + // Config merges all Account config parameters. type Config struct { LDAP LDAP @@ -112,6 +121,7 @@ type Config struct { Repo Repo Index Index ServiceUser ServiceUser + Tracing Tracing } // New returns a new config. diff --git a/accounts/pkg/flagset/flagset.go b/accounts/pkg/flagset/flagset.go index f533f3b4738..d423e3b8f55 100644 --- a/accounts/pkg/flagset/flagset.go +++ b/accounts/pkg/flagset/flagset.go @@ -36,6 +36,40 @@ func RootWithConfig(cfg *config.Config) []cli.Flag { // ServerWithConfig applies cfg to the root flagset func ServerWithConfig(cfg *config.Config) []cli.Flag { return []cli.Flag{ + &cli.BoolFlag{ + Name: "tracing-enabled", + Usage: "Enable sending traces", + EnvVars: []string{"ACCOUNTS_TRACING_ENABLED"}, + Destination: &cfg.Tracing.Enabled, + }, + &cli.StringFlag{ + Name: "tracing-type", + Value: "jaeger", + Usage: "Tracing backend type", + EnvVars: []string{"ACCOUNTS_TRACING_TYPE"}, + Destination: &cfg.Tracing.Type, + }, + &cli.StringFlag{ + Name: "tracing-endpoint", + Value: "", + Usage: "Endpoint for the agent", + EnvVars: []string{"ACCOUNTS_TRACING_ENDPOINT"}, + Destination: &cfg.Tracing.Endpoint, + }, + &cli.StringFlag{ + Name: "tracing-collector", + Value: "", + Usage: "Endpoint for the collector", + EnvVars: []string{"ACCOUNTS_TRACING_COLLECTOR"}, + Destination: &cfg.Tracing.Collector, + }, + &cli.StringFlag{ + Name: "tracing-service", + Value: "accounts", + Usage: "Service name for tracing", + EnvVars: []string{"ACCOUNTS_TRACING_SERVICE"}, + Destination: &cfg.Tracing.Service, + }, &cli.StringFlag{ Name: "http-namespace", Value: "com.owncloud.web", diff --git a/accounts/pkg/service/v0/tracing.go b/accounts/pkg/service/v0/tracing.go new file mode 100644 index 00000000000..ff27c19cda8 --- /dev/null +++ b/accounts/pkg/service/v0/tracing.go @@ -0,0 +1,76 @@ +package service + +import ( + "context" + + "github.com/golang/protobuf/ptypes/empty" + v0proto "github.com/owncloud/ocis/accounts/pkg/proto/v0" + "go.opencensus.io/trace" +) + +// NewTracing returns a service that instruments traces. +func NewTracing(next v0proto.AccountsServiceHandler) v0proto.AccountsServiceHandler { + return tracing{ + next: next, + } +} + +type tracing struct { + next v0proto.AccountsServiceHandler +} + +func (t tracing) ListAccounts(ctx context.Context, req *v0proto.ListAccountsRequest, rsp *v0proto.ListAccountsResponse) error { + ctx, span := trace.StartSpan(ctx, "Accounts.ListAccounts") + defer span.End() + + span.Annotate([]trace.Attribute{ + trace.Int64Attribute("page_size", int64(req.PageSize)), + trace.StringAttribute("page_token", req.PageToken), + trace.StringAttribute("field_mask", req.FieldMask.String()), + }, "Execute Accounts.ListAccount handler") + + return t.next.ListAccounts(ctx, req, rsp) +} + +func (t tracing) GetAccount(ctx context.Context, req *v0proto.GetAccountRequest, acc *v0proto.Account) error { + ctx, span := trace.StartSpan(ctx, "Accounts.GetAccount") + defer span.End() + + span.Annotate([]trace.Attribute{ + trace.StringAttribute("id", req.Id), + }, "Execute Accounts.GetAccount handler") + + return t.next.GetAccount(ctx, req, acc) +} + +func (t tracing) CreateAccount(ctx context.Context, req *v0proto.CreateAccountRequest, acc *v0proto.Account) error { + ctx, span := trace.StartSpan(ctx, "Accounts.CreateAccount") + defer span.End() + + span.Annotate([]trace.Attribute{ + trace.StringAttribute("account", req.Account.String()), + }, "Execute Accounts.CreateAccount handler") + + return t.next.CreateAccount(ctx, req, acc) +} + +func (t tracing) UpdateAccount(ctx context.Context, req *v0proto.UpdateAccountRequest, acc *v0proto.Account) error { + ctx, span := trace.StartSpan(ctx, "Accounts.UpdateAccount") + defer span.End() + + span.Annotate([]trace.Attribute{ + trace.StringAttribute("account", req.Account.String()), + }, "Execute Accounts.UpdateAccount handler") + + return t.next.UpdateAccount(ctx, req, acc) +} + +func (t tracing) DeleteAccount(ctx context.Context, req *v0proto.DeleteAccountRequest, e *empty.Empty) error { + ctx, span := trace.StartSpan(ctx, "Accounts.DeleteAccount") + defer span.End() + + span.Annotate([]trace.Attribute{ + trace.StringAttribute("id", req.Id), + }, "Execute Accounts.DeleteAccout handler") + return t.next.DeleteAccount(ctx, req, e) +} diff --git a/changelog/unreleased/accounts-service-tracing.md b/changelog/unreleased/accounts-service-tracing.md new file mode 100644 index 00000000000..67cba8f7802 --- /dev/null +++ b/changelog/unreleased/accounts-service-tracing.md @@ -0,0 +1,5 @@ +Enhancement: add tracing to the accounts service + +Added tracing to the accounts service. + +https://github.com/owncloud/ocis/issues/1016 diff --git a/ocis/pkg/command/accounts.go b/ocis/pkg/command/accounts.go index 8bb986be90d..36b740c4105 100644 --- a/ocis/pkg/command/accounts.go +++ b/ocis/pkg/command/accounts.go @@ -44,7 +44,12 @@ func configureAccounts(cfg *config.Config) *svcconfig.Config { cfg.Accounts.Log.Color = cfg.Log.Color cfg.Accounts.Server.Version = version.String - // TODO: we need tracing on the accounts service as well. when we have it, apply default config from OCIS here. + if cfg.Tracing.Enabled { + cfg.Accounts.Tracing.Enabled = cfg.Tracing.Enabled + cfg.Accounts.Tracing.Type = cfg.Tracing.Type + cfg.Accounts.Tracing.Endpoint = cfg.Tracing.Endpoint + cfg.Accounts.Tracing.Collector = cfg.Tracing.Collector + } if cfg.TokenManager.JWTSecret != "" { cfg.Accounts.TokenManager.JWTSecret = cfg.TokenManager.JWTSecret