datadog 2.22.0 → 2.23.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 +59 -2
- data/ext/LIBDATADOG_DEVELOPMENT.md +1 -58
- data/ext/datadog_profiling_native_extension/collectors_stack.c +4 -0
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +1 -1
- data/ext/datadog_profiling_native_extension/extconf.rb +6 -4
- data/ext/datadog_profiling_native_extension/heap_recorder.c +1 -1
- data/ext/libdatadog_api/datadog_ruby_common.h +1 -1
- data/ext/libdatadog_api/feature_flags.c +554 -0
- data/ext/libdatadog_api/feature_flags.h +5 -0
- data/ext/libdatadog_api/init.c +2 -0
- data/ext/libdatadog_api/library_config.c +12 -11
- data/ext/libdatadog_extconf_helpers.rb +1 -1
- data/lib/datadog/appsec/api_security/route_extractor.rb +23 -6
- data/lib/datadog/appsec/api_security/sampler.rb +7 -4
- data/lib/datadog/appsec/assets/blocked.html +8 -0
- data/lib/datadog/appsec/assets/blocked.json +1 -1
- data/lib/datadog/appsec/assets/blocked.text +3 -1
- data/lib/datadog/appsec/assets.rb +1 -1
- data/lib/datadog/appsec/remote.rb +4 -0
- data/lib/datadog/appsec/response.rb +18 -4
- data/lib/datadog/core/configuration/components.rb +30 -3
- data/lib/datadog/core/configuration/config_helper.rb +1 -1
- data/lib/datadog/core/configuration/settings.rb +14 -0
- data/lib/datadog/core/configuration/supported_configurations.rb +330 -301
- data/lib/datadog/core/ddsketch.rb +0 -2
- data/lib/datadog/core/environment/ext.rb +6 -0
- data/lib/datadog/core/environment/process.rb +79 -0
- data/lib/datadog/core/feature_flags.rb +61 -0
- data/lib/datadog/core/remote/client/capabilities.rb +7 -0
- data/lib/datadog/core/remote/transport/config.rb +2 -10
- data/lib/datadog/core/remote/transport/http/config.rb +9 -9
- data/lib/datadog/core/remote/transport/http/negotiation.rb +17 -8
- data/lib/datadog/core/remote/transport/http.rb +2 -0
- data/lib/datadog/core/remote/transport/negotiation.rb +2 -18
- data/lib/datadog/core/remote/worker.rb +25 -37
- data/lib/datadog/core/tag_builder.rb +0 -4
- data/lib/datadog/core/tag_normalizer.rb +84 -0
- data/lib/datadog/core/telemetry/component.rb +7 -3
- data/lib/datadog/core/telemetry/event/app_started.rb +52 -49
- data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +1 -1
- data/lib/datadog/core/telemetry/logger.rb +2 -2
- data/lib/datadog/core/telemetry/logging.rb +2 -8
- data/lib/datadog/core/telemetry/transport/http/telemetry.rb +5 -6
- data/lib/datadog/core/telemetry/transport/telemetry.rb +1 -2
- data/lib/datadog/core/transport/http/client.rb +69 -0
- data/lib/datadog/core/utils/array.rb +29 -0
- data/lib/datadog/{appsec/api_security → core/utils}/lru_cache.rb +10 -21
- data/lib/datadog/core/utils/network.rb +3 -1
- data/lib/datadog/core/utils/only_once_successful.rb +6 -2
- data/lib/datadog/core/utils.rb +2 -0
- data/lib/datadog/data_streams/configuration/settings.rb +49 -0
- data/lib/datadog/data_streams/configuration.rb +11 -0
- data/lib/datadog/data_streams/ext.rb +11 -0
- data/lib/datadog/data_streams/extensions.rb +16 -0
- data/lib/datadog/data_streams/pathway_context.rb +169 -0
- data/lib/datadog/data_streams/processor.rb +509 -0
- data/lib/datadog/data_streams/transport/http/api.rb +33 -0
- data/lib/datadog/data_streams/transport/http/client.rb +21 -0
- data/lib/datadog/data_streams/transport/http/stats.rb +87 -0
- data/lib/datadog/data_streams/transport/http.rb +41 -0
- data/lib/datadog/data_streams/transport/stats.rb +60 -0
- data/lib/datadog/data_streams.rb +100 -0
- data/lib/datadog/di/component.rb +0 -16
- data/lib/datadog/di/el/evaluator.rb +1 -1
- data/lib/datadog/di/error.rb +4 -0
- data/lib/datadog/di/instrumenter.rb +76 -30
- data/lib/datadog/di/probe.rb +20 -0
- data/lib/datadog/di/probe_manager.rb +10 -2
- data/lib/datadog/di/probe_notification_builder.rb +62 -23
- data/lib/datadog/di/proc_responder.rb +32 -0
- data/lib/datadog/di/transport/diagnostics.rb +2 -2
- data/lib/datadog/di/transport/http/diagnostics.rb +2 -4
- data/lib/datadog/di/transport/http/input.rb +2 -4
- data/lib/datadog/di/transport/http.rb +6 -2
- data/lib/datadog/di/transport/input.rb +64 -4
- data/lib/datadog/open_feature/component.rb +60 -0
- data/lib/datadog/open_feature/configuration.rb +27 -0
- data/lib/datadog/open_feature/evaluation_engine.rb +69 -0
- data/lib/datadog/open_feature/exposures/batch_builder.rb +32 -0
- data/lib/datadog/open_feature/exposures/buffer.rb +43 -0
- data/lib/datadog/open_feature/exposures/deduplicator.rb +30 -0
- data/lib/datadog/open_feature/exposures/event.rb +60 -0
- data/lib/datadog/open_feature/exposures/reporter.rb +40 -0
- data/lib/datadog/open_feature/exposures/worker.rb +116 -0
- data/lib/datadog/open_feature/ext.rb +14 -0
- data/lib/datadog/open_feature/native_evaluator.rb +38 -0
- data/lib/datadog/open_feature/noop_evaluator.rb +26 -0
- data/lib/datadog/open_feature/provider.rb +141 -0
- data/lib/datadog/open_feature/remote.rb +74 -0
- data/lib/datadog/open_feature/resolution_details.rb +35 -0
- data/lib/datadog/open_feature/transport.rb +72 -0
- data/lib/datadog/open_feature.rb +19 -0
- data/lib/datadog/opentelemetry/configuration/settings.rb +159 -0
- data/lib/datadog/opentelemetry/metrics.rb +110 -0
- data/lib/datadog/opentelemetry/sdk/configurator.rb +25 -1
- data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +38 -0
- data/lib/datadog/opentelemetry.rb +3 -0
- data/lib/datadog/profiling/collectors/code_provenance.rb +15 -6
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +1 -1
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -1
- data/lib/datadog/profiling/profiler.rb +4 -0
- data/lib/datadog/profiling/tag_builder.rb +36 -3
- data/lib/datadog/profiling.rb +1 -2
- data/lib/datadog/single_step_instrument.rb +1 -1
- data/lib/datadog/tracing/configuration/ext.rb +9 -0
- data/lib/datadog/tracing/configuration/settings.rb +74 -0
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -2
- data/lib/datadog/tracing/contrib/active_job/log_injection.rb +21 -7
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +5 -1
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +4 -2
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +4 -1
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +11 -3
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +11 -7
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +7 -3
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +22 -17
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +11 -3
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +11 -3
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +11 -3
- data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +66 -0
- data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +66 -0
- data/lib/datadog/tracing/contrib/kafka/patcher.rb +14 -0
- data/lib/datadog/tracing/contrib/karafka/framework.rb +30 -0
- data/lib/datadog/tracing/contrib/karafka/monitor.rb +11 -0
- data/lib/datadog/tracing/contrib/karafka/patcher.rb +32 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +59 -27
- data/lib/datadog/tracing/contrib/rack/route_inference.rb +53 -0
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +2 -2
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +4 -1
- data/lib/datadog/tracing/contrib/roda/instrumentation.rb +3 -1
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +3 -1
- data/lib/datadog/tracing/contrib/status_range_matcher.rb +7 -0
- data/lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb +27 -0
- data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +48 -0
- data/lib/datadog/tracing/contrib/waterdrop/ext.rb +17 -0
- data/lib/datadog/tracing/contrib/waterdrop/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +46 -0
- data/lib/datadog/tracing/contrib/waterdrop/patcher.rb +46 -0
- data/lib/datadog/tracing/contrib/waterdrop/producer.rb +50 -0
- data/lib/datadog/tracing/contrib/waterdrop.rb +37 -0
- data/lib/datadog/tracing/contrib.rb +1 -0
- data/lib/datadog/tracing/metadata/ext.rb +1 -1
- data/lib/datadog/tracing/transport/http/client.rb +12 -26
- data/lib/datadog/tracing/transport/trace_formatter.rb +11 -0
- data/lib/datadog/tracing/transport/traces.rb +3 -5
- data/lib/datadog/version.rb +2 -2
- data/lib/datadog.rb +2 -0
- metadata +78 -15
- data/lib/datadog/core/remote/transport/http/client.rb +0 -49
- data/lib/datadog/core/telemetry/transport/http/client.rb +0 -49
- data/lib/datadog/di/transport/http/client.rb +0 -47
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'zlib'
|
|
4
|
-
require_relative 'lru_cache'
|
|
5
4
|
require_relative 'route_extractor'
|
|
6
5
|
require_relative '../../core/utils/time'
|
|
6
|
+
require_relative '../../core/utils/lru_cache'
|
|
7
7
|
|
|
8
8
|
module Datadog
|
|
9
9
|
module AppSec
|
|
@@ -37,20 +37,23 @@ module Datadog
|
|
|
37
37
|
def initialize(sample_delay)
|
|
38
38
|
raise ArgumentError, 'sample_delay must be an Integer' unless sample_delay.is_a?(Integer)
|
|
39
39
|
|
|
40
|
-
@cache = LRUCache.new(MAX_CACHE_SIZE)
|
|
40
|
+
@cache = Core::Utils::LRUCache.new(MAX_CACHE_SIZE)
|
|
41
41
|
@sample_delay_seconds = sample_delay
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def sample?(request, response)
|
|
45
45
|
return true if @sample_delay_seconds.zero?
|
|
46
|
+
return false if response.status == 404
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
route_pattern = RouteExtractor.route_pattern(request).to_s
|
|
49
|
+
|
|
50
|
+
key = Zlib.crc32("#{request.request_method}#{route_pattern}#{response.status}")
|
|
48
51
|
current_timestamp = Core::Utils::Time.now.to_i
|
|
49
52
|
cached_timestamp = @cache[key] || 0
|
|
50
53
|
|
|
51
54
|
return false if current_timestamp - cached_timestamp <= @sample_delay_seconds
|
|
52
55
|
|
|
53
|
-
@cache
|
|
56
|
+
@cache[key] = current_timestamp
|
|
54
57
|
true
|
|
55
58
|
end
|
|
56
59
|
end
|
|
@@ -82,12 +82,20 @@
|
|
|
82
82
|
footer p {
|
|
83
83
|
font-size: 16px
|
|
84
84
|
}
|
|
85
|
+
|
|
86
|
+
.security-response-id {
|
|
87
|
+
font-size:14px;
|
|
88
|
+
color:#999;
|
|
89
|
+
margin-top:20px;
|
|
90
|
+
font-family:monospace
|
|
91
|
+
}
|
|
85
92
|
</style>
|
|
86
93
|
</head>
|
|
87
94
|
|
|
88
95
|
<body>
|
|
89
96
|
<main>
|
|
90
97
|
<p>Sorry, you cannot access this page. Please contact the customer service team.</p>
|
|
98
|
+
<p class="security-response-id">Security Response ID: [security_response_id]</p>
|
|
91
99
|
</main>
|
|
92
100
|
<footer>
|
|
93
101
|
<p>Security provided by <a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"errors":
|
|
1
|
+
{"errors":[{"title":"You've been blocked","detail":"Sorry, you cannot access this page. Please contact the customer service team. Security provided by Datadog."}],"security_response_id":"[security_response_id]"}
|
|
@@ -23,6 +23,8 @@ module Datadog
|
|
|
23
23
|
CAP_ASM_CUSTOM_RULES = 1 << 8
|
|
24
24
|
CAP_ASM_CUSTOM_BLOCKING_RESPONSE = 1 << 9
|
|
25
25
|
CAP_ASM_TRUSTED_IPS = 1 << 10
|
|
26
|
+
CAP_ASM_PROCESSOR_OVERRIDES = 1 << 16
|
|
27
|
+
CAP_ASM_CUSTOM_DATA_SCANNERS = 1 << 17
|
|
26
28
|
CAP_ASM_RASP_SSRF = 1 << 23
|
|
27
29
|
CAP_ASM_RASP_SQLI = 1 << 21
|
|
28
30
|
CAP_ASM_AUTO_USER_INSTRUM_MODE = 1 << 31
|
|
@@ -43,6 +45,8 @@ module Datadog
|
|
|
43
45
|
CAP_ASM_CUSTOM_RULES,
|
|
44
46
|
CAP_ASM_CUSTOM_BLOCKING_RESPONSE,
|
|
45
47
|
CAP_ASM_TRUSTED_IPS,
|
|
48
|
+
CAP_ASM_PROCESSOR_OVERRIDES,
|
|
49
|
+
CAP_ASM_CUSTOM_DATA_SCANNERS,
|
|
46
50
|
CAP_ASM_RASP_SSRF,
|
|
47
51
|
CAP_ASM_RASP_SQLI,
|
|
48
52
|
CAP_ASM_AUTO_USER_INSTRUM_MODE,
|
|
@@ -7,6 +7,8 @@ module Datadog
|
|
|
7
7
|
module AppSec
|
|
8
8
|
# AppSec response
|
|
9
9
|
class Response
|
|
10
|
+
SECURITY_RESPONSE_ID_PLACEHOLDER = '[security_response_id]'
|
|
11
|
+
|
|
10
12
|
attr_reader :status, :headers, :body
|
|
11
13
|
|
|
12
14
|
def initialize(status:, headers: {}, body: [])
|
|
@@ -37,16 +39,26 @@ module Datadog
|
|
|
37
39
|
Response.new(
|
|
38
40
|
status: interrupt_params['status_code']&.to_i || 403,
|
|
39
41
|
headers: {'Content-Type' => content_type},
|
|
40
|
-
body: [
|
|
42
|
+
body: [
|
|
43
|
+
content(
|
|
44
|
+
security_response_id: interrupt_params['security_response_id'],
|
|
45
|
+
content_type: content_type
|
|
46
|
+
)
|
|
47
|
+
],
|
|
41
48
|
)
|
|
42
49
|
end
|
|
43
50
|
|
|
44
51
|
def redirect_response(interrupt_params)
|
|
45
52
|
status_code = interrupt_params['status_code'].to_i
|
|
53
|
+
location = interrupt_params.fetch('location')
|
|
54
|
+
|
|
55
|
+
if (security_response_id = interrupt_params.fetch('security_response_id'))
|
|
56
|
+
location.gsub!(SECURITY_RESPONSE_ID_PLACEHOLDER, security_response_id)
|
|
57
|
+
end
|
|
46
58
|
|
|
47
59
|
Response.new(
|
|
48
60
|
status: ((status_code >= 300 && status_code < 400) ? status_code : 303),
|
|
49
|
-
headers: {'Location' =>
|
|
61
|
+
headers: {'Location' => location},
|
|
50
62
|
body: [],
|
|
51
63
|
)
|
|
52
64
|
end
|
|
@@ -82,16 +94,18 @@ module Datadog
|
|
|
82
94
|
DEFAULT_CONTENT_TYPE
|
|
83
95
|
end
|
|
84
96
|
|
|
85
|
-
def content(content_type)
|
|
97
|
+
def content(security_response_id:, content_type:)
|
|
86
98
|
content_format = CONTENT_TYPE_TO_FORMAT[content_type]
|
|
87
99
|
|
|
88
100
|
using_default = Datadog.configuration.appsec.block.templates.using_default?(content_format)
|
|
89
101
|
|
|
90
|
-
if using_default
|
|
102
|
+
template = if using_default
|
|
91
103
|
Datadog::AppSec::Assets.blocked(format: content_format)
|
|
92
104
|
else
|
|
93
105
|
Datadog.configuration.appsec.block.templates.send(content_format)
|
|
94
106
|
end
|
|
107
|
+
|
|
108
|
+
template.gsub(SECURITY_RESPONSE_ID_PLACEHOLDER, security_response_id.to_s)
|
|
95
109
|
end
|
|
96
110
|
end
|
|
97
111
|
end
|
|
@@ -15,10 +15,12 @@ require_relative '../../tracing/component'
|
|
|
15
15
|
require_relative '../../profiling/component'
|
|
16
16
|
require_relative '../../appsec/component'
|
|
17
17
|
require_relative '../../di/component'
|
|
18
|
+
require_relative '../../open_feature/component'
|
|
18
19
|
require_relative '../../error_tracking/component'
|
|
19
20
|
require_relative '../crashtracking/component'
|
|
20
21
|
require_relative '../environment/agent_info'
|
|
21
22
|
require_relative '../process_discovery'
|
|
23
|
+
require_relative '../../data_streams/processor'
|
|
22
24
|
|
|
23
25
|
module Datadog
|
|
24
26
|
module Core
|
|
@@ -75,11 +77,26 @@ module Datadog
|
|
|
75
77
|
|
|
76
78
|
Datadog::Core::Crashtracking::Component.build(settings, agent_settings, logger: logger)
|
|
77
79
|
end
|
|
80
|
+
|
|
81
|
+
def build_data_streams(settings, agent_settings, logger)
|
|
82
|
+
return unless settings.data_streams.enabled
|
|
83
|
+
|
|
84
|
+
Datadog::DataStreams::Processor.new(
|
|
85
|
+
interval: settings.data_streams.interval,
|
|
86
|
+
logger: logger,
|
|
87
|
+
settings: settings,
|
|
88
|
+
agent_settings: agent_settings
|
|
89
|
+
)
|
|
90
|
+
rescue => e
|
|
91
|
+
logger.warn("Failed to initialize Data Streams Monitoring: #{e.class}: #{e}")
|
|
92
|
+
nil
|
|
93
|
+
end
|
|
78
94
|
end
|
|
79
95
|
|
|
80
96
|
attr_reader \
|
|
81
97
|
:health_metrics,
|
|
82
98
|
:settings,
|
|
99
|
+
:agent_settings,
|
|
83
100
|
:logger,
|
|
84
101
|
:remote,
|
|
85
102
|
:profiler,
|
|
@@ -90,7 +107,9 @@ module Datadog
|
|
|
90
107
|
:error_tracking,
|
|
91
108
|
:dynamic_instrumentation,
|
|
92
109
|
:appsec,
|
|
93
|
-
:agent_info
|
|
110
|
+
:agent_info,
|
|
111
|
+
:data_streams,
|
|
112
|
+
:open_feature
|
|
94
113
|
|
|
95
114
|
def initialize(settings)
|
|
96
115
|
@settings = settings
|
|
@@ -102,7 +121,7 @@ module Datadog
|
|
|
102
121
|
# This agent_settings is intended for use within Core. If you require
|
|
103
122
|
# agent_settings within a product outside of core you should extend
|
|
104
123
|
# the Core resolver from within your product/component's namespace.
|
|
105
|
-
agent_settings = AgentSettingsResolver.call(settings, logger: @logger)
|
|
124
|
+
@agent_settings = AgentSettingsResolver.call(settings, logger: @logger)
|
|
106
125
|
|
|
107
126
|
# Exposes agent capability information for detection by any components
|
|
108
127
|
@agent_info = Core::Environment::AgentInfo.new(agent_settings, logger: @logger)
|
|
@@ -124,8 +143,10 @@ module Datadog
|
|
|
124
143
|
@runtime_metrics = self.class.build_runtime_metrics_worker(settings, @logger, telemetry)
|
|
125
144
|
@health_metrics = self.class.build_health_metrics(settings, @logger, telemetry)
|
|
126
145
|
@appsec = Datadog::AppSec::Component.build_appsec_component(settings, telemetry: telemetry)
|
|
146
|
+
@open_feature = OpenFeature::Component.build(settings, agent_settings, logger: @logger, telemetry: telemetry)
|
|
127
147
|
@dynamic_instrumentation = Datadog::DI::Component.build(settings, agent_settings, @logger, telemetry: telemetry)
|
|
128
148
|
@error_tracking = Datadog::ErrorTracking::Component.build(settings, @tracer, @logger)
|
|
149
|
+
@data_streams = self.class.build_data_streams(settings, agent_settings, @logger)
|
|
129
150
|
@environment_logger_extra[:dynamic_instrumentation_enabled] = !!@dynamic_instrumentation
|
|
130
151
|
|
|
131
152
|
# Configure non-privileged components.
|
|
@@ -142,7 +163,7 @@ module Datadog
|
|
|
142
163
|
|
|
143
164
|
# Starts up components
|
|
144
165
|
def startup!(settings, old_state: nil)
|
|
145
|
-
telemetry.start(old_state&.telemetry_enabled
|
|
166
|
+
telemetry.start(old_state&.telemetry_enabled?, components: self)
|
|
146
167
|
|
|
147
168
|
if settings.profiling.enabled
|
|
148
169
|
if profiler
|
|
@@ -182,6 +203,9 @@ module Datadog
|
|
|
182
203
|
# Shutdown DI after remote, since remote config triggers DI operations.
|
|
183
204
|
dynamic_instrumentation&.shutdown!
|
|
184
205
|
|
|
206
|
+
# Shutdown OpenFeature component
|
|
207
|
+
open_feature&.shutdown!
|
|
208
|
+
|
|
185
209
|
# Decommission AppSec
|
|
186
210
|
appsec&.shutdown!
|
|
187
211
|
|
|
@@ -195,6 +219,9 @@ module Datadog
|
|
|
195
219
|
# Shutdown workers
|
|
196
220
|
runtime_metrics.stop(true, close_metrics: false)
|
|
197
221
|
|
|
222
|
+
# Shutdown Data Streams Monitoring processor
|
|
223
|
+
data_streams&.stop(true)
|
|
224
|
+
|
|
198
225
|
# Shutdown the old metrics, unless they are still being used.
|
|
199
226
|
# (e.g. custom Statsd instances.)
|
|
200
227
|
#
|
|
@@ -57,7 +57,7 @@ module Datadog
|
|
|
57
57
|
# Until we've correctly implemented support for datadog-ci-rb, we disable config inversion if ci is enabled.
|
|
58
58
|
if !defined?(::Datadog::CI) &&
|
|
59
59
|
(name.start_with?('DD_', 'OTEL_') || @alias_to_canonical[name]) &&
|
|
60
|
-
!@supported_configurations
|
|
60
|
+
!@supported_configurations.include?(name)
|
|
61
61
|
if defined?(@raise_on_unknown_env_var) && @raise_on_unknown_env_var # Only enabled for tests!
|
|
62
62
|
if @alias_to_canonical[name]
|
|
63
63
|
raise "Please use #{@alias_to_canonical[name]} instead of #{name}. See docs/AccessEnvironmentVariables.md for details."
|
|
@@ -12,6 +12,7 @@ require_relative '../remote/ext'
|
|
|
12
12
|
require_relative '../../profiling/ext'
|
|
13
13
|
|
|
14
14
|
require_relative '../../tracing/configuration/settings'
|
|
15
|
+
require_relative '../../opentelemetry/configuration/settings'
|
|
15
16
|
|
|
16
17
|
module Datadog
|
|
17
18
|
module Core
|
|
@@ -828,6 +829,7 @@ module Datadog
|
|
|
828
829
|
|
|
829
830
|
# Overrides agentless telemetry URL. To be used internally for testing purposes only.
|
|
830
831
|
#
|
|
832
|
+
# @default `DD_TELEMETRY_AGENTLESS_URL` environment variable, otherwise `nil`.
|
|
831
833
|
# @return [String]
|
|
832
834
|
# @!visibility private
|
|
833
835
|
option :agentless_url_override do |o|
|
|
@@ -1003,6 +1005,16 @@ module Datadog
|
|
|
1003
1005
|
end
|
|
1004
1006
|
end
|
|
1005
1007
|
|
|
1008
|
+
# Enable experimental process tags propagation such that payloads like spans contain the process tag.
|
|
1009
|
+
#
|
|
1010
|
+
# @default `DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED` environment variable, otherwise `false`
|
|
1011
|
+
# @return [Boolean]
|
|
1012
|
+
option :experimental_propagate_process_tags_enabled do |o|
|
|
1013
|
+
o.env 'DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED'
|
|
1014
|
+
o.default false
|
|
1015
|
+
o.type :bool
|
|
1016
|
+
end
|
|
1017
|
+
|
|
1006
1018
|
# Tracer specific configuration starting with APM (e.g. DD_APM_TRACING_ENABLED).
|
|
1007
1019
|
# @public_api
|
|
1008
1020
|
settings :apm do
|
|
@@ -1030,6 +1042,8 @@ module Datadog
|
|
|
1030
1042
|
# TODO: Tracing should manage its own settings.
|
|
1031
1043
|
# Keep this extension here for now to keep things working.
|
|
1032
1044
|
extend Datadog::Tracing::Configuration::Settings
|
|
1045
|
+
|
|
1046
|
+
extend Datadog::OpenTelemetry::Configuration::Settings
|
|
1033
1047
|
end
|
|
1034
1048
|
# standard:enable Metrics/BlockLength
|
|
1035
1049
|
end
|