ddtrace 0.20.0 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -3
- data/Rakefile +1 -1
- data/docs/GettingStarted.md +25 -7
- data/lib/ddtrace.rb +4 -31
- data/lib/ddtrace/configuration.rb +13 -46
- data/lib/ddtrace/configuration/{resolver.rb → dependency_resolver.rb} +2 -2
- data/lib/ddtrace/configuration/option.rb +32 -0
- data/lib/ddtrace/configuration/option_definition.rb +27 -0
- data/lib/ddtrace/configuration/option_definition_set.rb +18 -0
- data/lib/ddtrace/configuration/option_set.rb +6 -0
- data/lib/ddtrace/configuration/options.rb +93 -0
- data/lib/ddtrace/configuration/pin_setup.rb +1 -1
- data/lib/ddtrace/configuration/settings.rb +47 -0
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +6 -0
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +2 -2
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +7 -0
- data/lib/ddtrace/contrib/active_record/events/sql.rb +6 -0
- data/lib/ddtrace/contrib/active_record/ext.rb +2 -3
- data/lib/ddtrace/contrib/analytics.rb +3 -4
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/aws/ext.rb +5 -6
- data/lib/ddtrace/contrib/aws/instrumentation.rb +7 -0
- data/lib/ddtrace/contrib/configuration/settings.rb +4 -14
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/dalli/ext.rb +3 -2
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +7 -0
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/delayed_job/ext.rb +1 -1
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +2 -2
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +11 -1
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/excon/ext.rb +2 -1
- data/lib/ddtrace/contrib/excon/middleware.rb +15 -0
- data/lib/ddtrace/contrib/extensions.rb +62 -0
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/faraday/ext.rb +2 -1
- data/lib/ddtrace/contrib/faraday/middleware.rb +15 -0
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +19 -0
- data/lib/ddtrace/contrib/grape/ext.rb +2 -2
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/graphql/ext.rb +2 -0
- data/lib/ddtrace/contrib/graphql/patcher.rb +8 -2
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +9 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +4 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -0
- data/lib/ddtrace/contrib/grpc/ext.rb +2 -1
- data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/http/ext.rb +2 -1
- data/lib/ddtrace/contrib/http/instrumentation.rb +54 -19
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/mongodb/ext.rb +2 -2
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +18 -0
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/mysql2/ext.rb +2 -2
- data/lib/ddtrace/contrib/mysql2/{client.rb → instrumentation.rb} +32 -12
- data/lib/ddtrace/contrib/mysql2/patcher.rb +2 -2
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/racecar/ext.rb +1 -1
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/rack/ext.rb +1 -1
- data/lib/ddtrace/contrib/rails/action_controller.rb +3 -0
- data/lib/ddtrace/contrib/rails/active_support.rb +1 -0
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/rails/ext.rb +2 -5
- data/lib/ddtrace/contrib/rails/utils.rb +17 -1
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/rake/ext.rb +1 -1
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/redis/ext.rb +4 -5
- data/lib/ddtrace/contrib/redis/tags.rb +24 -6
- data/lib/ddtrace/contrib/registerable.rb +1 -1
- data/lib/ddtrace/contrib/registry.rb +42 -0
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/resque/ext.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/rest_client/ext.rb +2 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +14 -0
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -1
- data/lib/ddtrace/contrib/sequel/database.rb +2 -0
- data/lib/ddtrace/contrib/sequel/dataset.rb +2 -0
- data/lib/ddtrace/contrib/sequel/ext.rb +2 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +32 -14
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/shoryuken/ext.rb +1 -1
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/sidekiq/ext.rb +1 -1
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/sinatra/ext.rb +3 -4
- data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -0
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +12 -0
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +1 -1
- data/lib/ddtrace/environment.rb +15 -0
- data/lib/ddtrace/ext/analytics.rb +1 -0
- data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
- data/lib/ddtrace/propagation/distributed_headers.rb +14 -4
- data/lib/ddtrace/span.rb +4 -0
- data/lib/ddtrace/tracer.rb +6 -1
- data/lib/ddtrace/version.rb +1 -1
- metadata +14 -15
- data/lib/ddtrace/configurable.rb +0 -83
- data/lib/ddtrace/configuration/proxy.rb +0 -25
- data/lib/ddtrace/contrib/base.rb +0 -16
- data/lib/ddtrace/contrib/configuration/option.rb +0 -33
- data/lib/ddtrace/contrib/configuration/option_definition.rb +0 -29
- data/lib/ddtrace/contrib/configuration/option_definition_set.rb +0 -20
- data/lib/ddtrace/contrib/configuration/option_set.rb +0 -8
- data/lib/ddtrace/contrib/configuration/options.rb +0 -95
- data/lib/ddtrace/registry.rb +0 -42
- data/lib/ddtrace/registry/registerable.rb +0 -20
@@ -8,7 +8,7 @@ module Datadog
|
|
8
8
|
# Custom settings for the DelayedJob integration
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
10
10
|
option :analytics_enabled,
|
11
|
-
default: -> { env_to_bool(Ext::
|
11
|
+
default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
|
12
12
|
lazy: true
|
13
13
|
|
14
14
|
option :analytics_sample_rate,
|
@@ -4,7 +4,7 @@ module Datadog
|
|
4
4
|
# DelayedJob integration constants
|
5
5
|
module Ext
|
6
6
|
APP = 'delayed_job'.freeze
|
7
|
-
|
7
|
+
ENV_ANALYTICS_ENABLED = 'DD_DELAYED_JOB_ANALYTICS_ENABLED'.freeze
|
8
8
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_DELAYED_JOB_ANALYTICS_SAMPLE_RATE'.freeze
|
9
9
|
SERVICE_NAME = 'delayed_job'.freeze
|
10
10
|
SPAN_JOB = 'delayed_job'.freeze
|
@@ -7,6 +7,14 @@ module Datadog
|
|
7
7
|
module Configuration
|
8
8
|
# Custom settings for the Elasticsearch integration
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
10
|
+
option :analytics_enabled,
|
11
|
+
default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
|
12
|
+
lazy: true
|
13
|
+
|
14
|
+
option :analytics_sample_rate,
|
15
|
+
default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
|
16
|
+
lazy: true
|
17
|
+
|
10
18
|
option :quantize, default: {}
|
11
19
|
option :service_name, default: Ext::SERVICE_NAME
|
12
20
|
end
|
@@ -4,10 +4,10 @@ module Datadog
|
|
4
4
|
# Elasticsearch integration constants
|
5
5
|
module Ext
|
6
6
|
APP = 'elasticsearch'.freeze
|
7
|
+
ENV_ANALYTICS_ENABLED = 'DD_ELASTICSEARCH_ANALYTICS_ENABLED'.freeze
|
8
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_ELASTICSEARCH_ANALYTICS_SAMPLE_RATE'.freeze
|
7
9
|
SERVICE_NAME = 'elasticsearch'.freeze
|
8
|
-
|
9
10
|
SPAN_QUERY = 'elasticsearch.query'.freeze
|
10
|
-
|
11
11
|
TAG_BODY = 'elasticsearch.body'.freeze
|
12
12
|
TAG_METHOD = 'elasticsearch.method'.freeze
|
13
13
|
TAG_PARAMS = 'elasticsearch.params'.freeze
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'ddtrace/contrib/patcher'
|
2
2
|
require 'ddtrace/ext/app_types'
|
3
3
|
require 'ddtrace/ext/net'
|
4
|
+
require 'ddtrace/contrib/analytics'
|
4
5
|
require 'ddtrace/contrib/elasticsearch/ext'
|
5
6
|
|
6
7
|
module Datadog
|
@@ -83,11 +84,16 @@ module Datadog
|
|
83
84
|
params = JSON.generate(params) if params && !params.is_a?(String)
|
84
85
|
body = JSON.generate(body) if body && !body.is_a?(String)
|
85
86
|
|
87
|
+
# Set analytics sample rate
|
88
|
+
if Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
|
89
|
+
Contrib::Analytics.set_sample_rate(span, datadog_configuration[:analytics_sample_rate])
|
90
|
+
end
|
91
|
+
|
86
92
|
span.set_tag(Datadog::Contrib::Elasticsearch::Ext::TAG_METHOD, method)
|
87
93
|
span.set_tag(Datadog::Contrib::Elasticsearch::Ext::TAG_URL, url)
|
88
94
|
span.set_tag(Datadog::Contrib::Elasticsearch::Ext::TAG_PARAMS, params) if params
|
89
95
|
if body
|
90
|
-
quantize_options =
|
96
|
+
quantize_options = datadog_configuration[:quantize]
|
91
97
|
quantized_body = Datadog::Contrib::Elasticsearch::Quantize.format_body(body, quantize_options)
|
92
98
|
span.set_tag(Datadog::Contrib::Elasticsearch::Ext::TAG_BODY, quantized_body)
|
93
99
|
end
|
@@ -106,6 +112,10 @@ module Datadog
|
|
106
112
|
end
|
107
113
|
response
|
108
114
|
end
|
115
|
+
|
116
|
+
def datadog_configuration
|
117
|
+
Datadog.configuration[:elasticsearch]
|
118
|
+
end
|
109
119
|
end
|
110
120
|
end
|
111
121
|
end
|
@@ -7,6 +7,14 @@ module Datadog
|
|
7
7
|
module Configuration
|
8
8
|
# Custom settings for the Excon integration
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
10
|
+
option :analytics_enabled,
|
11
|
+
default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
|
12
|
+
lazy: true
|
13
|
+
|
14
|
+
option :analytics_sample_rate,
|
15
|
+
default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
|
16
|
+
lazy: true
|
17
|
+
|
10
18
|
option :distributed_tracing, default: true
|
11
19
|
option :error_handler, default: nil
|
12
20
|
option :service_name, default: Ext::SERVICE_NAME
|
@@ -4,8 +4,9 @@ module Datadog
|
|
4
4
|
# Excon integration constants
|
5
5
|
module Ext
|
6
6
|
APP = 'excon'.freeze
|
7
|
+
ENV_ANALYTICS_ENABLED = 'DD_EXCON_ANALYTICS_ENABLED'.freeze
|
8
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_EXCON_ANALYTICS_SAMPLE_RATE'.freeze
|
7
9
|
SERVICE_NAME = 'excon'.freeze
|
8
|
-
|
9
10
|
SPAN_REQUEST = 'excon.request'.freeze
|
10
11
|
end
|
11
12
|
end
|
@@ -3,6 +3,7 @@ require 'ddtrace/ext/http'
|
|
3
3
|
require 'ddtrace/ext/net'
|
4
4
|
require 'ddtrace/ext/distributed'
|
5
5
|
require 'ddtrace/propagation/http_propagator'
|
6
|
+
require 'ddtrace/contrib/analytics'
|
6
7
|
require 'ddtrace/contrib/excon/ext'
|
7
8
|
|
8
9
|
module Datadog
|
@@ -82,6 +83,14 @@ module Datadog
|
|
82
83
|
@options[:tracer]
|
83
84
|
end
|
84
85
|
|
86
|
+
def analytics_enabled?
|
87
|
+
Contrib::Analytics.enabled?(@options[:analytics_enabled])
|
88
|
+
end
|
89
|
+
|
90
|
+
def analytics_sample_rate
|
91
|
+
@options[:analytics_sample_rate]
|
92
|
+
end
|
93
|
+
|
85
94
|
def distributed_tracing?
|
86
95
|
@options[:distributed_tracing] == true && tracer.enabled
|
87
96
|
end
|
@@ -98,6 +107,12 @@ module Datadog
|
|
98
107
|
span.resource = datum[:method].to_s.upcase
|
99
108
|
span.service = service_name(datum)
|
100
109
|
span.span_type = Datadog::Ext::HTTP::TYPE
|
110
|
+
|
111
|
+
# Set analytics sample rate
|
112
|
+
if analytics_enabled?
|
113
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
|
114
|
+
end
|
115
|
+
|
101
116
|
span.set_tag(Datadog::Ext::HTTP::URL, datum[:path])
|
102
117
|
span.set_tag(Datadog::Ext::HTTP::METHOD, datum[:method].to_s.upcase)
|
103
118
|
span.set_tag(Datadog::Ext::NET::TARGET_HOST, datum[:host])
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'ddtrace/contrib/registry'
|
2
|
+
|
3
|
+
module Datadog
|
4
|
+
module Contrib
|
5
|
+
# Extensions that can be added to the base library
|
6
|
+
# Adds registry, configuration access for integrations.
|
7
|
+
module Extensions
|
8
|
+
def self.extended(base)
|
9
|
+
Datadog.send(:extend, Helpers)
|
10
|
+
Datadog::Configuration::Settings.send(:include, Configuration)
|
11
|
+
end
|
12
|
+
|
13
|
+
# Helper methods for Datadog module.
|
14
|
+
module Helpers
|
15
|
+
def registry
|
16
|
+
configuration.registry
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# Extensions for Datadog::Configuration::Settings
|
21
|
+
module Configuration
|
22
|
+
InvalidIntegrationError = Class.new(StandardError)
|
23
|
+
|
24
|
+
def self.included(base)
|
25
|
+
# Add the additional options to the global configuration settings
|
26
|
+
base.instance_eval do
|
27
|
+
option :registry, default: Registry.new
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def initialize(options = {})
|
32
|
+
super
|
33
|
+
set_option(:registry, options[:registry]) if options.key?(:registry)
|
34
|
+
end
|
35
|
+
|
36
|
+
def [](integration_name, configuration_name = :default)
|
37
|
+
integration = fetch_integration(integration_name)
|
38
|
+
integration.configuration(configuration_name) unless integration.nil?
|
39
|
+
end
|
40
|
+
|
41
|
+
def use(integration_name, options = {}, &block)
|
42
|
+
integration = fetch_integration(integration_name)
|
43
|
+
|
44
|
+
unless integration.nil?
|
45
|
+
configuration_name = options[:describes] || :default
|
46
|
+
filtered_options = options.reject { |k, _v| k == :describes }
|
47
|
+
integration.configure(configuration_name, filtered_options, &block)
|
48
|
+
end
|
49
|
+
|
50
|
+
integration.patch if integration.respond_to?(:patch)
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def fetch_integration(name)
|
56
|
+
get_option(:registry)[name] ||
|
57
|
+
raise(InvalidIntegrationError, "'#{name}' is not a valid integration.")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -12,6 +12,14 @@ module Datadog
|
|
12
12
|
Datadog::Ext::HTTP::ERROR_RANGE.cover?(env[:status])
|
13
13
|
end
|
14
14
|
|
15
|
+
option :analytics_enabled,
|
16
|
+
default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
|
17
|
+
lazy: true
|
18
|
+
|
19
|
+
option :analytics_sample_rate,
|
20
|
+
default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
|
21
|
+
lazy: true
|
22
|
+
|
15
23
|
option :distributed_tracing, default: true
|
16
24
|
option :error_handler, default: DEFAULT_ERROR_HANDLER
|
17
25
|
option :service_name, default: Ext::SERVICE_NAME
|
@@ -4,8 +4,9 @@ module Datadog
|
|
4
4
|
# Faraday integration constants
|
5
5
|
module Ext
|
6
6
|
APP = 'faraday'.freeze
|
7
|
+
ENV_ANALYTICS_ENABLED = 'DD_FARADAY_ANALYTICS_ENABLED'.freeze
|
8
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_FARADAY_ANALYTICS_SAMPLE_RATE'.freeze
|
7
9
|
SERVICE_NAME = 'faraday'.freeze
|
8
|
-
|
9
10
|
SPAN_REQUEST = 'faraday.request'.freeze
|
10
11
|
end
|
11
12
|
end
|
@@ -2,6 +2,7 @@ require 'faraday'
|
|
2
2
|
require 'ddtrace/ext/http'
|
3
3
|
require 'ddtrace/ext/net'
|
4
4
|
require 'ddtrace/propagation/http_propagator'
|
5
|
+
require 'ddtrace/contrib/analytics'
|
5
6
|
require 'ddtrace/contrib/faraday/ext'
|
6
7
|
|
7
8
|
module Datadog
|
@@ -33,6 +34,12 @@ module Datadog
|
|
33
34
|
span.resource = env[:method].to_s.upcase
|
34
35
|
span.service = service_name(env)
|
35
36
|
span.span_type = Datadog::Ext::HTTP::TYPE
|
37
|
+
|
38
|
+
# Set analytics sample rate
|
39
|
+
if analytics_enabled?
|
40
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
|
41
|
+
end
|
42
|
+
|
36
43
|
span.set_tag(Datadog::Ext::HTTP::URL, env[:url].path)
|
37
44
|
span.set_tag(Datadog::Ext::HTTP::METHOD, env[:method].to_s.upcase)
|
38
45
|
span.set_tag(Datadog::Ext::NET::TARGET_HOST, env[:url].host)
|
@@ -65,6 +72,14 @@ module Datadog
|
|
65
72
|
options[:service_name]
|
66
73
|
end
|
67
74
|
|
75
|
+
def analytics_enabled?
|
76
|
+
Contrib::Analytics.enabled?(options[:analytics_enabled])
|
77
|
+
end
|
78
|
+
|
79
|
+
def analytics_sample_rate
|
80
|
+
options[:analytics_sample_rate]
|
81
|
+
end
|
82
|
+
|
68
83
|
def setup_service!
|
69
84
|
return if options[:service_name] == datadog_configuration[:service_name]
|
70
85
|
|
@@ -8,6 +8,14 @@ module Datadog
|
|
8
8
|
module Configuration
|
9
9
|
# Custom settings for the Grape integration
|
10
10
|
class Settings < Contrib::Configuration::Settings
|
11
|
+
option :analytics_enabled,
|
12
|
+
default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) },
|
13
|
+
lazy: true
|
14
|
+
|
15
|
+
option :analytics_sample_rate,
|
16
|
+
default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
|
17
|
+
lazy: true
|
18
|
+
|
11
19
|
option :enabled, default: true
|
12
20
|
option :service_name, default: Ext::SERVICE_NAME
|
13
21
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'ddtrace/ext/http'
|
2
2
|
require 'ddtrace/ext/errors'
|
3
|
+
require 'ddtrace/contrib/analytics'
|
3
4
|
require 'ddtrace/contrib/rack/ext'
|
4
5
|
|
5
6
|
module Datadog
|
@@ -79,6 +80,11 @@ module Datadog
|
|
79
80
|
request_span.resource = resource
|
80
81
|
end
|
81
82
|
|
83
|
+
# Set analytics sample rate
|
84
|
+
if analytics_enabled?
|
85
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
|
86
|
+
end
|
87
|
+
|
82
88
|
# catch thrown exceptions
|
83
89
|
span.set_error(payload[:exception_object]) unless payload[:exception_object].nil?
|
84
90
|
|
@@ -145,6 +151,11 @@ module Datadog
|
|
145
151
|
)
|
146
152
|
|
147
153
|
begin
|
154
|
+
# Set analytics sample rate
|
155
|
+
if analytics_enabled?
|
156
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
|
157
|
+
end
|
158
|
+
|
148
159
|
# catch thrown exceptions
|
149
160
|
span.set_error(payload[:exception_object]) unless payload[:exception_object].nil?
|
150
161
|
span.set_tag(Ext::TAG_FILTER_TYPE, type.to_s)
|
@@ -166,6 +177,14 @@ module Datadog
|
|
166
177
|
datadog_configuration[:service_name]
|
167
178
|
end
|
168
179
|
|
180
|
+
def analytics_enabled?
|
181
|
+
Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
|
182
|
+
end
|
183
|
+
|
184
|
+
def analytics_sample_rate
|
185
|
+
datadog_configuration[:analytics_sample_rate]
|
186
|
+
end
|
187
|
+
|
169
188
|
def enabled?
|
170
189
|
datadog_configuration[:enabled] == true
|
171
190
|
end
|
@@ -4,12 +4,12 @@ module Datadog
|
|
4
4
|
# Grape integration constants
|
5
5
|
module Ext
|
6
6
|
APP = 'grape'.freeze
|
7
|
+
ENV_ANALYTICS_ENABLED = 'DD_GRAPE_ANALYTICS_ENABLED'.freeze
|
8
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_GRAPE_ANALYTICS_SAMPLE_RATE'.freeze
|
7
9
|
SERVICE_NAME = 'grape'.freeze
|
8
|
-
|
9
10
|
SPAN_ENDPOINT_RENDER = 'grape.endpoint_render'.freeze
|
10
11
|
SPAN_ENDPOINT_RUN = 'grape.endpoint_run'.freeze
|
11
12
|
SPAN_ENDPOINT_RUN_FILTERS = 'grape.endpoint_run_filters'.freeze
|
12
|
-
|
13
13
|
TAG_FILTER_TYPE = 'grape.filter.type'.freeze
|
14
14
|
TAG_ROUTE_ENDPOINT = 'grape.route.endpoint'.freeze
|
15
15
|
TAG_ROUTE_PATH = 'grape.route.path'.freeze
|
@@ -8,6 +8,14 @@ module Datadog
|
|
8
8
|
module Configuration
|
9
9
|
# Custom settings for the GraphQL integration
|
10
10
|
class Settings < Contrib::Configuration::Settings
|
11
|
+
option :analytics_enabled,
|
12
|
+
default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) },
|
13
|
+
lazy: true
|
14
|
+
|
15
|
+
option :analytics_sample_rate,
|
16
|
+
default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
|
17
|
+
lazy: true
|
18
|
+
|
11
19
|
option :schemas
|
12
20
|
option :service_name, default: Ext::SERVICE_NAME, depends_on: [:tracer] do |value|
|
13
21
|
get_option(:tracer).set_service_info(value, Ext::APP, Datadog::Ext::AppTypes::WEB)
|
@@ -4,6 +4,8 @@ module Datadog
|
|
4
4
|
# GraphQL integration constants
|
5
5
|
module Ext
|
6
6
|
APP = 'ruby-graphql'.freeze
|
7
|
+
ENV_ANALYTICS_ENABLED = 'DD_GRAPHQL_ANALYTICS_ENABLED'.freeze
|
8
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_GRAPHQL_ANALYTICS_SAMPLE_RATE'.freeze
|
7
9
|
SERVICE_NAME = 'ruby-graphql'.freeze
|
8
10
|
end
|
9
11
|
end
|
@@ -30,19 +30,25 @@ module Datadog
|
|
30
30
|
def patch_schema!(schema)
|
31
31
|
tracer = get_option(:tracer)
|
32
32
|
service_name = get_option(:service_name)
|
33
|
+
analytics_enabled = Contrib::Analytics.enabled?(get_option(:analytics_enabled))
|
34
|
+
analytics_sample_rate = get_option(:analytics_sample_rate)
|
33
35
|
|
34
36
|
if schema.respond_to?(:use)
|
35
37
|
schema.use(
|
36
38
|
::GraphQL::Tracing::DataDogTracing,
|
37
39
|
tracer: tracer,
|
38
|
-
service: service_name
|
40
|
+
service: service_name,
|
41
|
+
analytics_enabled: analytics_enabled,
|
42
|
+
analytics_sample_rate: analytics_sample_rate
|
39
43
|
)
|
40
44
|
else
|
41
45
|
schema.define do
|
42
46
|
use(
|
43
47
|
::GraphQL::Tracing::DataDogTracing,
|
44
48
|
tracer: tracer,
|
45
|
-
service: service_name
|
49
|
+
service: service_name,
|
50
|
+
analytics_enabled: analytics_enabled,
|
51
|
+
analytics_sample_rate: analytics_sample_rate
|
46
52
|
)
|
47
53
|
end
|
48
54
|
end
|
@@ -7,6 +7,14 @@ module Datadog
|
|
7
7
|
module Configuration
|
8
8
|
# Custom settings for the gRPC integration
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
10
|
+
option :analytics_enabled,
|
11
|
+
default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
|
12
|
+
lazy: true
|
13
|
+
|
14
|
+
option :analytics_sample_rate,
|
15
|
+
default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
|
16
|
+
lazy: true
|
17
|
+
|
10
18
|
option :service_name, default: Ext::SERVICE_NAME
|
11
19
|
end
|
12
20
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'ddtrace/ext/app_types'
|
2
|
+
require 'ddtrace/contrib/analytics'
|
2
3
|
require 'ddtrace/contrib/grpc/ext'
|
3
4
|
|
4
5
|
module Datadog
|
@@ -55,6 +56,14 @@ module Datadog
|
|
55
56
|
def service_name
|
56
57
|
(datadog_pin && datadog_pin.service_name) || datadog_configuration[:service_name]
|
57
58
|
end
|
59
|
+
|
60
|
+
def analytics_enabled?
|
61
|
+
Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
|
62
|
+
end
|
63
|
+
|
64
|
+
def analytics_sample_rate
|
65
|
+
datadog_configuration[:analytics_sample_rate]
|
66
|
+
end
|
58
67
|
end
|
59
68
|
|
60
69
|
require_relative 'datadog_interceptor/client'
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'ddtrace/ext/http'
|
2
|
+
require 'ddtrace/contrib/analytics'
|
2
3
|
require 'ddtrace/contrib/grpc/ext'
|
3
4
|
|
4
5
|
module Datadog
|
@@ -33,6 +34,9 @@ module Datadog
|
|
33
34
|
span.set_tag(header, value)
|
34
35
|
end
|
35
36
|
|
37
|
+
# Set analytics sample rate
|
38
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
39
|
+
|
36
40
|
Datadog::GRPCPropagator
|
37
41
|
.inject!(span.context, metadata)
|
38
42
|
rescue StandardError => e
|