ddtrace 0.37.0 → 0.42.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 +56 -0
- data/.gitignore +2 -0
- data/.gitlab-ci.yml +1 -0
- data/.simplecov +38 -0
- data/Appraisals +186 -11
- data/CHANGELOG.md +188 -1
- data/CONTRIBUTING.md +1 -1
- data/Rakefile +518 -482
- data/ddtrace.gemspec +3 -0
- data/docker-compose.yml +2 -2
- data/docs/DevelopmentGuide.md +26 -0
- data/docs/GettingStarted.md +188 -78
- data/lib/ddtrace.rb +4 -0
- data/lib/ddtrace/buffer.rb +259 -52
- data/lib/ddtrace/configuration.rb +39 -5
- data/lib/ddtrace/configuration/components.rb +4 -7
- data/lib/ddtrace/configuration/options.rb +3 -1
- data/lib/ddtrace/configuration/settings.rb +32 -4
- data/lib/ddtrace/context_provider.rb +6 -5
- data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_cable/ext.rb +5 -2
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_record/events/sql.rb +4 -0
- data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_support/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +3 -3
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/aws/ext.rb +5 -2
- data/lib/ddtrace/contrib/aws/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
- data/lib/ddtrace/contrib/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +8 -2
- data/lib/ddtrace/contrib/delayed_job/ext.rb +7 -2
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +37 -15
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +4 -0
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +4 -2
- data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +4 -0
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/excon/ext.rb +5 -2
- data/lib/ddtrace/contrib/excon/middleware.rb +4 -0
- data/lib/ddtrace/contrib/extensions.rb +11 -1
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
- data/lib/ddtrace/contrib/faraday/middleware.rb +9 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +12 -0
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -3
- data/lib/ddtrace/contrib/grape/endpoint.rb +6 -4
- data/lib/ddtrace/contrib/grape/ext.rb +5 -2
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +6 -4
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -0
- data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
- data/lib/ddtrace/contrib/http/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/http/ext.rb +5 -2
- data/lib/ddtrace/contrib/http/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +163 -0
- data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
- data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
- data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
- data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
- data/lib/ddtrace/contrib/kafka/event.rb +51 -0
- data/lib/ddtrace/contrib/kafka/events.rb +44 -0
- data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
- data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
- data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
- data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
- data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +4 -0
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/presto/ext.rb +5 -2
- data/lib/ddtrace/contrib/presto/instrumentation.rb +3 -0
- data/lib/ddtrace/contrib/que/configuration/settings.rb +42 -0
- data/lib/ddtrace/contrib/que/ext.rb +30 -0
- data/lib/ddtrace/contrib/que/integration.rb +42 -0
- data/lib/ddtrace/contrib/que/patcher.rb +24 -0
- data/lib/ddtrace/contrib/que/tracer.rb +56 -0
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/racecar/event.rb +4 -0
- data/lib/ddtrace/contrib/racecar/events.rb +2 -0
- data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
- data/lib/ddtrace/contrib/racecar/ext.rb +6 -2
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/rack/ext.rb +5 -2
- data/lib/ddtrace/contrib/rack/middlewares.rb +17 -12
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +12 -2
- data/lib/ddtrace/contrib/rails/ext.rb +6 -2
- data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
- data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
- data/lib/ddtrace/contrib/rails/patcher.rb +26 -0
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
- data/lib/ddtrace/contrib/rake/ext.rb +5 -2
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/redis/ext.rb +5 -2
- data/lib/ddtrace/contrib/redis/tags.rb +4 -0
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/resque/ext.rb +5 -2
- data/lib/ddtrace/contrib/resque/integration.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +6 -2
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sequel/database.rb +3 -1
- data/lib/ddtrace/contrib/sequel/dataset.rb +3 -2
- data/lib/ddtrace/contrib/sequel/ext.rb +6 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +35 -6
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sidekiq/ext.rb +6 -2
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +8 -1
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +1 -0
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sinatra/env.rb +5 -4
- data/lib/ddtrace/contrib/sinatra/ext.rb +5 -2
- data/lib/ddtrace/contrib/sinatra/tracer.rb +21 -42
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +50 -23
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
- data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
- data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
- data/lib/ddtrace/contrib/sneakers/tracer.rb +58 -0
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
- data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
- data/lib/ddtrace/environment.rb +17 -3
- data/lib/ddtrace/ext/diagnostics.rb +3 -0
- data/lib/ddtrace/ext/environment.rb +2 -0
- data/lib/ddtrace/ext/integration.rb +8 -0
- data/lib/ddtrace/ext/runtime.rb +1 -0
- data/lib/ddtrace/ext/transport.rb +1 -0
- data/lib/ddtrace/logger.rb +1 -1
- data/lib/ddtrace/opentracer/distributed_headers.rb +1 -1
- data/lib/ddtrace/pipeline/span_filter.rb +15 -15
- data/lib/ddtrace/propagation/grpc_propagator.rb +18 -6
- data/lib/ddtrace/runtime/metrics.rb +24 -6
- data/lib/ddtrace/sampler.rb +4 -2
- data/lib/ddtrace/span.rb +162 -27
- data/lib/ddtrace/tracer.rb +24 -18
- data/lib/ddtrace/transport/http.rb +15 -0
- data/lib/ddtrace/transport/http/adapters/net.rb +16 -2
- data/lib/ddtrace/transport/http/adapters/test.rb +6 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -0
- data/lib/ddtrace/transport/http/statistics.rb +14 -1
- data/lib/ddtrace/transport/response.rb +11 -0
- data/lib/ddtrace/transport/traces.rb +7 -2
- data/lib/ddtrace/utils.rb +7 -3
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/workers/async.rb +2 -2
- data/lib/ddtrace/workers/loop.rb +1 -1
- data/lib/ddtrace/workers/polling.rb +1 -1
- data/lib/ddtrace/workers/trace_writer.rb +3 -0
- data/lib/ddtrace/writer.rb +33 -12
- metadata +81 -2
|
@@ -7,17 +7,21 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the Rake integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|
|
20
|
-
option :enabled, default: true
|
|
21
25
|
option :quantize, default: {}
|
|
22
26
|
option :service_name, default: Ext::SERVICE_NAME
|
|
23
27
|
end
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# Rake integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'rake'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_RAKE_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAKE_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_RAKE_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAKE_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_RAKE_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'rake'.freeze
|
|
10
13
|
SPAN_INVOKE = 'rake.invoke'.freeze
|
|
11
14
|
SPAN_EXECUTE = 'rake.execute'.freeze
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the Redis integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# Redis integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'redis'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_REDIS_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_REDIS_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_REDIS_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_REDIS_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_REDIS_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
METRIC_PIPELINE_LEN = 'redis.pipeline_length'.freeze
|
|
10
13
|
SERVICE_NAME = 'redis'.freeze
|
|
11
14
|
SPAN_COMMAND = 'redis.command'.freeze
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require 'ddtrace/ext/integration'
|
|
1
2
|
require 'ddtrace/ext/net'
|
|
2
3
|
require 'ddtrace/contrib/analytics'
|
|
3
4
|
require 'ddtrace/contrib/redis/ext'
|
|
@@ -9,6 +10,9 @@ module Datadog
|
|
|
9
10
|
module Tags
|
|
10
11
|
class << self
|
|
11
12
|
def set_common_tags(client, span)
|
|
13
|
+
# Tag as an external peer service
|
|
14
|
+
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
15
|
+
|
|
12
16
|
# Set analytics sample rate
|
|
13
17
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
14
18
|
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the Resque integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# Resque integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'resque'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_RESQUE_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_RESQUE_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_RESQUE_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RESQUE_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_RESQUE_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'resque'.freeze
|
|
10
13
|
SPAN_JOB = 'resque.job'.freeze
|
|
11
14
|
end
|
|
@@ -11,7 +11,7 @@ module Datadog
|
|
|
11
11
|
|
|
12
12
|
MINIMUM_VERSION = Gem::Version.new('1.0')
|
|
13
13
|
# Maximum is first version it's NOT compatible with (not inclusive)
|
|
14
|
-
MAXIMUM_VERSION = Gem::Version.new('
|
|
14
|
+
MAXIMUM_VERSION = Gem::Version.new('3.0')
|
|
15
15
|
|
|
16
16
|
register_as :resque, auto_patch: true
|
|
17
17
|
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the RestClient integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# RestClient integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'rest_client'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_REST_CLIENT_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_REST_CLIENT_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_REST_CLIENT_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_REST_CLIENT_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_REST_CLIENT_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'rest_client'.freeze
|
|
10
13
|
SPAN_REQUEST = 'rest_client.request'.freeze
|
|
11
14
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'ddtrace/ext/net'
|
|
2
2
|
require 'ddtrace/ext/distributed'
|
|
3
|
+
require 'ddtrace/ext/integration'
|
|
3
4
|
require 'ddtrace/propagation/http_propagator'
|
|
4
5
|
require 'ddtrace/contrib/rest_client/ext'
|
|
5
6
|
|
|
@@ -31,6 +32,9 @@ module Datadog
|
|
|
31
32
|
def datadog_tag_request(uri, span)
|
|
32
33
|
span.resource = method.to_s.upcase
|
|
33
34
|
|
|
35
|
+
# Tag as an external peer service
|
|
36
|
+
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
37
|
+
|
|
34
38
|
# Set analytics sample rate
|
|
35
39
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
36
40
|
|
|
@@ -62,11 +66,11 @@ module Datadog
|
|
|
62
66
|
# rubocop:disable Lint/RescueException
|
|
63
67
|
rescue Exception => e
|
|
64
68
|
# rubocop:enable Lint/RescueException
|
|
65
|
-
span.set_error(e)
|
|
69
|
+
span.set_error(e) if span
|
|
66
70
|
|
|
67
71
|
raise e
|
|
68
72
|
ensure
|
|
69
|
-
span.finish
|
|
73
|
+
span.finish if span
|
|
70
74
|
end
|
|
71
75
|
|
|
72
76
|
private
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the Sequel integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
end
|
|
@@ -24,7 +24,7 @@ module Datadog
|
|
|
24
24
|
span.service = datadog_pin.service
|
|
25
25
|
span.resource = opts[:query]
|
|
26
26
|
span.span_type = Datadog::Ext::SQL::TYPE
|
|
27
|
-
Utils.
|
|
27
|
+
Utils.set_common_tags(span)
|
|
28
28
|
span.set_tag(Ext::TAG_DB_VENDOR, adapter_name)
|
|
29
29
|
response = super(sql, options)
|
|
30
30
|
end
|
|
@@ -52,6 +52,8 @@ module Datadog
|
|
|
52
52
|
elsif instance_variable_defined?(:@pool) && @pool
|
|
53
53
|
@pool.db.opts
|
|
54
54
|
end
|
|
55
|
+
sql = sql.is_a?(::Sequel::SQL::Expression) ? literal(sql) : sql.to_s
|
|
56
|
+
|
|
55
57
|
Utils.parse_opts(sql, opts, db_opts)
|
|
56
58
|
end
|
|
57
59
|
end
|
|
@@ -38,15 +38,16 @@ module Datadog
|
|
|
38
38
|
private
|
|
39
39
|
|
|
40
40
|
def trace_execute(super_method, sql, options, &block)
|
|
41
|
-
opts = Utils.parse_opts(sql, options, db.opts)
|
|
41
|
+
opts = Utils.parse_opts(sql, options, db.opts, self)
|
|
42
42
|
response = nil
|
|
43
43
|
|
|
44
44
|
datadog_pin.tracer.trace(Ext::SPAN_QUERY) do |span|
|
|
45
45
|
span.service = datadog_pin.service
|
|
46
46
|
span.resource = opts[:query]
|
|
47
47
|
span.span_type = Datadog::Ext::SQL::TYPE
|
|
48
|
-
Utils.
|
|
48
|
+
Utils.set_common_tags(span)
|
|
49
49
|
span.set_tag(Ext::TAG_DB_VENDOR, adapter_name)
|
|
50
|
+
span.set_tag(Ext::TAG_PREPARED_NAME, opts[:prepared_name]) if opts[:prepared_name]
|
|
50
51
|
response = super_method.call(sql, options, &block)
|
|
51
52
|
end
|
|
52
53
|
response
|
|
@@ -4,11 +4,15 @@ module Datadog
|
|
|
4
4
|
# Sequel integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'sequel'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_SEQUEL_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SEQUEL_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_SEQUEL_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SEQUEL_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_SEQUEL_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'sequel'.freeze
|
|
10
13
|
SPAN_QUERY = 'sequel.query'.freeze
|
|
11
14
|
TAG_DB_VENDOR = 'sequel.db.vendor'.freeze
|
|
15
|
+
TAG_PREPARED_NAME = 'sequel.prepared.name'.freeze
|
|
12
16
|
end
|
|
13
17
|
end
|
|
14
18
|
end
|
|
@@ -1,28 +1,57 @@
|
|
|
1
|
+
require 'ddtrace/ext/integration'
|
|
2
|
+
|
|
1
3
|
module Datadog
|
|
2
4
|
module Contrib
|
|
3
5
|
module Sequel
|
|
4
6
|
# General purpose functions for Sequel
|
|
5
7
|
module Utils
|
|
6
8
|
class << self
|
|
9
|
+
# Ruby database connector library
|
|
10
|
+
#
|
|
11
|
+
# e.g. adapter:mysql2 (database:mysql), adapter:jdbc (database:postgres)
|
|
7
12
|
def adapter_name(database)
|
|
8
|
-
|
|
13
|
+
scheme = database.adapter_scheme.to_s
|
|
14
|
+
|
|
15
|
+
if scheme == 'jdbc'.freeze
|
|
16
|
+
# The subtype is more important in this case,
|
|
17
|
+
# otherwise all database adapters will be 'jdbc'.
|
|
18
|
+
database_type(database)
|
|
19
|
+
else
|
|
20
|
+
Datadog::Utils::Database.normalize_vendor(scheme)
|
|
21
|
+
end
|
|
9
22
|
end
|
|
10
23
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
24
|
+
# Database engine
|
|
25
|
+
#
|
|
26
|
+
# e.g. database:mysql (adapter:mysql2), database:postgres (adapter:jdbc)
|
|
27
|
+
def database_type(database)
|
|
28
|
+
Datadog::Utils::Database.normalize_vendor(database.database_type.to_s)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def parse_opts(sql, opts, db_opts, dataset = nil)
|
|
32
|
+
# Prepared statements don't provide their sql query in the +sql+ parameter.
|
|
33
|
+
unless sql.is_a?(String)
|
|
34
|
+
if dataset && dataset.respond_to?(:prepared_sql) && (resolved_sql = dataset.prepared_sql)
|
|
35
|
+
# The dataset contains the resolved SQL query and prepared statement name.
|
|
36
|
+
prepared_name = dataset.prepared_statement_name
|
|
37
|
+
sql = resolved_sql
|
|
38
|
+
end
|
|
15
39
|
end
|
|
16
40
|
|
|
17
41
|
{
|
|
18
42
|
name: opts[:type],
|
|
19
43
|
query: sql,
|
|
44
|
+
prepared_name: prepared_name,
|
|
20
45
|
database: db_opts[:database],
|
|
21
46
|
host: db_opts[:host]
|
|
22
47
|
}
|
|
23
48
|
end
|
|
24
49
|
|
|
25
|
-
def
|
|
50
|
+
def set_common_tags(span)
|
|
51
|
+
# Tag as an external peer service
|
|
52
|
+
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
53
|
+
|
|
54
|
+
# Set analytics sample rate
|
|
26
55
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
27
56
|
end
|
|
28
57
|
|
|
@@ -6,13 +6,18 @@ module Datadog
|
|
|
6
6
|
module Configuration
|
|
7
7
|
# Default settings for the Shoryuken integration
|
|
8
8
|
class Settings < Contrib::Configuration::Settings
|
|
9
|
+
option :enabled do |o|
|
|
10
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
11
|
+
o.lazy
|
|
12
|
+
end
|
|
13
|
+
|
|
9
14
|
option :analytics_enabled do |o|
|
|
10
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
15
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
11
16
|
o.lazy
|
|
12
17
|
end
|
|
13
18
|
|
|
14
19
|
option :analytics_sample_rate do |o|
|
|
15
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
20
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
16
21
|
o.lazy
|
|
17
22
|
end
|
|
18
23
|
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# Shoryuken integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'shoryuken'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_SHORYUKEN_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SHORYUKEN_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_SHORYUKEN_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SHORYUKEN_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_SHORYUKEN_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'shoryuken'.freeze
|
|
10
13
|
SPAN_JOB = 'shoryuken.job'.freeze
|
|
11
14
|
TAG_JOB_ID = 'shoryuken.id'.freeze
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the Sidekiq integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -5,8 +5,11 @@ module Datadog
|
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'sidekiq'.freeze
|
|
7
7
|
CLIENT_SERVICE_NAME = 'sidekiq-client'.freeze
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
ENV_ENABLED = 'DD_TRACE_SIDEKIQ_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SIDEKIQ_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_SIDEKIQ_ANALYTICS_ENABLED'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SIDEKIQ_ANALYTICS_SAMPLE_RATE'.freeze
|
|
12
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_SIDEKIQ_ANALYTICS_SAMPLE_RATE'.freeze
|
|
10
13
|
ENV_TAG_JOB_ARGS = 'DD_SIDEKIQ_TAG_JOB_ARGS'.freeze
|
|
11
14
|
SERVICE_NAME = 'sidekiq'.freeze
|
|
12
15
|
SPAN_PUSH = 'sidekiq.push'.freeze
|
|
@@ -15,6 +18,7 @@ module Datadog
|
|
|
15
18
|
TAG_JOB_ID = 'sidekiq.job.id'.freeze
|
|
16
19
|
TAG_JOB_QUEUE = 'sidekiq.job.queue'.freeze
|
|
17
20
|
TAG_JOB_RETRY = 'sidekiq.job.retry'.freeze
|
|
21
|
+
TAG_JOB_RETRY_COUNT = 'sidekiq.job.retry_count'.freeze
|
|
18
22
|
TAG_JOB_WRAPPER = 'sidekiq.job.wrapper'.freeze
|
|
19
23
|
TAG_JOB_ARGS = 'sidekiq.job.args'.freeze
|
|
20
24
|
end
|
|
@@ -15,14 +15,21 @@ module Datadog
|
|
|
15
15
|
|
|
16
16
|
def patch
|
|
17
17
|
require 'ddtrace/contrib/sidekiq/client_tracer'
|
|
18
|
+
require 'ddtrace/contrib/sidekiq/server_tracer'
|
|
19
|
+
|
|
18
20
|
::Sidekiq.configure_client do |config|
|
|
19
21
|
config.client_middleware do |chain|
|
|
20
22
|
chain.add(Sidekiq::ClientTracer)
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
|
|
24
|
-
require 'ddtrace/contrib/sidekiq/server_tracer'
|
|
25
26
|
::Sidekiq.configure_server do |config|
|
|
27
|
+
# If a job enqueues another job, make sure it has the same client
|
|
28
|
+
# middleware.
|
|
29
|
+
config.client_middleware do |chain|
|
|
30
|
+
chain.add(Sidekiq::ClientTracer)
|
|
31
|
+
end
|
|
32
|
+
|
|
26
33
|
config.server_middleware do |chain|
|
|
27
34
|
chain.add(Sidekiq::ServerTracer)
|
|
28
35
|
end
|