ddtrace 0.17.3 → 0.18.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/.env +2 -2
- data/Appraisals +4 -0
- data/CHANGELOG.md +21 -2
- data/Rakefile +31 -29
- data/docker-compose.yml +7 -7
- data/docs/GettingStarted.md +26 -2
- data/lib/ddtrace.rb +4 -0
- data/lib/ddtrace/augmentation.rb +13 -0
- data/lib/ddtrace/augmentation/method_wrapper.rb +20 -0
- data/lib/ddtrace/augmentation/method_wrapping.rb +38 -0
- data/lib/ddtrace/augmentation/shim.rb +102 -0
- data/lib/ddtrace/contrib/active_record/events/sql.rb +6 -2
- data/lib/ddtrace/contrib/active_record/patcher.rb +2 -0
- data/lib/ddtrace/contrib/active_record/patches/abstract_adapter.rb +72 -0
- data/lib/ddtrace/contrib/active_record/utils.rb +8 -18
- data/lib/ddtrace/contrib/aws/instrumentation.rb +15 -11
- data/lib/ddtrace/contrib/aws/patcher.rb +0 -11
- data/lib/ddtrace/contrib/configurable.rb +13 -9
- data/lib/ddtrace/contrib/rack/request_queue.rb +5 -1
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +14 -0
- data/lib/ddtrace/contrib/shoryuken/ext.rb +18 -0
- data/lib/ddtrace/contrib/shoryuken/integration.rb +35 -0
- data/lib/ddtrace/contrib/shoryuken/patcher.rb +30 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +37 -0
- data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +35 -0
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sidekiq/ext.rb +2 -0
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +9 -2
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +50 -0
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +38 -0
- data/lib/ddtrace/sync_writer.rb +2 -1
- data/lib/ddtrace/transport.rb +6 -3
- data/lib/ddtrace/utils/database.rb +7 -3
- data/lib/ddtrace/version.rb +2 -2
- data/lib/ddtrace/writer.rb +1 -4
- metadata +15 -3
- data/lib/ddtrace/contrib/sidekiq/tracer.rb +0 -72
@@ -1,72 +0,0 @@
|
|
1
|
-
require 'sidekiq/api'
|
2
|
-
|
3
|
-
require 'ddtrace/ext/app_types'
|
4
|
-
require 'ddtrace/contrib/sidekiq/ext'
|
5
|
-
|
6
|
-
module Datadog
|
7
|
-
module Contrib
|
8
|
-
module Sidekiq
|
9
|
-
# Tracer is a Sidekiq server-side middleware which traces executed jobs
|
10
|
-
class Tracer
|
11
|
-
def initialize(options = {})
|
12
|
-
@tracer = options[:tracer] || Datadog.configuration[:sidekiq][:tracer]
|
13
|
-
@sidekiq_service = options[:service_name] || Datadog.configuration[:sidekiq][:service_name]
|
14
|
-
end
|
15
|
-
|
16
|
-
def call(worker, job, queue)
|
17
|
-
# If class is wrapping something else, the interesting resource info
|
18
|
-
# is the underlying, wrapped class, and not the wrapper.
|
19
|
-
resource = if job['wrapped']
|
20
|
-
job['wrapped']
|
21
|
-
else
|
22
|
-
job['class']
|
23
|
-
end
|
24
|
-
|
25
|
-
# configure Sidekiq service
|
26
|
-
service = sidekiq_service(resource_worker(resource))
|
27
|
-
set_service_info(service)
|
28
|
-
|
29
|
-
@tracer.trace(Ext::SPAN_JOB, service: service, span_type: Datadog::Ext::AppTypes::WORKER) do |span|
|
30
|
-
span.resource = resource
|
31
|
-
span.set_tag(Ext::TAG_JOB_ID, job['jid'])
|
32
|
-
span.set_tag(Ext::TAG_JOB_RETRY, job['retry'])
|
33
|
-
span.set_tag(Ext::TAG_JOB_QUEUE, job['queue'])
|
34
|
-
span.set_tag(Ext::TAG_JOB_WRAPPER, job['class']) if job['wrapped']
|
35
|
-
span.set_tag(Ext::TAG_JOB_DELAY, 1000.0 * (Time.now.utc.to_f - job['enqueued_at'].to_f))
|
36
|
-
|
37
|
-
yield
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
# rubocop:disable Lint/HandleExceptions
|
44
|
-
def resource_worker(resource)
|
45
|
-
Object.const_get(resource)
|
46
|
-
rescue NameError
|
47
|
-
end
|
48
|
-
|
49
|
-
def worker_config(worker)
|
50
|
-
if worker.respond_to?(:datadog_tracer_config)
|
51
|
-
worker.datadog_tracer_config
|
52
|
-
else
|
53
|
-
{}
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def sidekiq_service(resource)
|
58
|
-
worker_config(resource).fetch(:service_name, @sidekiq_service)
|
59
|
-
end
|
60
|
-
|
61
|
-
def set_service_info(service)
|
62
|
-
return if @tracer.services[service]
|
63
|
-
@tracer.set_service_info(
|
64
|
-
service,
|
65
|
-
Ext::APP,
|
66
|
-
Datadog::Ext::AppTypes::WORKER
|
67
|
-
)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|