diff --git a/cmd/server.go b/cmd/server.go index fcb0c10e6..b3b872f57 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -4,6 +4,9 @@ package cmd import ( "io" + "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/opentracer" + "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer" + "github.com/molecula/featurebase/v3/ctl" "github.com/molecula/featurebase/v3/server" "github.com/molecula/featurebase/v3/tracing" @@ -11,6 +14,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" ) @@ -112,8 +116,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 ce1b525fe..994a57f6e 100644 --- a/ctl/server.go +++ b/ctl/server.go @@ -132,10 +132,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 a85d0f3e5..9dbe467e8 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 f9e52d0fe..5db14ee5f 100644 --- a/server/config.go +++ b/server/config.go @@ -237,6 +237,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"`