ddtrace 0.20.0 → 0.21.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.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -3
  3. data/Rakefile +1 -1
  4. data/docs/GettingStarted.md +25 -7
  5. data/lib/ddtrace.rb +4 -31
  6. data/lib/ddtrace/configuration.rb +13 -46
  7. data/lib/ddtrace/configuration/{resolver.rb → dependency_resolver.rb} +2 -2
  8. data/lib/ddtrace/configuration/option.rb +32 -0
  9. data/lib/ddtrace/configuration/option_definition.rb +27 -0
  10. data/lib/ddtrace/configuration/option_definition_set.rb +18 -0
  11. data/lib/ddtrace/configuration/option_set.rb +6 -0
  12. data/lib/ddtrace/configuration/options.rb +93 -0
  13. data/lib/ddtrace/configuration/pin_setup.rb +1 -1
  14. data/lib/ddtrace/configuration/settings.rb +47 -0
  15. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +8 -0
  16. data/lib/ddtrace/contrib/active_model_serializers/event.rb +6 -0
  17. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +2 -2
  18. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +8 -0
  19. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +7 -0
  20. data/lib/ddtrace/contrib/active_record/events/sql.rb +6 -0
  21. data/lib/ddtrace/contrib/active_record/ext.rb +2 -3
  22. data/lib/ddtrace/contrib/analytics.rb +3 -4
  23. data/lib/ddtrace/contrib/aws/configuration/settings.rb +8 -0
  24. data/lib/ddtrace/contrib/aws/ext.rb +5 -6
  25. data/lib/ddtrace/contrib/aws/instrumentation.rb +7 -0
  26. data/lib/ddtrace/contrib/configuration/settings.rb +4 -14
  27. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +8 -0
  28. data/lib/ddtrace/contrib/dalli/ext.rb +3 -2
  29. data/lib/ddtrace/contrib/dalli/instrumentation.rb +7 -0
  30. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -1
  31. data/lib/ddtrace/contrib/delayed_job/ext.rb +1 -1
  32. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +8 -0
  33. data/lib/ddtrace/contrib/elasticsearch/ext.rb +2 -2
  34. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +11 -1
  35. data/lib/ddtrace/contrib/excon/configuration/settings.rb +8 -0
  36. data/lib/ddtrace/contrib/excon/ext.rb +2 -1
  37. data/lib/ddtrace/contrib/excon/middleware.rb +15 -0
  38. data/lib/ddtrace/contrib/extensions.rb +62 -0
  39. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +8 -0
  40. data/lib/ddtrace/contrib/faraday/ext.rb +2 -1
  41. data/lib/ddtrace/contrib/faraday/middleware.rb +15 -0
  42. data/lib/ddtrace/contrib/grape/configuration/settings.rb +8 -0
  43. data/lib/ddtrace/contrib/grape/endpoint.rb +19 -0
  44. data/lib/ddtrace/contrib/grape/ext.rb +2 -2
  45. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +8 -0
  46. data/lib/ddtrace/contrib/graphql/ext.rb +2 -0
  47. data/lib/ddtrace/contrib/graphql/patcher.rb +8 -2
  48. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +8 -0
  49. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +9 -0
  50. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +4 -0
  51. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -0
  52. data/lib/ddtrace/contrib/grpc/ext.rb +2 -1
  53. data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -0
  54. data/lib/ddtrace/contrib/http/ext.rb +2 -1
  55. data/lib/ddtrace/contrib/http/instrumentation.rb +54 -19
  56. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +8 -0
  57. data/lib/ddtrace/contrib/mongodb/ext.rb +2 -2
  58. data/lib/ddtrace/contrib/mongodb/subscribers.rb +18 -0
  59. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +8 -0
  60. data/lib/ddtrace/contrib/mysql2/ext.rb +2 -2
  61. data/lib/ddtrace/contrib/mysql2/{client.rb → instrumentation.rb} +32 -12
  62. data/lib/ddtrace/contrib/mysql2/patcher.rb +2 -2
  63. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +1 -1
  64. data/lib/ddtrace/contrib/racecar/ext.rb +1 -1
  65. data/lib/ddtrace/contrib/rack/configuration/settings.rb +1 -1
  66. data/lib/ddtrace/contrib/rack/ext.rb +1 -1
  67. data/lib/ddtrace/contrib/rails/action_controller.rb +3 -0
  68. data/lib/ddtrace/contrib/rails/active_support.rb +1 -0
  69. data/lib/ddtrace/contrib/rails/configuration/settings.rb +8 -0
  70. data/lib/ddtrace/contrib/rails/ext.rb +2 -5
  71. data/lib/ddtrace/contrib/rails/utils.rb +17 -1
  72. data/lib/ddtrace/contrib/rake/configuration/settings.rb +1 -1
  73. data/lib/ddtrace/contrib/rake/ext.rb +1 -1
  74. data/lib/ddtrace/contrib/redis/configuration/settings.rb +8 -0
  75. data/lib/ddtrace/contrib/redis/ext.rb +4 -5
  76. data/lib/ddtrace/contrib/redis/tags.rb +24 -6
  77. data/lib/ddtrace/contrib/registerable.rb +1 -1
  78. data/lib/ddtrace/contrib/registry.rb +42 -0
  79. data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -1
  80. data/lib/ddtrace/contrib/resque/ext.rb +1 -1
  81. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +8 -0
  82. data/lib/ddtrace/contrib/rest_client/ext.rb +2 -1
  83. data/lib/ddtrace/contrib/rest_client/request_patch.rb +14 -0
  84. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -1
  85. data/lib/ddtrace/contrib/sequel/database.rb +2 -0
  86. data/lib/ddtrace/contrib/sequel/dataset.rb +2 -0
  87. data/lib/ddtrace/contrib/sequel/ext.rb +2 -2
  88. data/lib/ddtrace/contrib/sequel/utils.rb +32 -14
  89. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -1
  90. data/lib/ddtrace/contrib/shoryuken/ext.rb +1 -1
  91. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -1
  92. data/lib/ddtrace/contrib/sidekiq/ext.rb +1 -1
  93. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +8 -0
  94. data/lib/ddtrace/contrib/sinatra/ext.rb +3 -4
  95. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -0
  96. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +12 -0
  97. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +1 -1
  98. data/lib/ddtrace/contrib/sucker_punch/ext.rb +1 -1
  99. data/lib/ddtrace/environment.rb +15 -0
  100. data/lib/ddtrace/ext/analytics.rb +1 -0
  101. data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
  102. data/lib/ddtrace/propagation/distributed_headers.rb +14 -4
  103. data/lib/ddtrace/span.rb +4 -0
  104. data/lib/ddtrace/tracer.rb +6 -1
  105. data/lib/ddtrace/version.rb +1 -1
  106. metadata +14 -15
  107. data/lib/ddtrace/configurable.rb +0 -83
  108. data/lib/ddtrace/configuration/proxy.rb +0 -25
  109. data/lib/ddtrace/contrib/base.rb +0 -16
  110. data/lib/ddtrace/contrib/configuration/option.rb +0 -33
  111. data/lib/ddtrace/contrib/configuration/option_definition.rb +0 -29
  112. data/lib/ddtrace/contrib/configuration/option_definition_set.rb +0 -20
  113. data/lib/ddtrace/contrib/configuration/option_set.rb +0 -8
  114. data/lib/ddtrace/contrib/configuration/options.rb +0 -95
  115. data/lib/ddtrace/registry.rb +0 -42
  116. data/lib/ddtrace/registry/registerable.rb +0 -20
@@ -1,3 +1,5 @@
1
+ require 'ddtrace/contrib/analytics'
2
+
1
3
  module Datadog
2
4
  module Contrib
3
5
  module Rails
@@ -11,7 +13,7 @@ module Datadog
11
13
  def self.normalize_template_name(name)
12
14
  return if name.nil?
13
15
 
14
- base_path = Datadog.configuration[:rails][:template_base_path]
16
+ base_path = datadog_configuration[:template_base_path]
15
17
  sections_view = name.split(base_path)
16
18
 
17
19
  if sections_view.length == 1
@@ -42,6 +44,20 @@ module Datadog
42
44
  true
43
45
  end
44
46
  end
47
+
48
+ def self.set_analytics_sample_rate(span)
49
+ if Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
50
+ Contrib::Analytics.set_sample_rate(span, datadog_configuration[:analytics_sample_rate])
51
+ end
52
+ end
53
+
54
+ class << self
55
+ private
56
+
57
+ def datadog_configuration
58
+ Datadog.configuration[:rails]
59
+ end
60
+ end
45
61
  end
46
62
  end
47
63
  end
@@ -8,7 +8,7 @@ module Datadog
8
8
  # Custom settings for the Rake integration
9
9
  class Settings < Contrib::Configuration::Settings
10
10
  option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENALBED, nil) },
11
+ default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
12
  lazy: true
13
13
 
14
14
  option :analytics_sample_rate,
@@ -4,7 +4,7 @@ module Datadog
4
4
  # Rake integration constants
5
5
  module Ext
6
6
  APP = 'rake'.freeze
7
- ENV_ANALYTICS_ENALBED = 'DD_RAKE_ANALYTICS_ENABLED'.freeze
7
+ ENV_ANALYTICS_ENABLED = 'DD_RAKE_ANALYTICS_ENABLED'.freeze
8
8
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_RAKE_ANALYTICS_SAMPLE_RATE'.freeze
9
9
  SERVICE_NAME = 'rake'.freeze
10
10
  SPAN_INVOKE = 'rake.invoke'.freeze
@@ -7,6 +7,14 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the Redis integration
9
9
  class Settings < Contrib::Configuration::Settings
10
+ option :analytics_enabled,
11
+ default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
+ lazy: true
13
+
14
+ option :analytics_sample_rate,
15
+ default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
16
+ lazy: true
17
+
10
18
  option :service_name, default: Ext::SERVICE_NAME
11
19
  end
12
20
  end
@@ -4,15 +4,14 @@ module Datadog
4
4
  # Redis integration constants
5
5
  module Ext
6
6
  APP = 'redis'.freeze
7
- SERVICE_NAME = 'redis'.freeze
8
- TYPE = 'redis'.freeze
9
-
7
+ ENV_ANALYTICS_ENABLED = 'DD_REDIS_ANALYTICS_ENABLED'.freeze
8
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_REDIS_ANALYTICS_SAMPLE_RATE'.freeze
10
9
  METRIC_PIPELINE_LEN = 'redis.pipeline_length'.freeze
11
-
10
+ SERVICE_NAME = 'redis'.freeze
12
11
  SPAN_COMMAND = 'redis.command'.freeze
13
-
14
12
  TAG_DB = 'out.redis_db'.freeze
15
13
  TAG_RAW_COMMAND = 'redis.raw_command'.freeze
14
+ TYPE = 'redis'.freeze
16
15
  end
17
16
  end
18
17
  end
@@ -1,4 +1,5 @@
1
1
  require 'ddtrace/ext/net'
2
+ require 'ddtrace/contrib/analytics'
2
3
  require 'ddtrace/contrib/redis/ext'
3
4
 
4
5
  module Datadog
@@ -6,13 +7,30 @@ module Datadog
6
7
  module Redis
7
8
  # Tags handles generic common tags assignment.
8
9
  module Tags
9
- module_function
10
+ class << self
11
+ def set_common_tags(client, span)
12
+ # Set analytics sample rate
13
+ Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
10
14
 
11
- def set_common_tags(client, span)
12
- span.set_tag Datadog::Ext::NET::TARGET_HOST, client.host
13
- span.set_tag Datadog::Ext::NET::TARGET_PORT, client.port
14
- span.set_tag Ext::TAG_DB, client.db
15
- span.set_tag Ext::TAG_RAW_COMMAND, span.resource
15
+ span.set_tag Datadog::Ext::NET::TARGET_HOST, client.host
16
+ span.set_tag Datadog::Ext::NET::TARGET_PORT, client.port
17
+ span.set_tag Ext::TAG_DB, client.db
18
+ span.set_tag Ext::TAG_RAW_COMMAND, span.resource
19
+ end
20
+
21
+ private
22
+
23
+ def datadog_configuration
24
+ Datadog.configuration[:redis]
25
+ end
26
+
27
+ def analytics_enabled?
28
+ Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
29
+ end
30
+
31
+ def analytics_sample_rate
32
+ datadog_configuration[:analytics_sample_rate]
33
+ end
16
34
  end
17
35
  end
18
36
  end
@@ -1,4 +1,4 @@
1
- require 'ddtrace/registry'
1
+ require 'ddtrace/contrib/registry'
2
2
 
3
3
  module Datadog
4
4
  module Contrib
@@ -0,0 +1,42 @@
1
+ module Datadog
2
+ module Contrib
3
+ # Registry is a collection of integrations.
4
+ class Registry
5
+ include Enumerable
6
+
7
+ Entry = Struct.new(:name, :klass, :auto_patch)
8
+
9
+ def initialize
10
+ @data = {}
11
+ @mutex = Mutex.new
12
+ end
13
+
14
+ def add(name, klass, auto_patch = false)
15
+ @mutex.synchronize do
16
+ @data[name] = Entry.new(name, klass, auto_patch).freeze
17
+ end
18
+ end
19
+
20
+ def each
21
+ @mutex.synchronize do
22
+ @data.each { |_, entry| yield(entry) }
23
+ end
24
+ end
25
+
26
+ def [](name)
27
+ @mutex.synchronize do
28
+ entry = @data[name]
29
+ entry.klass if entry
30
+ end
31
+ end
32
+
33
+ def to_h
34
+ @mutex.synchronize do
35
+ @data.each_with_object({}) do |(_, entry), hash|
36
+ hash[entry.name] = entry.auto_patch
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -8,7 +8,7 @@ module Datadog
8
8
  # Custom settings for the Resque integration
9
9
  class Settings < Contrib::Configuration::Settings
10
10
  option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENALBED, nil) },
11
+ default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
12
  lazy: true
13
13
 
14
14
  option :analytics_sample_rate,
@@ -4,7 +4,7 @@ module Datadog
4
4
  # Resque integration constants
5
5
  module Ext
6
6
  APP = 'resque'.freeze
7
- ENV_ANALYTICS_ENALBED = 'DD_RESQUE_ANALYTICS_ENABLED'.freeze
7
+ ENV_ANALYTICS_ENABLED = 'DD_RESQUE_ANALYTICS_ENABLED'.freeze
8
8
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_RESQUE_ANALYTICS_SAMPLE_RATE'.freeze
9
9
  SERVICE_NAME = 'resque'.freeze
10
10
  SPAN_JOB = 'resque.job'.freeze
@@ -7,6 +7,14 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the RestClient integration
9
9
  class Settings < Contrib::Configuration::Settings
10
+ option :analytics_enabled,
11
+ default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
+ lazy: true
13
+
14
+ option :analytics_sample_rate,
15
+ default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
16
+ lazy: true
17
+
10
18
  option :distributed_tracing, default: true
11
19
  option :service_name, default: Ext::SERVICE_NAME, depends_on: [:tracer] do |value|
12
20
  get_option(:tracer).set_service_info(value, Ext::APP, Datadog::Ext::AppTypes::WEB)
@@ -4,8 +4,9 @@ module Datadog
4
4
  # RestClient integration constants
5
5
  module Ext
6
6
  APP = 'rest_client'.freeze
7
+ ENV_ANALYTICS_ENABLED = 'DD_REST_CLIENT_ANALYTICS_ENABLED'.freeze
8
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_REST_CLIENT_ANALYTICS_SAMPLE_RATE'.freeze
7
9
  SERVICE_NAME = 'rest_client'.freeze
8
-
9
10
  SPAN_REQUEST = 'rest_client.request'.freeze
10
11
  end
11
12
  end
@@ -47,6 +47,10 @@ module Datadog
47
47
 
48
48
  def datadog_tag_request(uri, span)
49
49
  span.resource = method.to_s.upcase
50
+
51
+ # Set analytics sample rate
52
+ Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
53
+
50
54
  span.set_tag(Datadog::Ext::HTTP::URL, uri.path)
51
55
  span.set_tag(Datadog::Ext::HTTP::METHOD, method.to_s.upcase)
52
56
  span.set_tag(Datadog::Ext::NET::TARGET_HOST, uri.host)
@@ -82,9 +86,19 @@ module Datadog
82
86
  span.finish
83
87
  end
84
88
 
89
+ private
90
+
85
91
  def datadog_configuration
86
92
  Datadog.configuration[:rest_client]
87
93
  end
94
+
95
+ def analytics_enabled?
96
+ Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
97
+ end
98
+
99
+ def analytics_sample_rate
100
+ datadog_configuration[:analytics_sample_rate]
101
+ end
88
102
  end
89
103
  end
90
104
  end
@@ -7,7 +7,13 @@ module Datadog
7
7
  module Configuration
8
8
  # Custom settings for the Sequel integration
9
9
  class Settings < Contrib::Configuration::Settings
10
- # Add any custom Sequel settings or behavior here.
10
+ option :analytics_enabled,
11
+ default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
+ lazy: true
13
+
14
+ option :analytics_sample_rate,
15
+ default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
16
+ lazy: true
11
17
  end
12
18
  end
13
19
  end
@@ -1,5 +1,6 @@
1
1
  require 'ddtrace/ext/sql'
2
2
  require 'ddtrace/ext/app_types'
3
+ require 'ddtrace/contrib/analytics'
3
4
  require 'ddtrace/contrib/sequel/ext'
4
5
  require 'ddtrace/contrib/sequel/utils'
5
6
 
@@ -23,6 +24,7 @@ module Datadog
23
24
  span.service = datadog_pin.service
24
25
  span.resource = opts[:query]
25
26
  span.span_type = Datadog::Ext::SQL::TYPE
27
+ Utils.set_analytics_sample_rate(span)
26
28
  span.set_tag(Ext::TAG_DB_VENDOR, adapter_name)
27
29
  response = super(sql, options)
28
30
  end
@@ -1,5 +1,6 @@
1
1
  require 'ddtrace/ext/sql'
2
2
  require 'ddtrace/ext/app_types'
3
+ require 'ddtrace/contrib/analytics'
3
4
  require 'ddtrace/contrib/sequel/ext'
4
5
  require 'ddtrace/contrib/sequel/utils'
5
6
 
@@ -44,6 +45,7 @@ module Datadog
44
45
  span.service = datadog_pin.service
45
46
  span.resource = opts[:query]
46
47
  span.span_type = Datadog::Ext::SQL::TYPE
48
+ Utils.set_analytics_sample_rate(span)
47
49
  span.set_tag(Ext::TAG_DB_VENDOR, adapter_name)
48
50
  response = super_method.call(sql, options, &block)
49
51
  end
@@ -4,10 +4,10 @@ module Datadog
4
4
  # Sequel integration constants
5
5
  module Ext
6
6
  APP = 'sequel'.freeze
7
+ ENV_ANALYTICS_ENABLED = 'DD_SEQUEL_ANALYTICS_ENABLED'.freeze
8
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_SEQUEL_ANALYTICS_SAMPLE_RATE'.freeze
7
9
  SERVICE_NAME = 'sequel'.freeze
8
-
9
10
  SPAN_QUERY = 'sequel.query'.freeze
10
-
11
11
  TAG_DB_VENDOR = 'sequel.db.vendor'.freeze
12
12
  end
13
13
  end
@@ -3,24 +3,42 @@ module Datadog
3
3
  module Sequel
4
4
  # General purpose functions for Sequel
5
5
  module Utils
6
- module_function
6
+ class << self
7
+ def adapter_name(database)
8
+ Datadog::Utils::Database.normalize_vendor(database.adapter_scheme.to_s)
9
+ end
7
10
 
8
- def adapter_name(database)
9
- Datadog::Utils::Database.normalize_vendor(database.adapter_scheme.to_s)
10
- end
11
+ def parse_opts(sql, opts, db_opts)
12
+ if ::Sequel::VERSION >= '4.37.0' && !sql.is_a?(String)
13
+ # In 4.37.0, sql was converted to a prepared statement object
14
+ sql = sql.prepared_sql unless sql.is_a?(Symbol)
15
+ end
16
+
17
+ {
18
+ name: opts[:type],
19
+ query: sql,
20
+ database: db_opts[:database],
21
+ host: db_opts[:host]
22
+ }
23
+ end
24
+
25
+ def set_analytics_sample_rate(span)
26
+ Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
27
+ end
28
+
29
+ private
11
30
 
12
- def parse_opts(sql, opts, db_opts)
13
- if ::Sequel::VERSION >= '4.37.0' && !sql.is_a?(String)
14
- # In 4.37.0, sql was converted to a prepared statement object
15
- sql = sql.prepared_sql unless sql.is_a?(Symbol)
31
+ def datadog_configuration
32
+ Datadog.configuration[:sequel]
16
33
  end
17
34
 
18
- {
19
- name: opts[:type],
20
- query: sql,
21
- database: db_opts[:database],
22
- host: db_opts[:host]
23
- }
35
+ def analytics_enabled?
36
+ Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
37
+ end
38
+
39
+ def analytics_sample_rate
40
+ datadog_configuration[:analytics_sample_rate]
41
+ end
24
42
  end
25
43
  end
26
44
  end
@@ -7,7 +7,7 @@ module Datadog
7
7
  # Default settings for the Shoryuken integration
8
8
  class Settings < Contrib::Configuration::Settings
9
9
  option :analytics_enabled,
10
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENALBED, nil) },
10
+ default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
11
11
  lazy: true
12
12
 
13
13
  option :analytics_sample_rate,
@@ -4,7 +4,7 @@ module Datadog
4
4
  # Shoryuken integration constants
5
5
  module Ext
6
6
  APP = 'shoryuken'.freeze
7
- ENV_ANALYTICS_ENALBED = 'DD_SHORYUKEN_ANALYTICS_ENABLED'.freeze
7
+ ENV_ANALYTICS_ENABLED = 'DD_SHORYUKEN_ANALYTICS_ENABLED'.freeze
8
8
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_SHORYUKEN_ANALYTICS_SAMPLE_RATE'.freeze
9
9
  SERVICE_NAME = 'shoryuken'.freeze
10
10
  SPAN_JOB = 'shoryuken.job'.freeze
@@ -8,7 +8,7 @@ module Datadog
8
8
  # Custom settings for the Sidekiq integration
9
9
  class Settings < Contrib::Configuration::Settings
10
10
  option :analytics_enabled,
11
- default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENALBED, nil) },
11
+ default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) },
12
12
  lazy: true
13
13
 
14
14
  option :analytics_sample_rate,
@@ -5,7 +5,7 @@ module Datadog
5
5
  module Ext
6
6
  APP = 'sidekiq'.freeze
7
7
  CLIENT_SERVICE_NAME = 'sidekiq-client'.freeze
8
- ENV_ANALYTICS_ENALBED = 'DD_SIDEKIQ_ANALYTICS_ENABLED'.freeze
8
+ ENV_ANALYTICS_ENABLED = 'DD_SIDEKIQ_ANALYTICS_ENABLED'.freeze
9
9
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_SIDEKIQ_ANALYTICS_SAMPLE_RATE'.freeze
10
10
  SERVICE_NAME = 'sidekiq'.freeze
11
11
  SPAN_PUSH = 'sidekiq.push'.freeze
@@ -12,6 +12,14 @@ module Datadog
12
12
  response: %w[Content-Type X-Request-ID]
13
13
  }.freeze
14
14
 
15
+ option :analytics_enabled,
16
+ default: -> { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) },
17
+ lazy: true
18
+
19
+ option :analytics_sample_rate,
20
+ default: -> { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) },
21
+ lazy: true
22
+
15
23
  option :distributed_tracing, default: true
16
24
  option :headers, default: DEFAULT_HEADERS
17
25
  option :resource_script_names, default: false
@@ -4,13 +4,12 @@ module Datadog
4
4
  # Sinatra integration constants
5
5
  module Ext
6
6
  APP = 'sinatra'.freeze
7
- SERVICE_NAME = 'sinatra'.freeze
8
-
7
+ ENV_ANALYTICS_ENABLED = 'DD_SINATRA_ANALYTICS_ENABLED'.freeze
8
+ ENV_ANALYTICS_SAMPLE_RATE = 'DD_SINATRA_ANALYTICS_SAMPLE_RATE'.freeze
9
9
  RACK_ENV_REQUEST_SPAN = 'datadog.sinatra_request_span'.freeze
10
-
10
+ SERVICE_NAME = 'sinatra'.freeze
11
11
  SPAN_RENDER_TEMPLATE = 'sinatra.render_template'.freeze
12
12
  SPAN_REQUEST = 'sinatra.request'.freeze
13
-
14
13
  TAG_ROUTE_PATH = 'sinatra.route.path'.freeze
15
14
  TAG_TEMPLATE_NAME = 'sinatra.template_name'.freeze
16
15
  end