ddtrace 1.7.0 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|