From c23608557bcecd133688cfb2faf44d022aeff0fd Mon Sep 17 00:00:00 2001 From: Julio Martinez Date: Tue, 10 Jan 2023 14:06:09 -0800 Subject: [PATCH] Add dd tracer and associated config options (#2403) Co-authored-by: Julio (cherry picked from commit 581a4d19a451e329182f9a54c77b1ca7cb9e999b) --- cmd/server.go | 7 ++++++- ctl/server.go | 3 +++ go.mod | 10 ++++++++++ go.sum | 2 ++ server/config.go | 1 + 5 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cmd/server.go b/cmd/server.go index e1a9deed7..bf49ac359 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -12,6 +12,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" jaegercfg "github.com/uber/jaeger-client-go/config" + "gopkg.in/DataDog/dd-trace-go.v1/profiler" ) @@ -113,8 +114,12 @@ on the configured port.`, } defer closer.Close() tracing.GlobalTracer = opentracing.NewTracer(tracer, Server.Logger()) - } + } else if Server.Config.DataDog.EnableTracing { // Give preference to legacy support of jaeger + t := opentracer.New(tracer.WithServiceName(Server.Config.DataDog.Service)) + defer tracer.Stop() + tracing.GlobalTracer = opentracing.NewTracer(t, Server.Logger()) + } return errors.Wrap(Server.Wait(), "waiting on Server") }, } diff --git a/ctl/server.go b/ctl/server.go index b1320a73b..f1a17c8e3 100644 --- a/ctl/server.go +++ b/ctl/server.go @@ -133,10 +133,13 @@ func serverFlagSet(srv *server.Config, prefix string) *pflag.FlagSet { flags.StringSliceVar(&srv.Auth.ConfiguredIPs, pre("auth.configured-ips"), srv.Auth.ConfiguredIPs, "List of configured IPs allowed for ingest") flags.BoolVar(&srv.DataDog.Enable, pre("datadog.enable"), false, "enable continuous profiling with DataDog cloud service, Note you must have DataDog agent installed") + flags.BoolVar(&srv.DataDog.EnableTracing, pre("datadog.enable-tracing"), false, "Enable continuous tracing with DataDog cloud service, this flag is mutually exclusive to tracing.* parameters") + flags.StringVar(&srv.DataDog.Service, pre("datadog.service"), "default-service", "The Datadog service name, for example my-web-app") flags.StringVar(&srv.DataDog.Env, pre("datadog.env"), "default-env", "The Datadog environment name, for example, production") flags.StringVar(&srv.DataDog.Version, pre("datadog.version"), "default-version", "The version of your application") flags.StringVar(&srv.DataDog.Tags, pre("datadog.tags"), "molecula", "The tags to apply to an uploaded profile. Must be a list of in the format :,:") + flags.BoolVar(&srv.DataDog.CPUProfile, pre("datadog.cpu-profile"), true, "golang pprof cpu profile ") flags.BoolVar(&srv.DataDog.HeapProfile, pre("datadog.heap-profile"), true, "golang pprof heap profile") flags.BoolVar(&srv.DataDog.MutexProfile, pre("datadog.mutex-profile"), false, "golang pprof mutex profile") diff --git a/go.mod b/go.mod index 8fd3966df..a7caa917e 100644 --- a/go.mod +++ b/go.mod @@ -92,6 +92,16 @@ require ( robpike.io/ivy v0.2.9 ) +require ( + github.com/DataDog/datadog-agent/pkg/obfuscate v0.0.0-20211129110424-6491aa3bf583 // indirect + github.com/DataDog/sketches-go v1.0.0 // indirect + github.com/dgraph-io/ristretto v0.1.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/philhofer/fwd v1.1.1 // indirect + github.com/tinylib/msgp v1.1.2 // indirect +) + require ( github.com/DataDog/datadog-go/v5 v5.1.0 // indirect github.com/DataDog/gostackparse v0.5.0 // indirect diff --git a/go.sum b/go.sum index 2efa9f29e..8c291fb52 100644 --- a/go.sum +++ b/go.sum @@ -228,6 +228,7 @@ github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFM github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= @@ -463,6 +464,7 @@ github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= diff --git a/server/config.go b/server/config.go index 43ac93383..282e3fe56 100644 --- a/server/config.go +++ b/server/config.go @@ -238,6 +238,7 @@ type Config struct { DataDog struct { Enable bool `toml:"enable"` + EnableTracing bool `toml:"enable-tracing"` Service string `toml:"service"` Env string `toml:"env"` Version string `toml:"version"`