ddtrace 0.32.0 → 0.33.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/.env +2 -0
- data/Appraisals +9 -6
- data/CHANGELOG.md +32 -1
- data/Rakefile +3 -2
- data/ddtrace.gemspec +2 -1
- data/docker-compose.yml +9 -0
- data/docs/GettingStarted.md +69 -6
- data/lib/ddtrace.rb +1 -0
- data/lib/ddtrace/configuration/option.rb +3 -2
- data/lib/ddtrace/configuration/option_definition.rb +1 -1
- data/lib/ddtrace/configuration/options.rb +5 -0
- data/lib/ddtrace/contrib/action_cable/integration.rb +2 -2
- data/lib/ddtrace/contrib/action_pack/integration.rb +2 -2
- data/lib/ddtrace/contrib/action_view/integration.rb +2 -2
- data/lib/ddtrace/contrib/active_model_serializers/integration.rb +3 -5
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +4 -5
- data/lib/ddtrace/contrib/active_record/integration.rb +2 -2
- data/lib/ddtrace/contrib/active_support/integration.rb +2 -2
- data/lib/ddtrace/contrib/aws/integration.rb +6 -2
- data/lib/ddtrace/contrib/aws/patcher.rb +8 -2
- data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +6 -2
- data/lib/ddtrace/contrib/configurable.rb +30 -13
- data/lib/ddtrace/contrib/configuration/resolver.rb +7 -3
- data/lib/ddtrace/contrib/dalli/integration.rb +2 -2
- data/lib/ddtrace/contrib/delayed_job/integration.rb +6 -2
- data/lib/ddtrace/contrib/elasticsearch/integration.rb +2 -2
- data/lib/ddtrace/contrib/ethon/integration.rb +6 -2
- data/lib/ddtrace/contrib/excon/integration.rb +6 -2
- data/lib/ddtrace/contrib/faraday/integration.rb +2 -2
- data/lib/ddtrace/contrib/grape/integration.rb +3 -3
- data/lib/ddtrace/contrib/graphql/integration.rb +3 -5
- data/lib/ddtrace/contrib/grpc/integration.rb +2 -2
- data/lib/ddtrace/contrib/http/integration.rb +4 -0
- data/lib/ddtrace/contrib/mongodb/integration.rb +2 -2
- data/lib/ddtrace/contrib/mysql2/integration.rb +6 -2
- data/lib/ddtrace/contrib/patchable.rb +21 -4
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +23 -0
- data/lib/ddtrace/contrib/presto/ext.rb +25 -0
- data/lib/ddtrace/contrib/presto/instrumentation.rb +107 -0
- data/lib/ddtrace/contrib/presto/integration.rb +36 -0
- data/lib/ddtrace/contrib/presto/patcher.rb +30 -0
- data/lib/ddtrace/contrib/racecar/integration.rb +3 -3
- data/lib/ddtrace/contrib/rack/integration.rb +6 -2
- data/lib/ddtrace/contrib/rails/integration.rb +6 -3
- data/lib/ddtrace/contrib/rake/integration.rb +6 -2
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +36 -0
- data/lib/ddtrace/contrib/redis/integration.rb +7 -3
- data/lib/ddtrace/contrib/redis/patcher.rb +11 -2
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +159 -0
- data/lib/ddtrace/contrib/resque/integration.rb +8 -2
- data/lib/ddtrace/contrib/rest_client/integration.rb +6 -2
- data/lib/ddtrace/contrib/sequel/integration.rb +6 -2
- data/lib/ddtrace/contrib/shoryuken/integration.rb +9 -7
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +5 -0
- data/lib/ddtrace/contrib/sidekiq/ext.rb +2 -0
- data/lib/ddtrace/contrib/sidekiq/integration.rb +2 -2
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +7 -3
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +19 -2
- data/lib/ddtrace/contrib/sinatra/integration.rb +2 -2
- data/lib/ddtrace/contrib/sucker_punch/integration.rb +3 -3
- data/lib/ddtrace/runtime/metrics.rb +2 -2
- data/lib/ddtrace/sampling/rule_sampler.rb +16 -2
- data/lib/ddtrace/version.rb +1 -1
- metadata +12 -18
@@ -17,6 +17,11 @@ module Datadog
|
|
17
17
|
o.lazy
|
18
18
|
end
|
19
19
|
|
20
|
+
option :tag_args do |o|
|
21
|
+
o.default { env_to_bool(Ext::ENV_TAG_JOB_ARGS, false) }
|
22
|
+
o.lazy
|
23
|
+
end
|
24
|
+
|
20
25
|
option :service_name, default: Ext::SERVICE_NAME
|
21
26
|
option :client_service_name, default: Ext::CLIENT_SERVICE_NAME
|
22
27
|
end
|
@@ -7,6 +7,7 @@ module Datadog
|
|
7
7
|
CLIENT_SERVICE_NAME = 'sidekiq-client'.freeze
|
8
8
|
ENV_ANALYTICS_ENABLED = 'DD_SIDEKIQ_ANALYTICS_ENABLED'.freeze
|
9
9
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_SIDEKIQ_ANALYTICS_SAMPLE_RATE'.freeze
|
10
|
+
ENV_TAG_JOB_ARGS = 'DD_SIDEKIQ_TAG_JOB_ARGS'.freeze
|
10
11
|
SERVICE_NAME = 'sidekiq'.freeze
|
11
12
|
SPAN_PUSH = 'sidekiq.push'.freeze
|
12
13
|
SPAN_JOB = 'sidekiq.job'.freeze
|
@@ -15,6 +16,7 @@ module Datadog
|
|
15
16
|
TAG_JOB_QUEUE = 'sidekiq.job.queue'.freeze
|
16
17
|
TAG_JOB_RETRY = 'sidekiq.job.retry'.freeze
|
17
18
|
TAG_JOB_WRAPPER = 'sidekiq.job.wrapper'.freeze
|
19
|
+
TAG_JOB_ARGS = 'sidekiq.job.args'.freeze
|
18
20
|
end
|
19
21
|
end
|
20
22
|
end
|
@@ -16,7 +16,8 @@ module Datadog
|
|
16
16
|
def call(worker, job, queue)
|
17
17
|
resource = job_resource(job)
|
18
18
|
|
19
|
-
service =
|
19
|
+
service = worker_config(resource, :service_name) || @sidekiq_service
|
20
|
+
tag_args = worker_config(resource, :tag_args) || configuration[:tag_args]
|
20
21
|
|
21
22
|
@tracer.trace(Ext::SPAN_JOB, service: service, span_type: Datadog::Ext::AppTypes::WORKER) do |span|
|
22
23
|
span.resource = resource
|
@@ -29,6 +30,9 @@ module Datadog
|
|
29
30
|
span.set_tag(Ext::TAG_JOB_QUEUE, job['queue'])
|
30
31
|
span.set_tag(Ext::TAG_JOB_WRAPPER, job['class']) if job['wrapped']
|
31
32
|
span.set_tag(Ext::TAG_JOB_DELAY, 1000.0 * (Time.now.utc.to_f - job['enqueued_at'].to_f))
|
33
|
+
if tag_args && !job['args'].nil? && !job['args'].empty?
|
34
|
+
span.set_tag(Ext::TAG_JOB_ARGS, job['args'])
|
35
|
+
end
|
32
36
|
|
33
37
|
yield
|
34
38
|
end
|
@@ -40,7 +44,7 @@ module Datadog
|
|
40
44
|
Datadog.configuration[:sidekiq]
|
41
45
|
end
|
42
46
|
|
43
|
-
def
|
47
|
+
def worker_config(resource, key)
|
44
48
|
# Try to get the Ruby class from the resource name.
|
45
49
|
worker_klass = begin
|
46
50
|
Object.const_get(resource)
|
@@ -49,7 +53,7 @@ module Datadog
|
|
49
53
|
end
|
50
54
|
|
51
55
|
if worker_klass.respond_to?(:datadog_tracer_config)
|
52
|
-
worker_klass.datadog_tracer_config[
|
56
|
+
worker_klass.datadog_tracer_config[key]
|
53
57
|
end
|
54
58
|
end
|
55
59
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'ddtrace/ext/app_types'
|
2
2
|
require 'ddtrace/contrib/sidekiq/ext'
|
3
3
|
|
4
|
+
require 'yaml'
|
5
|
+
|
4
6
|
module Datadog
|
5
7
|
module Contrib
|
6
8
|
module Sidekiq
|
@@ -17,10 +19,25 @@ module Datadog
|
|
17
19
|
# primarily to support `ActiveJob`.
|
18
20
|
def job_resource(job)
|
19
21
|
if job['wrapped']
|
20
|
-
job['wrapped']
|
22
|
+
job['wrapped'].to_s
|
23
|
+
elsif job['class'] == 'Sidekiq::Extensions::DelayedClass'
|
24
|
+
delay_extension_class(job).to_s
|
21
25
|
else
|
22
|
-
job['class']
|
26
|
+
job['class'].to_s
|
23
27
|
end
|
28
|
+
rescue => e
|
29
|
+
Datadog::Logger.log.debug { "Error retrieving Sidekiq job class name (jid:#{job['jid']}): #{e}" }
|
30
|
+
|
31
|
+
job['class'].to_s
|
32
|
+
end
|
33
|
+
|
34
|
+
#
|
35
|
+
def delay_extension_class(job)
|
36
|
+
clazz, method = YAML.parse(job['args'].first).children.first.children
|
37
|
+
|
38
|
+
method = method.value[1..-1] # Remove leading `:` from method symbol
|
39
|
+
|
40
|
+
"#{clazz.value}.#{method}"
|
24
41
|
end
|
25
42
|
end
|
26
43
|
end
|
@@ -15,12 +15,12 @@ module Datadog
|
|
15
15
|
Gem.loaded_specs['sucker_punch'] && Gem.loaded_specs['sucker_punch'].version
|
16
16
|
end
|
17
17
|
|
18
|
-
def self.
|
19
|
-
|
18
|
+
def self.loaded?
|
19
|
+
defined?(::SuckerPunch)
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.compatible?
|
23
|
-
super &&
|
23
|
+
super && version >= Gem::Version.new('2.0.0')
|
24
24
|
end
|
25
25
|
|
26
26
|
def default_configuration
|
@@ -19,7 +19,7 @@ module Datadog
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def associate_with_span(span)
|
22
|
-
return if span.nil?
|
22
|
+
return if !enabled? || span.nil?
|
23
23
|
|
24
24
|
# Register service as associated with metrics
|
25
25
|
register_service(span.service) unless span.service.nil?
|
@@ -30,7 +30,7 @@ module Datadog
|
|
30
30
|
|
31
31
|
# Associate service with runtime metrics
|
32
32
|
def register_service(service)
|
33
|
-
return if service.nil?
|
33
|
+
return if !enabled? || service.nil?
|
34
34
|
|
35
35
|
service = service.to_s
|
36
36
|
|
@@ -16,6 +16,8 @@ module Datadog
|
|
16
16
|
class RuleSampler
|
17
17
|
extend Forwardable
|
18
18
|
|
19
|
+
AGENT_RATE_METRIC_KEY = '_dd.agent_psr'.freeze
|
20
|
+
|
19
21
|
attr_reader :rules, :rate_limiter, :default_sampler
|
20
22
|
|
21
23
|
# @param rules [Array<Rule>] ordered list of rules to be applied to a span
|
@@ -68,14 +70,26 @@ module Datadog
|
|
68
70
|
end
|
69
71
|
|
70
72
|
def sample!(span)
|
71
|
-
sampled = sample_span(span)
|
73
|
+
sampled = sample_span(span) do |s|
|
74
|
+
@default_sampler.sample!(s).tap do
|
75
|
+
# We want to make sure the span is tagged with the agent-derived
|
76
|
+
# service rate. Retrieve this from the rate by service sampler.
|
77
|
+
# Only do this if it was set by a RateByServiceSampler.
|
78
|
+
if @default_sampler.is_a?(RateByServiceSampler)
|
79
|
+
s.set_metric(AGENT_RATE_METRIC_KEY, @default_sampler.sample_rate(span))
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
72
83
|
|
73
84
|
sampled.tap do
|
74
85
|
span.sampled = sampled
|
75
86
|
end
|
76
87
|
end
|
77
88
|
|
78
|
-
|
89
|
+
def update(*args)
|
90
|
+
return false unless @default_sampler.respond_to?(:update)
|
91
|
+
@default_sampler.update(*args)
|
92
|
+
end
|
79
93
|
|
80
94
|
private
|
81
95
|
|
data/lib/ddtrace/version.rb
CHANGED
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.33.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-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -290,20 +290,6 @@ dependencies:
|
|
290
290
|
- - "~>"
|
291
291
|
- !ruby/object:Gem::Version
|
292
292
|
version: 0.4.9.2
|
293
|
-
- !ruby/object:Gem::Dependency
|
294
|
-
name: warning
|
295
|
-
requirement: !ruby/object:Gem::Requirement
|
296
|
-
requirements:
|
297
|
-
- - ">="
|
298
|
-
- !ruby/object:Gem::Version
|
299
|
-
version: '0'
|
300
|
-
type: :development
|
301
|
-
prerelease: false
|
302
|
-
version_requirements: !ruby/object:Gem::Requirement
|
303
|
-
requirements:
|
304
|
-
- - ">="
|
305
|
-
- !ruby/object:Gem::Version
|
306
|
-
version: '0'
|
307
293
|
description: |
|
308
294
|
ddtrace is Datadog’s tracing client for Ruby. It is used to trace requests
|
309
295
|
as they flow across web servers, databases and microservices so that developers
|
@@ -512,6 +498,11 @@ files:
|
|
512
498
|
- lib/ddtrace/contrib/mysql2/patcher.rb
|
513
499
|
- lib/ddtrace/contrib/patchable.rb
|
514
500
|
- lib/ddtrace/contrib/patcher.rb
|
501
|
+
- lib/ddtrace/contrib/presto/configuration/settings.rb
|
502
|
+
- lib/ddtrace/contrib/presto/ext.rb
|
503
|
+
- lib/ddtrace/contrib/presto/instrumentation.rb
|
504
|
+
- lib/ddtrace/contrib/presto/integration.rb
|
505
|
+
- lib/ddtrace/contrib/presto/patcher.rb
|
515
506
|
- lib/ddtrace/contrib/racecar/configuration/settings.rb
|
516
507
|
- lib/ddtrace/contrib/racecar/event.rb
|
517
508
|
- lib/ddtrace/contrib/racecar/events.rb
|
@@ -539,12 +530,14 @@ files:
|
|
539
530
|
- lib/ddtrace/contrib/rake/instrumentation.rb
|
540
531
|
- lib/ddtrace/contrib/rake/integration.rb
|
541
532
|
- lib/ddtrace/contrib/rake/patcher.rb
|
533
|
+
- lib/ddtrace/contrib/redis/configuration/resolver.rb
|
542
534
|
- lib/ddtrace/contrib/redis/configuration/settings.rb
|
543
535
|
- lib/ddtrace/contrib/redis/ext.rb
|
544
536
|
- lib/ddtrace/contrib/redis/integration.rb
|
545
537
|
- lib/ddtrace/contrib/redis/patcher.rb
|
546
538
|
- lib/ddtrace/contrib/redis/quantize.rb
|
547
539
|
- lib/ddtrace/contrib/redis/tags.rb
|
540
|
+
- lib/ddtrace/contrib/redis/vendor/resolver.rb
|
548
541
|
- lib/ddtrace/contrib/registerable.rb
|
549
542
|
- lib/ddtrace/contrib/registry.rb
|
550
543
|
- lib/ddtrace/contrib/resque/configuration/settings.rb
|
@@ -714,9 +707,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
714
707
|
requirements:
|
715
708
|
- - ">="
|
716
709
|
- !ruby/object:Gem::Version
|
717
|
-
version:
|
710
|
+
version: 2.0.0
|
718
711
|
requirements: []
|
719
|
-
|
712
|
+
rubyforge_project:
|
713
|
+
rubygems_version: 2.6.14
|
720
714
|
signing_key:
|
721
715
|
specification_version: 4
|
722
716
|
summary: Datadog tracing code for your Ruby applications
|