ddtrace 0.16.1 → 0.17.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/Appraisals +3 -3
- data/CHANGELOG.md +24 -2
- data/Rakefile +14 -28
- data/docker-compose.yml +1 -0
- data/docs/GettingStarted.md +302 -263
- data/lib/ddtrace.rb +22 -21
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +23 -0
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +4 -2
- data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +2 -2
- data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +2 -2
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +17 -0
- data/lib/ddtrace/contrib/active_model_serializers/integration.rb +39 -0
- data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +24 -43
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +3 -2
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +6 -7
- data/lib/ddtrace/contrib/active_record/events/sql.rb +10 -8
- data/lib/ddtrace/contrib/active_record/ext.rb +22 -0
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +15 -0
- data/lib/ddtrace/contrib/aws/ext.rb +21 -0
- data/lib/ddtrace/contrib/aws/instrumentation.rb +11 -9
- data/lib/ddtrace/contrib/aws/integration.rb +32 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +42 -41
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +3 -1
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +11 -0
- data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +7 -3
- data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +1 -0
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +15 -0
- data/lib/ddtrace/contrib/dalli/ext.rb +15 -0
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +3 -3
- data/lib/ddtrace/contrib/dalli/integration.rb +36 -0
- data/lib/ddtrace/contrib/dalli/patcher.rb +31 -38
- data/lib/ddtrace/contrib/dalli/quantize.rb +3 -3
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +15 -0
- data/lib/ddtrace/contrib/delayed_job/ext.rb +18 -0
- data/lib/ddtrace/contrib/delayed_job/integration.rb +32 -0
- data/lib/ddtrace/contrib/delayed_job/patcher.rb +20 -27
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +7 -6
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +16 -0
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +18 -0
- data/lib/ddtrace/contrib/elasticsearch/integration.rb +37 -0
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +30 -39
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +18 -0
- data/lib/ddtrace/contrib/excon/ext.rb +13 -0
- data/lib/ddtrace/contrib/excon/integration.rb +32 -0
- data/lib/ddtrace/contrib/excon/middleware.rb +10 -10
- data/lib/ddtrace/contrib/excon/patcher.rb +14 -30
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +23 -0
- data/lib/ddtrace/contrib/faraday/ext.rb +13 -0
- data/lib/ddtrace/contrib/faraday/integration.rb +36 -0
- data/lib/ddtrace/contrib/faraday/middleware.rb +10 -9
- data/lib/ddtrace/contrib/faraday/patcher.rb +39 -54
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +16 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +10 -13
- data/lib/ddtrace/contrib/grape/ext.rb +19 -0
- data/lib/ddtrace/contrib/grape/integration.rb +36 -0
- data/lib/ddtrace/contrib/grape/patcher.rb +24 -24
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +20 -0
- data/lib/ddtrace/contrib/graphql/ext.rb +11 -0
- data/lib/ddtrace/contrib/graphql/integration.rb +38 -0
- data/lib/ddtrace/contrib/graphql/patcher.rb +33 -41
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +15 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +5 -2
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -2
- data/lib/ddtrace/contrib/grpc/ext.rb +14 -0
- data/lib/ddtrace/contrib/grpc/integration.rb +38 -0
- data/lib/ddtrace/contrib/grpc/patcher.rb +25 -35
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +39 -0
- data/lib/ddtrace/contrib/http/configuration/settings.rb +16 -0
- data/lib/ddtrace/contrib/http/ext.rb +13 -0
- data/lib/ddtrace/contrib/http/integration.rb +32 -0
- data/lib/ddtrace/contrib/http/patcher.rb +10 -58
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +18 -0
- data/lib/ddtrace/contrib/mongodb/ext.rb +20 -0
- data/lib/ddtrace/contrib/mongodb/integration.rb +36 -0
- data/lib/ddtrace/contrib/mongodb/patcher.rb +17 -27
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +12 -11
- data/lib/ddtrace/contrib/mysql2/client.rb +8 -6
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +15 -0
- data/lib/ddtrace/contrib/mysql2/ext.rb +15 -0
- data/lib/ddtrace/contrib/mysql2/integration.rb +32 -0
- data/lib/ddtrace/contrib/mysql2/patcher.rb +12 -22
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +23 -0
- data/lib/ddtrace/contrib/racecar/event.rb +7 -6
- data/lib/ddtrace/contrib/racecar/events/batch.rb +2 -2
- data/lib/ddtrace/contrib/racecar/events/message.rb +2 -2
- data/lib/ddtrace/contrib/racecar/ext.rb +21 -0
- data/lib/ddtrace/contrib/racecar/integration.rb +36 -0
- data/lib/ddtrace/contrib/racecar/patcher.rb +24 -41
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +39 -0
- data/lib/ddtrace/contrib/rack/ext.rb +18 -0
- data/lib/ddtrace/contrib/rack/integration.rb +32 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +5 -2
- data/lib/ddtrace/contrib/rack/patcher.rb +22 -40
- data/lib/ddtrace/contrib/rails/action_controller.rb +10 -7
- data/lib/ddtrace/contrib/rails/action_controller_patch.rb +1 -0
- data/lib/ddtrace/contrib/rails/active_support.rb +9 -9
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +26 -0
- data/lib/ddtrace/contrib/rails/core_extensions.rb +12 -15
- data/lib/ddtrace/contrib/rails/ext.rb +30 -0
- data/lib/ddtrace/contrib/rails/framework.rb +3 -2
- data/lib/ddtrace/contrib/rails/integration.rb +37 -0
- data/lib/ddtrace/contrib/rails/patcher.rb +56 -63
- data/lib/ddtrace/contrib/rails/railtie.rb +3 -10
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +17 -0
- data/lib/ddtrace/contrib/rake/ext.rb +18 -0
- data/lib/ddtrace/contrib/rake/instrumentation.rb +7 -8
- data/lib/ddtrace/contrib/rake/integration.rb +36 -0
- data/lib/ddtrace/contrib/rake/patcher.rb +23 -33
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +15 -0
- data/lib/ddtrace/contrib/redis/ext.rb +19 -0
- data/lib/ddtrace/contrib/redis/integration.rb +36 -0
- data/lib/ddtrace/contrib/redis/patcher.rb +21 -29
- data/lib/ddtrace/contrib/redis/tags.rb +3 -3
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +16 -0
- data/lib/ddtrace/contrib/resque/ext.rb +13 -0
- data/lib/ddtrace/contrib/resque/integration.rb +37 -0
- data/lib/ddtrace/contrib/resque/patcher.rb +30 -36
- data/lib/ddtrace/contrib/resque/resque_job.rb +2 -1
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +5 -8
- data/lib/ddtrace/contrib/rest_client/ext.rb +13 -0
- data/lib/ddtrace/contrib/rest_client/integration.rb +9 -1
- data/lib/ddtrace/contrib/rest_client/patcher.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +9 -10
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +2 -0
- data/lib/ddtrace/contrib/sequel/database.rb +4 -3
- data/lib/ddtrace/contrib/sequel/dataset.rb +3 -2
- data/lib/ddtrace/contrib/sequel/ext.rb +15 -0
- data/lib/ddtrace/contrib/sequel/integration.rb +1 -3
- data/lib/ddtrace/contrib/sequel/patcher.rb +0 -1
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +15 -0
- data/lib/ddtrace/contrib/sidekiq/ext.rb +19 -0
- data/lib/ddtrace/contrib/sidekiq/integration.rb +36 -0
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +18 -18
- data/lib/ddtrace/contrib/sidekiq/tracer.rb +10 -10
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +27 -0
- data/lib/ddtrace/contrib/sinatra/env.rb +3 -4
- data/lib/ddtrace/contrib/sinatra/ext.rb +19 -0
- data/lib/ddtrace/contrib/sinatra/integration.rb +36 -0
- data/lib/ddtrace/contrib/sinatra/patcher.rb +33 -0
- data/lib/ddtrace/contrib/sinatra/tracer.rb +4 -34
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +2 -3
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +15 -0
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +18 -0
- data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +6 -5
- data/lib/ddtrace/contrib/sucker_punch/integration.rb +36 -0
- data/lib/ddtrace/contrib/sucker_punch/patcher.rb +29 -35
- data/lib/ddtrace/encoding.rb +21 -16
- data/lib/ddtrace/span.rb +29 -0
- data/lib/ddtrace/transport.rb +2 -2
- data/lib/ddtrace/version.rb +2 -2
- metadata +74 -6
- data/lib/ddtrace/ext/cache.rb +0 -8
- data/lib/ddtrace/ext/grpc.rb +0 -7
- data/lib/ddtrace/ext/mongo.rb +0 -12
- data/lib/ddtrace/ext/redis.rb +0 -17
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/resque/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/resque/patcher'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Contrib
|
|
7
|
+
module Resque
|
|
8
|
+
# Description of Resque integration
|
|
9
|
+
class Integration
|
|
10
|
+
include Contrib::Integration
|
|
11
|
+
|
|
12
|
+
register_as :resque, auto_patch: true
|
|
13
|
+
|
|
14
|
+
def self.version
|
|
15
|
+
Gem.loaded_specs['resque'] && Gem.loaded_specs['resque'].version
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.present?
|
|
19
|
+
super && defined?(::Resque)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def default_configuration
|
|
23
|
+
Configuration::Settings.new
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def patcher
|
|
27
|
+
Patcher
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
class << self
|
|
31
|
+
# Globally-acccesible reference for pre-forking optimization
|
|
32
|
+
attr_accessor :sync_writer
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -1,49 +1,43 @@
|
|
|
1
|
+
require 'ddtrace/contrib/patcher'
|
|
2
|
+
require 'ddtrace/ext/app_types'
|
|
3
|
+
require 'ddtrace/contrib/sidekiq/ext'
|
|
4
|
+
|
|
1
5
|
module Datadog
|
|
2
6
|
module Contrib
|
|
3
|
-
# Namespace for `resque` integration
|
|
4
7
|
module Resque
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class << self
|
|
8
|
-
# Globally-acccesible reference for pre-forking optimization
|
|
9
|
-
attr_accessor :sync_writer
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
# Patcher for Resque integration - sets up the pin for the integration
|
|
8
|
+
# Patcher enables patching of 'resque' module.
|
|
13
9
|
module Patcher
|
|
14
|
-
include
|
|
15
|
-
register_as :resque, auto_patch: true
|
|
16
|
-
option :service_name, default: SERVICE
|
|
17
|
-
|
|
18
|
-
@patched = false
|
|
19
|
-
option :workers, default: []
|
|
20
|
-
|
|
21
|
-
class << self
|
|
22
|
-
def patch
|
|
23
|
-
return @patched if patched? || !defined?(::Resque)
|
|
10
|
+
include Contrib::Patcher
|
|
24
11
|
|
|
25
|
-
|
|
26
|
-
require_relative 'resque_job'
|
|
12
|
+
module_function
|
|
27
13
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
rescue => e
|
|
32
|
-
Tracer.log.error("Unable to apply Resque integration: #{e}")
|
|
33
|
-
@patched
|
|
34
|
-
end
|
|
14
|
+
def patched?
|
|
15
|
+
done?(:resque)
|
|
16
|
+
end
|
|
35
17
|
|
|
36
|
-
|
|
37
|
-
|
|
18
|
+
def patch
|
|
19
|
+
do_once(:resque) do
|
|
20
|
+
begin
|
|
21
|
+
require_relative 'resque_job'
|
|
22
|
+
add_pin
|
|
23
|
+
get_option(:workers).each { |worker| worker.extend(ResqueJob) }
|
|
24
|
+
rescue StandardError => e
|
|
25
|
+
Datadog::Tracer.log.error("Unable to apply Resque integration: #{e}")
|
|
26
|
+
end
|
|
38
27
|
end
|
|
28
|
+
end
|
|
39
29
|
|
|
40
|
-
|
|
30
|
+
def add_pin
|
|
31
|
+
Pin.new(
|
|
32
|
+
get_option(:service_name),
|
|
33
|
+
app: Ext::APP,
|
|
34
|
+
app_type: Datadog::Ext::AppTypes::WORKER,
|
|
35
|
+
tracer: get_option(:tracer)
|
|
36
|
+
).onto(::Resque)
|
|
37
|
+
end
|
|
41
38
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
.new(get_option(:service_name), app: 'resque', app_type: Ext::AppTypes::WORKER)
|
|
45
|
-
.onto(::Resque)
|
|
46
|
-
end
|
|
39
|
+
def get_option(option)
|
|
40
|
+
Datadog.configuration[:resque].get_option(option)
|
|
47
41
|
end
|
|
48
42
|
end
|
|
49
43
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'ddtrace/ext/app_types'
|
|
2
2
|
require 'ddtrace/sync_writer'
|
|
3
|
+
require 'ddtrace/contrib/sidekiq/ext'
|
|
3
4
|
require 'resque'
|
|
4
5
|
|
|
5
6
|
module Datadog
|
|
@@ -10,7 +11,7 @@ module Datadog
|
|
|
10
11
|
def around_perform(*args)
|
|
11
12
|
pin = Pin.get_from(::Resque)
|
|
12
13
|
return yield unless pin && pin.tracer
|
|
13
|
-
pin.tracer.trace(
|
|
14
|
+
pin.tracer.trace(Ext::SPAN_JOB, service: pin.service) do |span|
|
|
14
15
|
span.resource = name
|
|
15
16
|
span.span_type = pin.app_type
|
|
16
17
|
yield
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
-
require 'ddtrace/contrib/
|
|
2
|
+
require 'ddtrace/contrib/rest_client/ext'
|
|
3
3
|
|
|
4
4
|
module Datadog
|
|
5
5
|
module Contrib
|
|
6
6
|
module RestClient
|
|
7
7
|
module Configuration
|
|
8
|
-
#
|
|
8
|
+
# Custom settings for the RestClient integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
get_option(:tracer).set_service_info(value, NAME, Ext::AppTypes::DB)
|
|
10
|
+
option :distributed_tracing, default: false
|
|
11
|
+
option :service_name, default: Ext::SERVICE_NAME, depends_on: [:tracer] do |value|
|
|
12
|
+
get_option(:tracer).set_service_info(value, Ext::APP, Datadog::Ext::AppTypes::DB)
|
|
14
13
|
value
|
|
15
14
|
end
|
|
16
|
-
|
|
17
|
-
option :distributed_tracing, default: false
|
|
18
15
|
end
|
|
19
16
|
end
|
|
20
17
|
end
|
|
@@ -10,8 +10,16 @@ module Datadog
|
|
|
10
10
|
include Contrib::Integration
|
|
11
11
|
register_as :rest_client
|
|
12
12
|
|
|
13
|
+
def self.version
|
|
14
|
+
Gem.loaded_specs['rest-client'] && Gem.loaded_specs['rest-client'].version
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.present?
|
|
18
|
+
super && defined?(::RestClient::Request)
|
|
19
|
+
end
|
|
20
|
+
|
|
13
21
|
def self.compatible?
|
|
14
|
-
RUBY_VERSION >= '1.9.3'
|
|
22
|
+
super && Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('1.9.3')
|
|
15
23
|
end
|
|
16
24
|
|
|
17
25
|
def default_configuration
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
require 'ddtrace/ext/net'
|
|
2
2
|
require 'ddtrace/ext/distributed'
|
|
3
3
|
require 'ddtrace/propagation/http_propagator'
|
|
4
|
+
require 'ddtrace/contrib/rest_client/ext'
|
|
4
5
|
|
|
5
6
|
module Datadog
|
|
6
7
|
module Contrib
|
|
7
8
|
module RestClient
|
|
8
9
|
# RestClient RequestPatch
|
|
9
10
|
module RequestPatch
|
|
10
|
-
REQUEST_TRACE_NAME = 'rest_client.request'.freeze
|
|
11
|
-
|
|
12
11
|
def self.included(base)
|
|
13
12
|
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.0.0')
|
|
14
13
|
base.class_eval do
|
|
@@ -48,14 +47,14 @@ module Datadog
|
|
|
48
47
|
|
|
49
48
|
def datadog_tag_request(uri, span)
|
|
50
49
|
span.resource = method.to_s.upcase
|
|
51
|
-
span.set_tag(Ext::HTTP::URL, uri.path)
|
|
52
|
-
span.set_tag(Ext::HTTP::METHOD, method.to_s.upcase)
|
|
53
|
-
span.set_tag(Ext::NET::TARGET_HOST, uri.host)
|
|
54
|
-
span.set_tag(Ext::NET::TARGET_PORT, uri.port)
|
|
50
|
+
span.set_tag(Datadog::Ext::HTTP::URL, uri.path)
|
|
51
|
+
span.set_tag(Datadog::Ext::HTTP::METHOD, method.to_s.upcase)
|
|
52
|
+
span.set_tag(Datadog::Ext::NET::TARGET_HOST, uri.host)
|
|
53
|
+
span.set_tag(Datadog::Ext::NET::TARGET_PORT, uri.port)
|
|
55
54
|
end
|
|
56
55
|
|
|
57
56
|
def datadog_trace_request(uri)
|
|
58
|
-
span = datadog_configuration[:tracer].trace(
|
|
57
|
+
span = datadog_configuration[:tracer].trace(Ext::SPAN_REQUEST,
|
|
59
58
|
service: datadog_configuration[:service_name],
|
|
60
59
|
span_type: Datadog::Ext::AppTypes::WEB)
|
|
61
60
|
|
|
@@ -63,11 +62,11 @@ module Datadog
|
|
|
63
62
|
|
|
64
63
|
response = yield(span)
|
|
65
64
|
|
|
66
|
-
span.set_tag(Ext::HTTP::STATUS_CODE, response.code)
|
|
65
|
+
span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, response.code)
|
|
67
66
|
response
|
|
68
67
|
rescue ::RestClient::ExceptionWithResponse => e
|
|
69
|
-
span.set_error(e) if Ext::HTTP::ERROR_RANGE.cover?(e.http_code)
|
|
70
|
-
span.set_tag(Ext::HTTP::STATUS_CODE, e.http_code)
|
|
68
|
+
span.set_error(e) if Datadog::Ext::HTTP::ERROR_RANGE.cover?(e.http_code)
|
|
69
|
+
span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, e.http_code)
|
|
71
70
|
|
|
72
71
|
raise e
|
|
73
72
|
# rubocop:disable Lint/RescueException
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
require 'ddtrace/contrib/sequel/ext'
|
|
2
3
|
|
|
3
4
|
module Datadog
|
|
4
5
|
module Contrib
|
|
5
6
|
module Sequel
|
|
6
7
|
module Configuration
|
|
8
|
+
# Custom settings for the Sequel integration
|
|
7
9
|
class Settings < Contrib::Configuration::Settings
|
|
8
10
|
# Add any custom Sequel settings or behavior here.
|
|
9
11
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'ddtrace/ext/sql'
|
|
2
2
|
require 'ddtrace/ext/app_types'
|
|
3
|
+
require 'ddtrace/contrib/sequel/ext'
|
|
3
4
|
require 'ddtrace/contrib/sequel/utils'
|
|
4
5
|
|
|
5
6
|
module Datadog
|
|
@@ -18,11 +19,11 @@ module Datadog
|
|
|
18
19
|
|
|
19
20
|
response = nil
|
|
20
21
|
|
|
21
|
-
datadog_pin.tracer.trace(
|
|
22
|
+
datadog_pin.tracer.trace(Ext::SPAN_QUERY) do |span|
|
|
22
23
|
span.service = datadog_pin.service
|
|
23
24
|
span.resource = opts[:query]
|
|
24
25
|
span.span_type = Datadog::Ext::SQL::TYPE
|
|
25
|
-
span.set_tag(
|
|
26
|
+
span.set_tag(Ext::TAG_DB_VENDOR, adapter_name)
|
|
26
27
|
response = super(sql, options)
|
|
27
28
|
end
|
|
28
29
|
response
|
|
@@ -31,7 +32,7 @@ module Datadog
|
|
|
31
32
|
def datadog_pin
|
|
32
33
|
@pin ||= Datadog::Pin.new(
|
|
33
34
|
Datadog.configuration[:sequel][:service_name] || adapter_name,
|
|
34
|
-
app:
|
|
35
|
+
app: Ext::APP,
|
|
35
36
|
app_type: Datadog::Ext::AppTypes::DB,
|
|
36
37
|
tracer: Datadog.configuration[:sequel][:tracer] || Datadog.tracer
|
|
37
38
|
)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'ddtrace/ext/sql'
|
|
2
2
|
require 'ddtrace/ext/app_types'
|
|
3
|
+
require 'ddtrace/contrib/sequel/ext'
|
|
3
4
|
require 'ddtrace/contrib/sequel/utils'
|
|
4
5
|
|
|
5
6
|
module Datadog
|
|
@@ -39,11 +40,11 @@ module Datadog
|
|
|
39
40
|
opts = Utils.parse_opts(sql, options, db.opts)
|
|
40
41
|
response = nil
|
|
41
42
|
|
|
42
|
-
datadog_pin.tracer.trace(
|
|
43
|
+
datadog_pin.tracer.trace(Ext::SPAN_QUERY) do |span|
|
|
43
44
|
span.service = datadog_pin.service
|
|
44
45
|
span.resource = opts[:query]
|
|
45
46
|
span.span_type = Datadog::Ext::SQL::TYPE
|
|
46
|
-
span.set_tag(
|
|
47
|
+
span.set_tag(Ext::TAG_DB_VENDOR, adapter_name)
|
|
47
48
|
response = super_method.call(sql, options, &block)
|
|
48
49
|
end
|
|
49
50
|
response
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Contrib
|
|
3
|
+
module Sequel
|
|
4
|
+
# Sequel integration constants
|
|
5
|
+
module Ext
|
|
6
|
+
APP = 'sequel'.freeze
|
|
7
|
+
SERVICE_NAME = 'sequel'.freeze
|
|
8
|
+
|
|
9
|
+
SPAN_QUERY = 'sequel.query'.freeze
|
|
10
|
+
|
|
11
|
+
TAG_DB_VENDOR = 'sequel.db.vendor'.freeze
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -9,8 +9,6 @@ module Datadog
|
|
|
9
9
|
class Integration
|
|
10
10
|
include Contrib::Integration
|
|
11
11
|
|
|
12
|
-
APP = 'sequel'.freeze
|
|
13
|
-
|
|
14
12
|
register_as :sequel, auto_patch: false
|
|
15
13
|
|
|
16
14
|
def self.version
|
|
@@ -22,7 +20,7 @@ module Datadog
|
|
|
22
20
|
end
|
|
23
21
|
|
|
24
22
|
def self.compatible?
|
|
25
|
-
super && RUBY_VERSION >= '2.0.0'
|
|
23
|
+
super && Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0.0')
|
|
26
24
|
end
|
|
27
25
|
|
|
28
26
|
def default_configuration
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
require 'ddtrace/contrib/sidekiq/ext'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module Sidekiq
|
|
7
|
+
module Configuration
|
|
8
|
+
# Custom settings for the Sidekiq integration
|
|
9
|
+
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :service_name, default: Ext::SERVICE_NAME
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Contrib
|
|
3
|
+
module Sidekiq
|
|
4
|
+
# Sidekiq integration constants
|
|
5
|
+
module Ext
|
|
6
|
+
APP = 'sidekiq'.freeze
|
|
7
|
+
SERVICE_NAME = 'sidekiq'.freeze
|
|
8
|
+
|
|
9
|
+
SPAN_JOB = 'sidekiq.job'.freeze
|
|
10
|
+
|
|
11
|
+
TAG_JOB_DELAY = 'sidekiq.job.delay'.freeze
|
|
12
|
+
TAG_JOB_ID = 'sidekiq.job.id'.freeze
|
|
13
|
+
TAG_JOB_QUEUE = 'sidekiq.job.queue'.freeze
|
|
14
|
+
TAG_JOB_RETRY = 'sidekiq.job.retry'.freeze
|
|
15
|
+
TAG_JOB_WRAPPER = 'sidekiq.job.wrapper'.freeze
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/sidekiq/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/sidekiq/patcher'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Contrib
|
|
7
|
+
module Sidekiq
|
|
8
|
+
# Description of Sidekiq integration
|
|
9
|
+
class Integration
|
|
10
|
+
include Contrib::Integration
|
|
11
|
+
|
|
12
|
+
register_as :sidekiq
|
|
13
|
+
|
|
14
|
+
def self.version
|
|
15
|
+
Gem.loaded_specs['sidekiq'] && Gem.loaded_specs['sidekiq'].version
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.present?
|
|
19
|
+
super && defined?(::Sidekiq)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.compatible?
|
|
23
|
+
super && version >= Gem::Version.new('3.5.4')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def default_configuration
|
|
27
|
+
Configuration::Settings.new
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def patcher
|
|
31
|
+
Patcher
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
+
require 'ddtrace/contrib/patcher'
|
|
2
|
+
|
|
1
3
|
module Datadog
|
|
2
4
|
module Contrib
|
|
3
5
|
module Sidekiq
|
|
4
|
-
#
|
|
6
|
+
# Patcher enables patching of 'sidekiq' module.
|
|
5
7
|
module Patcher
|
|
6
|
-
include
|
|
7
|
-
VERSION_REQUIRED = Gem::Version.new('4.0.0')
|
|
8
|
-
register_as :sidekiq
|
|
9
|
-
option :service_name, default: 'sidekiq'
|
|
10
|
-
option :tracer, default: Datadog.tracer
|
|
8
|
+
include Contrib::Patcher
|
|
11
9
|
|
|
12
10
|
module_function
|
|
13
11
|
|
|
14
|
-
def
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
require_relative 'tracer'
|
|
12
|
+
def patched?
|
|
13
|
+
done?(:sidekiq)
|
|
14
|
+
end
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
def patch
|
|
17
|
+
do_once(:sidekiq) do
|
|
18
|
+
begin
|
|
19
|
+
require 'ddtrace/contrib/sidekiq/tracer'
|
|
20
|
+
::Sidekiq.configure_server do |config|
|
|
21
|
+
config.server_middleware do |chain|
|
|
22
|
+
chain.add(Sidekiq::Tracer)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
rescue StandardError => e
|
|
26
|
+
Datadog::Tracer.log.error("Unable to apply Sidekiq integration: #{e}")
|
|
22
27
|
end
|
|
23
28
|
end
|
|
24
29
|
end
|
|
25
|
-
|
|
26
|
-
def compatible?
|
|
27
|
-
defined?(::Sidekiq) &&
|
|
28
|
-
Gem::Version.new(::Sidekiq::VERSION) >= VERSION_REQUIRED
|
|
29
|
-
end
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
end
|