ddtrace 1.19.0 → 1.20.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 +33 -1
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +38 -23
- data/ext/ddtrace_profiling_native_extension/collectors_discrete_dynamic_sampler.c +349 -0
- data/ext/ddtrace_profiling_native_extension/collectors_discrete_dynamic_sampler.h +89 -0
- data/ext/ddtrace_profiling_native_extension/extconf.rb +3 -0
- data/ext/ddtrace_profiling_native_extension/helpers.h +4 -0
- data/ext/ddtrace_profiling_native_extension/profiling.c +16 -0
- data/ext/ddtrace_profiling_native_extension/time_helpers.h +2 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +2 -1
- data/lib/datadog/core/configuration/settings.rb +22 -7
- data/lib/datadog/core/environment/class_count.rb +6 -6
- data/lib/datadog/core/remote/component.rb +25 -12
- data/lib/datadog/core/remote/ext.rb +1 -0
- data/lib/datadog/core/remote/tie/tracing.rb +39 -0
- data/lib/datadog/core/remote/tie.rb +27 -0
- data/lib/datadog/opentelemetry/sdk/propagator.rb +3 -2
- data/lib/datadog/opentelemetry.rb +3 -0
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +0 -2
- data/lib/datadog/profiling/component.rb +3 -17
- data/lib/datadog/tracing/configuration/ext.rb +0 -1
- data/lib/datadog/tracing/configuration/settings.rb +2 -1
- data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/analytics.rb +0 -1
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +7 -0
- data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +1 -1
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +2 -2
- data/lib/datadog/tracing/contrib/http/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/opensearch/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/pg/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/que/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +9 -2
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +2 -2
- data/lib/datadog/tracing/contrib/redis/patcher.rb +34 -21
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/resque/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/roda/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sneakers/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/stripe/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +58 -0
- data/lib/datadog/tracing/contrib/trilogy/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +94 -0
- data/lib/datadog/tracing/contrib/trilogy/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/trilogy/patcher.rb +31 -0
- data/lib/datadog/tracing/contrib.rb +1 -0
- data/lib/datadog/tracing.rb +8 -2
- data/lib/ddtrace/version.rb +1 -1
- metadata +14 -5
|
@@ -10,38 +10,48 @@ module Datadog
|
|
|
10
10
|
module Patcher
|
|
11
11
|
include Contrib::Patcher
|
|
12
12
|
|
|
13
|
-
# Patch for redis instance
|
|
14
|
-
module
|
|
13
|
+
# Patch for redis instance (with redis < 5)
|
|
14
|
+
module DatadogPinPatch
|
|
15
15
|
def self.included(base)
|
|
16
16
|
base.prepend(InstanceMethods)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
# Instance method patch for redis instance
|
|
20
20
|
module InstanceMethods
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
def datadog_pin=(pin)
|
|
22
|
+
pin.onto(datadog_target)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def datadog_target
|
|
26
|
+
# For `redis-rb` 4.x
|
|
27
|
+
return _client if respond_to?(:_client)
|
|
28
|
+
# For `redis-rb` 3.x
|
|
29
|
+
return client if respond_to?(:client)
|
|
30
|
+
|
|
31
|
+
Datadog.logger.warn 'Fail to apply configuration on redis client instance with ' \
|
|
32
|
+
'`Datadog.configure_onto(redis)`.'
|
|
33
|
+
|
|
34
|
+
# Null object instead of raising error
|
|
35
|
+
self
|
|
24
36
|
end
|
|
25
37
|
end
|
|
26
38
|
end
|
|
27
39
|
|
|
28
|
-
# Patch for redis
|
|
29
|
-
module
|
|
40
|
+
# Patch for redis instance (with redis >= 5)
|
|
41
|
+
module NotSupportedNoticePatch
|
|
30
42
|
def self.included(base)
|
|
31
43
|
base.prepend(InstanceMethods)
|
|
32
44
|
end
|
|
33
45
|
|
|
34
|
-
# Instance method patch for redis
|
|
46
|
+
# Instance method patch for redis instance
|
|
35
47
|
module InstanceMethods
|
|
36
|
-
def
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
48
|
+
def datadog_pin=(_pin)
|
|
49
|
+
Datadog.logger.warn \
|
|
50
|
+
'`Datadog.configure_onto(redis)` is not supported on Redis 5+. To instrument '\
|
|
51
|
+
"a redis instance with custom configuration, please initialize it with:\n"\
|
|
52
|
+
" `Redis.new(..., custom: { datadog: { service_name: 'my-service' } })`.\n\n" \
|
|
53
|
+
'See: https://github.com/DataDog/dd-trace-rb/blob/master/docs/GettingStarted.md#redis'
|
|
40
54
|
end
|
|
41
|
-
|
|
42
|
-
private
|
|
43
|
-
|
|
44
|
-
attr_reader :redis_instance
|
|
45
55
|
end
|
|
46
56
|
end
|
|
47
57
|
|
|
@@ -62,12 +72,15 @@ module Datadog
|
|
|
62
72
|
::RedisClient.register(TraceMiddleware)
|
|
63
73
|
end
|
|
64
74
|
|
|
65
|
-
if Integration.redis_compatible?
|
|
66
|
-
|
|
75
|
+
if Integration.redis_compatible?
|
|
76
|
+
if Integration.redis_version < Gem::Version.new('5.0.0')
|
|
77
|
+
require_relative 'instrumentation'
|
|
67
78
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
79
|
+
::Redis.include(DatadogPinPatch)
|
|
80
|
+
::Redis::Client.include(Instrumentation)
|
|
81
|
+
else # warn about non-supported configure_onto usage
|
|
82
|
+
::Redis.include(NotSupportedNoticePatch)
|
|
83
|
+
end
|
|
71
84
|
end
|
|
72
85
|
end
|
|
73
86
|
end
|
|
@@ -8,6 +8,7 @@ module Datadog
|
|
|
8
8
|
# @public_api Changing resource names, tag names, or environment variables creates breaking changes.
|
|
9
9
|
module Ext
|
|
10
10
|
ENV_ENABLED = 'DD_TRACE_RESQUE_ENABLED'
|
|
11
|
+
# @!visibility private
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_RESQUE_ANALYTICS_ENABLED'
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RESQUE_ANALYTICS_SAMPLE_RATE'
|
|
13
14
|
SERVICE_NAME = 'resque'
|
|
@@ -10,6 +10,7 @@ module Datadog
|
|
|
10
10
|
ENV_ENABLED = 'DD_TRACE_REST_CLIENT_ENABLED'
|
|
11
11
|
ENV_SERVICE_NAME = 'DD_TRACE_REST_CLIENT_SERVICE_NAME'
|
|
12
12
|
ENV_PEER_SERVICE = 'DD_TRACE_REST_CLIENT_PEER_SERVICE'
|
|
13
|
+
# @!visibility private
|
|
13
14
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_REST_CLIENT_ANALYTICS_ENABLED'
|
|
14
15
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_REST_CLIENT_ANALYTICS_SAMPLE_RATE'
|
|
15
16
|
DEFAULT_PEER_SERVICE_NAME = 'rest_client'
|
|
@@ -8,6 +8,7 @@ module Datadog
|
|
|
8
8
|
# @public_api Changing resource names, tag names, or environment variables creates breaking changes.
|
|
9
9
|
module Ext
|
|
10
10
|
ENV_ENABLED = 'DD_TRACE_SEQUEL_ENABLED'
|
|
11
|
+
# @!visibility private
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SEQUEL_ANALYTICS_ENABLED'
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SEQUEL_ANALYTICS_SAMPLE_RATE'
|
|
13
14
|
SPAN_QUERY = 'sequel.query'
|
|
@@ -8,6 +8,7 @@ module Datadog
|
|
|
8
8
|
# @public_api Changing resource names, tag names, or environment variables creates breaking changes.
|
|
9
9
|
module Ext
|
|
10
10
|
ENV_ENABLED = 'DD_TRACE_SHORYUKEN_ENABLED'
|
|
11
|
+
# @!visibility private
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SHORYUKEN_ANALYTICS_ENABLED'
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SHORYUKEN_ANALYTICS_SAMPLE_RATE'
|
|
13
14
|
SERVICE_NAME = 'shoryuken'
|
|
@@ -9,6 +9,7 @@ module Datadog
|
|
|
9
9
|
module Ext
|
|
10
10
|
CLIENT_SERVICE_NAME = 'sidekiq-client'
|
|
11
11
|
ENV_ENABLED = 'DD_TRACE_SIDEKIQ_ENABLED'
|
|
12
|
+
# @!visibility private
|
|
12
13
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SIDEKIQ_ANALYTICS_ENABLED'
|
|
13
14
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SIDEKIQ_ANALYTICS_SAMPLE_RATE'
|
|
14
15
|
ENV_TAG_JOB_ARGS = 'DD_SIDEKIQ_TAG_JOB_ARGS'
|
|
@@ -8,6 +8,7 @@ module Datadog
|
|
|
8
8
|
# @public_api Changing resource names, tag names, or environment variables creates breaking changes.
|
|
9
9
|
module Ext
|
|
10
10
|
ENV_ENABLED = 'DD_TRACE_SINATRA_ENABLED'
|
|
11
|
+
# @!visibility private
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SINATRA_ANALYTICS_ENABLED'
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SINATRA_ANALYTICS_SAMPLE_RATE'
|
|
13
14
|
RACK_ENV_SINATRA_REQUEST_SPAN = 'datadog.sinatra_request_span'
|
|
@@ -8,6 +8,7 @@ module Datadog
|
|
|
8
8
|
# @public_api Changing resource names, tag names, or environment variables creates breaking changes.
|
|
9
9
|
module Ext
|
|
10
10
|
ENV_ENABLED = 'DD_TRACE_SNEAKERS_ENABLED'
|
|
11
|
+
# @!visibility private
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SNEAKERS_ANALYTICS_ENABLED'
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SNEAKERS_ANALYTICS_SAMPLE_RATE'
|
|
13
14
|
SERVICE_NAME = 'sneakers'
|
|
@@ -8,6 +8,7 @@ module Datadog
|
|
|
8
8
|
# @public_api Changing resource names, tag names, or environment variables creates breaking changes.
|
|
9
9
|
module Ext
|
|
10
10
|
ENV_ENABLED = 'DD_TRACE_STRIPE_ENABLED'
|
|
11
|
+
# @!visibility private
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_STRIPE_ANALYTICS_ENABLED'
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_STRIPE_ANALYTICS_SAMPLE_RATE'
|
|
13
14
|
SPAN_REQUEST = 'stripe.request'
|
|
@@ -8,6 +8,7 @@ module Datadog
|
|
|
8
8
|
# @public_api Changing resource names, tag names, or environment variables creates breaking changes.
|
|
9
9
|
module Ext
|
|
10
10
|
ENV_ENABLED = 'DD_TRACE_SUCKER_PUNCH_ENABLED'
|
|
11
|
+
# @!visibility private
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SUCKER_PUNCH_ANALYTICS_ENABLED'
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SUCKER_PUNCH_ANALYTICS_SAMPLE_RATE'
|
|
13
14
|
SERVICE_NAME = 'sucker_punch'
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../../configuration/settings'
|
|
4
|
+
require_relative '../ext'
|
|
5
|
+
|
|
6
|
+
require_relative '../../propagation/sql_comment'
|
|
7
|
+
|
|
8
|
+
module Datadog
|
|
9
|
+
module Tracing
|
|
10
|
+
module Contrib
|
|
11
|
+
module Trilogy
|
|
12
|
+
module Configuration
|
|
13
|
+
# Custom settings for the Trilogy integration
|
|
14
|
+
# @public_api
|
|
15
|
+
class Settings < Contrib::Configuration::Settings
|
|
16
|
+
option :enabled do |o|
|
|
17
|
+
o.type :bool
|
|
18
|
+
o.env Ext::ENV_ENABLED
|
|
19
|
+
o.default true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
option :analytics_enabled do |o|
|
|
23
|
+
o.type :bool
|
|
24
|
+
o.env Ext::ENV_ANALYTICS_ENABLED
|
|
25
|
+
o.default false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
option :analytics_sample_rate do |o|
|
|
29
|
+
o.type :float
|
|
30
|
+
o.env Ext::ENV_ANALYTICS_SAMPLE_RATE
|
|
31
|
+
o.default 1.0
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
option :service_name do |o|
|
|
35
|
+
o.default do
|
|
36
|
+
Contrib::SpanAttributeSchema.fetch_service_name(
|
|
37
|
+
Ext::ENV_SERVICE_NAME,
|
|
38
|
+
Ext::DEFAULT_PEER_SERVICE_NAME
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
option :comment_propagation do |o|
|
|
44
|
+
o.type :string
|
|
45
|
+
o.env Contrib::Propagation::SqlComment::Ext::ENV_DBM_PROPAGATION_MODE
|
|
46
|
+
o.default Contrib::Propagation::SqlComment::Ext::DISABLED
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
option :peer_service do |o|
|
|
50
|
+
o.type :string, nilable: true
|
|
51
|
+
o.env Ext::ENV_PEER_SERVICE
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module Tracing
|
|
5
|
+
module Contrib
|
|
6
|
+
module Trilogy
|
|
7
|
+
# Trilogy integration constants
|
|
8
|
+
# @public_api Changing resource names, tag names, or environment variables creates breaking changes.
|
|
9
|
+
module Ext
|
|
10
|
+
ENV_ENABLED = 'DD_TRACE_TRILOGY_ENABLED'
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_TRILOGY_SERVICE_NAME'
|
|
12
|
+
ENV_PEER_SERVICE = 'DD_TRACE_TRILOGY_PEER_SERVICE'
|
|
13
|
+
|
|
14
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_TRILOGY_ANALYTICS_ENABLED'
|
|
15
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_TRILOGY_ANALYTICS_SAMPLE_RATE'
|
|
16
|
+
DEFAULT_PEER_SERVICE_NAME = 'trilogy'
|
|
17
|
+
SPAN_QUERY = 'trilogy.query'
|
|
18
|
+
TAG_DB_NAME = 'trilogy.db.name'
|
|
19
|
+
TAG_COMPONENT = 'trilogy'
|
|
20
|
+
TAG_OPERATION_QUERY = 'query'
|
|
21
|
+
TAG_SYSTEM = 'mysql'
|
|
22
|
+
PEER_SERVICE_SOURCES = (Array[Ext::TAG_DB_NAME] + Contrib::Ext::DB::PEER_SERVICE_SOURCES).freeze
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../../metadata/ext'
|
|
4
|
+
require_relative '../analytics'
|
|
5
|
+
require_relative 'ext'
|
|
6
|
+
require_relative '../ext'
|
|
7
|
+
require_relative '../propagation/sql_comment'
|
|
8
|
+
require_relative '../propagation/sql_comment/mode'
|
|
9
|
+
|
|
10
|
+
module Datadog
|
|
11
|
+
module Tracing
|
|
12
|
+
module Contrib
|
|
13
|
+
module Trilogy
|
|
14
|
+
# Trilogy patch module
|
|
15
|
+
module Instrumentation
|
|
16
|
+
def self.included(base)
|
|
17
|
+
base.prepend(InstanceMethods)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Trilogy patch instance methods
|
|
21
|
+
module InstanceMethods
|
|
22
|
+
def query(sql)
|
|
23
|
+
service = Datadog.configuration_for(self, :service_name) || datadog_configuration[:service_name]
|
|
24
|
+
|
|
25
|
+
Tracing.trace(Ext::SPAN_QUERY, service: service) do |span, trace_op|
|
|
26
|
+
span.resource = sql
|
|
27
|
+
span.span_type = Tracing::Metadata::Ext::SQL::TYPE
|
|
28
|
+
|
|
29
|
+
if datadog_configuration[:peer_service]
|
|
30
|
+
span.set_tag(
|
|
31
|
+
Tracing::Metadata::Ext::TAG_PEER_SERVICE,
|
|
32
|
+
datadog_configuration[:peer_service]
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Tag original global service name if not used
|
|
37
|
+
if span.service != Datadog.configuration.service
|
|
38
|
+
span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
span.set_tag(Contrib::Ext::DB::TAG_SYSTEM, Ext::TAG_SYSTEM)
|
|
42
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
|
|
43
|
+
|
|
44
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
45
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_QUERY)
|
|
46
|
+
|
|
47
|
+
span.set_tag(Tracing::Metadata::Ext::TAG_PEER_HOSTNAME, connection_options[:host])
|
|
48
|
+
|
|
49
|
+
# Set analytics sample rate
|
|
50
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
51
|
+
|
|
52
|
+
span.set_tag(Ext::TAG_DB_NAME, connection_options[:database])
|
|
53
|
+
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, connection_options[:host])
|
|
54
|
+
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, connection_options[:port])
|
|
55
|
+
|
|
56
|
+
Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
|
|
57
|
+
|
|
58
|
+
propagation_mode = Contrib::Propagation::SqlComment::Mode.new(comment_propagation)
|
|
59
|
+
|
|
60
|
+
Contrib::Propagation::SqlComment.annotate!(span, propagation_mode)
|
|
61
|
+
sql = Contrib::Propagation::SqlComment.prepend_comment(
|
|
62
|
+
sql,
|
|
63
|
+
span,
|
|
64
|
+
trace_op,
|
|
65
|
+
propagation_mode
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
super(sql)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
def datadog_configuration
|
|
75
|
+
Datadog.configuration.tracing[:trilogy]
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def analytics_enabled?
|
|
79
|
+
datadog_configuration[:analytics_enabled]
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def analytics_sample_rate
|
|
83
|
+
datadog_configuration[:analytics_sample_rate]
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def comment_propagation
|
|
87
|
+
datadog_configuration[:comment_propagation]
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../integration'
|
|
4
|
+
require_relative 'configuration/settings'
|
|
5
|
+
require_relative 'patcher'
|
|
6
|
+
|
|
7
|
+
module Datadog
|
|
8
|
+
module Tracing
|
|
9
|
+
module Contrib
|
|
10
|
+
module Trilogy
|
|
11
|
+
# Description of Trilogy integration
|
|
12
|
+
class Integration
|
|
13
|
+
include Contrib::Integration
|
|
14
|
+
|
|
15
|
+
MINIMUM_VERSION = Gem::Version.new('2.0.0')
|
|
16
|
+
|
|
17
|
+
# @public_api Changing the integration name or integration options can cause breaking changes
|
|
18
|
+
register_as :trilogy
|
|
19
|
+
|
|
20
|
+
def self.version
|
|
21
|
+
Gem.loaded_specs['trilogy'] && Gem.loaded_specs['trilogy'].version
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.loaded?
|
|
25
|
+
!defined?(::Trilogy).nil?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.compatible?
|
|
29
|
+
super && version >= MINIMUM_VERSION
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def new_configuration
|
|
33
|
+
Configuration::Settings.new
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def patcher
|
|
37
|
+
Patcher
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../patcher'
|
|
4
|
+
require_relative 'instrumentation'
|
|
5
|
+
|
|
6
|
+
module Datadog
|
|
7
|
+
module Tracing
|
|
8
|
+
module Contrib
|
|
9
|
+
module Trilogy
|
|
10
|
+
# Patcher enables patching of 'trilogy' module.
|
|
11
|
+
module Patcher
|
|
12
|
+
include Contrib::Patcher
|
|
13
|
+
|
|
14
|
+
module_function
|
|
15
|
+
|
|
16
|
+
def target_version
|
|
17
|
+
Integration.version
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def patch
|
|
21
|
+
patch_trilogy_client
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def patch_trilogy_client
|
|
25
|
+
::Trilogy.include(Instrumentation)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
data/lib/datadog/tracing.rb
CHANGED
|
@@ -73,8 +73,14 @@ module Datadog
|
|
|
73
73
|
# (see Datadog::Tracing::Tracer#active_correlation)
|
|
74
74
|
# @public_api
|
|
75
75
|
def correlation
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
# We access this in this way as:
|
|
77
|
+
# * If the components have not been initialized, it doesn't make sense to initialize ddtrace just to say
|
|
78
|
+
# 'nil' here
|
|
79
|
+
# * It prevents recursive initialization attempts, see https://github.com/DataDog/dd-trace-rb/issues/3385
|
|
80
|
+
components = Datadog.send(:components, allow_initialization: false)
|
|
81
|
+
current_tracer = components.tracer if components
|
|
82
|
+
|
|
83
|
+
return Datadog::Tracing::Correlation::Identifier.new unless current_tracer
|
|
78
84
|
|
|
79
85
|
current_tracer.active_correlation
|
|
80
86
|
end
|
data/lib/ddtrace/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ddtrace
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.20.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Datadog, Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-02-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: msgpack
|
|
@@ -72,14 +72,14 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.
|
|
75
|
+
version: 0.7.0
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0.
|
|
82
|
+
version: 0.7.0
|
|
83
83
|
description: |
|
|
84
84
|
ddtrace is Datadog's tracing client for Ruby. It is used to trace requests
|
|
85
85
|
as they flow across web servers, databases and microservices so that developers
|
|
@@ -108,6 +108,8 @@ files:
|
|
|
108
108
|
- ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c
|
|
109
109
|
- ext/ddtrace_profiling_native_extension/clock_id_noop.c
|
|
110
110
|
- ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c
|
|
111
|
+
- ext/ddtrace_profiling_native_extension/collectors_discrete_dynamic_sampler.c
|
|
112
|
+
- ext/ddtrace_profiling_native_extension/collectors_discrete_dynamic_sampler.h
|
|
111
113
|
- ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c
|
|
112
114
|
- ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h
|
|
113
115
|
- ext/ddtrace_profiling_native_extension/collectors_gc_profiling_helper.c
|
|
@@ -276,6 +278,8 @@ files:
|
|
|
276
278
|
- lib/datadog/core/remote/dispatcher.rb
|
|
277
279
|
- lib/datadog/core/remote/ext.rb
|
|
278
280
|
- lib/datadog/core/remote/negotiation.rb
|
|
281
|
+
- lib/datadog/core/remote/tie.rb
|
|
282
|
+
- lib/datadog/core/remote/tie/tracing.rb
|
|
279
283
|
- lib/datadog/core/remote/transport/config.rb
|
|
280
284
|
- lib/datadog/core/remote/transport/http.rb
|
|
281
285
|
- lib/datadog/core/remote/transport/http/api.rb
|
|
@@ -792,6 +796,11 @@ files:
|
|
|
792
796
|
- lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb
|
|
793
797
|
- lib/datadog/tracing/contrib/sucker_punch/integration.rb
|
|
794
798
|
- lib/datadog/tracing/contrib/sucker_punch/patcher.rb
|
|
799
|
+
- lib/datadog/tracing/contrib/trilogy/configuration/settings.rb
|
|
800
|
+
- lib/datadog/tracing/contrib/trilogy/ext.rb
|
|
801
|
+
- lib/datadog/tracing/contrib/trilogy/instrumentation.rb
|
|
802
|
+
- lib/datadog/tracing/contrib/trilogy/integration.rb
|
|
803
|
+
- lib/datadog/tracing/contrib/trilogy/patcher.rb
|
|
795
804
|
- lib/datadog/tracing/contrib/utils/database.rb
|
|
796
805
|
- lib/datadog/tracing/contrib/utils/quantization/hash.rb
|
|
797
806
|
- lib/datadog/tracing/contrib/utils/quantization/http.rb
|
|
@@ -895,7 +904,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
895
904
|
- !ruby/object:Gem::Version
|
|
896
905
|
version: 2.0.0
|
|
897
906
|
requirements: []
|
|
898
|
-
rubygems_version: 3.4.
|
|
907
|
+
rubygems_version: 3.4.21
|
|
899
908
|
signing_key:
|
|
900
909
|
specification_version: 4
|
|
901
910
|
summary: Datadog tracing code for your Ruby applications
|