ddtrace 1.7.0 → 1.9.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 +100 -1
- data/README.md +2 -2
- data/ext/ddtrace_profiling_loader/extconf.rb +4 -1
- data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +1 -1
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +3 -2
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +24 -50
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +1 -1
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +284 -74
- data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c +142 -0
- data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h +14 -0
- data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +241 -0
- data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
- data/ext/ddtrace_profiling_native_extension/collectors_stack.c +32 -32
- data/ext/ddtrace_profiling_native_extension/collectors_stack.h +2 -2
- data/ext/ddtrace_profiling_native_extension/extconf.rb +21 -7
- data/ext/ddtrace_profiling_native_extension/helpers.h +5 -0
- data/ext/ddtrace_profiling_native_extension/http_transport.c +50 -49
- data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +5 -1
- data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +42 -12
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +116 -22
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +9 -0
- data/ext/ddtrace_profiling_native_extension/profiling.c +205 -0
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +86 -0
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +28 -6
- data/ext/ddtrace_profiling_native_extension/setup_signal_handler.c +23 -4
- data/ext/ddtrace_profiling_native_extension/setup_signal_handler.h +4 -0
- data/ext/ddtrace_profiling_native_extension/stack_recorder.c +47 -50
- data/ext/ddtrace_profiling_native_extension/stack_recorder.h +4 -4
- data/ext/ddtrace_profiling_native_extension/time_helpers.c +17 -0
- data/ext/ddtrace_profiling_native_extension/time_helpers.h +10 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +75 -8
- data/lib/datadog/appsec/assets/waf_rules/risky.json +1 -1
- data/lib/datadog/appsec/assets/waf_rules/strict.json +1 -1
- data/lib/datadog/appsec/assets.rb +1 -1
- data/lib/datadog/appsec/configuration/settings.rb +35 -22
- data/lib/datadog/appsec/configuration.rb +4 -2
- data/lib/datadog/appsec/contrib/auto_instrument.rb +1 -1
- data/lib/datadog/appsec/contrib/configuration/settings.rb +1 -1
- data/lib/datadog/appsec/contrib/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/patcher.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/ext.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/response.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/ext.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/framework.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/reactive/action.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/request.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/request_middleware.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/ext.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/framework.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +1 -1
- data/lib/datadog/appsec/event.rb +1 -1
- data/lib/datadog/appsec/extensions.rb +36 -26
- data/lib/datadog/appsec/instrumentation/gateway.rb +3 -3
- data/lib/datadog/appsec/processor.rb +15 -19
- data/lib/datadog/appsec/rate_limiter.rb +1 -1
- data/lib/datadog/appsec/reactive/address_hash.rb +1 -1
- data/lib/datadog/appsec/reactive/engine.rb +1 -1
- data/lib/datadog/appsec/reactive/operation.rb +2 -2
- data/lib/datadog/appsec/reactive/subscriber.rb +1 -1
- data/lib/datadog/appsec/response.rb +18 -9
- data/lib/datadog/appsec/utils/http/media_range.rb +201 -0
- data/lib/datadog/appsec/utils/http/media_type.rb +87 -0
- data/lib/datadog/appsec/utils/http.rb +9 -0
- data/lib/datadog/appsec/utils.rb +7 -0
- data/lib/datadog/appsec.rb +1 -1
- data/lib/datadog/ci/ext/environment.rb +57 -13
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +2 -2
- data/lib/datadog/core/configuration/base.rb +3 -0
- data/lib/datadog/core/configuration/components.rb +27 -6
- data/lib/datadog/core/configuration/ext.rb +26 -0
- data/lib/datadog/core/configuration/option_definition.rb +11 -2
- data/lib/datadog/core/configuration/settings.rb +16 -341
- data/lib/datadog/core/diagnostics/environment_logger.rb +4 -3
- data/lib/datadog/core/diagnostics/health.rb +4 -22
- data/lib/datadog/core/environment/variable_helpers.rb +58 -10
- data/lib/datadog/core/metrics/client.rb +3 -2
- data/lib/datadog/core/metrics/ext.rb +0 -2
- data/lib/datadog/core/telemetry/collector.rb +1 -0
- data/lib/datadog/core/utils.rb +0 -21
- data/lib/datadog/core.rb +21 -1
- data/lib/datadog/kit/appsec/events.rb +75 -0
- data/lib/datadog/kit/enable_core_dumps.rb +1 -0
- data/lib/datadog/kit/identity.rb +8 -7
- data/lib/datadog/opentelemetry/api/context.rb +187 -0
- data/lib/datadog/opentelemetry/api/trace/span.rb +15 -0
- data/lib/datadog/opentelemetry/sdk/configurator.rb +38 -0
- data/lib/datadog/opentelemetry/sdk/id_generator.rb +27 -0
- data/lib/datadog/opentelemetry/sdk/propagator.rb +91 -0
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +92 -0
- data/lib/datadog/opentelemetry.rb +48 -0
- data/lib/datadog/opentracer/distributed_headers.rb +2 -2
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +16 -5
- data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +68 -0
- data/lib/datadog/profiling/stack_recorder.rb +14 -0
- data/lib/datadog/profiling.rb +2 -0
- data/lib/datadog/tracing/configuration/ext.rb +33 -4
- data/lib/datadog/tracing/configuration/settings.rb +433 -0
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +4 -1
- data/lib/datadog/tracing/contrib/aws/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +4 -1
- data/lib/datadog/tracing/contrib/dalli/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +5 -1
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +6 -1
- data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +5 -1
- data/lib/datadog/tracing/contrib/excon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +5 -1
- data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +6 -1
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +9 -4
- data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +11 -1
- data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +10 -3
- data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +9 -4
- data/lib/datadog/tracing/contrib/http/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +3 -6
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +11 -1
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -4
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +11 -1
- data/lib/datadog/tracing/contrib/httprb/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +3 -4
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +5 -1
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +4 -1
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +2 -2
- data/lib/datadog/tracing/contrib/patcher.rb +3 -2
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +4 -1
- data/lib/datadog/tracing/contrib/pg/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +56 -33
- data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +4 -1
- data/lib/datadog/tracing/contrib/presto/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +10 -12
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +4 -1
- data/lib/datadog/tracing/contrib/redis/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +30 -23
- data/lib/datadog/tracing/contrib/redis/integration.rb +34 -2
- data/lib/datadog/tracing/contrib/redis/patcher.rb +18 -14
- data/lib/datadog/tracing/contrib/redis/quantize.rb +12 -9
- data/lib/datadog/tracing/contrib/redis/tags.rb +4 -6
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +72 -0
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +6 -1
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +33 -0
- data/lib/datadog/tracing/contrib/stripe/ext.rb +26 -0
- data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/stripe/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
- data/lib/datadog/tracing/contrib.rb +1 -0
- data/lib/datadog/{core → tracing}/diagnostics/ext.rb +1 -6
- data/lib/datadog/tracing/diagnostics/health.rb +40 -0
- data/lib/datadog/tracing/distributed/{b3.rb → b3_multi.rb} +2 -2
- data/lib/datadog/tracing/distributed/helpers.rb +2 -1
- data/lib/datadog/tracing/distributed/none.rb +19 -0
- data/lib/datadog/tracing/distributed/trace_context.rb +378 -0
- data/lib/datadog/tracing/metadata/ext.rb +1 -1
- data/lib/datadog/tracing/metadata/tagging.rb +6 -0
- data/lib/datadog/tracing/sampling/priority_sampler.rb +11 -0
- data/lib/datadog/tracing/sampling/rate_sampler.rb +3 -3
- data/lib/datadog/tracing/span.rb +3 -19
- data/lib/datadog/tracing/span_operation.rb +5 -4
- data/lib/datadog/tracing/trace_digest.rb +85 -2
- data/lib/datadog/tracing/trace_operation.rb +13 -4
- data/lib/datadog/tracing/utils.rb +50 -0
- data/lib/ddtrace/version.rb +1 -1
- metadata +41 -9
|
@@ -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_AWS_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_AWS_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_AWS_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_AWS_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
14
|
DEFAULT_PEER_SERVICE_NAME = 'aws'.freeze
|
|
@@ -10,6 +10,7 @@ module Datadog
|
|
|
10
10
|
ENV_ENABLED = 'DD_TRACE_DALLI_ENABLED'.freeze
|
|
11
11
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_DALLI_ANALYTICS_ENABLED'.freeze
|
|
12
12
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_DALLI_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
|
+
ENV_SERVICE_NAME = 'DD_TRACE_DALLI_SERVICE_NAME'.freeze
|
|
13
14
|
QUANTIZE_MAX_CMD_LENGTH = 100
|
|
14
15
|
DEFAULT_PEER_SERVICE_NAME = 'memcached'.freeze
|
|
15
16
|
SPAN_COMMAND = 'memcached.command'.freeze
|
|
@@ -27,7 +27,11 @@ module Datadog
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
option :quantize, default: {}
|
|
30
|
-
|
|
30
|
+
|
|
31
|
+
option :service_name do |o|
|
|
32
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
33
|
+
o.lazy
|
|
34
|
+
end
|
|
31
35
|
end
|
|
32
36
|
end
|
|
33
37
|
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_ELASTICSEARCH_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_ELASTICSEARCH_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_ELASTICSEARCH_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ELASTICSEARCH_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
14
|
DEFAULT_PEER_SERVICE_NAME = 'elasticsearch'.freeze
|
|
@@ -27,8 +27,13 @@ module Datadog
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
option :distributed_tracing, default: true
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
option :split_by_domain, default: false
|
|
32
|
+
|
|
33
|
+
option :service_name do |o|
|
|
34
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
35
|
+
o.lazy
|
|
36
|
+
end
|
|
32
37
|
end
|
|
33
38
|
end
|
|
34
39
|
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_ETHON_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_ETHON_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_ETHON_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ETHON_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
14
|
DEFAULT_PEER_SERVICE_NAME = 'ethon'.freeze
|
|
@@ -28,8 +28,12 @@ module Datadog
|
|
|
28
28
|
|
|
29
29
|
option :distributed_tracing, default: true
|
|
30
30
|
option :error_handler
|
|
31
|
-
option :service_name, default: Ext::DEFAULT_PEER_SERVICE_NAME
|
|
32
31
|
option :split_by_domain, default: false
|
|
32
|
+
|
|
33
|
+
option :service_name do |o|
|
|
34
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
35
|
+
o.lazy
|
|
36
|
+
end
|
|
33
37
|
end
|
|
34
38
|
end
|
|
35
39
|
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_EXCON_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_EXCON_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_EXCON_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_EXCON_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
14
|
DEFAULT_PEER_SERVICE_NAME = 'excon'.freeze
|
|
@@ -32,8 +32,12 @@ module Datadog
|
|
|
32
32
|
|
|
33
33
|
option :distributed_tracing, default: true
|
|
34
34
|
option :error_handler, default: DEFAULT_ERROR_HANDLER
|
|
35
|
-
option :service_name, default: Ext::DEFAULT_PEER_SERVICE_NAME
|
|
36
35
|
option :split_by_domain, default: false
|
|
36
|
+
|
|
37
|
+
option :service_name do |o|
|
|
38
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
39
|
+
o.lazy
|
|
40
|
+
end
|
|
37
41
|
end
|
|
38
42
|
end
|
|
39
43
|
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_FARADAY_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_FARADAY_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_FARADAY_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_FARADAY_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
14
|
DEFAULT_PEER_SERVICE_NAME = 'faraday'.freeze
|
|
@@ -28,7 +28,12 @@ module Datadog
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
option :distributed_tracing, default: true
|
|
31
|
-
|
|
31
|
+
|
|
32
|
+
option :service_name do |o|
|
|
33
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
34
|
+
o.lazy
|
|
35
|
+
end
|
|
36
|
+
|
|
32
37
|
option :error_handler, default: Tracing::SpanOperation::Events::DEFAULT_ON_ERROR
|
|
33
38
|
end
|
|
34
39
|
end
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
# typed: true
|
|
3
3
|
|
|
4
4
|
require_relative 'fetcher'
|
|
5
|
-
require_relative '../../../distributed/
|
|
5
|
+
require_relative '../../../distributed/b3_multi'
|
|
6
6
|
require_relative '../../../distributed/b3_single'
|
|
7
7
|
require_relative '../../../distributed/datadog'
|
|
8
|
+
require_relative '../../../distributed/none'
|
|
8
9
|
require_relative '../../../distributed/propagation'
|
|
10
|
+
require_relative '../../../distributed/trace_context'
|
|
9
11
|
|
|
10
12
|
module Datadog
|
|
11
13
|
module Tracing
|
|
@@ -18,12 +20,15 @@ module Datadog
|
|
|
18
20
|
def initialize
|
|
19
21
|
super(
|
|
20
22
|
propagation_styles: {
|
|
21
|
-
Tracing::Configuration::Ext::Distributed::
|
|
22
|
-
Tracing::Distributed::
|
|
23
|
+
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_MULTI_HEADER =>
|
|
24
|
+
Tracing::Distributed::B3Multi.new(fetcher: Fetcher),
|
|
23
25
|
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER =>
|
|
24
26
|
Tracing::Distributed::B3Single.new(fetcher: Fetcher),
|
|
25
27
|
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG =>
|
|
26
|
-
Tracing::Distributed::Datadog.new(fetcher: Fetcher)
|
|
28
|
+
Tracing::Distributed::Datadog.new(fetcher: Fetcher),
|
|
29
|
+
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_TRACE_CONTEXT =>
|
|
30
|
+
Tracing::Distributed::TraceContext.new(fetcher: Fetcher),
|
|
31
|
+
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_NONE => Tracing::Distributed::None.new
|
|
27
32
|
})
|
|
28
33
|
end
|
|
29
34
|
|
|
@@ -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_GRPC_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_GRPC_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_GRPC_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_GRPC_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
14
|
DEFAULT_PEER_SERVICE_NAME = 'grpc'.freeze
|
|
@@ -27,7 +27,17 @@ module Datadog
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
option :distributed_tracing, default: true
|
|
30
|
-
|
|
30
|
+
|
|
31
|
+
option :service_name do |o|
|
|
32
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
33
|
+
o.lazy
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
option :error_status_codes do |o|
|
|
37
|
+
o.default { env_to_list(Ext::ENV_ERROR_STATUS_CODES, 400...600, comma_separated_only: false) }
|
|
38
|
+
o.lazy
|
|
39
|
+
end
|
|
40
|
+
|
|
31
41
|
option :split_by_domain, default: false
|
|
32
42
|
end
|
|
33
43
|
end
|
|
@@ -8,13 +8,20 @@ module Datadog
|
|
|
8
8
|
module Contrib
|
|
9
9
|
module HTTP
|
|
10
10
|
module Distributed
|
|
11
|
-
# Retrieves
|
|
11
|
+
# Retrieves HTTP headers from carrier.
|
|
12
|
+
# Headers will also match if Rack-formatted:
|
|
13
|
+
# 'my-header' will match 'my-header' and 'HTTP_MY_HEADER'.
|
|
14
|
+
#
|
|
15
|
+
# In case both variants are present, the verbatim match will be used.
|
|
12
16
|
class Fetcher < Tracing::Distributed::Fetcher
|
|
13
|
-
# TODO: Don't assume Rack format.
|
|
14
|
-
# Make distributed tracing headers apathetic.
|
|
15
17
|
# DEV: Should we try to parse both verbatim an Rack-formatted headers,
|
|
16
18
|
# DEV: given Rack-formatted is the most common format in Ruby?
|
|
17
19
|
def [](name)
|
|
20
|
+
# Try to fetch with the plain key
|
|
21
|
+
value = super(name)
|
|
22
|
+
return value if value && !value.empty?
|
|
23
|
+
|
|
24
|
+
# If not found, try the Rack-formatted key
|
|
18
25
|
rack_header = "HTTP-#{name}"
|
|
19
26
|
rack_header.upcase!
|
|
20
27
|
rack_header.tr!('-'.freeze, '_'.freeze)
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
require_relative 'fetcher'
|
|
5
5
|
require_relative '../../../distributed/propagation'
|
|
6
|
-
require_relative '../../../distributed/
|
|
6
|
+
require_relative '../../../distributed/b3_multi'
|
|
7
7
|
require_relative '../../../distributed/b3_single'
|
|
8
8
|
require_relative '../../../distributed/datadog'
|
|
9
|
+
require_relative '../../../distributed/none'
|
|
10
|
+
require_relative '../../../distributed/trace_context'
|
|
9
11
|
|
|
10
12
|
module Datadog
|
|
11
13
|
module Tracing
|
|
@@ -17,12 +19,15 @@ module Datadog
|
|
|
17
19
|
def initialize
|
|
18
20
|
super(
|
|
19
21
|
propagation_styles: {
|
|
20
|
-
Tracing::Configuration::Ext::Distributed::
|
|
21
|
-
Tracing::Distributed::
|
|
22
|
+
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_MULTI_HEADER =>
|
|
23
|
+
Tracing::Distributed::B3Multi.new(fetcher: Fetcher),
|
|
22
24
|
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER =>
|
|
23
25
|
Tracing::Distributed::B3Single.new(fetcher: Fetcher),
|
|
24
26
|
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG =>
|
|
25
|
-
Tracing::Distributed::Datadog.new(fetcher: Fetcher)
|
|
27
|
+
Tracing::Distributed::Datadog.new(fetcher: Fetcher),
|
|
28
|
+
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_TRACE_CONTEXT =>
|
|
29
|
+
Tracing::Distributed::TraceContext.new(fetcher: Fetcher),
|
|
30
|
+
Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_NONE => Tracing::Distributed::None.new
|
|
26
31
|
})
|
|
27
32
|
end
|
|
28
33
|
end
|
|
@@ -8,8 +8,10 @@ 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_HTTP_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_NET_HTTP_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_HTTP_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_HTTP_ANALYTICS_SAMPLE_RATE'.freeze
|
|
14
|
+
ENV_ERROR_STATUS_CODES = 'DD_TRACE_HTTP_ERROR_STATUS_CODES'.freeze
|
|
13
15
|
DEFAULT_PEER_SERVICE_NAME = 'net/http'.freeze
|
|
14
16
|
SPAN_REQUEST = 'http.request'.freeze
|
|
15
17
|
TAG_COMPONENT = 'net/http'.freeze
|
|
@@ -58,7 +58,7 @@ module Datadog
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
# Add additional response specific tags to the span.
|
|
61
|
-
annotate_span_with_response!(span, response)
|
|
61
|
+
annotate_span_with_response!(span, response, request_options)
|
|
62
62
|
|
|
63
63
|
# Invoke hook, if set.
|
|
64
64
|
unless Contrib::HTTP::Instrumentation.after_request.nil?
|
|
@@ -90,15 +90,12 @@ module Datadog
|
|
|
90
90
|
set_analytics_sample_rate(span, request_options)
|
|
91
91
|
end
|
|
92
92
|
|
|
93
|
-
def annotate_span_with_response!(span, response)
|
|
93
|
+
def annotate_span_with_response!(span, response, request_options)
|
|
94
94
|
return unless response && response.code
|
|
95
95
|
|
|
96
96
|
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.code)
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
when 400...599
|
|
100
|
-
span.set_error(response)
|
|
101
|
-
end
|
|
98
|
+
span.set_error(response) if request_options[:error_status_codes].include? response.code.to_i
|
|
102
99
|
end
|
|
103
100
|
|
|
104
101
|
def annotate_span_with_error!(span, error)
|
|
@@ -27,7 +27,17 @@ module Datadog
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
option :distributed_tracing, default: true
|
|
30
|
-
|
|
30
|
+
|
|
31
|
+
option :service_name do |o|
|
|
32
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
33
|
+
o.lazy
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
option :error_status_codes do |o|
|
|
37
|
+
o.default { env_to_list(Ext::ENV_ERROR_STATUS_CODES, 400...600, comma_separated_only: false) }
|
|
38
|
+
o.lazy
|
|
39
|
+
end
|
|
40
|
+
|
|
31
41
|
option :split_by_domain, default: false
|
|
32
42
|
end
|
|
33
43
|
end
|
|
@@ -8,8 +8,10 @@ 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_HTTPCLIENT_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_HTTPCLIENT_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_HTTPCLIENT_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_HTTPCLIENT_ANALYTICS_SAMPLE_RATE'.freeze
|
|
14
|
+
ENV_ERROR_STATUS_CODES = 'DD_TRACE_HTTPCLIENT_ERROR_STATUS_CODES'.freeze
|
|
13
15
|
DEFAULT_PEER_SERVICE_NAME = 'httpclient'.freeze
|
|
14
16
|
SPAN_REQUEST = 'httpclient.request'.freeze
|
|
15
17
|
TAG_COMPONENT = 'httpclient'.freeze
|
|
@@ -42,7 +42,7 @@ module Datadog
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
# Add additional response specific tags to the span.
|
|
45
|
-
annotate_span_with_response!(span, res)
|
|
45
|
+
annotate_span_with_response!(span, res, request_options)
|
|
46
46
|
|
|
47
47
|
res
|
|
48
48
|
end
|
|
@@ -72,13 +72,12 @@ module Datadog
|
|
|
72
72
|
set_analytics_sample_rate(span, req_options)
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
def annotate_span_with_response!(span, response)
|
|
75
|
+
def annotate_span_with_response!(span, response, request_options)
|
|
76
76
|
return unless response && response.status
|
|
77
77
|
|
|
78
78
|
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.status)
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
when 400...599
|
|
80
|
+
if request_options[:error_status_codes].include? response.code.to_i
|
|
82
81
|
span.set_error(["Error #{response.status}", response.body])
|
|
83
82
|
end
|
|
84
83
|
end
|
|
@@ -27,7 +27,17 @@ module Datadog
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
option :distributed_tracing, default: true
|
|
30
|
-
|
|
30
|
+
|
|
31
|
+
option :service_name do |o|
|
|
32
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
33
|
+
o.lazy
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
option :error_status_codes do |o|
|
|
37
|
+
o.default { env_to_list(Ext::ENV_ERROR_STATUS_CODES, 400...600, comma_separated_only: false) }
|
|
38
|
+
o.lazy
|
|
39
|
+
end
|
|
40
|
+
|
|
31
41
|
option :split_by_domain, default: false
|
|
32
42
|
end
|
|
33
43
|
end
|
|
@@ -8,8 +8,10 @@ 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_HTTPRB_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_HTTPRB_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_HTTPRB_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_EHTTPRB_ANALYTICS_SAMPLE_RATE'.freeze
|
|
14
|
+
ENV_ERROR_STATUS_CODES = 'DD_TRACE_HTTPCLIENT_ERROR_STATUS_CODES'.freeze
|
|
13
15
|
DEFAULT_PEER_SERVICE_NAME = 'httprb'.freeze
|
|
14
16
|
SPAN_REQUEST = 'httprb.request'.freeze
|
|
15
17
|
TAG_COMPONENT = 'httprb'.freeze
|
|
@@ -42,7 +42,7 @@ module Datadog
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
# Add additional response specific tags to the span.
|
|
45
|
-
annotate_span_with_response!(span, res)
|
|
45
|
+
annotate_span_with_response!(span, res, request_options)
|
|
46
46
|
|
|
47
47
|
res
|
|
48
48
|
end
|
|
@@ -81,13 +81,12 @@ module Datadog
|
|
|
81
81
|
set_analytics_sample_rate(span, req_options)
|
|
82
82
|
end
|
|
83
83
|
|
|
84
|
-
def annotate_span_with_response!(span, response)
|
|
84
|
+
def annotate_span_with_response!(span, response, request_options)
|
|
85
85
|
return unless response && response.code
|
|
86
86
|
|
|
87
87
|
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_STATUS_CODE, response.code)
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
when 400...599
|
|
89
|
+
if request_options[:error_status_codes].include? response.code.to_i
|
|
91
90
|
# https://github.com/DataDog/dd-trace-rb/issues/1116
|
|
92
91
|
# parsing the response body message will alter downstream application behavior
|
|
93
92
|
span.set_error(["Error #{response.code}", 'Error'])
|
|
@@ -29,7 +29,11 @@ module Datadog
|
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
option :quantize, default: DEFAULT_QUANTIZE
|
|
32
|
-
|
|
32
|
+
|
|
33
|
+
option :service_name do |o|
|
|
34
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
35
|
+
o.lazy
|
|
36
|
+
end
|
|
33
37
|
end
|
|
34
38
|
end
|
|
35
39
|
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_MONGO_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_MONGO_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_MONGO_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_MONGO_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
14
|
DEFAULT_PEER_SERVICE_NAME = 'mongodb'.freeze
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
o.lazy
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
option :service_name
|
|
31
|
+
option :service_name do |o|
|
|
32
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
33
|
+
o.lazy
|
|
34
|
+
end
|
|
32
35
|
|
|
33
36
|
option :comment_propagation do |o|
|
|
34
37
|
o.default do
|
|
@@ -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_MYSQL2_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_MYSQL2_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_MYSQL2_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_MYSQL2_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
14
|
DEFAULT_PEER_SERVICE_NAME = 'mysql2'.freeze
|
|
@@ -22,7 +22,7 @@ module Datadog
|
|
|
22
22
|
def query(sql, options = {})
|
|
23
23
|
service = Datadog.configuration_for(self, :service_name) || datadog_configuration[:service_name]
|
|
24
24
|
|
|
25
|
-
Tracing.trace(Ext::SPAN_QUERY, service: service) do |span|
|
|
25
|
+
Tracing.trace(Ext::SPAN_QUERY, service: service) do |span, trace_op|
|
|
26
26
|
span.resource = sql
|
|
27
27
|
span.span_type = Tracing::Metadata::Ext::SQL::TYPE
|
|
28
28
|
|
|
@@ -46,7 +46,7 @@ module Datadog
|
|
|
46
46
|
propagation_mode = Contrib::Propagation::SqlComment::Mode.new(comment_propagation)
|
|
47
47
|
|
|
48
48
|
Contrib::Propagation::SqlComment.annotate!(span, propagation_mode)
|
|
49
|
-
sql = Contrib::Propagation::SqlComment.prepend_comment(sql, span, propagation_mode)
|
|
49
|
+
sql = Contrib::Propagation::SqlComment.prepend_comment(sql, span, trace_op, propagation_mode)
|
|
50
50
|
|
|
51
51
|
super(sql, options)
|
|
52
52
|
end
|
|
@@ -66,14 +66,15 @@ module Datadog
|
|
|
66
66
|
Datadog.health_metrics.error_instrumentation_patch(1, tags: tags)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
-
private
|
|
70
|
-
|
|
71
69
|
def default_tags
|
|
72
70
|
["patcher:#{patch_name}"].tap do |tags|
|
|
73
71
|
tags << "target_version:#{target_version}" if respond_to?(:target_version) && !target_version.nil?
|
|
72
|
+
super.each { |t| tags << t } if defined?(super)
|
|
74
73
|
end
|
|
75
74
|
end
|
|
76
75
|
|
|
76
|
+
private
|
|
77
|
+
|
|
77
78
|
def patch_only_once
|
|
78
79
|
# NOTE: This is not thread-safe
|
|
79
80
|
@patch_only_once ||= Core::Utils::OnlyOnce.new
|
|
@@ -28,7 +28,10 @@ module Datadog
|
|
|
28
28
|
o.lazy
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
option :service_name
|
|
31
|
+
option :service_name do |o|
|
|
32
|
+
o.default { ENV.fetch(Ext::ENV_SERVICE_NAME, Ext::DEFAULT_PEER_SERVICE_NAME) }
|
|
33
|
+
o.lazy
|
|
34
|
+
end
|
|
32
35
|
|
|
33
36
|
option :comment_propagation do |o|
|
|
34
37
|
o.default do
|
|
@@ -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_PG_ENABLED'.freeze
|
|
11
|
+
ENV_SERVICE_NAME = 'DD_TRACE_PG_SERVICE_NAME'.freeze
|
|
11
12
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_PG_ANALYTICS_ENABLED'.freeze
|
|
12
13
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_PG_ANALYTICS_SAMPLE_RATE'.freeze
|
|
13
14
|
DEFAULT_PEER_SERVICE_NAME = 'pg'.freeze
|