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,15 @@
|
|
|
1
|
+
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
require 'ddtrace/contrib/mysql2/ext'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module Mysql2
|
|
7
|
+
module Configuration
|
|
8
|
+
# Custom settings for the Mysql2 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,15 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Contrib
|
|
3
|
+
module Mysql2
|
|
4
|
+
# Mysql2 integration constants
|
|
5
|
+
module Ext
|
|
6
|
+
APP = 'mysql2'.freeze
|
|
7
|
+
SERVICE_NAME = 'mysql2'.freeze
|
|
8
|
+
|
|
9
|
+
SPAN_QUERY = 'mysql2.query'.freeze
|
|
10
|
+
|
|
11
|
+
TAG_DB_NAME = 'mysql2.db.name'.freeze
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/mysql2/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/mysql2/patcher'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Contrib
|
|
7
|
+
module Mysql2
|
|
8
|
+
# Description of Mysql2 integration
|
|
9
|
+
class Integration
|
|
10
|
+
include Contrib::Integration
|
|
11
|
+
|
|
12
|
+
register_as :mysql2
|
|
13
|
+
|
|
14
|
+
def self.version
|
|
15
|
+
Gem.loaded_specs['mysql2'] && Gem.loaded_specs['mysql2'].version
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.present?
|
|
19
|
+
super && defined?(::Mysql2)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def default_configuration
|
|
23
|
+
Configuration::Settings.new
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def patcher
|
|
27
|
+
Patcher
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -1,37 +1,27 @@
|
|
|
1
|
+
require 'ddtrace/contrib/patcher'
|
|
1
2
|
require 'ddtrace/contrib/mysql2/client'
|
|
2
3
|
|
|
3
4
|
module Datadog
|
|
4
5
|
module Contrib
|
|
5
6
|
module Mysql2
|
|
6
|
-
#
|
|
7
|
+
# Patcher enables patching of 'mysql2' module.
|
|
7
8
|
module Patcher
|
|
8
|
-
include
|
|
9
|
-
|
|
10
|
-
register_as :mysql2
|
|
11
|
-
option :service_name, default: 'mysql2'
|
|
12
|
-
option :tracer, default: Datadog.tracer
|
|
13
|
-
|
|
14
|
-
@patched = false
|
|
9
|
+
include Contrib::Patcher
|
|
15
10
|
|
|
16
11
|
module_function
|
|
17
12
|
|
|
18
|
-
def patch
|
|
19
|
-
return @patched if patched? || !compatible?
|
|
20
|
-
|
|
21
|
-
patch_mysql2_client
|
|
22
|
-
|
|
23
|
-
@patched = true
|
|
24
|
-
rescue StandardError => e
|
|
25
|
-
Tracer.log.error("Unable to apply mysql2 integration: #{e}")
|
|
26
|
-
@patched
|
|
27
|
-
end
|
|
28
|
-
|
|
29
13
|
def patched?
|
|
30
|
-
|
|
14
|
+
done?(:mysql2)
|
|
31
15
|
end
|
|
32
16
|
|
|
33
|
-
def
|
|
34
|
-
|
|
17
|
+
def patch
|
|
18
|
+
do_once(:mysql2) do
|
|
19
|
+
begin
|
|
20
|
+
patch_mysql2_client
|
|
21
|
+
rescue StandardError => e
|
|
22
|
+
Datadog::Tracer.log.error("Unable to apply mysql2 integration: #{e}")
|
|
23
|
+
end
|
|
24
|
+
end
|
|
35
25
|
end
|
|
36
26
|
|
|
37
27
|
def patch_mysql2_client
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
require 'ddtrace/contrib/racecar/ext'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module Racecar
|
|
7
|
+
module Configuration
|
|
8
|
+
# Custom settings for the Racecar integration
|
|
9
|
+
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :service_name, default: Ext::SERVICE_NAME
|
|
11
|
+
option :tracer, default: Datadog.tracer do |value|
|
|
12
|
+
(value || Datadog.tracer).tap do |v|
|
|
13
|
+
# Make sure to update tracers of all subscriptions
|
|
14
|
+
Events.subscriptions.each do |subscription|
|
|
15
|
+
subscription.tracer = v
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'ddtrace/contrib/active_support/notifications/event'
|
|
2
|
+
require 'ddtrace/contrib/racecar/ext'
|
|
2
3
|
|
|
3
4
|
module Datadog
|
|
4
5
|
module Contrib
|
|
@@ -35,12 +36,12 @@ module Datadog
|
|
|
35
36
|
span.service = configuration[:service_name]
|
|
36
37
|
span.resource = payload[:consumer_class]
|
|
37
38
|
|
|
38
|
-
span.set_tag(
|
|
39
|
-
span.set_tag(
|
|
40
|
-
span.set_tag(
|
|
41
|
-
span.set_tag(
|
|
42
|
-
span.set_tag(
|
|
43
|
-
span.set_tag(
|
|
39
|
+
span.set_tag(Ext::TAG_TOPIC, payload[:topic])
|
|
40
|
+
span.set_tag(Ext::TAG_CONSUMER, payload[:consumer_class])
|
|
41
|
+
span.set_tag(Ext::TAG_PARTITION, payload[:partition])
|
|
42
|
+
span.set_tag(Ext::TAG_OFFSET, payload[:offset]) if payload.key?(:offset)
|
|
43
|
+
span.set_tag(Ext::TAG_FIRST_OFFSET, payload[:first_offset]) if payload.key?(:first_offset)
|
|
44
|
+
span.set_tag(Ext::TAG_MESSAGE_COUNT, payload[:message_count]) if payload.key?(:message_count)
|
|
44
45
|
span.set_error(payload[:exception_object]) if payload[:exception_object]
|
|
45
46
|
end
|
|
46
47
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require 'ddtrace/contrib/racecar/ext'
|
|
1
2
|
require 'ddtrace/contrib/racecar/event'
|
|
2
3
|
|
|
3
4
|
module Datadog
|
|
@@ -9,7 +10,6 @@ module Datadog
|
|
|
9
10
|
include Racecar::Event
|
|
10
11
|
|
|
11
12
|
EVENT_NAME = 'process_batch.racecar'.freeze
|
|
12
|
-
SPAN_NAME = 'racecar.batch'.freeze
|
|
13
13
|
|
|
14
14
|
module_function
|
|
15
15
|
|
|
@@ -18,7 +18,7 @@ module Datadog
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def span_name
|
|
21
|
-
|
|
21
|
+
Ext::SPAN_BATCH
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require 'ddtrace/contrib/racecar/ext'
|
|
1
2
|
require 'ddtrace/contrib/racecar/event'
|
|
2
3
|
|
|
3
4
|
module Datadog
|
|
@@ -9,7 +10,6 @@ module Datadog
|
|
|
9
10
|
include Racecar::Event
|
|
10
11
|
|
|
11
12
|
EVENT_NAME = 'process_message.racecar'.freeze
|
|
12
|
-
SPAN_NAME = 'racecar.message'.freeze
|
|
13
13
|
|
|
14
14
|
module_function
|
|
15
15
|
|
|
@@ -18,7 +18,7 @@ module Datadog
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def span_name
|
|
21
|
-
|
|
21
|
+
Ext::SPAN_MESSAGE
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Contrib
|
|
3
|
+
module Racecar
|
|
4
|
+
# Racecar integration constants
|
|
5
|
+
module Ext
|
|
6
|
+
APP = 'racecar'.freeze
|
|
7
|
+
SERVICE_NAME = 'racecar'.freeze
|
|
8
|
+
|
|
9
|
+
SPAN_BATCH = 'racecar.batch'.freeze
|
|
10
|
+
SPAN_MESSAGE = 'racecar.message'.freeze
|
|
11
|
+
|
|
12
|
+
TAG_CONSUMER = 'kafka.consumer'.freeze
|
|
13
|
+
TAG_FIRST_OFFSET = 'kafka.first_offset'.freeze
|
|
14
|
+
TAG_MESSAGE_COUNT = 'kafka.message_count'.freeze
|
|
15
|
+
TAG_OFFSET = 'kafka.offset'.freeze
|
|
16
|
+
TAG_PARTITION = 'kafka.partition'.freeze
|
|
17
|
+
TAG_TOPIC = 'kafka.topic'.freeze
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/racecar/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/racecar/patcher'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Contrib
|
|
7
|
+
module Racecar
|
|
8
|
+
# Description of Racecar integration
|
|
9
|
+
class Integration
|
|
10
|
+
include Contrib::Integration
|
|
11
|
+
|
|
12
|
+
register_as :racecar, auto_patch: false
|
|
13
|
+
|
|
14
|
+
def self.version
|
|
15
|
+
Gem.loaded_specs['racecar'] && Gem.loaded_specs['racecar'].version
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.present?
|
|
19
|
+
super && defined?(::Racecar)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.compatible?
|
|
23
|
+
super && defined?(::ActiveSupport::Notifications)
|
|
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,54 +1,37 @@
|
|
|
1
|
+
require 'ddtrace/contrib/patcher'
|
|
1
2
|
require 'ddtrace/ext/app_types'
|
|
3
|
+
require 'ddtrace/contrib/racecar/ext'
|
|
2
4
|
require 'ddtrace/contrib/racecar/events'
|
|
3
5
|
|
|
4
6
|
module Datadog
|
|
5
7
|
module Contrib
|
|
6
8
|
module Racecar
|
|
7
|
-
#
|
|
9
|
+
# Patcher enables patching of 'racecar' module.
|
|
8
10
|
module Patcher
|
|
9
|
-
include
|
|
11
|
+
include Contrib::Patcher
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
option :service_name, default: 'racecar'
|
|
13
|
-
option :tracer, default: Datadog.tracer do |value|
|
|
14
|
-
(value || Datadog.tracer).tap do |v|
|
|
15
|
-
# Make sure to update tracers of all subscriptions
|
|
16
|
-
Events.subscriptions.each do |subscription|
|
|
17
|
-
subscription.tracer = v
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
class << self
|
|
23
|
-
def patch
|
|
24
|
-
return patched? if patched? || !compatible?
|
|
25
|
-
|
|
26
|
-
# Subscribe to Racecar events
|
|
27
|
-
Events.subscribe!
|
|
28
|
-
|
|
29
|
-
# Set service info
|
|
30
|
-
configuration[:tracer].set_service_info(
|
|
31
|
-
configuration[:service_name],
|
|
32
|
-
'racecar',
|
|
33
|
-
Ext::AppTypes::WORKER
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
@patched = true
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def patched?
|
|
40
|
-
return @patched if defined?(@patched)
|
|
41
|
-
@patched = false
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
private
|
|
13
|
+
module_function
|
|
45
14
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
15
|
+
def patched?
|
|
16
|
+
done?(:racecar)
|
|
17
|
+
end
|
|
49
18
|
|
|
50
|
-
|
|
51
|
-
|
|
19
|
+
def patch
|
|
20
|
+
do_once(:racecar) do
|
|
21
|
+
begin
|
|
22
|
+
# Subscribe to Racecar events
|
|
23
|
+
Events.subscribe!
|
|
24
|
+
|
|
25
|
+
# Set service info
|
|
26
|
+
configuration = Datadog.configuration[:racecar]
|
|
27
|
+
configuration[:tracer].set_service_info(
|
|
28
|
+
configuration[:service_name],
|
|
29
|
+
Ext::APP,
|
|
30
|
+
Datadog::Ext::AppTypes::WORKER
|
|
31
|
+
)
|
|
32
|
+
rescue StandardError => e
|
|
33
|
+
Datadog::Tracer.log.error("Unable to apply Racecar integration: #{e}")
|
|
34
|
+
end
|
|
52
35
|
end
|
|
53
36
|
end
|
|
54
37
|
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
require 'ddtrace/contrib/rack/ext'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module Rack
|
|
7
|
+
module Configuration
|
|
8
|
+
# Custom settings for the Rack integration
|
|
9
|
+
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
DEFAULT_HEADERS = {
|
|
11
|
+
response: [
|
|
12
|
+
'Content-Type',
|
|
13
|
+
'X-Request-ID'
|
|
14
|
+
]
|
|
15
|
+
}.freeze
|
|
16
|
+
|
|
17
|
+
option :application
|
|
18
|
+
option :distributed_tracing, default: false
|
|
19
|
+
option :headers, default: DEFAULT_HEADERS
|
|
20
|
+
option :middleware_names, default: false
|
|
21
|
+
option :quantize, default: {}
|
|
22
|
+
option :request_queuing, default: false
|
|
23
|
+
|
|
24
|
+
option :service_name, default: Ext::SERVICE_NAME, depends_on: [:tracer] do |value|
|
|
25
|
+
get_option(:tracer).set_service_info(value, Ext::APP, Datadog::Ext::AppTypes::WEB)
|
|
26
|
+
value
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
option :web_service_name, default: Ext::WEBSERVER_SERVICE_NAME, depends_on: [:tracer, :request_queuing] do |value|
|
|
30
|
+
if get_option(:request_queuing)
|
|
31
|
+
get_option(:tracer).set_service_info(value, Ext::WEBSERVER_APP, Datadog::Ext::AppTypes::WEB)
|
|
32
|
+
end
|
|
33
|
+
value
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Contrib
|
|
3
|
+
module Rack
|
|
4
|
+
# Rack integration constants
|
|
5
|
+
module Ext
|
|
6
|
+
APP = 'rack'.freeze
|
|
7
|
+
SERVICE_NAME = 'rack'.freeze
|
|
8
|
+
WEBSERVER_APP = 'webserver'.freeze
|
|
9
|
+
WEBSERVER_SERVICE_NAME = 'web-server'.freeze
|
|
10
|
+
|
|
11
|
+
RACK_ENV_REQUEST_SPAN = 'datadog.rack_request_span'.freeze
|
|
12
|
+
|
|
13
|
+
SPAN_HTTP_SERVER_QUEUE = 'http_server.queue'.freeze
|
|
14
|
+
SPAN_REQUEST = 'rack.request'.freeze
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/rack/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/rack/patcher'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Contrib
|
|
7
|
+
module Rack
|
|
8
|
+
# Description of Rack integration
|
|
9
|
+
class Integration
|
|
10
|
+
include Contrib::Integration
|
|
11
|
+
|
|
12
|
+
register_as :rack, auto_patch: false
|
|
13
|
+
|
|
14
|
+
def self.version
|
|
15
|
+
Gem.loaded_specs['rack'] && Gem.loaded_specs['rack'].version
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.present?
|
|
19
|
+
super && defined?(::Rack)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def default_configuration
|
|
23
|
+
Configuration::Settings.new
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def patcher
|
|
27
|
+
Patcher
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|