ddtrace 0.28.0 → 0.29.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/.circleci/config.yml +8 -0
- data/Appraisals +57 -2
- data/CHANGELOG.md +41 -12
- data/Rakefile +3 -3
- data/ddtrace.gemspec +2 -1
- data/docs/DevelopmentGuide.md +1 -1
- data/docs/GettingStarted.md +6 -6
- data/lib/ddtrace.rb +7 -0
- data/lib/ddtrace/buffer.rb +60 -1
- data/lib/ddtrace/configuration/base.rb +82 -0
- data/lib/ddtrace/configuration/option.rb +28 -5
- data/lib/ddtrace/configuration/option_definition.rb +100 -0
- data/lib/ddtrace/configuration/options.rb +28 -14
- data/lib/ddtrace/configuration/settings.rb +77 -64
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +9 -7
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +8 -14
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +1 -1
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +11 -16
- data/lib/ddtrace/contrib/active_record/event.rb +1 -1
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +2 -2
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +4 -1
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/configuration/settings.rb +5 -11
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +1 -18
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/ethon/integration.rb +0 -4
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +9 -7
- data/lib/ddtrace/contrib/excon/middleware.rb +1 -1
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/faraday/middleware.rb +1 -1
- data/lib/ddtrace/contrib/faraday/patcher.rb +8 -2
- data/lib/ddtrace/contrib/faraday/rack_builder.rb +18 -0
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/grape/instrumentation.rb +2 -42
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/grpc/integration.rb +1 -3
- data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/http/instrumentation.rb +1 -23
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -23
- data/lib/ddtrace/contrib/patchable.rb +1 -1
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +8 -14
- data/lib/ddtrace/contrib/racecar/event.rb +1 -1
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/rack/request_queue.rb +7 -6
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +30 -21
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/rake/integration.rb +0 -4
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/rest_client/integration.rb +0 -4
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -18
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/sequel/integration.rb +0 -4
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +8 -6
- data/lib/ddtrace/diagnostics/health.rb +30 -0
- data/lib/ddtrace/distributed_tracing/headers/datadog.rb +1 -1
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +2 -0
- data/lib/ddtrace/ext/diagnostics.rb +25 -0
- data/lib/ddtrace/ext/runtime.rb +1 -7
- data/lib/ddtrace/metrics.rb +89 -6
- data/lib/ddtrace/propagation/http_propagator.rb +2 -2
- data/lib/ddtrace/runtime/class_count.rb +3 -3
- data/lib/ddtrace/runtime/object_space.rb +19 -0
- data/lib/ddtrace/span.rb +1 -1
- data/lib/ddtrace/tracer.rb +5 -4
- data/lib/ddtrace/transport/http/client.rb +3 -4
- data/lib/ddtrace/transport/http/response.rb +4 -0
- data/lib/ddtrace/transport/http/statistics.rb +30 -0
- data/lib/ddtrace/transport/statistics.rb +28 -0
- data/lib/ddtrace/version.rb +3 -1
- data/lib/ddtrace/workers.rb +4 -2
- data/lib/ddtrace/writer.rb +3 -3
- metadata +74 -54
|
@@ -1,68 +1,97 @@
|
|
|
1
|
+
require 'ddtrace/configuration/base'
|
|
2
|
+
|
|
1
3
|
require 'ddtrace/ext/analytics'
|
|
2
4
|
require 'ddtrace/ext/distributed'
|
|
3
5
|
require 'ddtrace/ext/runtime'
|
|
4
|
-
require 'ddtrace/configuration/options'
|
|
5
6
|
|
|
6
|
-
require 'ddtrace/environment'
|
|
7
7
|
require 'ddtrace/tracer'
|
|
8
8
|
require 'ddtrace/metrics'
|
|
9
|
+
require 'ddtrace/diagnostics/health'
|
|
9
10
|
|
|
10
11
|
module Datadog
|
|
11
12
|
module Configuration
|
|
12
13
|
# Global configuration settings for the trace library.
|
|
13
14
|
class Settings
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
lazy: true
|
|
28
|
-
|
|
29
|
-
# Look for all headers by default
|
|
30
|
-
option :propagation_extract_style,
|
|
31
|
-
default: lambda {
|
|
32
|
-
env_to_list(Ext::DistributedTracing::PROPAGATION_EXTRACT_STYLE_ENV,
|
|
33
|
-
[Ext::DistributedTracing::PROPAGATION_STYLE_DATADOG,
|
|
34
|
-
Ext::DistributedTracing::PROPAGATION_STYLE_B3,
|
|
35
|
-
Ext::DistributedTracing::PROPAGATION_STYLE_B3_SINGLE_HEADER])
|
|
36
|
-
},
|
|
37
|
-
lazy: true
|
|
38
|
-
|
|
39
|
-
# Only inject Datadog headers by default
|
|
40
|
-
option :propagation_inject_style,
|
|
41
|
-
default: lambda {
|
|
42
|
-
env_to_list(Ext::DistributedTracing::PROPAGATION_INJECT_STYLE_ENV,
|
|
43
|
-
[Ext::DistributedTracing::PROPAGATION_STYLE_DATADOG])
|
|
44
|
-
},
|
|
45
|
-
lazy: true
|
|
46
|
-
|
|
47
|
-
option :tracer, default: Tracer.new
|
|
48
|
-
|
|
49
|
-
def initialize(options = {})
|
|
50
|
-
configure(options)
|
|
15
|
+
include Base
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
# Configuration options
|
|
19
|
+
#
|
|
20
|
+
option :analytics_enabled do |o|
|
|
21
|
+
o.default { env_to_bool(Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED, nil) }
|
|
22
|
+
o.lazy
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
option :report_hostname do |o|
|
|
26
|
+
o.default { env_to_bool(Ext::NET::ENV_REPORT_HOSTNAME, false) }
|
|
27
|
+
o.lazy
|
|
51
28
|
end
|
|
52
29
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
30
|
+
option :runtime_metrics_enabled do |o|
|
|
31
|
+
o.default { env_to_bool(Ext::Runtime::Metrics::ENV_ENABLED, false) }
|
|
32
|
+
o.lazy
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
settings :distributed_tracing do
|
|
36
|
+
option :propagation_extract_style do |o|
|
|
37
|
+
o.default do
|
|
38
|
+
# Look for all headers by default
|
|
39
|
+
env_to_list(Ext::DistributedTracing::PROPAGATION_EXTRACT_STYLE_ENV,
|
|
40
|
+
[Ext::DistributedTracing::PROPAGATION_STYLE_DATADOG,
|
|
41
|
+
Ext::DistributedTracing::PROPAGATION_STYLE_B3,
|
|
42
|
+
Ext::DistributedTracing::PROPAGATION_STYLE_B3_SINGLE_HEADER])
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
o.lazy
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
option :propagation_inject_style do |o|
|
|
49
|
+
o.default do
|
|
50
|
+
# Only inject Datadog headers by default
|
|
51
|
+
env_to_list(Ext::DistributedTracing::PROPAGATION_INJECT_STYLE_ENV,
|
|
52
|
+
[Ext::DistributedTracing::PROPAGATION_STYLE_DATADOG])
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
o.lazy
|
|
57
56
|
end
|
|
57
|
+
end
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
settings :diagnostics do
|
|
60
|
+
option :health_metrics do |o|
|
|
61
|
+
o.default do
|
|
62
|
+
Datadog::Diagnostics::Health::Metrics.new(
|
|
63
|
+
enabled: env_to_bool(Datadog::Ext::Diagnostics::Health::Metrics::ENV_ENABLED, false)
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
o.lazy
|
|
68
|
+
end
|
|
60
69
|
end
|
|
61
70
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
71
|
+
option :tracer do |o|
|
|
72
|
+
o.default Tracer.new
|
|
73
|
+
|
|
74
|
+
# On reset, shut down the old tracer,
|
|
75
|
+
# then instantiate a new one.
|
|
76
|
+
o.resetter do |tracer|
|
|
77
|
+
tracer.shutdown!
|
|
78
|
+
Tracer.new
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Backwards compatibility for configuring tracer e.g. `c.tracer debug: true`
|
|
82
|
+
o.helper :tracer do |options = nil|
|
|
83
|
+
tracer = options && options.key?(:instance) ? set_option(:tracer, options[:instance]) : get_option(:tracer)
|
|
84
|
+
|
|
85
|
+
tracer.tap do |t|
|
|
86
|
+
unless options.nil?
|
|
87
|
+
t.configure(options)
|
|
88
|
+
t.class.log = options[:log] if options[:log]
|
|
89
|
+
t.set_tags(options[:tags]) if options[:tags]
|
|
90
|
+
t.set_tags(env: options[:env]) if options[:env]
|
|
91
|
+
t.class.debug_logging = options.fetch(:debug, false)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
66
95
|
end
|
|
67
96
|
|
|
68
97
|
def runtime_metrics(options = nil)
|
|
@@ -71,22 +100,6 @@ module Datadog
|
|
|
71
100
|
|
|
72
101
|
runtime_metrics.configure(options)
|
|
73
102
|
end
|
|
74
|
-
|
|
75
|
-
# Backwards compatibility for configuring tracer e.g. `c.tracer debug: true`
|
|
76
|
-
remove_method :tracer
|
|
77
|
-
def tracer(options = nil)
|
|
78
|
-
tracer = options && options.key?(:instance) ? set_option(:tracer, options[:instance]) : get_option(:tracer)
|
|
79
|
-
|
|
80
|
-
tracer.tap do |t|
|
|
81
|
-
unless options.nil?
|
|
82
|
-
t.configure(options)
|
|
83
|
-
t.class.log = options[:log] if options[:log]
|
|
84
|
-
t.set_tags(options[:tags]) if options[:tags]
|
|
85
|
-
t.set_tags(env: options[:env]) if options[:env]
|
|
86
|
-
t.class.debug_logging = options.fetch(:debug, false)
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
103
|
end
|
|
91
104
|
end
|
|
92
105
|
end
|
|
@@ -7,16 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the ActionPack integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
-
option
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
option :analytics_enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, nil) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
13
14
|
|
|
14
|
-
option
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
option :analytics_sample_rate do |o|
|
|
16
|
+
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
17
|
+
o.lazy
|
|
18
|
+
end
|
|
17
19
|
|
|
18
20
|
option :controller_service
|
|
19
|
-
option :exception_controller
|
|
21
|
+
option :exception_controller
|
|
20
22
|
option :service_name, default: Ext::SERVICE_NAME
|
|
21
23
|
end
|
|
22
24
|
end
|
|
@@ -7,13 +7,15 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the ActionView integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
-
option
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
option :analytics_enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
13
14
|
|
|
14
|
-
option
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
option :analytics_sample_rate do |o|
|
|
16
|
+
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
17
|
+
o.lazy
|
|
18
|
+
end
|
|
17
19
|
|
|
18
20
|
option :service_name, default: Ext::SERVICE_NAME
|
|
19
21
|
option :template_base_path, default: 'views/'
|
|
@@ -7,23 +7,17 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the ActiveModelSerializers integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
-
option
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
option :analytics_enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
13
14
|
|
|
14
|
-
option
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
option :analytics_sample_rate do |o|
|
|
16
|
+
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
17
|
+
o.lazy
|
|
18
|
+
end
|
|
17
19
|
|
|
18
20
|
option :service_name, default: Ext::SERVICE_NAME
|
|
19
|
-
option :tracer, default: Datadog.tracer do |value|
|
|
20
|
-
(value || Datadog.tracer).tap do |v|
|
|
21
|
-
# Make sure to update tracers of all subscriptions
|
|
22
|
-
Events.subscriptions.each do |subscription|
|
|
23
|
-
subscription.tracer = v
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
21
|
end
|
|
28
22
|
end
|
|
29
23
|
end
|
|
@@ -8,25 +8,20 @@ module Datadog
|
|
|
8
8
|
module Configuration
|
|
9
9
|
# Custom settings for the ActiveRecord integration
|
|
10
10
|
class Settings < Contrib::Configuration::Settings
|
|
11
|
-
option
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
option :analytics_enabled do |o|
|
|
12
|
+
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
13
|
+
o.lazy
|
|
14
|
+
end
|
|
14
15
|
|
|
15
|
-
option
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
option :analytics_sample_rate do |o|
|
|
17
|
+
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
18
|
+
o.lazy
|
|
19
|
+
end
|
|
18
20
|
|
|
19
21
|
option :orm_service_name
|
|
20
|
-
option :service_name
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
option :tracer, default: Datadog.tracer do |value|
|
|
25
|
-
value.tap do
|
|
26
|
-
Events.subscriptions.each do |subscription|
|
|
27
|
-
subscription.tracer = value
|
|
28
|
-
end
|
|
29
|
-
end
|
|
22
|
+
option :service_name do |o|
|
|
23
|
+
o.default { Utils.adapter_name }
|
|
24
|
+
o.lazy
|
|
30
25
|
end
|
|
31
26
|
end
|
|
32
27
|
end
|
|
@@ -7,13 +7,15 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the ActiveSupport integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
-
option
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
option :analytics_enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
13
14
|
|
|
14
|
-
option
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
option :analytics_sample_rate do |o|
|
|
16
|
+
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
17
|
+
o.lazy
|
|
18
|
+
end
|
|
17
19
|
|
|
18
20
|
option :cache_service, default: Ext::SERVICE_CACHE
|
|
19
21
|
end
|
|
@@ -41,7 +41,7 @@ module Datadog
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
# Creates a subscription and immediately activates it.
|
|
44
|
-
def subscribe(pattern, span_name, options = {}, tracer = Datadog.tracer, &block)
|
|
44
|
+
def subscribe(pattern, span_name, options = {}, tracer = -> { Datadog.tracer }, &block)
|
|
45
45
|
subscription(span_name, options, tracer, &block).tap do |subscription|
|
|
46
46
|
subscription.subscribe(pattern)
|
|
47
47
|
end
|
|
@@ -49,7 +49,7 @@ module Datadog
|
|
|
49
49
|
|
|
50
50
|
# Creates a subscription without activating it.
|
|
51
51
|
# Subscription is added to the inheriting class' list of subscriptions.
|
|
52
|
-
def subscription(span_name, options = {}, tracer = Datadog.tracer, &block)
|
|
52
|
+
def subscription(span_name, options = {}, tracer = -> { Datadog.tracer }, &block)
|
|
53
53
|
Subscription.new(tracer, span_name, options, &block).tap do |subscription|
|
|
54
54
|
subscriptions << subscription
|
|
55
55
|
end
|
|
@@ -5,7 +5,6 @@ module Datadog
|
|
|
5
5
|
# An ActiveSupport::Notification subscription that wraps events with tracing.
|
|
6
6
|
class Subscription
|
|
7
7
|
attr_accessor \
|
|
8
|
-
:tracer,
|
|
9
8
|
:span_name,
|
|
10
9
|
:options
|
|
11
10
|
|
|
@@ -18,6 +17,10 @@ module Datadog
|
|
|
18
17
|
@callbacks = Callbacks.new
|
|
19
18
|
end
|
|
20
19
|
|
|
20
|
+
def tracer
|
|
21
|
+
@tracer.is_a?(Proc) ? @tracer.call : @tracer
|
|
22
|
+
end
|
|
23
|
+
|
|
21
24
|
# ActiveSupport 3.x calls this
|
|
22
25
|
def call(name, start, finish, id, payload)
|
|
23
26
|
start_span(name, id, payload, start)
|
|
@@ -7,13 +7,15 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the AWS integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
-
option
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
option :analytics_enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
13
14
|
|
|
14
|
-
option
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
option :analytics_sample_rate do |o|
|
|
16
|
+
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
17
|
+
o.lazy
|
|
18
|
+
end
|
|
17
19
|
|
|
18
20
|
option :service_name, default: Ext::SERVICE_NAME
|
|
19
21
|
end
|
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
require 'ddtrace/
|
|
2
|
-
require 'ddtrace/configuration/options'
|
|
1
|
+
require 'ddtrace/configuration/base'
|
|
3
2
|
|
|
4
3
|
module Datadog
|
|
5
4
|
module Contrib
|
|
6
5
|
module Configuration
|
|
7
6
|
# Common settings for all integrations
|
|
8
7
|
class Settings
|
|
9
|
-
|
|
10
|
-
include Datadog::Configuration::Options
|
|
8
|
+
include Datadog::Configuration::Base
|
|
11
9
|
|
|
12
|
-
option :service_name
|
|
13
|
-
option :tracer,
|
|
14
|
-
default: -> { Datadog.tracer },
|
|
15
|
-
lazy: true
|
|
16
10
|
option :analytics_enabled, default: false
|
|
17
11
|
option :analytics_sample_rate, default: 1.0
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
option :service_name
|
|
13
|
+
option :tracer do |o|
|
|
14
|
+
o.delegate_to { Datadog.tracer }
|
|
21
15
|
end
|
|
22
16
|
|
|
23
17
|
def configure(options = {})
|
|
@@ -7,13 +7,15 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the Dalli integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
-
option
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
option :analytics_enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
13
14
|
|
|
14
|
-
option
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
option :analytics_sample_rate do |o|
|
|
16
|
+
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
17
|
+
o.lazy
|
|
18
|
+
end
|
|
17
19
|
|
|
18
20
|
option :service_name, default: Ext::SERVICE_NAME
|
|
19
21
|
end
|
|
@@ -9,28 +9,11 @@ module Datadog
|
|
|
9
9
|
# Instruments every interaction with the memcached server
|
|
10
10
|
module Instrumentation
|
|
11
11
|
def self.included(base)
|
|
12
|
-
|
|
13
|
-
base.class_eval do
|
|
14
|
-
alias_method :request_without_datadog, :request
|
|
15
|
-
remove_method :request
|
|
16
|
-
include InstanceMethods
|
|
17
|
-
end
|
|
18
|
-
else
|
|
19
|
-
base.send(:prepend, InstanceMethods)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# Compatibility shim for Rubies not supporting `.prepend`
|
|
24
|
-
module InstanceMethodsCompatibility
|
|
25
|
-
def request(*args, &block)
|
|
26
|
-
request_without_datadog(*args, &block)
|
|
27
|
-
end
|
|
12
|
+
base.send(:prepend, InstanceMethods)
|
|
28
13
|
end
|
|
29
14
|
|
|
30
15
|
# InstanceMethods - implementing instrumentation
|
|
31
16
|
module InstanceMethods
|
|
32
|
-
include InstanceMethodsCompatibility unless Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0.0')
|
|
33
|
-
|
|
34
17
|
def request(op, *args)
|
|
35
18
|
tracer.trace(Datadog::Contrib::Dalli::Ext::SPAN_COMMAND) do |span|
|
|
36
19
|
span.resource = op.to_s.upcase
|