ddtrace 0.38.0 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.circleci/config.yml +56 -0
- data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
- data/.github/workflows/create-next-milestone.yml +20 -0
- data/.gitlab-ci.yml +1 -0
- data/.simplecov +38 -0
- data/Appraisals +293 -105
- data/CHANGELOG.md +192 -1
- data/CONTRIBUTING.md +2 -2
- data/Rakefile +554 -480
- data/ddtrace.gemspec +3 -0
- data/docs/DevelopmentGuide.md +28 -2
- data/docs/GettingStarted.md +207 -82
- data/lib/ddtrace.rb +4 -0
- data/lib/ddtrace/buffer.rb +259 -52
- data/lib/ddtrace/configuration.rb +55 -5
- data/lib/ddtrace/configuration/components.rb +4 -7
- data/lib/ddtrace/configuration/options.rb +3 -1
- data/lib/ddtrace/configuration/settings.rb +18 -6
- data/lib/ddtrace/context.rb +18 -0
- data/lib/ddtrace/context_provider.rb +17 -5
- data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_cable/ext.rb +5 -2
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_record/events/sql.rb +4 -0
- data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +104 -3
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +21 -0
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_support/ext.rb +8 -2
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +10 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +2 -2
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/aws/ext.rb +5 -2
- data/lib/ddtrace/contrib/aws/instrumentation.rb +6 -1
- data/lib/ddtrace/contrib/aws/patcher.rb +0 -1
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
- data/lib/ddtrace/contrib/configurable.rb +2 -0
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +4 -5
- data/lib/ddtrace/contrib/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/cucumber/ext.rb +19 -0
- data/lib/ddtrace/contrib/cucumber/formatter.rb +104 -0
- data/lib/ddtrace/contrib/cucumber/instrumentation.rb +24 -0
- data/lib/ddtrace/contrib/cucumber/integration.rb +40 -0
- data/lib/ddtrace/contrib/cucumber/patcher.rb +23 -0
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +9 -2
- data/lib/ddtrace/contrib/delayed_job/ext.rb +7 -2
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +39 -15
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +4 -0
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +4 -2
- data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +4 -0
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/excon/ext.rb +5 -2
- data/lib/ddtrace/contrib/excon/middleware.rb +11 -1
- data/lib/ddtrace/contrib/extensions.rb +1 -1
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
- data/lib/ddtrace/contrib/faraday/middleware.rb +4 -0
- data/lib/ddtrace/contrib/faraday/patcher.rb +13 -4
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +14 -3
- data/lib/ddtrace/contrib/grape/endpoint.rb +24 -7
- data/lib/ddtrace/contrib/grape/ext.rb +5 -2
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +5 -1
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -0
- data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
- data/lib/ddtrace/contrib/http/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/http/ext.rb +5 -2
- data/lib/ddtrace/contrib/http/instrumentation.rb +6 -2
- data/lib/ddtrace/contrib/httprb/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/httprb/ext.rb +5 -2
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +8 -8
- data/lib/ddtrace/contrib/kafka/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/kafka/event.rb +1 -1
- data/lib/ddtrace/contrib/kafka/ext.rb +5 -2
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +4 -0
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/presto/ext.rb +5 -2
- data/lib/ddtrace/contrib/presto/instrumentation.rb +3 -0
- data/lib/ddtrace/contrib/que/configuration/settings.rb +43 -0
- data/lib/ddtrace/contrib/que/ext.rb +30 -0
- data/lib/ddtrace/contrib/que/integration.rb +42 -0
- data/lib/ddtrace/contrib/que/patcher.rb +24 -0
- data/lib/ddtrace/contrib/que/tracer.rb +57 -0
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/racecar/event.rb +4 -0
- data/lib/ddtrace/contrib/racecar/events.rb +2 -0
- data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
- data/lib/ddtrace/contrib/racecar/ext.rb +6 -2
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/rack/ext.rb +5 -2
- data/lib/ddtrace/contrib/rack/middlewares.rb +2 -0
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +12 -2
- data/lib/ddtrace/contrib/rails/ext.rb +6 -2
- data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
- data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
- data/lib/ddtrace/contrib/rails/patcher.rb +29 -0
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
- data/lib/ddtrace/contrib/rake/ext.rb +5 -2
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/redis/ext.rb +5 -2
- data/lib/ddtrace/contrib/redis/tags.rb +4 -0
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +8 -2
- data/lib/ddtrace/contrib/resque/ext.rb +5 -2
- data/lib/ddtrace/contrib/resque/integration.rb +1 -1
- data/lib/ddtrace/contrib/resque/resque_job.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +4 -0
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/rspec/example.rb +61 -0
- data/lib/ddtrace/contrib/rspec/example_group.rb +61 -0
- data/lib/ddtrace/contrib/rspec/ext.rb +19 -0
- data/lib/ddtrace/contrib/rspec/integration.rb +41 -0
- data/lib/ddtrace/contrib/rspec/patcher.rb +25 -0
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sequel/database.rb +3 -1
- data/lib/ddtrace/contrib/sequel/dataset.rb +3 -2
- data/lib/ddtrace/contrib/sequel/ext.rb +6 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +35 -6
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +8 -2
- data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -1
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +8 -2
- data/lib/ddtrace/contrib/sidekiq/ext.rb +5 -2
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +4 -1
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sinatra/env.rb +5 -4
- data/lib/ddtrace/contrib/sinatra/ext.rb +5 -2
- data/lib/ddtrace/contrib/sinatra/tracer.rb +21 -42
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +50 -23
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +33 -0
- data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
- data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
- data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
- data/lib/ddtrace/contrib/sneakers/tracer.rb +55 -0
- data/lib/ddtrace/contrib/status_code_matcher.rb +67 -0
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
- data/lib/ddtrace/diagnostics/environment_logger.rb +1 -1
- data/lib/ddtrace/environment.rb +14 -4
- data/lib/ddtrace/ext/app_types.rb +1 -0
- data/lib/ddtrace/ext/ci.rb +265 -0
- data/lib/ddtrace/ext/diagnostics.rb +2 -1
- data/lib/ddtrace/ext/distributed.rb +8 -2
- data/lib/ddtrace/ext/git.rb +12 -0
- data/lib/ddtrace/ext/integration.rb +8 -0
- data/lib/ddtrace/ext/runtime.rb +2 -0
- data/lib/ddtrace/ext/test.rb +24 -0
- data/lib/ddtrace/ext/transport.rb +1 -0
- data/lib/ddtrace/logger.rb +1 -1
- data/lib/ddtrace/opentracer/distributed_headers.rb +1 -1
- data/lib/ddtrace/propagation/grpc_propagator.rb +18 -6
- data/lib/ddtrace/runtime/identity.rb +4 -5
- data/lib/ddtrace/runtime/metrics.rb +24 -6
- data/lib/ddtrace/sampler.rb +2 -2
- data/lib/ddtrace/sampling/rate_limiter.rb +65 -16
- data/lib/ddtrace/span.rb +152 -27
- data/lib/ddtrace/tracer.rb +25 -13
- data/lib/ddtrace/transport/http.rb +15 -0
- data/lib/ddtrace/transport/http/adapters/net.rb +8 -2
- data/lib/ddtrace/transport/http/adapters/test.rb +2 -0
- data/lib/ddtrace/transport/http/statistics.rb +14 -1
- data/lib/ddtrace/transport/traces.rb +7 -2
- data/lib/ddtrace/utils.rb +16 -13
- data/lib/ddtrace/utils/forking.rb +52 -0
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/workers/async.rb +2 -2
- data/lib/ddtrace/workers/loop.rb +1 -1
- data/lib/ddtrace/workers/polling.rb +1 -1
- data/lib/ddtrace/writer.rb +19 -1
- metadata +53 -6
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'faraday'
|
|
2
2
|
require 'ddtrace/ext/http'
|
|
3
|
+
require 'ddtrace/ext/integration'
|
|
3
4
|
require 'ddtrace/ext/net'
|
|
4
5
|
require 'ddtrace/propagation/http_propagator'
|
|
5
6
|
require 'ddtrace/contrib/analytics'
|
|
@@ -41,6 +42,9 @@ module Datadog
|
|
|
41
42
|
span.service = options[:split_by_domain] ? env[:url].host : options[:service_name]
|
|
42
43
|
span.span_type = Datadog::Ext::HTTP::TYPE_OUTBOUND
|
|
43
44
|
|
|
45
|
+
# Tag as an external peer service
|
|
46
|
+
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
47
|
+
|
|
44
48
|
# Set analytics sample rate
|
|
45
49
|
if Contrib::Analytics.enabled?(options[:analytics_enabled])
|
|
46
50
|
Contrib::Analytics.set_sample_rate(span, options[:analytics_sample_rate])
|
|
@@ -30,7 +30,7 @@ module Datadog
|
|
|
30
30
|
.new(
|
|
31
31
|
get_option(:service_name),
|
|
32
32
|
app: Ext::APP,
|
|
33
|
-
app_type: Datadog::Ext::
|
|
33
|
+
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
34
34
|
tracer: -> { get_option(:tracer) }
|
|
35
35
|
).onto(::Faraday)
|
|
36
36
|
end
|
|
@@ -41,13 +41,22 @@ module Datadog
|
|
|
41
41
|
|
|
42
42
|
def add_default_middleware!
|
|
43
43
|
if target_version >= Gem::Version.new('1.0.0')
|
|
44
|
+
# Patch the default connection (e.g. +Faraday.get+)
|
|
45
|
+
::Faraday.default_connection.use(:ddtrace)
|
|
46
|
+
|
|
47
|
+
# Patch new connection instances (e.g. +Faraday.new+)
|
|
44
48
|
::Faraday::Connection.send(:prepend, Connection)
|
|
45
49
|
else
|
|
50
|
+
# Patch the default connection (e.g. +Faraday.get+)
|
|
51
|
+
#
|
|
52
|
+
# We insert our middleware before the 'adapter', which is
|
|
53
|
+
# always the last handler.
|
|
54
|
+
idx = ::Faraday.default_connection.builder.handlers.size - 1
|
|
55
|
+
::Faraday.default_connection.builder.insert(idx, Middleware)
|
|
56
|
+
|
|
57
|
+
# Patch new connection instances (e.g. +Faraday.new+)
|
|
46
58
|
::Faraday::RackBuilder.send(:prepend, RackBuilder)
|
|
47
59
|
end
|
|
48
|
-
|
|
49
|
-
# Instrument the Faraday default connection (e.g. +Faraday.get+)
|
|
50
|
-
::Faraday.default_connection.use(:ddtrace)
|
|
51
60
|
end
|
|
52
61
|
|
|
53
62
|
def get_option(option)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'ddtrace/contrib/configuration/settings'
|
|
2
2
|
require 'ddtrace/ext/http'
|
|
3
3
|
require 'ddtrace/contrib/grape/ext'
|
|
4
|
+
require 'ddtrace/contrib/status_code_matcher'
|
|
4
5
|
|
|
5
6
|
module Datadog
|
|
6
7
|
module Contrib
|
|
@@ -8,18 +9,28 @@ module Datadog
|
|
|
8
9
|
module Configuration
|
|
9
10
|
# Custom settings for the Grape integration
|
|
10
11
|
class Settings < Contrib::Configuration::Settings
|
|
12
|
+
option :enabled do |o|
|
|
13
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
14
|
+
o.lazy
|
|
15
|
+
end
|
|
16
|
+
|
|
11
17
|
option :analytics_enabled do |o|
|
|
12
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) }
|
|
18
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], nil) }
|
|
13
19
|
o.lazy
|
|
14
20
|
end
|
|
15
21
|
|
|
16
22
|
option :analytics_sample_rate do |o|
|
|
17
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
23
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
18
24
|
o.lazy
|
|
19
25
|
end
|
|
20
26
|
|
|
21
|
-
option :enabled, default: true
|
|
22
27
|
option :service_name, default: Ext::SERVICE_NAME
|
|
28
|
+
|
|
29
|
+
option :error_statuses, default: nil do |o|
|
|
30
|
+
o.setter do |new_value, _old_value|
|
|
31
|
+
Datadog::Contrib::StatusCodeMatcher.new(new_value) unless new_value.nil?
|
|
32
|
+
end
|
|
33
|
+
end
|
|
23
34
|
end
|
|
24
35
|
end
|
|
25
36
|
end
|
|
@@ -89,13 +89,16 @@ module Datadog
|
|
|
89
89
|
Contrib::Analytics.set_measured(span)
|
|
90
90
|
|
|
91
91
|
# catch thrown exceptions
|
|
92
|
-
|
|
92
|
+
|
|
93
|
+
if exception_is_error?(payload[:exception_object])
|
|
94
|
+
span.set_error(payload[:exception_object])
|
|
95
|
+
end
|
|
93
96
|
|
|
94
97
|
# override the current span with this notification values
|
|
95
98
|
span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil?
|
|
96
99
|
span.set_tag(Ext::TAG_ROUTE_PATH, path)
|
|
97
100
|
ensure
|
|
98
|
-
span.
|
|
101
|
+
span.start(start)
|
|
99
102
|
span.finish(finish)
|
|
100
103
|
end
|
|
101
104
|
rescue StandardError => e
|
|
@@ -132,9 +135,11 @@ module Datadog
|
|
|
132
135
|
# Measure service stats
|
|
133
136
|
Contrib::Analytics.set_measured(span)
|
|
134
137
|
|
|
135
|
-
|
|
138
|
+
if exception_is_error?(payload[:exception_object])
|
|
139
|
+
span.set_error(payload[:exception_object])
|
|
140
|
+
end
|
|
136
141
|
ensure
|
|
137
|
-
span.
|
|
142
|
+
span.start(start)
|
|
138
143
|
span.finish(finish)
|
|
139
144
|
end
|
|
140
145
|
rescue StandardError => e
|
|
@@ -153,7 +158,8 @@ module Datadog
|
|
|
153
158
|
span = tracer.trace(
|
|
154
159
|
Ext::SPAN_ENDPOINT_RUN_FILTERS,
|
|
155
160
|
service: service_name,
|
|
156
|
-
span_type: Datadog::Ext::HTTP::TYPE_INBOUND
|
|
161
|
+
span_type: Datadog::Ext::HTTP::TYPE_INBOUND,
|
|
162
|
+
start_time: start
|
|
157
163
|
)
|
|
158
164
|
|
|
159
165
|
begin
|
|
@@ -166,10 +172,13 @@ module Datadog
|
|
|
166
172
|
Contrib::Analytics.set_measured(span)
|
|
167
173
|
|
|
168
174
|
# catch thrown exceptions
|
|
169
|
-
|
|
175
|
+
if exception_is_error?(payload[:exception_object])
|
|
176
|
+
span.set_error(payload[:exception_object])
|
|
177
|
+
end
|
|
178
|
+
|
|
170
179
|
span.set_tag(Ext::TAG_FILTER_TYPE, type.to_s)
|
|
171
180
|
ensure
|
|
172
|
-
span.
|
|
181
|
+
span.start(start)
|
|
173
182
|
span.finish(finish)
|
|
174
183
|
end
|
|
175
184
|
rescue StandardError => e
|
|
@@ -194,6 +203,14 @@ module Datadog
|
|
|
194
203
|
datadog_configuration[:analytics_sample_rate]
|
|
195
204
|
end
|
|
196
205
|
|
|
206
|
+
def exception_is_error?(exception)
|
|
207
|
+
matcher = datadog_configuration[:error_statuses]
|
|
208
|
+
return false unless exception
|
|
209
|
+
return true unless matcher
|
|
210
|
+
return true unless exception.respond_to?('status')
|
|
211
|
+
matcher.include?(exception.status)
|
|
212
|
+
end
|
|
213
|
+
|
|
197
214
|
def enabled?
|
|
198
215
|
datadog_configuration[:enabled] == true
|
|
199
216
|
end
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# Grape integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'grape'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_GRAPE_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRAPE_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_GRAPE_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRAPE_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_GRAPE_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'grape'.freeze
|
|
10
13
|
SPAN_ENDPOINT_RENDER = 'grape.endpoint_render'.freeze
|
|
11
14
|
SPAN_ENDPOINT_RUN = 'grape.endpoint_run'.freeze
|
|
@@ -8,13 +8,18 @@ module Datadog
|
|
|
8
8
|
module Configuration
|
|
9
9
|
# Custom settings for the GraphQL integration
|
|
10
10
|
class Settings < Contrib::Configuration::Settings
|
|
11
|
+
option :enabled do |o|
|
|
12
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
13
|
+
o.lazy
|
|
14
|
+
end
|
|
15
|
+
|
|
11
16
|
option :analytics_enabled do |o|
|
|
12
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) }
|
|
17
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], nil) }
|
|
13
18
|
o.lazy
|
|
14
19
|
end
|
|
15
20
|
|
|
16
21
|
option :analytics_sample_rate do |o|
|
|
17
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
22
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
18
23
|
o.lazy
|
|
19
24
|
end
|
|
20
25
|
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# GraphQL integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'ruby-graphql'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_GRAPHQL_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRAPHQL_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_GRAPHQL_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRAPHQL_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_GRAPHQL_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'ruby-graphql'.freeze
|
|
10
13
|
end
|
|
11
14
|
end
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the gRPC integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'ddtrace/ext/http'
|
|
2
|
+
require 'ddtrace/ext/integration'
|
|
2
3
|
require 'ddtrace/contrib/analytics'
|
|
3
4
|
require 'ddtrace/contrib/grpc/ext'
|
|
4
5
|
|
|
@@ -7,7 +8,7 @@ module Datadog
|
|
|
7
8
|
module GRPC
|
|
8
9
|
module DatadogInterceptor
|
|
9
10
|
# The DatadogInterceptor::Client implements the tracing strategy
|
|
10
|
-
# for gRPC client-side
|
|
11
|
+
# for gRPC client-side endpoints. This middleware component will
|
|
11
12
|
# inject trace context information into gRPC metadata prior to
|
|
12
13
|
# sending the request to the server.
|
|
13
14
|
class Client < Base
|
|
@@ -32,6 +33,9 @@ module Datadog
|
|
|
32
33
|
def annotate!(span, metadata)
|
|
33
34
|
span.set_tags(metadata)
|
|
34
35
|
|
|
36
|
+
# Tag as an external peer service
|
|
37
|
+
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
38
|
+
|
|
35
39
|
# Set analytics sample rate
|
|
36
40
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
37
41
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'ddtrace/ext/http'
|
|
2
|
+
require 'ddtrace/ext/integration'
|
|
2
3
|
require 'ddtrace/contrib/analytics'
|
|
3
4
|
require 'ddtrace/contrib/grpc/ext'
|
|
4
5
|
|
|
@@ -46,6 +47,9 @@ module Datadog
|
|
|
46
47
|
span.set_tag(header, value)
|
|
47
48
|
end
|
|
48
49
|
|
|
50
|
+
# Tag as an external peer service
|
|
51
|
+
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
52
|
+
|
|
49
53
|
# Set analytics sample rate
|
|
50
54
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
51
55
|
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# gRPC integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'grpc'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_GRPC_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRPC_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_GRPC_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRPC_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_GRPC_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'grpc'.freeze
|
|
10
13
|
SPAN_CLIENT = 'grpc.client'.freeze
|
|
11
14
|
SPAN_SERVICE = 'grpc.service'.freeze
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the HTTP integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# HTTP integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'net/http'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_HTTP_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_HTTP_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_HTTP_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_HTTP_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_HTTP_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'net/http'.freeze
|
|
10
13
|
SPAN_REQUEST = 'http.request'.freeze
|
|
11
14
|
end
|
|
@@ -2,6 +2,7 @@ require 'uri'
|
|
|
2
2
|
require 'ddtrace/pin'
|
|
3
3
|
require 'ddtrace/ext/app_types'
|
|
4
4
|
require 'ddtrace/ext/http'
|
|
5
|
+
require 'ddtrace/ext/integration'
|
|
5
6
|
require 'ddtrace/ext/net'
|
|
6
7
|
require 'ddtrace/ext/distributed'
|
|
7
8
|
require 'ddtrace/contrib/analytics'
|
|
@@ -83,6 +84,9 @@ module Datadog
|
|
|
83
84
|
span.set_tag(Datadog::Ext::NET::TARGET_HOST, host)
|
|
84
85
|
span.set_tag(Datadog::Ext::NET::TARGET_PORT, port.to_s)
|
|
85
86
|
|
|
87
|
+
# Tag as an external peer service
|
|
88
|
+
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
89
|
+
|
|
86
90
|
# Set analytics sample rate
|
|
87
91
|
set_analytics_sample_rate(span, request_options)
|
|
88
92
|
end
|
|
@@ -114,7 +118,7 @@ module Datadog
|
|
|
114
118
|
@datadog_pin ||= Datadog::Pin.new(
|
|
115
119
|
service,
|
|
116
120
|
app: Ext::APP,
|
|
117
|
-
app_type: Datadog::Ext::
|
|
121
|
+
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
118
122
|
tracer: -> { config[:tracer] }
|
|
119
123
|
)
|
|
120
124
|
|
|
@@ -142,7 +146,7 @@ module Datadog
|
|
|
142
146
|
@default_datadog_pin ||= Datadog::Pin.new(
|
|
143
147
|
service,
|
|
144
148
|
app: Ext::APP,
|
|
145
|
-
app_type: Datadog::Ext::
|
|
149
|
+
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
146
150
|
tracer: -> { config[:tracer] }
|
|
147
151
|
)
|
|
148
152
|
end
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the Httprb integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# Httprb integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'httprb'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_HTTPRB_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_HTTPRB_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_HTTPRB_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_EHTTPRB_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_HTTPRB_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'httprb'.freeze
|
|
10
13
|
SPAN_REQUEST = 'httprb.request'.freeze
|
|
11
14
|
end
|
|
@@ -72,6 +72,9 @@ module Datadog
|
|
|
72
72
|
logger.debug("service #{req_options[:service_name]} span #{Ext::SPAN_REQUEST} missing uri")
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
+
# Tag as an external peer service
|
|
76
|
+
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
77
|
+
|
|
75
78
|
set_analytics_sample_rate(span, req_options)
|
|
76
79
|
end
|
|
77
80
|
|
|
@@ -82,12 +85,9 @@ module Datadog
|
|
|
82
85
|
|
|
83
86
|
case response.code.to_i
|
|
84
87
|
when 400...599
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
message = 'Error'
|
|
89
|
-
end
|
|
90
|
-
span.set_error(["Error #{response.code}", message])
|
|
88
|
+
# https://github.com/DataDog/dd-trace-rb/issues/1116
|
|
89
|
+
# parsing the response body message will alter downstream application behavior
|
|
90
|
+
span.set_error(["Error #{response.code}", 'Error'])
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
93
|
|
|
@@ -103,7 +103,7 @@ module Datadog
|
|
|
103
103
|
Datadog::Pin.new(
|
|
104
104
|
service,
|
|
105
105
|
app: Ext::APP,
|
|
106
|
-
app_type: Datadog::Ext::
|
|
106
|
+
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
107
107
|
tracer: -> { config[:tracer] }
|
|
108
108
|
)
|
|
109
109
|
end
|
|
@@ -126,7 +126,7 @@ module Datadog
|
|
|
126
126
|
Datadog::Pin.new(
|
|
127
127
|
service,
|
|
128
128
|
app: Ext::APP,
|
|
129
|
-
app_type: Datadog::Ext::
|
|
129
|
+
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
130
130
|
tracer: -> { config[:tracer] }
|
|
131
131
|
)
|
|
132
132
|
end
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the Kafka integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|