ddtrace 0.16.1 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +3 -3
  3. data/CHANGELOG.md +24 -2
  4. data/Rakefile +14 -28
  5. data/docker-compose.yml +1 -0
  6. data/docs/GettingStarted.md +302 -263
  7. data/lib/ddtrace.rb +22 -21
  8. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +23 -0
  9. data/lib/ddtrace/contrib/active_model_serializers/event.rb +4 -2
  10. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +2 -2
  11. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +2 -2
  12. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +17 -0
  13. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +39 -0
  14. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +24 -43
  15. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +3 -2
  16. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +6 -7
  17. data/lib/ddtrace/contrib/active_record/events/sql.rb +10 -8
  18. data/lib/ddtrace/contrib/active_record/ext.rb +22 -0
  19. data/lib/ddtrace/contrib/aws/configuration/settings.rb +15 -0
  20. data/lib/ddtrace/contrib/aws/ext.rb +21 -0
  21. data/lib/ddtrace/contrib/aws/instrumentation.rb +11 -9
  22. data/lib/ddtrace/contrib/aws/integration.rb +32 -0
  23. data/lib/ddtrace/contrib/aws/patcher.rb +42 -41
  24. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +3 -1
  25. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +11 -0
  26. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +7 -3
  27. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +1 -0
  28. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +15 -0
  29. data/lib/ddtrace/contrib/dalli/ext.rb +15 -0
  30. data/lib/ddtrace/contrib/dalli/instrumentation.rb +3 -3
  31. data/lib/ddtrace/contrib/dalli/integration.rb +36 -0
  32. data/lib/ddtrace/contrib/dalli/patcher.rb +31 -38
  33. data/lib/ddtrace/contrib/dalli/quantize.rb +3 -3
  34. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +15 -0
  35. data/lib/ddtrace/contrib/delayed_job/ext.rb +18 -0
  36. data/lib/ddtrace/contrib/delayed_job/integration.rb +32 -0
  37. data/lib/ddtrace/contrib/delayed_job/patcher.rb +20 -27
  38. data/lib/ddtrace/contrib/delayed_job/plugin.rb +7 -6
  39. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +16 -0
  40. data/lib/ddtrace/contrib/elasticsearch/ext.rb +18 -0
  41. data/lib/ddtrace/contrib/elasticsearch/integration.rb +37 -0
  42. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +30 -39
  43. data/lib/ddtrace/contrib/excon/configuration/settings.rb +18 -0
  44. data/lib/ddtrace/contrib/excon/ext.rb +13 -0
  45. data/lib/ddtrace/contrib/excon/integration.rb +32 -0
  46. data/lib/ddtrace/contrib/excon/middleware.rb +10 -10
  47. data/lib/ddtrace/contrib/excon/patcher.rb +14 -30
  48. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +23 -0
  49. data/lib/ddtrace/contrib/faraday/ext.rb +13 -0
  50. data/lib/ddtrace/contrib/faraday/integration.rb +36 -0
  51. data/lib/ddtrace/contrib/faraday/middleware.rb +10 -9
  52. data/lib/ddtrace/contrib/faraday/patcher.rb +39 -54
  53. data/lib/ddtrace/contrib/grape/configuration/settings.rb +16 -0
  54. data/lib/ddtrace/contrib/grape/endpoint.rb +10 -13
  55. data/lib/ddtrace/contrib/grape/ext.rb +19 -0
  56. data/lib/ddtrace/contrib/grape/integration.rb +36 -0
  57. data/lib/ddtrace/contrib/grape/patcher.rb +24 -24
  58. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +20 -0
  59. data/lib/ddtrace/contrib/graphql/ext.rb +11 -0
  60. data/lib/ddtrace/contrib/graphql/integration.rb +38 -0
  61. data/lib/ddtrace/contrib/graphql/patcher.rb +33 -41
  62. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +15 -0
  63. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +5 -2
  64. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -2
  65. data/lib/ddtrace/contrib/grpc/ext.rb +14 -0
  66. data/lib/ddtrace/contrib/grpc/integration.rb +38 -0
  67. data/lib/ddtrace/contrib/grpc/patcher.rb +25 -35
  68. data/lib/ddtrace/contrib/http/circuit_breaker.rb +39 -0
  69. data/lib/ddtrace/contrib/http/configuration/settings.rb +16 -0
  70. data/lib/ddtrace/contrib/http/ext.rb +13 -0
  71. data/lib/ddtrace/contrib/http/integration.rb +32 -0
  72. data/lib/ddtrace/contrib/http/patcher.rb +10 -58
  73. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +18 -0
  74. data/lib/ddtrace/contrib/mongodb/ext.rb +20 -0
  75. data/lib/ddtrace/contrib/mongodb/integration.rb +36 -0
  76. data/lib/ddtrace/contrib/mongodb/patcher.rb +17 -27
  77. data/lib/ddtrace/contrib/mongodb/subscribers.rb +12 -11
  78. data/lib/ddtrace/contrib/mysql2/client.rb +8 -6
  79. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +15 -0
  80. data/lib/ddtrace/contrib/mysql2/ext.rb +15 -0
  81. data/lib/ddtrace/contrib/mysql2/integration.rb +32 -0
  82. data/lib/ddtrace/contrib/mysql2/patcher.rb +12 -22
  83. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +23 -0
  84. data/lib/ddtrace/contrib/racecar/event.rb +7 -6
  85. data/lib/ddtrace/contrib/racecar/events/batch.rb +2 -2
  86. data/lib/ddtrace/contrib/racecar/events/message.rb +2 -2
  87. data/lib/ddtrace/contrib/racecar/ext.rb +21 -0
  88. data/lib/ddtrace/contrib/racecar/integration.rb +36 -0
  89. data/lib/ddtrace/contrib/racecar/patcher.rb +24 -41
  90. data/lib/ddtrace/contrib/rack/configuration/settings.rb +39 -0
  91. data/lib/ddtrace/contrib/rack/ext.rb +18 -0
  92. data/lib/ddtrace/contrib/rack/integration.rb +32 -0
  93. data/lib/ddtrace/contrib/rack/middlewares.rb +5 -2
  94. data/lib/ddtrace/contrib/rack/patcher.rb +22 -40
  95. data/lib/ddtrace/contrib/rails/action_controller.rb +10 -7
  96. data/lib/ddtrace/contrib/rails/action_controller_patch.rb +1 -0
  97. data/lib/ddtrace/contrib/rails/active_support.rb +9 -9
  98. data/lib/ddtrace/contrib/rails/configuration/settings.rb +26 -0
  99. data/lib/ddtrace/contrib/rails/core_extensions.rb +12 -15
  100. data/lib/ddtrace/contrib/rails/ext.rb +30 -0
  101. data/lib/ddtrace/contrib/rails/framework.rb +3 -2
  102. data/lib/ddtrace/contrib/rails/integration.rb +37 -0
  103. data/lib/ddtrace/contrib/rails/patcher.rb +56 -63
  104. data/lib/ddtrace/contrib/rails/railtie.rb +3 -10
  105. data/lib/ddtrace/contrib/rake/configuration/settings.rb +17 -0
  106. data/lib/ddtrace/contrib/rake/ext.rb +18 -0
  107. data/lib/ddtrace/contrib/rake/instrumentation.rb +7 -8
  108. data/lib/ddtrace/contrib/rake/integration.rb +36 -0
  109. data/lib/ddtrace/contrib/rake/patcher.rb +23 -33
  110. data/lib/ddtrace/contrib/redis/configuration/settings.rb +15 -0
  111. data/lib/ddtrace/contrib/redis/ext.rb +19 -0
  112. data/lib/ddtrace/contrib/redis/integration.rb +36 -0
  113. data/lib/ddtrace/contrib/redis/patcher.rb +21 -29
  114. data/lib/ddtrace/contrib/redis/tags.rb +3 -3
  115. data/lib/ddtrace/contrib/resque/configuration/settings.rb +16 -0
  116. data/lib/ddtrace/contrib/resque/ext.rb +13 -0
  117. data/lib/ddtrace/contrib/resque/integration.rb +37 -0
  118. data/lib/ddtrace/contrib/resque/patcher.rb +30 -36
  119. data/lib/ddtrace/contrib/resque/resque_job.rb +2 -1
  120. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +5 -8
  121. data/lib/ddtrace/contrib/rest_client/ext.rb +13 -0
  122. data/lib/ddtrace/contrib/rest_client/integration.rb +9 -1
  123. data/lib/ddtrace/contrib/rest_client/patcher.rb +1 -1
  124. data/lib/ddtrace/contrib/rest_client/request_patch.rb +9 -10
  125. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +2 -0
  126. data/lib/ddtrace/contrib/sequel/database.rb +4 -3
  127. data/lib/ddtrace/contrib/sequel/dataset.rb +3 -2
  128. data/lib/ddtrace/contrib/sequel/ext.rb +15 -0
  129. data/lib/ddtrace/contrib/sequel/integration.rb +1 -3
  130. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -1
  131. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +15 -0
  132. data/lib/ddtrace/contrib/sidekiq/ext.rb +19 -0
  133. data/lib/ddtrace/contrib/sidekiq/integration.rb +36 -0
  134. data/lib/ddtrace/contrib/sidekiq/patcher.rb +18 -18
  135. data/lib/ddtrace/contrib/sidekiq/tracer.rb +10 -10
  136. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +27 -0
  137. data/lib/ddtrace/contrib/sinatra/env.rb +3 -4
  138. data/lib/ddtrace/contrib/sinatra/ext.rb +19 -0
  139. data/lib/ddtrace/contrib/sinatra/integration.rb +36 -0
  140. data/lib/ddtrace/contrib/sinatra/patcher.rb +33 -0
  141. data/lib/ddtrace/contrib/sinatra/tracer.rb +4 -34
  142. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +2 -3
  143. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +15 -0
  144. data/lib/ddtrace/contrib/sucker_punch/ext.rb +18 -0
  145. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +6 -5
  146. data/lib/ddtrace/contrib/sucker_punch/integration.rb +36 -0
  147. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +29 -35
  148. data/lib/ddtrace/encoding.rb +21 -16
  149. data/lib/ddtrace/span.rb +29 -0
  150. data/lib/ddtrace/transport.rb +2 -2
  151. data/lib/ddtrace/version.rb +2 -2
  152. metadata +74 -6
  153. data/lib/ddtrace/ext/cache.rb +0 -8
  154. data/lib/ddtrace/ext/grpc.rb +0 -7
  155. data/lib/ddtrace/ext/mongo.rb +0 -12
  156. data/lib/ddtrace/ext/redis.rb +0 -17
@@ -6,19 +6,12 @@ module Datadog
6
6
  # Railtie class initializes
7
7
  class Railtie < Rails::Railtie
8
8
  # Add the trace middleware to the application stack
9
- initializer 'datadog.add_middleware' do |app|
10
- app.middleware.insert_before(0, Datadog::Contrib::Rack::TraceMiddleware)
11
- # Insert right after Rails exception handling middleware, because if it's before,
12
- # it catches and swallows the error. If it's too far after, custom middleware can find itself
13
- # between, and raise exceptions that don't end up getting tagged on the request properly (e.g lost stack trace.)
14
- app.middleware.insert_after(ActionDispatch::ShowExceptions, Datadog::Contrib::Rails::ExceptionMiddleware)
9
+ initializer 'datadog.before_intialize' do |app|
10
+ Datadog::Contrib::Rails::Patcher.before_intialize(app)
15
11
  end
16
12
 
17
13
  config.after_initialize do
18
- Datadog::Contrib::Rails::Framework.setup
19
- Datadog::Contrib::Rails::ActionController.instrument
20
- Datadog::Contrib::Rails::ActionView.instrument
21
- Datadog::Contrib::Rails::ActiveSupport.instrument
14
+ Datadog::Contrib::Rails::Patcher.after_intialize(self)
22
15
  end
23
16
  end
24
17
  end
@@ -0,0 +1,17 @@
1
+ require 'ddtrace/contrib/configuration/settings'
2
+ require 'ddtrace/contrib/rake/ext'
3
+
4
+ module Datadog
5
+ module Contrib
6
+ module Rake
7
+ module Configuration
8
+ # Custom settings for the Rake integration
9
+ class Settings < Contrib::Configuration::Settings
10
+ option :enabled, default: true
11
+ option :quantize, default: {}
12
+ option :service_name, default: Ext::SERVICE_NAME
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ module Datadog
2
+ module Contrib
3
+ module Rake
4
+ # Rake integration constants
5
+ module Ext
6
+ APP = 'rake'.freeze
7
+ SERVICE_NAME = 'rake'.freeze
8
+
9
+ SPAN_INVOKE = 'rake.invoke'.freeze
10
+ SPAN_EXECUTE = 'rake.execute'.freeze
11
+
12
+ TAG_EXECUTE_ARGS = 'rake.execute.args'.freeze
13
+ TAG_INVOKE_ARGS = 'rake.invoke.args'.freeze
14
+ TAG_TASK_ARG_NAMES = 'rake.task.arg_names'.freeze
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,11 +1,10 @@
1
+ require 'ddtrace/contrib/rake/ext'
2
+
1
3
  module Datadog
2
4
  module Contrib
3
5
  module Rake
4
6
  # Instrumentation for Rake tasks
5
7
  module Instrumentation
6
- SPAN_NAME_INVOKE = 'rake.invoke'.freeze
7
- SPAN_NAME_EXECUTE = 'rake.execute'.freeze
8
-
9
8
  def self.included(base)
10
9
  base.send(:prepend, InstanceMethods)
11
10
  end
@@ -15,7 +14,7 @@ module Datadog
15
14
  def invoke(*args)
16
15
  return super unless enabled?
17
16
 
18
- tracer.trace(SPAN_NAME_INVOKE, span_options) do |span|
17
+ tracer.trace(Ext::SPAN_INVOKE, span_options) do |span|
19
18
  super
20
19
  annotate_invoke!(span, args)
21
20
  end
@@ -26,7 +25,7 @@ module Datadog
26
25
  def execute(args = nil)
27
26
  return super unless enabled?
28
27
 
29
- tracer.trace(SPAN_NAME_EXECUTE, span_options) do |span|
28
+ tracer.trace(Ext::SPAN_EXECUTE, span_options) do |span|
30
29
  super
31
30
  annotate_execute!(span, args)
32
31
  end
@@ -42,15 +41,15 @@ module Datadog
42
41
 
43
42
  def annotate_invoke!(span, args)
44
43
  span.resource = name
45
- span.set_tag('rake.task.arg_names', arg_names)
46
- span.set_tag('rake.invoke.args', quantize_args(args)) unless args.nil?
44
+ span.set_tag(Ext::TAG_TASK_ARG_NAMES, arg_names)
45
+ span.set_tag(Ext::TAG_INVOKE_ARGS, quantize_args(args)) unless args.nil?
47
46
  rescue StandardError => e
48
47
  Datadog::Tracer.log.debug("Error while tracing Rake invoke: #{e.message}")
49
48
  end
50
49
 
51
50
  def annotate_execute!(span, args)
52
51
  span.resource = name
53
- span.set_tag('rake.execute.args', quantize_args(args.to_hash)) unless args.nil?
52
+ span.set_tag(Ext::TAG_EXECUTE_ARGS, quantize_args(args.to_hash)) unless args.nil?
54
53
  rescue StandardError => e
55
54
  Datadog::Tracer.log.debug("Error while tracing Rake execute: #{e.message}")
56
55
  end
@@ -0,0 +1,36 @@
1
+ require 'ddtrace/contrib/integration'
2
+ require 'ddtrace/contrib/rake/configuration/settings'
3
+ require 'ddtrace/contrib/rake/patcher'
4
+
5
+ module Datadog
6
+ module Contrib
7
+ module Rake
8
+ # Description of Rake integration
9
+ class Integration
10
+ include Contrib::Integration
11
+
12
+ register_as :rake
13
+
14
+ def self.version
15
+ Gem.loaded_specs['rake'] && Gem.loaded_specs['rake'].version
16
+ end
17
+
18
+ def self.present?
19
+ super && defined?(::Rake)
20
+ end
21
+
22
+ def self.compatible?
23
+ super && RUBY_VERSION >= '2.0.0'
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,51 +1,41 @@
1
+ require 'ddtrace/contrib/patcher'
1
2
  require 'ddtrace/ext/app_types'
3
+ require 'ddtrace/contrib/rake/ext'
2
4
  require 'ddtrace/contrib/rake/instrumentation'
3
5
 
4
6
  module Datadog
5
7
  module Contrib
6
8
  module Rake
7
- # Patcher for Rake instrumentation
9
+ # Patcher enables patching of 'rake' module.
8
10
  module Patcher
9
- include Base
10
-
11
- register_as :rake
12
- option :service_name, default: 'rake'
13
- option :tracer, default: Datadog.tracer
14
- option :enabled, default: true
15
- option :quantize, default: {}
11
+ include Contrib::Patcher
16
12
 
17
13
  module_function
18
14
 
19
- def patch
20
- return patched? if patched? || !compatible?
21
-
22
- patch_rake
23
-
24
- # Set service info
25
- configuration[:tracer].set_service_info(
26
- configuration[:service_name],
27
- 'rake',
28
- Ext::AppTypes::WORKER
29
- )
30
-
31
- @patched = true
32
- end
33
-
34
15
  def patched?
35
- return @patched if defined?(@patched)
36
- @patched = false
16
+ done?(:rake)
37
17
  end
38
18
 
39
- def patch_rake
40
- ::Rake::Task.send(:include, Instrumentation)
41
- end
42
-
43
- def compatible?
44
- RUBY_VERSION >= '2.0.0' && defined?(::Rake)
19
+ def patch
20
+ do_once(:rake) do
21
+ begin
22
+ # Add instrumentation patch to Rake task
23
+ ::Rake::Task.send(:include, Instrumentation)
24
+
25
+ # Set service info
26
+ get_option(:tracer).set_service_info(
27
+ get_option(:service_name),
28
+ Ext::APP,
29
+ Datadog::Ext::AppTypes::WORKER
30
+ )
31
+ rescue StandardError => e
32
+ Datadog::Tracer.log.error("Unable to apply Rake integration: #{e}")
33
+ end
34
+ end
45
35
  end
46
36
 
47
- def configuration
48
- Datadog.configuration[:rake]
37
+ def get_option(option)
38
+ Datadog.configuration[:rake].get_option(option)
49
39
  end
50
40
  end
51
41
  end
@@ -0,0 +1,15 @@
1
+ require 'ddtrace/contrib/configuration/settings'
2
+ require 'ddtrace/contrib/redis/ext'
3
+
4
+ module Datadog
5
+ module Contrib
6
+ module Redis
7
+ module Configuration
8
+ # Custom settings for the Redis 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 Redis
4
+ # Redis integration constants
5
+ module Ext
6
+ APP = 'redis'.freeze
7
+ SERVICE_NAME = 'redis'.freeze
8
+ TYPE = 'redis'.freeze
9
+
10
+ METRIC_PIPELINE_LEN = 'redis.pipeline_length'.freeze
11
+
12
+ SPAN_COMMAND = 'redis.command'.freeze
13
+
14
+ TAG_DB = 'out.redis_db'.freeze
15
+ TAG_RAW_COMMAND = 'redis.raw_command'.freeze
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,36 @@
1
+ require 'ddtrace/contrib/integration'
2
+ require 'ddtrace/contrib/redis/configuration/settings'
3
+ require 'ddtrace/contrib/redis/patcher'
4
+
5
+ module Datadog
6
+ module Contrib
7
+ module Redis
8
+ # Description of Redis integration
9
+ class Integration
10
+ include Contrib::Integration
11
+
12
+ register_as :redis, auto_patch: true
13
+
14
+ def self.version
15
+ Gem.loaded_specs['redis'] && Gem.loaded_specs['redis'].version
16
+ end
17
+
18
+ def self.present?
19
+ super && defined?(::Redis)
20
+ end
21
+
22
+ def self.compatible?
23
+ !version.nil? && version >= Gem::Version.new('3.0.0')
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,43 +1,35 @@
1
- # requirements should be kept minimal as Patcher is a shared requirement.
1
+ require 'ddtrace/contrib/patcher'
2
+ require 'ddtrace/contrib/redis/ext'
2
3
 
3
4
  module Datadog
4
5
  module Contrib
5
6
  module Redis
6
- SERVICE = 'redis'.freeze
7
- DRIVER = 'redis.driver'.freeze
8
-
9
7
  # Patcher enables patching of 'redis' module.
10
8
  module Patcher
11
- include Base
12
- register_as :redis, auto_patch: true
13
- option :service_name, default: SERVICE
14
- option :tracer, default: Datadog.tracer
15
-
16
- @patched = false
9
+ include Contrib::Patcher
17
10
 
18
11
  module_function
19
12
 
13
+ def patched?
14
+ done?(:redis)
15
+ end
16
+
20
17
  # patch applies our patch if needed
21
18
  def patch
22
- if !@patched && compatible?
19
+ do_once(:redis) do
23
20
  begin
24
21
  # do not require these by default, but only when actually patching
22
+ require 'redis'
25
23
  require 'ddtrace/ext/app_types'
26
24
  require 'ddtrace/contrib/redis/tags'
27
25
  require 'ddtrace/contrib/redis/quantize'
28
26
 
29
27
  patch_redis_client
30
- @patched = true
31
- RailsCachePatcher.reload_cache_store if Datadog.registry[:rails].patched?
28
+ RailsCachePatcher.reload_cache_store if Datadog.registry[:rails].patcher.patched?
32
29
  rescue StandardError => e
33
30
  Datadog::Tracer.log.error("Unable to apply Redis integration: #{e}")
34
31
  end
35
32
  end
36
- @patched
37
- end
38
-
39
- def compatible?
40
- defined?(::Redis::VERSION) && Gem::Version.new(::Redis::VERSION) >= Gem::Version.new('3.0.0')
41
33
  end
42
34
 
43
35
  # rubocop:disable Metrics/MethodLength
@@ -52,7 +44,12 @@ module Datadog
52
44
  def initialize(*args)
53
45
  service = Datadog.configuration[:redis][:service_name]
54
46
  tracer = Datadog.configuration[:redis][:tracer]
55
- pin = Datadog::Pin.new(service, app: 'redis', app_type: Datadog::Ext::AppTypes::DB, tracer: tracer)
47
+ pin = Datadog::Pin.new(
48
+ service,
49
+ app: Ext::APP,
50
+ app_type: Datadog::Ext::AppTypes::DB,
51
+ tracer: tracer
52
+ )
56
53
  pin.onto(self)
57
54
  initialize_without_datadog(*args)
58
55
  end
@@ -64,9 +61,9 @@ module Datadog
64
61
  return call_without_datadog(*args, &block) unless pin && pin.tracer
65
62
 
66
63
  response = nil
67
- pin.tracer.trace('redis.command') do |span|
64
+ pin.tracer.trace(Datadog::Contrib::Redis::Ext::SPAN_COMMAND) do |span|
68
65
  span.service = pin.service
69
- span.span_type = Datadog::Ext::Redis::TYPE
66
+ span.span_type = Datadog::Contrib::Redis::Ext::TYPE
70
67
  span.resource = Datadog::Contrib::Redis::Quantize.format_command_args(*args)
71
68
  Datadog::Contrib::Redis::Tags.set_common_tags(self, span)
72
69
 
@@ -83,13 +80,13 @@ module Datadog
83
80
  return call_pipeline_without_datadog(*args, &block) unless pin && pin.tracer
84
81
 
85
82
  response = nil
86
- pin.tracer.trace('redis.command') do |span|
83
+ pin.tracer.trace(Datadog::Contrib::Redis::Ext::SPAN_COMMAND) do |span|
87
84
  span.service = pin.service
88
- span.span_type = Datadog::Ext::Redis::TYPE
85
+ span.span_type = Datadog::Contrib::Redis::Ext::TYPE
89
86
  commands = args[0].commands.map { |c| Datadog::Contrib::Redis::Quantize.format_command_args(c) }
90
87
  span.resource = commands.join("\n")
91
88
  Datadog::Contrib::Redis::Tags.set_common_tags(self, span)
92
- span.set_metric Datadog::Ext::Redis::PIPELINE_LEN, commands.length
89
+ span.set_metric Datadog::Contrib::Redis::Ext::METRIC_PIPELINE_LEN, commands.length
93
90
 
94
91
  response = call_pipeline_without_datadog(*args, &block)
95
92
  end
@@ -98,11 +95,6 @@ module Datadog
98
95
  end
99
96
  end
100
97
  end
101
-
102
- # patched? tells wether patch has been successfully applied
103
- def patched?
104
- @patched
105
- end
106
98
  end
107
99
  end
108
100
  end
@@ -1,5 +1,5 @@
1
1
  require 'ddtrace/ext/net'
2
- require 'ddtrace/ext/redis'
2
+ require 'ddtrace/contrib/redis/ext'
3
3
 
4
4
  module Datadog
5
5
  module Contrib
@@ -11,8 +11,8 @@ module Datadog
11
11
  def set_common_tags(client, span)
12
12
  span.set_tag Datadog::Ext::NET::TARGET_HOST, client.host
13
13
  span.set_tag Datadog::Ext::NET::TARGET_PORT, client.port
14
- span.set_tag Datadog::Ext::Redis::DB, client.db
15
- span.set_tag Datadog::Ext::Redis::RAW_COMMAND, span.resource
14
+ span.set_tag Ext::TAG_DB, client.db
15
+ span.set_tag Ext::TAG_RAW_COMMAND, span.resource
16
16
  end
17
17
  end
18
18
  end
@@ -0,0 +1,16 @@
1
+ require 'ddtrace/contrib/configuration/settings'
2
+ require 'ddtrace/contrib/resque/ext'
3
+
4
+ module Datadog
5
+ module Contrib
6
+ module Resque
7
+ module Configuration
8
+ # Custom settings for the Resque integration
9
+ class Settings < Contrib::Configuration::Settings
10
+ option :service_name, default: Ext::SERVICE_NAME
11
+ option :workers, default: []
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ module Datadog
2
+ module Contrib
3
+ module Resque
4
+ # Resque integration constants
5
+ module Ext
6
+ APP = 'resque'.freeze
7
+ SERVICE_NAME = 'resque'.freeze
8
+
9
+ SPAN_JOB = 'resque.job'.freeze
10
+ end
11
+ end
12
+ end
13
+ end