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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -3
- data/Rakefile +1 -1
- data/docs/GettingStarted.md +25 -7
- data/lib/ddtrace.rb +4 -31
- data/lib/ddtrace/configuration.rb +13 -46
- data/lib/ddtrace/configuration/{resolver.rb → dependency_resolver.rb} +2 -2
- data/lib/ddtrace/configuration/option.rb +32 -0
- data/lib/ddtrace/configuration/option_definition.rb +27 -0
- data/lib/ddtrace/configuration/option_definition_set.rb +18 -0
- data/lib/ddtrace/configuration/option_set.rb +6 -0
- data/lib/ddtrace/configuration/options.rb +93 -0
- data/lib/ddtrace/configuration/pin_setup.rb +1 -1
- data/lib/ddtrace/configuration/settings.rb +47 -0
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +6 -0
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +2 -2
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +7 -0
- data/lib/ddtrace/contrib/active_record/events/sql.rb +6 -0
- data/lib/ddtrace/contrib/active_record/ext.rb +2 -3
- data/lib/ddtrace/contrib/analytics.rb +3 -4
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/aws/ext.rb +5 -6
- data/lib/ddtrace/contrib/aws/instrumentation.rb +7 -0
- data/lib/ddtrace/contrib/configuration/settings.rb +4 -14
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/dalli/ext.rb +3 -2
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +7 -0
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/delayed_job/ext.rb +1 -1
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +2 -2
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +11 -1
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/excon/ext.rb +2 -1
- data/lib/ddtrace/contrib/excon/middleware.rb +15 -0
- data/lib/ddtrace/contrib/extensions.rb +62 -0
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/faraday/ext.rb +2 -1
- data/lib/ddtrace/contrib/faraday/middleware.rb +15 -0
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +19 -0
- data/lib/ddtrace/contrib/grape/ext.rb +2 -2
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/graphql/ext.rb +2 -0
- data/lib/ddtrace/contrib/graphql/patcher.rb +8 -2
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +9 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +4 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -0
- data/lib/ddtrace/contrib/grpc/ext.rb +2 -1
- data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/http/ext.rb +2 -1
- data/lib/ddtrace/contrib/http/instrumentation.rb +54 -19
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/mongodb/ext.rb +2 -2
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +18 -0
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/mysql2/ext.rb +2 -2
- data/lib/ddtrace/contrib/mysql2/{client.rb → instrumentation.rb} +32 -12
- data/lib/ddtrace/contrib/mysql2/patcher.rb +2 -2
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/racecar/ext.rb +1 -1
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/rack/ext.rb +1 -1
- data/lib/ddtrace/contrib/rails/action_controller.rb +3 -0
- data/lib/ddtrace/contrib/rails/active_support.rb +1 -0
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/rails/ext.rb +2 -5
- data/lib/ddtrace/contrib/rails/utils.rb +17 -1
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/rake/ext.rb +1 -1
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/redis/ext.rb +4 -5
- data/lib/ddtrace/contrib/redis/tags.rb +24 -6
- data/lib/ddtrace/contrib/registerable.rb +1 -1
- data/lib/ddtrace/contrib/registry.rb +42 -0
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/resque/ext.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/rest_client/ext.rb +2 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +14 -0
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -1
- data/lib/ddtrace/contrib/sequel/database.rb +2 -0
- data/lib/ddtrace/contrib/sequel/dataset.rb +2 -0
- data/lib/ddtrace/contrib/sequel/ext.rb +2 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +32 -14
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/shoryuken/ext.rb +1 -1
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/sidekiq/ext.rb +1 -1
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/sinatra/ext.rb +3 -4
- data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -0
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +12 -0
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +1 -1
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +1 -1
- data/lib/ddtrace/environment.rb +15 -0
- data/lib/ddtrace/ext/analytics.rb +1 -0
- data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
- data/lib/ddtrace/propagation/distributed_headers.rb +14 -4
- data/lib/ddtrace/span.rb +4 -0
- data/lib/ddtrace/tracer.rb +6 -1
- data/lib/ddtrace/version.rb +1 -1
- metadata +14 -15
- data/lib/ddtrace/configurable.rb +0 -83
- data/lib/ddtrace/configuration/proxy.rb +0 -25
- data/lib/ddtrace/contrib/base.rb +0 -16
- data/lib/ddtrace/contrib/configuration/option.rb +0 -33
- data/lib/ddtrace/contrib/configuration/option_definition.rb +0 -29
- data/lib/ddtrace/contrib/configuration/option_definition_set.rb +0 -20
- data/lib/ddtrace/contrib/configuration/option_set.rb +0 -8
- data/lib/ddtrace/contrib/configuration/options.rb +0 -95
- data/lib/ddtrace/registry.rb +0 -42
- 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 =
|
|
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::
|
|
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
|
-
|
|
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
|
-
|
|
8
|
-
|
|
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
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
@@ -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::
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6
|
+
class << self
|
|
7
|
+
def adapter_name(database)
|
|
8
|
+
Datadog::Utils::Database.normalize_vendor(database.adapter_scheme.to_s)
|
|
9
|
+
end
|
|
7
10
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
13
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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::
|
|
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
|
-
|
|
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::
|
|
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
|
-
|
|
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
|
-
|
|
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
|