Add Datadog profiler (#32020)

This commit is contained in:
Dax McDonald 2022-03-01 17:44:03 -07:00 committed by GitHub
parent 4fbd05c5ef
commit 4eae2149d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

3
go.mod
View File

@ -169,7 +169,7 @@ require (
google.golang.org/api v0.66.0
google.golang.org/genproto v0.0.0-20220202230416-2a053f022f0d
google.golang.org/protobuf v1.27.1
gopkg.in/DataDog/dd-trace-go.v1 v1.36.0
gopkg.in/DataDog/dd-trace-go.v1 v1.36.2
gopkg.in/natefinch/lumberjack.v2 v2.0.0
gopkg.in/src-d/go-git.v4 v4.13.1
gopkg.in/yaml.v2 v2.4.0
@ -186,6 +186,7 @@ require (
github.com/DataDog/datadog-agent/pkg/obfuscate v0.0.0-20211129110424-6491aa3bf583 // indirect
github.com/DataDog/datadog-go v4.8.2+incompatible // indirect
github.com/DataDog/datadog-go/v5 v5.0.2 // indirect
github.com/DataDog/gostackparse v0.5.0 // indirect
github.com/DataDog/sketches-go v1.0.0 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/sprig v2.22.0+incompatible // indirect

3
go.sum
View File

@ -156,6 +156,7 @@ github.com/DataDog/datadog-go v4.8.2+incompatible h1:qbcKSx29aBLD+5QLvlQZlGmRMF/
github.com/DataDog/datadog-go v4.8.2+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/datadog-go/v5 v5.0.2 h1:UFtEe7662/Qojxkw1d6SboAeA0CPI3naKhVASwFn+04=
github.com/DataDog/datadog-go/v5 v5.0.2/go.mod h1:ZI9JFB4ewXbw1sBnF4sxsR2k1H3xjV+PUAOUsHvKpcU=
github.com/DataDog/gostackparse v0.5.0 h1:jb72P6GFHPHz2W0onsN51cS3FkaMDcjb0QzgxxA4gDk=
github.com/DataDog/gostackparse v0.5.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM=
github.com/DataDog/sketches-go v1.0.0 h1:chm5KSXO7kO+ywGWJ0Zs6tdmWU8PBXSbywFVciL6BG4=
github.com/DataDog/sketches-go v1.0.0/go.mod h1:O+XkJHWk9w4hDwY2ZUDU31ZC9sNYlYo8DiFsxjYeo1k=
@ -3007,6 +3008,8 @@ google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+Rur
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/DataDog/dd-trace-go.v1 v1.36.0 h1:t2KEcCXajtchpvoIGm0xU+Ytj8KkRyxsXVhWOGg6lEk=
gopkg.in/DataDog/dd-trace-go.v1 v1.36.0/go.mod h1:Cv0Bzs/zTzzrUDSw8Q+q/vC+uwPD+R530npGo0lfiCE=
gopkg.in/DataDog/dd-trace-go.v1 v1.36.2 h1:eDbrrRNAHY15yoftLKGMtgq0vuTXp897QEzAJh368jY=
gopkg.in/DataDog/dd-trace-go.v1 v1.36.2/go.mod h1:Cv0Bzs/zTzzrUDSw8Q+q/vC+uwPD+R530npGo0lfiCE=
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/alexcesaro/statsd.v2 v2.0.0 h1:FXkZSCZIH17vLCO5sO2UucTHsH9pc+17F6pl3JVCwMc=

View File

@ -1,7 +1,10 @@
package profiler
import (
"os"
"cloud.google.com/go/profiler"
ddprofiler "gopkg.in/DataDog/dd-trace-go.v1/profiler"
"github.com/sourcegraph/sourcegraph/cmd/frontend/envvar"
"github.com/sourcegraph/sourcegraph/internal/conf/deploy"
@ -21,7 +24,19 @@ func Init() error {
if !deploy.IsDeployTypeKubernetes(deploy.Type()) {
return nil
}
// https://docs.datadoghq.com/tracing/profiler/enabling/go/
if os.Getenv("DD_ENV") != "" {
profileTypes := []ddprofiler.ProfileType{ddprofiler.CPUProfile, ddprofiler.HeapProfile}
if os.Getenv("DD_PROFILE_ALL") != "" {
profileTypes = append(profileTypes, ddprofiler.MutexProfile, ddprofiler.BlockProfile)
}
return ddprofiler.Start(
ddprofiler.WithService(env.MyName),
ddprofiler.WithVersion(version.Version()),
ddprofiler.WithProfileTypes(profileTypes...,
),
)
}
return profiler.Start(profiler.Config{
Service: env.MyName,
ServiceVersion: version.Version(),