diff --git a/examples/datadog/go.mod b/examples/datadog/go.mod new file mode 100644 index 0000000..772da79 --- /dev/null +++ b/examples/datadog/go.mod @@ -0,0 +1,9 @@ +module github.com/felixge/go-profiler-notes/examples/datadog + +go 1.15 + +require ( + github.com/DataDog/datadog-go v4.2.0+incompatible // indirect + github.com/google/uuid v1.1.4 // indirect + gopkg.in/DataDog/dd-trace-go.v1 v1.28.0 +) diff --git a/examples/datadog/go.sum b/examples/datadog/go.sum new file mode 100644 index 0000000..5cd6bbd --- /dev/null +++ b/examples/datadog/go.sum @@ -0,0 +1,7 @@ +github.com/DataDog/datadog-go v4.2.0+incompatible h1:Q73jzyKHwyA04Gf4SSukRF+KR4wJEimU6tAuU0B8Y4Y= +github.com/DataDog/datadog-go v4.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/google/uuid v1.1.4 h1:0ecGp3skIrHWPNGPJDaBIghfA6Sp7Ruo2Io8eLKzWm0= +github.com/google/uuid v1.1.4/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/tinylib/msgp v1.1.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +gopkg.in/DataDog/dd-trace-go.v1 v1.28.0 h1:EmglUJuykRsTwsQDcKaAo3CmOunWU6Dqk7U2lo7Pjss= +gopkg.in/DataDog/dd-trace-go.v1 v1.28.0/go.mod h1:Sp1lku8WJMvNV0kjDI4Ni/T7J/U3BO5ct5kEaoVU8+I= diff --git a/examples/datadog/main.go b/examples/datadog/main.go new file mode 100644 index 0000000..e4e4f63 --- /dev/null +++ b/examples/datadog/main.go @@ -0,0 +1,43 @@ +package main + +import ( + "fmt" + _ "net/http/pprof" + "os" + "time" + + "gopkg.in/DataDog/dd-trace-go.v1/profiler" +) + +func main() { + if err := run(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func run() error { + if err := startProfiler(); err != nil { + return err + } + defer profiler.Stop() + + for { + time.Sleep(10 * time.Millisecond) + } +} + +func startProfiler() error { + return profiler.Start( + profiler.WithService("datadog-example"), + profiler.WithEnv("localhost"), + profiler.WithVersion("1.0"), + profiler.WithProfileTypes( + profiler.CPUProfile, + profiler.HeapProfile, + profiler.MutexProfile, + profiler.GoroutineProfile, + profiler.BlockProfile, + ), + ) +}