Skip to content

Commit

Permalink
ddtrace/tracer: add support for various environment variables (#696)
Browse files Browse the repository at this point in the history
This PR adds support for the following environment variables:

DD_<INTEGRATION>_ANALYTICS_ENABLED which enables analytics for the named integration,
DD_RUNTIME_METRICS_ENABLED which enables runtime metrics for the tracer
DD_TRACE_DEBUG which enables debug mode for the tracer.
  • Loading branch information
knusbaum authored Jul 22, 2020
1 parent bf1cbc5 commit 6d7c52c
Show file tree
Hide file tree
Showing 33 changed files with 239 additions and 42 deletions.
7 changes: 6 additions & 1 deletion contrib/Shopify/sarama/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package sarama
import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
"gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig"
)

Expand All @@ -24,7 +25,11 @@ func defaults(cfg *config) {
cfg.consumerServiceName = svc
}
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_SARAMA_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// An Option is used to customize the config for the sarama tracer.
Expand Down
8 changes: 7 additions & 1 deletion contrib/aws/aws-sdk-go/aws/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package aws

import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type config struct {
Expand All @@ -19,7 +21,11 @@ type Option func(*config)

func defaults(cfg *config) {
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_AWS_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// WithServiceName sets the given service name for the dialled connection.
Expand Down
8 changes: 7 additions & 1 deletion contrib/bradfitz/gomemcache/memcache/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package memcache

import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

const (
Expand All @@ -25,7 +27,11 @@ type ClientOption func(*clientConfig)
func defaults(cfg *clientConfig) {
cfg.serviceName = serviceName
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_MEMCACHE_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// WithServiceName sets the given service name for the dialled connection.
Expand Down
4 changes: 4 additions & 0 deletions contrib/confluentinc/confluent-kafka-go/kafka/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"context"
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
"gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig"
)

Expand All @@ -30,6 +31,9 @@ func newConfig(opts ...Option) *config {
// analyticsRate: globalconfig.AnalyticsRate(),
analyticsRate: math.NaN(),
}
if internal.BoolEnv("DD_TRACE_KAFKA_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
}
if svc := globalconfig.ServiceName(); svc != "" {
cfg.consumerServiceName = svc
}
Expand Down
8 changes: 7 additions & 1 deletion contrib/database/sql/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package sql

import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type config struct {
Expand All @@ -26,7 +28,11 @@ type RegisterOption = Option
func defaults(cfg *config) {
// default cfg.serviceName set in Register based on driver name
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_SQL_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// WithServiceName sets the given service name when registering a driver,
Expand Down
7 changes: 6 additions & 1 deletion contrib/emicklei/go-restful/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package restful
import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
"gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig"
)

Expand All @@ -17,9 +18,13 @@ type config struct {
}

func newConfig() *config {
rate := globalconfig.AnalyticsRate()
if internal.BoolEnv("DD_TRACE_RESTFUL_ANALYTICS_ENABLED", false) {
rate = 1.0
}
return &config{
serviceName: "go-restful",
analyticsRate: globalconfig.AnalyticsRate(),
analyticsRate: rate,
}
}

Expand Down
8 changes: 7 additions & 1 deletion contrib/garyburd/redigo/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package redigo // import "gopkg.in/DataDog/dd-trace-go.v1/contrib/garyburd/redig

import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type dialConfig struct {
Expand All @@ -20,7 +22,11 @@ type DialOption func(*dialConfig)
func defaults(cfg *dialConfig) {
cfg.serviceName = "redis.conn"
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_REDIGO_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// WithServiceName sets the given service name for the dialled connection.
Expand Down
7 changes: 6 additions & 1 deletion contrib/gin-gonic/gin/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"net/http"

"github.com/gin-gonic/gin"
"gopkg.in/DataDog/dd-trace-go.v1/internal"
"gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig"
)

Expand All @@ -19,8 +20,12 @@ type config struct {
}

func newConfig() *config {
rate := globalconfig.AnalyticsRate()
if internal.BoolEnv("DD_TRACE_GIN_ANALYTICS_ENABLED", false) {
rate = 1.0
}
return &config{
analyticsRate: globalconfig.AnalyticsRate(),
analyticsRate: rate,
resourceNamer: defaultResourceNamer,
}
}
Expand Down
8 changes: 7 additions & 1 deletion contrib/globalsign/mgo/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ package mgo
import (
"context"
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type mongoConfig struct {
Expand All @@ -17,11 +19,15 @@ type mongoConfig struct {
}

func newConfig() *mongoConfig {
rate := math.NaN()
if internal.BoolEnv("DD_TRACE_GIN_ANALYTICS_ENABLED", false) {
rate = 1.0
}
return &mongoConfig{
serviceName: "mongodb",
ctx: context.Background(),
// analyticsRate: globalconfig.AnalyticsRate(),
analyticsRate: math.NaN(),
analyticsRate: rate,
}
}

Expand Down
7 changes: 6 additions & 1 deletion contrib/go-chi/chi/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/ddtrace"
"gopkg.in/DataDog/dd-trace-go.v1/internal"
"gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig"
)

Expand All @@ -26,7 +27,11 @@ func defaults(cfg *config) {
if svc := globalconfig.ServiceName(); svc != "" {
cfg.serviceName = svc
}
cfg.analyticsRate = globalconfig.AnalyticsRate()
if internal.BoolEnv("DD_TRACE_CHI_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = globalconfig.AnalyticsRate()
}
}

// WithServiceName sets the given service name for the router.
Expand Down
8 changes: 7 additions & 1 deletion contrib/go-redis/redis/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package redis // import "gopkg.in/DataDog/dd-trace-go.v1/contrib/go-redis/redis"

import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type clientConfig struct {
Expand All @@ -20,7 +22,11 @@ type ClientOption func(*clientConfig)
func defaults(cfg *clientConfig) {
cfg.serviceName = "redis.client"
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_REDIS_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// WithServiceName sets the given service name for the client.
Expand Down
8 changes: 7 additions & 1 deletion contrib/go.mongodb.org/mongo-driver/mongo/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package mongo

import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type config struct {
Expand All @@ -20,7 +22,11 @@ type Option func(*config)
func defaults(cfg *config) {
cfg.serviceName = "mongo"
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_MONGO_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// WithServiceName sets the given service name for the dialled connection.
Expand Down
8 changes: 7 additions & 1 deletion contrib/gocql/gocql/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package gocql

import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type queryConfig struct {
Expand All @@ -21,7 +23,11 @@ type WrapOption func(*queryConfig)
func defaults(cfg *queryConfig) {
cfg.serviceName = "gocql.query"
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_GOCQL_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// WithServiceName sets the given service name for the returned query.
Expand Down
8 changes: 7 additions & 1 deletion contrib/gomodule/redigo/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package redigo // import "gopkg.in/DataDog/dd-trace-go.v1/contrib/gomodule/redig

import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type dialConfig struct {
Expand All @@ -20,7 +22,11 @@ type DialOption func(*dialConfig)
func defaults(cfg *dialConfig) {
cfg.serviceName = "redis.conn"
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_REDIGO_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// WithServiceName sets the given service name for the dialled connection.
Expand Down
8 changes: 7 additions & 1 deletion contrib/google.golang.org/api/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ package api
import (
"context"
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type config struct {
Expand All @@ -18,10 +20,14 @@ type config struct {
}

func newConfig(options ...Option) *config {
rate := math.NaN()
if internal.BoolEnv("DD_TRACE_GOOGLE_API_ANALYTICS_ENABLED", false) {
rate = 1.0
}
cfg := &config{
ctx: context.Background(),
// analyticsRate: globalconfig.AnalyticsRate(),
analyticsRate: math.NaN(),
analyticsRate: rate,
}
for _, opt := range options {
opt(cfg)
Expand Down
8 changes: 7 additions & 1 deletion contrib/google.golang.org/grpc.v12/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package grpc

import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
)

type interceptorConfig struct {
Expand All @@ -21,7 +23,11 @@ type InterceptorOption func(*interceptorConfig)
func defaults(cfg *interceptorConfig) {
// cfg.serviceName default set in interceptor
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_GRPC_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
}

// WithServiceName sets the given service name for the intercepted client.
Expand Down
7 changes: 6 additions & 1 deletion contrib/google.golang.org/grpc/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package grpc
import (
"math"

"gopkg.in/DataDog/dd-trace-go.v1/internal"
"gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig"

"google.golang.org/grpc/codes"
Expand Down Expand Up @@ -58,7 +59,11 @@ func defaults(cfg *config) {
cfg.traceStreamMessages = true
cfg.nonErrorCodes = map[codes.Code]bool{codes.Canceled: true}
// cfg.analyticsRate = globalconfig.AnalyticsRate()
cfg.analyticsRate = math.NaN()
if internal.BoolEnv("DD_TRACE_GRPC_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = math.NaN()
}
cfg.ignoredMetadata = map[string]struct{}{
"x-datadog-trace-id": {},
"x-datadog-parent-id": {},
Expand Down
7 changes: 6 additions & 1 deletion contrib/gorilla/mux/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (

"gopkg.in/DataDog/dd-trace-go.v1/ddtrace"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
"gopkg.in/DataDog/dd-trace-go.v1/internal"
"gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig"
)

Expand All @@ -26,7 +27,11 @@ type routerConfig struct {
type RouterOption func(*routerConfig)

func defaults(cfg *routerConfig) {
cfg.analyticsRate = globalconfig.AnalyticsRate()
if internal.BoolEnv("DD_TRACE_MUX_ANALYTICS_ENABLED", false) {
cfg.analyticsRate = 1.0
} else {
cfg.analyticsRate = globalconfig.AnalyticsRate()
}
cfg.serviceName = "mux.router"
if svc := globalconfig.ServiceName(); svc != "" {
cfg.serviceName = svc
Expand Down
Loading

0 comments on commit 6d7c52c

Please sign in to comment.