ddtrace 0.35.0 → 0.38.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 +4 -4
- data/.circleci/config.yml +3 -1
- data/.gitignore +2 -0
- data/.gitlab-ci.yml +26 -0
- data/.rubocop.yml +4 -0
- data/Appraisals +23 -6
- data/CHANGELOG.md +116 -1
- data/Rakefile +43 -12
- data/ddtrace.gemspec +5 -0
- data/docker-compose.yml +37 -2
- data/docs/GettingStarted.md +63 -34
- data/lib/ddtrace.rb +2 -0
- data/lib/ddtrace/configuration/base.rb +1 -1
- data/lib/ddtrace/configuration/components.rb +2 -2
- data/lib/ddtrace/configuration/options.rb +1 -1
- data/lib/ddtrace/configuration/pin_setup.rb +3 -2
- data/lib/ddtrace/configuration/settings.rb +18 -0
- data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -1
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +3 -1
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +1 -1
- data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +9 -3
- data/lib/ddtrace/contrib/configuration/settings.rb +19 -1
- data/lib/ddtrace/contrib/dalli/patcher.rb +1 -5
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -2
- data/lib/ddtrace/contrib/extensions.rb +38 -4
- data/lib/ddtrace/contrib/faraday/middleware.rb +5 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +4 -5
- data/lib/ddtrace/contrib/grape/patcher.rb +1 -1
- data/lib/ddtrace/contrib/graphql/patcher.rb +6 -3
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +1 -1
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +1 -3
- data/lib/ddtrace/contrib/grpc/patcher.rb +1 -5
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +8 -32
- data/lib/ddtrace/contrib/http/instrumentation.rb +13 -8
- data/lib/ddtrace/contrib/httprb/configuration/settings.rb +27 -0
- data/lib/ddtrace/contrib/httprb/ext.rb +14 -0
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +163 -0
- data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
- data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
- data/lib/ddtrace/contrib/kafka/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
- data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
- data/lib/ddtrace/contrib/kafka/event.rb +51 -0
- data/lib/ddtrace/contrib/kafka/events.rb +44 -0
- data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
- data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
- data/lib/ddtrace/contrib/kafka/ext.rb +38 -0
- data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
- data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +1 -2
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/patcher.rb +14 -8
- data/lib/ddtrace/contrib/rack/middlewares.rb +15 -12
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +13 -11
- data/lib/ddtrace/contrib/rails/framework.rb +52 -46
- data/lib/ddtrace/contrib/rails/integration.rb +1 -1
- data/lib/ddtrace/contrib/redis/patcher.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -2
- data/lib/ddtrace/contrib/sequel/database.rb +1 -1
- data/lib/ddtrace/contrib/sidekiq/ext.rb +1 -0
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +8 -1
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +1 -0
- data/lib/ddtrace/contrib/sucker_punch/patcher.rb +1 -1
- data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
- data/lib/ddtrace/environment.rb +5 -1
- data/lib/ddtrace/ext/diagnostics.rb +2 -0
- data/lib/ddtrace/ext/environment.rb +2 -0
- data/lib/ddtrace/pin.rb +39 -15
- data/lib/ddtrace/pipeline/span_filter.rb +15 -15
- data/lib/ddtrace/sampler.rb +2 -0
- data/lib/ddtrace/span.rb +10 -0
- data/lib/ddtrace/tracer.rb +15 -8
- data/lib/ddtrace/transport/http/adapters/net.rb +8 -0
- data/lib/ddtrace/transport/http/adapters/test.rb +4 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -0
- data/lib/ddtrace/transport/response.rb +11 -0
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/workers/trace_writer.rb +3 -0
- data/lib/ddtrace/writer.rb +33 -12
- metadata +98 -3
data/lib/ddtrace/environment.rb
CHANGED
|
@@ -6,7 +6,11 @@ module Datadog
|
|
|
6
6
|
# Defines helper methods for environment
|
|
7
7
|
module Helpers
|
|
8
8
|
def env_to_bool(var, default = nil)
|
|
9
|
-
ENV.key?(var) ? ENV[var].to_s.downcase == 'true' : default
|
|
9
|
+
ENV.key?(var) ? ENV[var].to_s.strip.downcase == 'true' : default
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def env_to_int(var, default = nil)
|
|
13
|
+
ENV.key?(var) ? ENV[var].to_i : default
|
|
10
14
|
end
|
|
11
15
|
|
|
12
16
|
def env_to_float(var, default = nil)
|
data/lib/ddtrace/pin.rb
CHANGED
|
@@ -12,26 +12,36 @@ module Datadog
|
|
|
12
12
|
obj.datadog_pin
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
attr_reader :service_name
|
|
16
15
|
attr_accessor :app
|
|
17
|
-
attr_accessor :tags
|
|
18
16
|
attr_accessor :app_type
|
|
19
|
-
attr_accessor :name
|
|
20
|
-
attr_accessor :tracer
|
|
21
17
|
attr_accessor :config
|
|
18
|
+
attr_accessor :name
|
|
19
|
+
attr_accessor :service_name
|
|
20
|
+
attr_accessor :tags
|
|
21
|
+
attr_reader :tracer
|
|
22
|
+
attr_accessor :writer
|
|
23
|
+
|
|
24
|
+
alias service= service_name=
|
|
25
|
+
alias service service_name
|
|
22
26
|
|
|
23
27
|
def initialize(service_name, options = {})
|
|
28
|
+
deprecation_warning unless options[:tracer].is_a?(Proc) || options[:tracer].nil?
|
|
29
|
+
|
|
24
30
|
@app = options[:app]
|
|
25
|
-
@tags = options[:tags]
|
|
26
31
|
@app_type = options[:app_type]
|
|
27
|
-
@name = nil # this would rarely be overriden as it's really span-specific
|
|
28
|
-
@tracer = options[:tracer] || Datadog.tracer
|
|
29
32
|
@config = options[:config]
|
|
30
|
-
|
|
33
|
+
@name = nil # this would rarely be overriden as it's really span-specific
|
|
34
|
+
@service_name = service_name
|
|
35
|
+
@tags = options[:tags]
|
|
36
|
+
@tracer = options[:tracer]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def tracer
|
|
40
|
+
@tracer.is_a?(Proc) ? @tracer.call : (@tracer || Datadog.tracer)
|
|
31
41
|
end
|
|
32
42
|
|
|
33
43
|
def enabled?
|
|
34
|
-
return
|
|
44
|
+
return tracer.enabled if tracer
|
|
35
45
|
false
|
|
36
46
|
end
|
|
37
47
|
|
|
@@ -56,15 +66,29 @@ module Datadog
|
|
|
56
66
|
obj.datadog_pin = self
|
|
57
67
|
end
|
|
58
68
|
|
|
59
|
-
def
|
|
60
|
-
|
|
69
|
+
def to_s
|
|
70
|
+
"Pin(service:#{service},app:#{app},app_type:#{app_type},name:#{name})"
|
|
61
71
|
end
|
|
62
72
|
|
|
63
|
-
|
|
64
|
-
alias service service_name
|
|
73
|
+
private
|
|
65
74
|
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
DEPRECATION_WARNING = %(
|
|
76
|
+
Explicitly providing a tracer instance is DEPRECATED.
|
|
77
|
+
It's recommended to not provide an explicit tracer instance
|
|
78
|
+
and let Datadog::Pin resolve the correct tracer internally.
|
|
79
|
+
).freeze
|
|
80
|
+
|
|
81
|
+
def deprecation_warning
|
|
82
|
+
log_deprecation_warning('Datadog::Pin.new')
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
include Datadog::Patcher
|
|
86
|
+
|
|
87
|
+
def log_deprecation_warning(method_name)
|
|
88
|
+
# Only log each deprecation warning once (safeguard against log spam)
|
|
89
|
+
do_once(method_name) do
|
|
90
|
+
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
91
|
+
end
|
|
68
92
|
end
|
|
69
93
|
end
|
|
70
94
|
|
|
@@ -10,12 +10,22 @@ module Datadog
|
|
|
10
10
|
@criteria = filter || block
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
+
# Note: this SpanFilter implementation only handles traces in which child spans appear
|
|
14
|
+
# after parent spans in the trace array. If in the future child spans can be before
|
|
15
|
+
# parent spans, then the code below will need to be updated.
|
|
13
16
|
def call(trace)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
deleted = Set.new
|
|
18
|
+
|
|
19
|
+
trace.delete_if do |span|
|
|
20
|
+
if deleted.include?(span.parent)
|
|
21
|
+
deleted << span
|
|
22
|
+
true
|
|
23
|
+
else
|
|
24
|
+
drop = drop_it?(span)
|
|
25
|
+
deleted << span if drop
|
|
26
|
+
drop
|
|
27
|
+
end
|
|
28
|
+
end
|
|
19
29
|
end
|
|
20
30
|
|
|
21
31
|
private
|
|
@@ -23,16 +33,6 @@ module Datadog
|
|
|
23
33
|
def drop_it?(span)
|
|
24
34
|
@criteria.call(span) rescue false
|
|
25
35
|
end
|
|
26
|
-
|
|
27
|
-
def clean_trace(black_list, trace)
|
|
28
|
-
current = black_list.shift
|
|
29
|
-
|
|
30
|
-
trace.delete(current)
|
|
31
|
-
|
|
32
|
-
trace.each do |span|
|
|
33
|
-
black_list << span if span.parent == current
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
end
|
data/lib/ddtrace/sampler.rb
CHANGED
data/lib/ddtrace/span.rb
CHANGED
|
@@ -107,6 +107,16 @@ module Datadog
|
|
|
107
107
|
Datadog.logger.debug("Unable to set the tag #{key}, ignoring it. Caused by: #{e}")
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
+
# Sets tags from given hash, for each key in hash it sets the tag with that key
|
|
111
|
+
# and associated value from the hash. It is shortcut for `set_tag`. Keys and values
|
|
112
|
+
# of the hash must be strings. Note that nested hashes are not supported.
|
|
113
|
+
# A valid example is:
|
|
114
|
+
#
|
|
115
|
+
# span.set_tags({ "http.method" => "GET", "user.id" => "234" })
|
|
116
|
+
def set_tags(tags)
|
|
117
|
+
tags.each { |k, v| set_tag(k, v) }
|
|
118
|
+
end
|
|
119
|
+
|
|
110
120
|
# This method removes a tag for the given key.
|
|
111
121
|
def clear_tag(key)
|
|
112
122
|
@meta.delete(key)
|
data/lib/ddtrace/tracer.rb
CHANGED
|
@@ -212,8 +212,8 @@ module Datadog
|
|
|
212
212
|
# child span
|
|
213
213
|
span.parent = parent # sets service, trace_id, parent_id, sampled
|
|
214
214
|
end
|
|
215
|
-
|
|
216
|
-
|
|
215
|
+
span.set_tags(@tags) unless @tags.empty?
|
|
216
|
+
span.set_tags(tags) unless tags.empty?
|
|
217
217
|
span.start_time = start_time
|
|
218
218
|
|
|
219
219
|
# this could at some point be optional (start_active_span vs start_manual_span)
|
|
@@ -255,9 +255,11 @@ module Datadog
|
|
|
255
255
|
# * +service+: the service name for this span
|
|
256
256
|
# * +resource+: the resource this span refers, or \name if it's missing
|
|
257
257
|
# * +span_type+: the type of the span (such as \http, \db and so on)
|
|
258
|
+
# * +child_of+: a \Span or a \Context instance representing the parent for this span.
|
|
259
|
+
# If not set, defaults to Tracer.call_context
|
|
258
260
|
# * +tags+: extra tags which should be added to the span.
|
|
259
261
|
def trace(name, options = {})
|
|
260
|
-
options[:child_of]
|
|
262
|
+
options[:child_of] ||= call_context
|
|
261
263
|
|
|
262
264
|
# call the finish only if a block is given; this ensures
|
|
263
265
|
# that a call to tracer.trace() without a block, returns
|
|
@@ -269,11 +271,16 @@ module Datadog
|
|
|
269
271
|
begin
|
|
270
272
|
begin
|
|
271
273
|
span = start_span(name, options)
|
|
272
|
-
# rubocop:disable Lint/UselessAssignment
|
|
273
274
|
rescue StandardError => e
|
|
274
|
-
Datadog.logger.debug(
|
|
275
|
+
Datadog.logger.debug("Failed to start span: #{e}")
|
|
275
276
|
ensure
|
|
276
|
-
|
|
277
|
+
# We should yield to the provided block when possible, as this
|
|
278
|
+
# block is application code that we don't want to hinder. We call:
|
|
279
|
+
# * `yield(span)` during normal execution.
|
|
280
|
+
# * `yield(nil)` if `start_span` fails with a runtime error.
|
|
281
|
+
# * We don't yield during a fatal error, as the application is likely trying to
|
|
282
|
+
# end its execution (either due to a system error or graceful shutdown).
|
|
283
|
+
return_value = yield(span) if span || e.is_a?(StandardError)
|
|
277
284
|
end
|
|
278
285
|
# rubocop:disable Lint/RescueException
|
|
279
286
|
# Here we really want to catch *any* exception, not only StandardError,
|
|
@@ -314,7 +321,7 @@ module Datadog
|
|
|
314
321
|
def record_context(context)
|
|
315
322
|
trace = @context_flush.consume!(context)
|
|
316
323
|
|
|
317
|
-
write(trace) if trace && !trace.empty?
|
|
324
|
+
write(trace) if @enabled && trace && !trace.empty?
|
|
318
325
|
end
|
|
319
326
|
|
|
320
327
|
# Return the current active span or +nil+.
|
|
@@ -335,7 +342,7 @@ module Datadog
|
|
|
335
342
|
# Send the trace to the writer to enqueue the spans list in the agent
|
|
336
343
|
# sending queue.
|
|
337
344
|
def write(trace)
|
|
338
|
-
return if @writer.nil?
|
|
345
|
+
return if @writer.nil?
|
|
339
346
|
|
|
340
347
|
if Datadog.configuration.diagnostics.debug
|
|
341
348
|
Datadog.logger.debug("Writing #{trace.length} spans (enabled: #{@enabled})")
|
|
@@ -47,6 +47,10 @@ module Datadog
|
|
|
47
47
|
Response.new(http_response)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
+
def url
|
|
51
|
+
"http://#{hostname}:#{port}?timeout=#{timeout}"
|
|
52
|
+
end
|
|
53
|
+
|
|
50
54
|
# Raised when called with an unknown HTTP method
|
|
51
55
|
class UnknownHTTPMethod < StandardError
|
|
52
56
|
attr_reader :verb
|
|
@@ -104,6 +108,10 @@ module Datadog
|
|
|
104
108
|
return super if http_response.nil?
|
|
105
109
|
code.between?(500, 599)
|
|
106
110
|
end
|
|
111
|
+
|
|
112
|
+
def inspect
|
|
113
|
+
"#{super}, http_response:#{http_response}"
|
|
114
|
+
end
|
|
107
115
|
end
|
|
108
116
|
end
|
|
109
117
|
end
|
|
@@ -29,6 +29,13 @@ module Datadog
|
|
|
29
29
|
def internal_error?
|
|
30
30
|
nil
|
|
31
31
|
end
|
|
32
|
+
|
|
33
|
+
def inspect
|
|
34
|
+
"#{self.class} ok?:#{ok?} unsupported?:#{unsupported?}, " \
|
|
35
|
+
"not_found?:#{not_found?}, client_error?:#{client_error?}, " \
|
|
36
|
+
"server_error?:#{server_error?}, internal_error?:#{internal_error?}, " \
|
|
37
|
+
"payload:#{payload}"
|
|
38
|
+
end
|
|
32
39
|
end
|
|
33
40
|
|
|
34
41
|
# A generic error response for internal errors
|
|
@@ -44,6 +51,10 @@ module Datadog
|
|
|
44
51
|
def internal_error?
|
|
45
52
|
true
|
|
46
53
|
end
|
|
54
|
+
|
|
55
|
+
def inspect
|
|
56
|
+
"#{super}, error_type:#{error.class} error:#{error}"
|
|
57
|
+
end
|
|
47
58
|
end
|
|
48
59
|
end
|
|
49
60
|
end
|
data/lib/ddtrace/version.rb
CHANGED
|
@@ -72,6 +72,9 @@ module Datadog
|
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
+
# TODO: Register `Datadog::Diagnostics::EnvironmentLogger.log!`
|
|
76
|
+
# TODO: as a flush_completed subscriber when the `TraceWriter`
|
|
77
|
+
# TODO: instantiation code is implemented.
|
|
75
78
|
def flush_completed
|
|
76
79
|
@flush_completed ||= FlushCompleted.new
|
|
77
80
|
end
|
data/lib/ddtrace/writer.rb
CHANGED
|
@@ -7,6 +7,7 @@ require 'ddtrace/transport/http'
|
|
|
7
7
|
require 'ddtrace/transport/io'
|
|
8
8
|
require 'ddtrace/encoding'
|
|
9
9
|
require 'ddtrace/workers'
|
|
10
|
+
require 'ddtrace/diagnostics/environment_logger'
|
|
10
11
|
|
|
11
12
|
module Datadog
|
|
12
13
|
# Processor that sends traces and metadata to the agent
|
|
@@ -43,9 +44,18 @@ module Datadog
|
|
|
43
44
|
@worker = nil
|
|
44
45
|
end
|
|
45
46
|
|
|
46
|
-
# spawns a worker for spans; they share the same transport which is thread-safe
|
|
47
47
|
def start
|
|
48
|
-
@
|
|
48
|
+
@mutex_after_fork.synchronize do
|
|
49
|
+
pid = Process.pid
|
|
50
|
+
return if @worker && pid == @pid
|
|
51
|
+
@pid = pid
|
|
52
|
+
start_worker
|
|
53
|
+
true
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# spawns a worker for spans; they share the same transport which is thread-safe
|
|
58
|
+
def start_worker
|
|
49
59
|
@trace_handler = ->(items, transport) { send_spans(items, transport) }
|
|
50
60
|
@worker = Datadog::Workers::AsyncTransport.new(
|
|
51
61
|
transport: @transport,
|
|
@@ -57,14 +67,19 @@ module Datadog
|
|
|
57
67
|
@worker.start
|
|
58
68
|
end
|
|
59
69
|
|
|
60
|
-
# stops worker for spans.
|
|
61
70
|
def stop
|
|
62
|
-
|
|
71
|
+
@mutex_after_fork.synchronize { stop_worker }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def stop_worker
|
|
75
|
+
return if @worker.nil?
|
|
63
76
|
@worker.stop
|
|
64
77
|
@worker = nil
|
|
65
78
|
true
|
|
66
79
|
end
|
|
67
80
|
|
|
81
|
+
private :start_worker, :stop_worker
|
|
82
|
+
|
|
68
83
|
# flush spans to the trace-agent, handles spans only
|
|
69
84
|
def send_spans(traces, transport)
|
|
70
85
|
return true if traces.empty?
|
|
@@ -83,6 +98,8 @@ module Datadog
|
|
|
83
98
|
# Update priority sampler
|
|
84
99
|
update_priority_sampler(responses.last)
|
|
85
100
|
|
|
101
|
+
record_environment_information!(responses)
|
|
102
|
+
|
|
86
103
|
# Return if server error occurred.
|
|
87
104
|
!responses.find(&:server_error?)
|
|
88
105
|
end
|
|
@@ -106,13 +123,7 @@ module Datadog
|
|
|
106
123
|
#
|
|
107
124
|
# This check ensures that if a process doesn't own the current +Writer+, async workers
|
|
108
125
|
# will be initialized again (but only once for each process).
|
|
109
|
-
pid
|
|
110
|
-
if pid != @pid # avoid using Mutex when pids are equal
|
|
111
|
-
@mutex_after_fork.synchronize do
|
|
112
|
-
# we should start threads because the worker doesn't own this
|
|
113
|
-
start if pid != @pid
|
|
114
|
-
end
|
|
115
|
-
end
|
|
126
|
+
start if @worker.nil? || @pid != Process.pid
|
|
116
127
|
|
|
117
128
|
# TODO: Remove this, and have the tracer pump traces directly to runtime metrics
|
|
118
129
|
# instead of working through the trace writer.
|
|
@@ -121,7 +132,13 @@ module Datadog
|
|
|
121
132
|
Datadog.runtime_metrics.associate_with_span(trace.first)
|
|
122
133
|
end
|
|
123
134
|
|
|
124
|
-
@worker
|
|
135
|
+
worker_local = @worker
|
|
136
|
+
|
|
137
|
+
if worker_local
|
|
138
|
+
worker_local.enqueue_trace(trace)
|
|
139
|
+
else
|
|
140
|
+
Datadog.logger.debug('Writer either failed to start or was stopped before #write could complete')
|
|
141
|
+
end
|
|
125
142
|
end
|
|
126
143
|
|
|
127
144
|
# stats returns a dictionary of stats about the writer.
|
|
@@ -150,5 +167,9 @@ module Datadog
|
|
|
150
167
|
|
|
151
168
|
priority_sampler.update(response.service_rates)
|
|
152
169
|
end
|
|
170
|
+
|
|
171
|
+
def record_environment_information!(responses)
|
|
172
|
+
Diagnostics::EnvironmentLogger.log!(responses)
|
|
173
|
+
end
|
|
153
174
|
end
|
|
154
175
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ddtrace
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.38.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Datadog, Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-07-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: msgpack
|
|
@@ -122,6 +122,34 @@ dependencies:
|
|
|
122
122
|
- - '='
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
124
|
version: 5.10.1
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: minitest-around
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - '='
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: 0.5.0
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - '='
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: 0.5.0
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: minitest-stub_any_instance
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - '='
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: 1.0.2
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - '='
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: 1.0.2
|
|
125
153
|
- !ruby/object:Gem::Dependency
|
|
126
154
|
name: appraisal
|
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -220,6 +248,48 @@ dependencies:
|
|
|
220
248
|
- - "~>"
|
|
221
249
|
- !ruby/object:Gem::Version
|
|
222
250
|
version: 2.4.0
|
|
251
|
+
- !ruby/object:Gem::Dependency
|
|
252
|
+
name: benchmark-ips
|
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
|
254
|
+
requirements:
|
|
255
|
+
- - "~>"
|
|
256
|
+
- !ruby/object:Gem::Version
|
|
257
|
+
version: '2.8'
|
|
258
|
+
type: :development
|
|
259
|
+
prerelease: false
|
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
261
|
+
requirements:
|
|
262
|
+
- - "~>"
|
|
263
|
+
- !ruby/object:Gem::Version
|
|
264
|
+
version: '2.8'
|
|
265
|
+
- !ruby/object:Gem::Dependency
|
|
266
|
+
name: benchmark-memory
|
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
|
268
|
+
requirements:
|
|
269
|
+
- - "~>"
|
|
270
|
+
- !ruby/object:Gem::Version
|
|
271
|
+
version: '0.1'
|
|
272
|
+
type: :development
|
|
273
|
+
prerelease: false
|
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
275
|
+
requirements:
|
|
276
|
+
- - "~>"
|
|
277
|
+
- !ruby/object:Gem::Version
|
|
278
|
+
version: '0.1'
|
|
279
|
+
- !ruby/object:Gem::Dependency
|
|
280
|
+
name: memory_profiler
|
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
|
282
|
+
requirements:
|
|
283
|
+
- - "~>"
|
|
284
|
+
- !ruby/object:Gem::Version
|
|
285
|
+
version: '0.9'
|
|
286
|
+
type: :development
|
|
287
|
+
prerelease: false
|
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
289
|
+
requirements:
|
|
290
|
+
- - "~>"
|
|
291
|
+
- !ruby/object:Gem::Version
|
|
292
|
+
version: '0.9'
|
|
223
293
|
- !ruby/object:Gem::Dependency
|
|
224
294
|
name: redcarpet
|
|
225
295
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -300,6 +370,7 @@ files:
|
|
|
300
370
|
- ".env"
|
|
301
371
|
- ".github/CODEOWNERS"
|
|
302
372
|
- ".gitignore"
|
|
373
|
+
- ".gitlab-ci.yml"
|
|
303
374
|
- ".rspec"
|
|
304
375
|
- ".rubocop.yml"
|
|
305
376
|
- ".yardopts"
|
|
@@ -475,7 +546,29 @@ files:
|
|
|
475
546
|
- lib/ddtrace/contrib/http/integration.rb
|
|
476
547
|
- lib/ddtrace/contrib/http/patcher.rb
|
|
477
548
|
- lib/ddtrace/contrib/http_annotation_helper.rb
|
|
549
|
+
- lib/ddtrace/contrib/httprb/configuration/settings.rb
|
|
550
|
+
- lib/ddtrace/contrib/httprb/ext.rb
|
|
551
|
+
- lib/ddtrace/contrib/httprb/instrumentation.rb
|
|
552
|
+
- lib/ddtrace/contrib/httprb/integration.rb
|
|
553
|
+
- lib/ddtrace/contrib/httprb/patcher.rb
|
|
478
554
|
- lib/ddtrace/contrib/integration.rb
|
|
555
|
+
- lib/ddtrace/contrib/kafka/configuration/settings.rb
|
|
556
|
+
- lib/ddtrace/contrib/kafka/consumer_event.rb
|
|
557
|
+
- lib/ddtrace/contrib/kafka/consumer_group_event.rb
|
|
558
|
+
- lib/ddtrace/contrib/kafka/event.rb
|
|
559
|
+
- lib/ddtrace/contrib/kafka/events.rb
|
|
560
|
+
- lib/ddtrace/contrib/kafka/events/connection/request.rb
|
|
561
|
+
- lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb
|
|
562
|
+
- lib/ddtrace/contrib/kafka/events/consumer/process_message.rb
|
|
563
|
+
- lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb
|
|
564
|
+
- lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb
|
|
565
|
+
- lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb
|
|
566
|
+
- lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb
|
|
567
|
+
- lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb
|
|
568
|
+
- lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb
|
|
569
|
+
- lib/ddtrace/contrib/kafka/ext.rb
|
|
570
|
+
- lib/ddtrace/contrib/kafka/integration.rb
|
|
571
|
+
- lib/ddtrace/contrib/kafka/patcher.rb
|
|
479
572
|
- lib/ddtrace/contrib/mongodb/configuration/settings.rb
|
|
480
573
|
- lib/ddtrace/contrib/mongodb/ext.rb
|
|
481
574
|
- lib/ddtrace/contrib/mongodb/instrumentation.rb
|
|
@@ -576,6 +669,7 @@ files:
|
|
|
576
669
|
- lib/ddtrace/contrib/sucker_punch/integration.rb
|
|
577
670
|
- lib/ddtrace/contrib/sucker_punch/patcher.rb
|
|
578
671
|
- lib/ddtrace/correlation.rb
|
|
672
|
+
- lib/ddtrace/diagnostics/environment_logger.rb
|
|
579
673
|
- lib/ddtrace/diagnostics/health.rb
|
|
580
674
|
- lib/ddtrace/distributed_tracing/headers/b3.rb
|
|
581
675
|
- lib/ddtrace/distributed_tracing/headers/b3_single.rb
|
|
@@ -713,7 +807,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
713
807
|
- !ruby/object:Gem::Version
|
|
714
808
|
version: 2.0.0
|
|
715
809
|
requirements: []
|
|
716
|
-
|
|
810
|
+
rubyforge_project:
|
|
811
|
+
rubygems_version: 2.7.6.2
|
|
717
812
|
signing_key:
|
|
718
813
|
specification_version: 4
|
|
719
814
|
summary: Datadog tracing code for your Ruby applications
|