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
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'ddtrace/contrib/aws/ext'
|
|
2
|
+
|
|
1
3
|
module Datadog
|
|
2
4
|
module Contrib
|
|
3
5
|
module Aws
|
|
@@ -15,7 +17,7 @@ module Datadog
|
|
|
15
17
|
|
|
16
18
|
return @handler.call(context) unless pin && pin.enabled?
|
|
17
19
|
|
|
18
|
-
pin.tracer.trace(
|
|
20
|
+
pin.tracer.trace(Ext::SPAN_COMMAND) do |span|
|
|
19
21
|
result = @handler.call(context)
|
|
20
22
|
annotate!(span, pin, ParsedContext.new(context))
|
|
21
23
|
result
|
|
@@ -27,15 +29,15 @@ module Datadog
|
|
|
27
29
|
def annotate!(span, pin, context)
|
|
28
30
|
span.service = pin.service
|
|
29
31
|
span.span_type = pin.app_type
|
|
30
|
-
span.name =
|
|
32
|
+
span.name = Ext::SPAN_COMMAND
|
|
31
33
|
span.resource = context.safely(:resource)
|
|
32
|
-
span.set_tag(
|
|
33
|
-
span.set_tag(
|
|
34
|
-
span.set_tag(
|
|
35
|
-
span.set_tag(
|
|
36
|
-
span.set_tag(
|
|
37
|
-
span.set_tag(Ext::HTTP::METHOD, context.safely(:http_method))
|
|
38
|
-
span.set_tag(Ext::HTTP::STATUS_CODE, context.safely(:status_code))
|
|
34
|
+
span.set_tag(Ext::TAG_AGENT, Ext::TAG_DEFAULT_AGENT)
|
|
35
|
+
span.set_tag(Ext::TAG_OPERATION, context.safely(:operation))
|
|
36
|
+
span.set_tag(Ext::TAG_REGION, context.safely(:region))
|
|
37
|
+
span.set_tag(Ext::TAG_PATH, context.safely(:path))
|
|
38
|
+
span.set_tag(Ext::TAG_HOST, context.safely(:host))
|
|
39
|
+
span.set_tag(Datadog::Ext::HTTP::METHOD, context.safely(:http_method))
|
|
40
|
+
span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, context.safely(:status_code))
|
|
39
41
|
end
|
|
40
42
|
end
|
|
41
43
|
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/aws/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/aws/patcher'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Contrib
|
|
7
|
+
module Aws
|
|
8
|
+
# Description of AWS integration
|
|
9
|
+
class Integration
|
|
10
|
+
include Contrib::Integration
|
|
11
|
+
|
|
12
|
+
register_as :aws, auto_patch: true
|
|
13
|
+
|
|
14
|
+
def self.version
|
|
15
|
+
Gem.loaded_specs['aws-sdk'] && Gem.loaded_specs['aws-sdk'].version
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.present?
|
|
19
|
+
super && defined?(::Seahorse::Client::Base)
|
|
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,57 +1,58 @@
|
|
|
1
|
+
require 'ddtrace/contrib/patcher'
|
|
2
|
+
require 'ddtrace/ext/app_types'
|
|
3
|
+
require 'ddtrace/contrib/aws/ext'
|
|
4
|
+
|
|
1
5
|
module Datadog
|
|
2
6
|
module Contrib
|
|
3
7
|
module Aws
|
|
4
|
-
|
|
5
|
-
RESOURCE = 'aws.command'.freeze
|
|
6
|
-
|
|
7
|
-
# Responsible for hooking the instrumentation into aws-sdk
|
|
8
|
+
# Patcher enables patching of 'aws' module.
|
|
8
9
|
module Patcher
|
|
9
|
-
include
|
|
10
|
-
register_as :aws, auto_patch: true
|
|
11
|
-
option :service_name, default: 'aws'
|
|
12
|
-
|
|
13
|
-
@patched = false
|
|
14
|
-
|
|
15
|
-
class << self
|
|
16
|
-
def patch
|
|
17
|
-
return @patched if patched? || !defined?(Seahorse::Client::Base)
|
|
10
|
+
include Contrib::Patcher
|
|
18
11
|
|
|
19
|
-
|
|
20
|
-
require 'ddtrace/contrib/aws/parsed_context'
|
|
21
|
-
require 'ddtrace/contrib/aws/instrumentation'
|
|
22
|
-
require 'ddtrace/contrib/aws/services'
|
|
12
|
+
module_function
|
|
23
13
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
@patched = true
|
|
28
|
-
rescue => e
|
|
29
|
-
Datadog::Tracer.log.error("Unable to apply AWS integration: #{e}")
|
|
30
|
-
@patched
|
|
31
|
-
end
|
|
14
|
+
def patched?
|
|
15
|
+
done?(:aws)
|
|
16
|
+
end
|
|
32
17
|
|
|
33
|
-
|
|
34
|
-
|
|
18
|
+
def patch
|
|
19
|
+
do_once(:aws) do
|
|
20
|
+
begin
|
|
21
|
+
require 'ddtrace/contrib/aws/parsed_context'
|
|
22
|
+
require 'ddtrace/contrib/aws/instrumentation'
|
|
23
|
+
require 'ddtrace/contrib/aws/services'
|
|
24
|
+
|
|
25
|
+
add_pin
|
|
26
|
+
add_plugin(Seahorse::Client::Base, *loaded_constants)
|
|
27
|
+
rescue StandardError => e
|
|
28
|
+
Datadog::Tracer.log.error("Unable to apply AWS integration: #{e}")
|
|
29
|
+
end
|
|
35
30
|
end
|
|
31
|
+
end
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
def add_pin
|
|
34
|
+
Pin
|
|
35
|
+
.new(
|
|
36
|
+
get_option(:service_name),
|
|
37
|
+
app: Ext::APP,
|
|
38
|
+
app_type: Datadog::Ext::AppTypes::WEB,
|
|
39
|
+
tracer: get_option(:tracer)
|
|
40
|
+
).onto(::Aws)
|
|
41
|
+
end
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
.onto(::Aws)
|
|
43
|
-
end
|
|
43
|
+
def add_plugin(*targets)
|
|
44
|
+
targets.each { |klass| klass.add_plugin(Instrumentation) }
|
|
45
|
+
end
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
def loaded_constants
|
|
48
|
+
SERVICES.each_with_object([]) do |service, constants|
|
|
49
|
+
next if ::Aws.autoload?(service)
|
|
50
|
+
constants << ::Aws.const_get(service).const_get(:Client) rescue next
|
|
47
51
|
end
|
|
52
|
+
end
|
|
48
53
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
next if ::Aws.autoload?(service)
|
|
52
|
-
constants << ::Aws.const_get(service).const_get(:Client) rescue next
|
|
53
|
-
end
|
|
54
|
-
end
|
|
54
|
+
def get_option(option)
|
|
55
|
+
Datadog.configuration[:aws].get_option(option)
|
|
55
56
|
end
|
|
56
57
|
end
|
|
57
58
|
end
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
require 'ddtrace/contrib/concurrent_ruby/ext'
|
|
2
3
|
|
|
3
4
|
module Datadog
|
|
4
5
|
module Contrib
|
|
5
6
|
module ConcurrentRuby
|
|
6
7
|
module Configuration
|
|
8
|
+
# Custom settings for the ConcurrentRuby integration
|
|
7
9
|
class Settings < Contrib::Configuration::Settings
|
|
8
|
-
|
|
10
|
+
option :service_name, default: Ext::SERVICE_NAME
|
|
9
11
|
end
|
|
10
12
|
end
|
|
11
13
|
end
|
|
@@ -5,14 +5,18 @@ require 'ddtrace/contrib/concurrent_ruby/configuration/settings'
|
|
|
5
5
|
module Datadog
|
|
6
6
|
module Contrib
|
|
7
7
|
module ConcurrentRuby
|
|
8
|
-
#
|
|
8
|
+
# Describes the ConcurrentRuby integration
|
|
9
9
|
class Integration
|
|
10
10
|
include Contrib::Integration
|
|
11
11
|
|
|
12
12
|
register_as :concurrent_ruby
|
|
13
13
|
|
|
14
|
-
def self.
|
|
15
|
-
|
|
14
|
+
def self.version
|
|
15
|
+
Gem.loaded_specs['concurrent-ruby'] && Gem.loaded_specs['concurrent-ruby'].version
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.present?
|
|
19
|
+
super && defined?(::Concurrent::Future)
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
def default_configuration
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
require 'ddtrace/contrib/dalli/ext'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module Dalli
|
|
7
|
+
module Configuration
|
|
8
|
+
# Custom settings for the Dalli 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 Dalli
|
|
4
|
+
# Dalli integration constants
|
|
5
|
+
module Ext
|
|
6
|
+
APP = 'dalli'.freeze
|
|
7
|
+
SERVICE_NAME = 'memcached'.freeze
|
|
8
|
+
|
|
9
|
+
QUANTIZE_MAX_CMD_LENGTH = 100
|
|
10
|
+
SPAN_COMMAND = 'memcached.command'.freeze
|
|
11
|
+
TAG_COMMAND = 'memcached.command'.freeze
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require_relative 'quantize'
|
|
2
1
|
require 'ddtrace/ext/net'
|
|
2
|
+
require 'ddtrace/contrib/dalli/quantize'
|
|
3
3
|
|
|
4
4
|
module Datadog
|
|
5
5
|
module Contrib
|
|
@@ -15,14 +15,14 @@ module Datadog
|
|
|
15
15
|
def request(op, *args)
|
|
16
16
|
pin = Datadog::Pin.get_from(::Dalli)
|
|
17
17
|
|
|
18
|
-
pin.tracer.trace(Datadog::Contrib::Dalli::
|
|
18
|
+
pin.tracer.trace(Datadog::Contrib::Dalli::Ext::SPAN_COMMAND) do |span|
|
|
19
19
|
span.resource = op.to_s.upcase
|
|
20
20
|
span.service = pin.service
|
|
21
21
|
span.span_type = pin.app_type
|
|
22
22
|
span.set_tag(Datadog::Ext::NET::TARGET_HOST, hostname)
|
|
23
23
|
span.set_tag(Datadog::Ext::NET::TARGET_PORT, port)
|
|
24
24
|
cmd = Datadog::Contrib::Dalli::Quantize.format_command(op, args)
|
|
25
|
-
span.set_tag(Datadog::Contrib::Dalli::
|
|
25
|
+
span.set_tag(Datadog::Contrib::Dalli::Ext::TAG_COMMAND, cmd)
|
|
26
26
|
|
|
27
27
|
__request(op, *args)
|
|
28
28
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/dalli/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/dalli/patcher'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Contrib
|
|
7
|
+
module Dalli
|
|
8
|
+
# Description of Dalli integration
|
|
9
|
+
class Integration
|
|
10
|
+
include Contrib::Integration
|
|
11
|
+
|
|
12
|
+
register_as :dalli, auto_patch: true
|
|
13
|
+
|
|
14
|
+
def self.version
|
|
15
|
+
Gem.loaded_specs['dalli'] && Gem.loaded_specs['dalli'].version
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.present?
|
|
19
|
+
super && defined?(::Dalli)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.compatible?
|
|
23
|
+
super && version > Gem::Version.new('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,44 @@
|
|
|
1
|
+
require 'ddtrace/contrib/patcher'
|
|
2
|
+
require 'ddtrace/ext/app_types'
|
|
3
|
+
require 'ddtrace/contrib/dalli/ext'
|
|
4
|
+
require 'ddtrace/contrib/dalli/instrumentation'
|
|
5
|
+
|
|
1
6
|
module Datadog
|
|
2
7
|
module Contrib
|
|
3
8
|
module Dalli
|
|
4
|
-
|
|
5
|
-
NAME = 'memcached.command'.freeze
|
|
6
|
-
CMD_TAG = 'memcached.command'.freeze
|
|
7
|
-
|
|
8
|
-
# Responsible for hooking the instrumentation into `dalli`
|
|
9
|
+
# Patcher enables patching of 'dalli' module.
|
|
9
10
|
module Patcher
|
|
10
|
-
include
|
|
11
|
-
register_as :dalli, auto_patch: true
|
|
12
|
-
option :service_name, default: 'memcached'
|
|
13
|
-
|
|
14
|
-
@patched = false
|
|
15
|
-
|
|
16
|
-
class << self
|
|
17
|
-
def patch
|
|
18
|
-
return @patched if patched? || !compatible?
|
|
11
|
+
include Contrib::Patcher
|
|
19
12
|
|
|
20
|
-
|
|
21
|
-
require_relative 'instrumentation'
|
|
13
|
+
module_function
|
|
22
14
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
@patched = true
|
|
27
|
-
rescue => e
|
|
28
|
-
Tracer.log.error("Unable to apply Dalli integration: #{e}")
|
|
29
|
-
@patched
|
|
30
|
-
end
|
|
15
|
+
def patched?
|
|
16
|
+
done?(:dalli)
|
|
17
|
+
end
|
|
31
18
|
|
|
32
|
-
|
|
33
|
-
|
|
19
|
+
def patch
|
|
20
|
+
do_once(:dalli) do
|
|
21
|
+
begin
|
|
22
|
+
add_pin!
|
|
23
|
+
Instrumentation.patch!
|
|
24
|
+
rescue StandardError => e
|
|
25
|
+
Datadog::Tracer.log.error("Unable to apply Dalli integration: #{e}")
|
|
26
|
+
end
|
|
34
27
|
end
|
|
28
|
+
end
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
def add_pin!
|
|
31
|
+
Pin
|
|
32
|
+
.new(
|
|
33
|
+
get_option(:service_name),
|
|
34
|
+
app: Ext::APP,
|
|
35
|
+
app_type: Datadog::Ext::AppTypes::CACHE,
|
|
36
|
+
tracer: get_option(:tracer)
|
|
37
|
+
).onto(::Dalli)
|
|
38
|
+
end
|
|
43
39
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.new(get_option(:service_name), app: 'dalli', app_type: Ext::AppTypes::CACHE)
|
|
47
|
-
.onto(::Dalli)
|
|
48
|
-
end
|
|
40
|
+
def get_option(option)
|
|
41
|
+
Datadog.configuration[:dalli].get_option(option)
|
|
49
42
|
end
|
|
50
43
|
end
|
|
51
44
|
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
+
require 'ddtrace/contrib/dalli/ext'
|
|
2
|
+
|
|
1
3
|
module Datadog
|
|
2
4
|
module Contrib
|
|
3
5
|
module Dalli
|
|
4
6
|
# Quantize contains dalli-specic quantization tools.
|
|
5
7
|
module Quantize
|
|
6
|
-
MAX_CMD_LENGTH = 100
|
|
7
|
-
|
|
8
8
|
module_function
|
|
9
9
|
|
|
10
10
|
def format_command(operation, args)
|
|
11
11
|
placeholder = "#{operation} BLOB (OMITTED)"
|
|
12
12
|
command = [operation, *args].join(' ').strip
|
|
13
13
|
command = Utils.utf8_encode(command, binary: true, placeholder: placeholder)
|
|
14
|
-
Utils.truncate(command,
|
|
14
|
+
Utils.truncate(command, Ext::QUANTIZE_MAX_CMD_LENGTH)
|
|
15
15
|
rescue => e
|
|
16
16
|
Tracer.log.debug("Error sanitizing Dalli operation: #{e}")
|
|
17
17
|
placeholder
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
require 'ddtrace/contrib/delayed_job/ext'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module DelayedJob
|
|
7
|
+
module Configuration
|
|
8
|
+
# Custom settings for the DelayedJob 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
|