dd-trace-go

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 3, 2023 License: Apache-2.0, BSD-3-Clause, Apache-2.0

README

Main Branch and Release Tests System Tests CodeQL APM Parametric Tests codecov

Godoc

Datadog Client Libraries for Go

This repository contains Go packages for the client-side components of the Datadog product suite for Application Performance Monitoring, Continuous Profiling and Application Security Monitoring of Go applications.

Installing

This module contains many packages, but most users should probably install the two packages below:

go get github.com/lsgndln/dd-trace-go/ddtrace/tracer
go get github.com/lsgndln/dd-trace-go/profiler

Additionally there are many contrib packages that can be installed to automatically instrument and trace commonly used Go libraries such as net/http, gorilla/mux or database/sql:

go get github.com/lsgndln/dd-trace-go/contrib/gorilla/mux

If you installed more packages than you intended, you can use go mod tidy to remove any unused packages.

Documentation

Support Policy

Datadog APM for Go is built upon dependencies defined in specific versions of the host operating system, Go releases, and the Datadog Agent/API. For Go the two latest releases are GA supported and the version before that is in Maintenance. We do make efforts to support older releases, but generally these releases are considered Legacy. This library only officially supports first class ports of Go.

Level Support provided
General Availability (GA) Full implementation of all features. Full support for new features, bug & security fixes.
Maintenance Full implementation of existing features. May receive new features. Support for bug & security fixes only.
Legacy Legacy implementation. May have limited function, but no maintenance provided. Not guaranteed to compile the latest version of dd-trace-go. Contact our customer support team for special requests.

Supported Versions

Go Version Support level
1.20 GA
1.19 GA
1.18 Maintenance
1.17 Legacy
  • Datadog's Trace Agent >= 5.21.1

Package Versioning

A Minor version change will be released whenever a new version of Go is released. At that time the newest version of Go is added to GA, the second oldest supported version moved to Maintenance and the oldest previously supported version dropped to Legacy. For example: For a dd-trace-go version 1.37.*

Go Version Support
1.18 GA
1.17 GA
1.16 Maintenance

Then after Go 1.19 is released there will be a new dd-trace-go version 1.38.0 with support:

Go Version Support
1.19 GA
1.18 GA
1.17 Maintenance
1.16 Legacy

Contributing

Before considering contributions to the project, please take a moment to read our brief contribution guidelines.

Testing

Tests can be run locally using the Go toolset. The grpc.v12 integration will fail (and this is normal), because it covers for deprecated methods. In the CI environment we vendor this version of the library inside the integration. Under normal circumstances this is not something that we want to do, because users using this integration might be running versions different from the vendored one, creating hard to debug conflicts.

To run integration tests locally, you should set the INTEGRATION environment variable. The dependencies of the integration tests are best run via Docker. To get an idea about the versions and the set-up take a look at our docker-compose config.

The best way to run the entire test suite is using the test.sh script. You'll need Docker and docker-compose installed. Run ./test.sh --all to run all of the integration tests through the docker-compose environment. Run ./test.sh --help for more options.

Directories

Path Synopsis
Package appsec provides application security features in the form of SDK functions that can be manually called to monitor specific code paths and data.
Package appsec provides application security features in the form of SDK functions that can be manually called to monitor specific code paths and data.
contrib
99designs/gqlgen
Package gqlgen contains an implementation of a gqlgen tracer, and functions to construct and configure the tracer.
Package gqlgen contains an implementation of a gqlgen tracer, and functions to construct and configure the tracer.
Shopify/sarama
Package sarama provides functions to trace the Shopify/sarama package (https://github.com/Shopify/sarama).
Package sarama provides functions to trace the Shopify/sarama package (https://github.com/Shopify/sarama).
aws/aws-sdk-go/aws
Package aws provides functions to trace aws/aws-sdk-go (https://github.com/aws/aws-sdk-go).
Package aws provides functions to trace aws/aws-sdk-go (https://github.com/aws/aws-sdk-go).
bradfitz/gomemcache/memcache
Package memcache provides functions to trace the bradfitz/gomemcache package (https://github.com/bradfitz/gomemcache).
Package memcache provides functions to trace the bradfitz/gomemcache package (https://github.com/bradfitz/gomemcache).
cloud.google.com/go/pubsub.v1
Package pubsub provides functions to trace the cloud.google.com/pubsub/go package.
Package pubsub provides functions to trace the cloud.google.com/pubsub/go package.
confluentinc/confluent-kafka-go/kafka
Package kafka provides functions to trace the confluentinc/confluent-kafka-go package (https://github.com/confluentinc/confluent-kafka-go).
Package kafka provides functions to trace the confluentinc/confluent-kafka-go package (https://github.com/confluentinc/confluent-kafka-go).
database/sql
Package sql provides functions to trace the database/sql package (https://golang.org/pkg/database/sql).
Package sql provides functions to trace the database/sql package (https://golang.org/pkg/database/sql).
elastic/go-elasticsearch.v6
Package elastic provides functions to trace the github.com/elastic/go-elasticsearch packages.
Package elastic provides functions to trace the github.com/elastic/go-elasticsearch packages.
emicklei/go-restful
Package restful provides functions to trace the emicklei/go-restful package (https://github.com/emicklei/go-restful).
Package restful provides functions to trace the emicklei/go-restful package (https://github.com/emicklei/go-restful).
garyburd/redigo
Package redigo provides functions to trace the garyburd/redigo package (https://github.com/garyburd/redigo).
Package redigo provides functions to trace the garyburd/redigo package (https://github.com/garyburd/redigo).
gin-gonic/gin
Package gin provides functions to trace the gin-gonic/gin package (https://github.com/gin-gonic/gin).
Package gin provides functions to trace the gin-gonic/gin package (https://github.com/gin-gonic/gin).
globalsign/mgo
Package mgo provides functions and types which allow tracing of the MGO MongoDB client (https://github.com/globalsign/mgo)
Package mgo provides functions and types which allow tracing of the MGO MongoDB client (https://github.com/globalsign/mgo)
go-chi/chi
Package chi provides tracing functions for tracing the go-chi/chi package (https://github.com/go-chi/chi).
Package chi provides tracing functions for tracing the go-chi/chi package (https://github.com/go-chi/chi).
go-chi/chi.v5
Package chi provides tracing functions for tracing the go-chi/chi/v5 package (https://github.com/go-chi/chi).
Package chi provides tracing functions for tracing the go-chi/chi/v5 package (https://github.com/go-chi/chi).
go-redis/redis
Package redis provides tracing functions for tracing the go-redis/redis package (https://github.com/go-redis/redis).
Package redis provides tracing functions for tracing the go-redis/redis package (https://github.com/go-redis/redis).
go-redis/redis.v7
Package redis provides tracing functions for tracing the go-redis/redis package (https://github.com/go-redis/redis).
Package redis provides tracing functions for tracing the go-redis/redis package (https://github.com/go-redis/redis).
go-redis/redis.v8
Package redis provides tracing functions for tracing the go-redis/redis package (https://github.com/go-redis/redis).
Package redis provides tracing functions for tracing the go-redis/redis package (https://github.com/go-redis/redis).
go.mongodb.org/mongo-driver/mongo
Package mongo provides functions to trace the mongodb/mongo-go-driver package (https://github.com/mongodb/mongo-go-driver).
Package mongo provides functions to trace the mongodb/mongo-go-driver package (https://github.com/mongodb/mongo-go-driver).
gocql/gocql
Package gocql provides functions to trace the gocql/gocql package (https://github.com/gocql/gocql).
Package gocql provides functions to trace the gocql/gocql package (https://github.com/gocql/gocql).
gofiber/fiber.v2
Package fiber provides tracing functions for tracing the fiber package (https://github.com/gofiber/fiber).
Package fiber provides tracing functions for tracing the fiber package (https://github.com/gofiber/fiber).
gomodule/redigo
Package redigo provides functions to trace the gomodule/redigo package (https://github.com/gomodule/redigo).
Package redigo provides functions to trace the gomodule/redigo package (https://github.com/gomodule/redigo).
google.golang.org/api
Package api provides functions to trace the google.golang.org/api package.
Package api provides functions to trace the google.golang.org/api package.
google.golang.org/grpc
Package grpc is a generated protocol buffer package.
Package grpc is a generated protocol buffer package.
google.golang.org/grpc.v12
Package grpc is a generated protocol buffer package.
Package grpc is a generated protocol buffer package.
gopkg.in/jinzhu/gorm.v1
Package gorm provides helper functions for tracing the jinzhu/gorm package (https://github.com/jinzhu/gorm).
Package gorm provides helper functions for tracing the jinzhu/gorm package (https://github.com/jinzhu/gorm).
gorilla/mux
Package mux provides tracing functions for tracing the gorilla/mux package (https://github.com/gorilla/mux).
Package mux provides tracing functions for tracing the gorilla/mux package (https://github.com/gorilla/mux).
gorm.io/gorm.v1
Package gorm provides helper functions for tracing the gorm.io/gorm package (https://github.com/go-gorm/gorm).
Package gorm provides helper functions for tracing the gorm.io/gorm package (https://github.com/go-gorm/gorm).
graph-gophers/graphql-go
Package graphql provides functions to trace the graph-gophers/graphql-go package (https://github.com/graph-gophers/graphql-go).
Package graphql provides functions to trace the graph-gophers/graphql-go package (https://github.com/graph-gophers/graphql-go).
hashicorp/vault
Package vault contains functions to construct or augment an http.Client that will integrate with the github.com/hashicorp/vault/api and collect traces to send to Datadog.
Package vault contains functions to construct or augment an http.Client that will integrate with the github.com/hashicorp/vault/api and collect traces to send to Datadog.
internal/httptrace
Package httptrace provides functionalities to trace HTTP requests that are commonly required and used across contrib/** integrations.
Package httptrace provides functionalities to trace HTTP requests that are commonly required and used across contrib/** integrations.
jinzhu/gorm
Package gorm provides helper functions for tracing the jinzhu/gorm package (https://github.com/jinzhu/gorm).
Package gorm provides helper functions for tracing the jinzhu/gorm package (https://github.com/jinzhu/gorm).
jmoiron/sqlx
Package sqlx provides functions to trace the jmoiron/sqlx package (https://github.com/jmoiron/sqlx).
Package sqlx provides functions to trace the jmoiron/sqlx package (https://github.com/jmoiron/sqlx).
julienschmidt/httprouter
Package httprouter provides functions to trace the julienschmidt/httprouter package (https://github.com/julienschmidt/httprouter).
Package httprouter provides functions to trace the julienschmidt/httprouter package (https://github.com/julienschmidt/httprouter).
k8s.io/client-go/kubernetes
Package kubernetes provides functions to trace k8s.io/client-go (https://github.com/kubernetes/client-go).
Package kubernetes provides functions to trace k8s.io/client-go (https://github.com/kubernetes/client-go).
labstack/echo
Package echo provides functions to trace the labstack/echo package (https://github.com/labstack/echo).
Package echo provides functions to trace the labstack/echo package (https://github.com/labstack/echo).
labstack/echo.v4
Package echo provides functions to trace the labstack/echo package (https://github.com/labstack/echo).
Package echo provides functions to trace the labstack/echo package (https://github.com/labstack/echo).
net/http
Package http provides functions to trace the net/http package (https://golang.org/pkg/net/http).
Package http provides functions to trace the net/http package (https://golang.org/pkg/net/http).
olivere/elastic
Package elastic provides functions to trace the gopkg.in/olivere/elastic.v{3,5} packages.
Package elastic provides functions to trace the gopkg.in/olivere/elastic.v{3,5} packages.
sirupsen/logrus
Package logrus provides a log/span correlation hook for the sirupsen/logrus package (https://github.com/sirupsen/logrus).
Package logrus provides a log/span correlation hook for the sirupsen/logrus package (https://github.com/sirupsen/logrus).
syndtr/goleveldb/leveldb
Package leveldb provides functions to trace the syndtr/goleveldb package (https://github.com/syndtr/goleveldb).
Package leveldb provides functions to trace the syndtr/goleveldb package (https://github.com/syndtr/goleveldb).
twitchtv/twirp
Package twirp provides tracing functions for tracing clients and servers generated by the twirp framework (https://github.com/twitchtv/twirp).
Package twirp provides tracing functions for tracing clients and servers generated by the twirp framework (https://github.com/twitchtv/twirp).
urfave/negroni
Package negroni provides helper functions for tracing the urfave/negroni package (https://github.com/urfave/negroni).
Package negroni provides helper functions for tracing the urfave/negroni package (https://github.com/urfave/negroni).
zenazn/goji.v1/web
Package web provides functions to trace the zenazn/goji/web package (https://github.com/zenazn/goji).
Package web provides functions to trace the zenazn/goji/web package (https://github.com/zenazn/goji).
Package ddtrace contains the interfaces that specify the implementations of Datadog's tracing library, as well as a set of sub-packages containing various implementations: our native implementation ("tracer"), a wrapper that can be used with Opentracing ("opentracer") and a mock tracer to be used for testing ("mocktracer").
Package ddtrace contains the interfaces that specify the implementations of Datadog's tracing library, as well as a set of sub-packages containing various implementations: our native implementation ("tracer"), a wrapper that can be used with Opentracing ("opentracer") and a mock tracer to be used for testing ("mocktracer").
ext
Package ext contains a set of Datadog-specific constants.
Package ext contains a set of Datadog-specific constants.
mocktracer
Package mocktracer provides a mock implementation of the tracer used in testing.
Package mocktracer provides a mock implementation of the tracer used in testing.
opentracer
Package opentracer is in "Maintenance" mode and limited support is offered.
Package opentracer is in "Maintenance" mode and limited support is offered.
tracer
Package tracer contains Datadog's core tracing client.
Package tracer contains Datadog's core tracing client.
appsec/dyngo
Package dyngo is the Go implementation of Datadog's Instrumentation Gateway which provides an event-based instrumentation API based on a stack representation of instrumented functions along with nested event listeners.
Package dyngo is the Go implementation of Datadog's Instrumentation Gateway which provides an event-based instrumentation API based on a stack representation of instrumented functions along with nested event listeners.
appsec/dyngo/instrumentation
Package instrumentation holds code commonly used between all instrumentation declinations (currently httpsec/grpcsec).
Package instrumentation holds code commonly used between all instrumentation declinations (currently httpsec/grpcsec).
appsec/dyngo/instrumentation/grpcsec
Package grpcsec is the gRPC instrumentation API and contract for AppSec defining an abstract run-time representation of gRPC handlers.
Package grpcsec is the gRPC instrumentation API and contract for AppSec defining an abstract run-time representation of gRPC handlers.
appsec/dyngo/instrumentation/httpsec
Package httpsec defines is the HTTP instrumentation API and contract for AppSec.
Package httpsec defines is the HTTP instrumentation API and contract for AppSec.
appsec/waf/include
Package include is required to help go tools support vendoring.
Package include is required to help go tools support vendoring.
appsec/waf/lib/darwin-amd64
Package vendor is required to help go tools support vendoring.
Package vendor is required to help go tools support vendoring.
appsec/waf/lib/darwin-arm64
Package vendor is required to help go tools support vendoring.
Package vendor is required to help go tools support vendoring.
appsec/waf/lib/linux-amd64
Package vendor is required to help go tools support vendoring.
Package vendor is required to help go tools support vendoring.
appsec/waf/lib/linux-arm64
Package vendor is required to help go tools support vendoring.
Package vendor is required to help go tools support vendoring.
globalconfig
Package globalconfig stores configuration which applies globally to both the tracer and integrations.
Package globalconfig stores configuration which applies globally to both the tracer and integrations.
hostname/cachedfetch
Package cachedfetch provides a read-through cache for fetched values.
Package cachedfetch provides a read-through cache for fetched values.
hostname/validate
Package validate provides hostname validation helpers
Package validate provides hostname validation helpers
httpmem
Package httpmem provides an in-memory HTTP server and client, for testing
Package httpmem provides an in-memory HTTP server and client, for testing
log
Package log provides logging utilities for the tracer.
Package log provides logging utilities for the tracer.
osinfo
Package osinfo provides information about the current operating system release
Package osinfo provides information about the current operating system release
telemetry
Package telemetry implements a client for sending telemetry information to Datadog regarding usage of an APM library such as tracing or profiling.
Package telemetry implements a client for sending telemetry information to Datadog regarding usage of an APM library such as tracing or profiling.
traceprof
Package traceprof contains shared logic for cross-cutting tracer/profiler features.
Package traceprof contains shared logic for cross-cutting tracer/profiler features.
traceprof/testapp
Package testapp has the protbuf/grpc definitions for the test application implemented in traceproftest.
Package testapp has the protbuf/grpc definitions for the test application implemented in traceproftest.
traceprof/traceproftest
Package traceproftest contains test cases and test helpers for testing cross-cutting tracer/profiler features such as code hotspots and endpoints.
Package traceproftest contains test cases and test helpers for testing cross-cutting tracer/profiler features such as code hotspots and endpoints.
Package profiler periodically collects and sends profiles to the Datadog API.
Package profiler periodically collects and sends profiles to the Datadog API.
internal/fastdelta
Package fastdelta tries to match up samples between two pprof profiles and take their difference.
Package fastdelta tries to match up samples between two pprof profiles and take their difference.
internal/immutable
Package immutable provides read-only types
Package immutable provides read-only types
internal/pproflite
Package pproflite implements zero-allocation pprof encoding and decoding.
Package pproflite implements zero-allocation pprof encoding and decoding.
internal/pprofutils
Package pprofutils is a fork of github.com/felixge/pprofutils, see README.
Package pprofutils is a fork of github.com/felixge/pprofutils, see README.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL