datadog 2.21.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 +106 -2
- data/ext/LIBDATADOG_DEVELOPMENT.md +3 -0
- data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -1
- 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/ddsketch.c +106 -0
- data/ext/libdatadog_api/feature_flags.c +554 -0
- data/ext/libdatadog_api/feature_flags.h +5 -0
- data/ext/libdatadog_api/init.c +5 -0
- data/ext/libdatadog_api/library_config.c +34 -25
- data/ext/libdatadog_api/process_discovery.c +19 -13
- data/ext/libdatadog_extconf_helpers.rb +1 -1
- data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +26 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +59 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +29 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +26 -0
- data/lib/datadog/appsec/api_security/endpoint_collection.rb +10 -0
- 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/waf_rules/README.md +30 -36
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +359 -4
- data/lib/datadog/appsec/assets/waf_rules/strict.json +43 -2
- data/lib/datadog/appsec/assets.rb +1 -1
- data/lib/datadog/appsec/compressed_json.rb +1 -1
- data/lib/datadog/appsec/configuration/settings.rb +9 -0
- data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +3 -1
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +3 -2
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +3 -1
- data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +3 -1
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +9 -4
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +5 -1
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +7 -2
- data/lib/datadog/appsec/contrib/rails/patcher.rb +30 -0
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +3 -1
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +10 -4
- data/lib/datadog/appsec/event.rb +12 -14
- data/lib/datadog/appsec/metrics/collector.rb +19 -3
- data/lib/datadog/appsec/metrics/telemetry_exporter.rb +2 -1
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +4 -4
- data/lib/datadog/appsec/remote.rb +29 -13
- data/lib/datadog/appsec/response.rb +18 -4
- data/lib/datadog/appsec/security_engine/result.rb +28 -9
- data/lib/datadog/appsec/security_engine/runner.rb +17 -7
- data/lib/datadog/appsec/security_event.rb +5 -7
- data/lib/datadog/core/configuration/components.rb +44 -9
- data/lib/datadog/core/configuration/config_helper.rb +1 -1
- data/lib/datadog/core/configuration/settings.rb +14 -0
- data/lib/datadog/core/configuration/stable_config.rb +10 -0
- data/lib/datadog/core/configuration/supported_configurations.rb +330 -299
- data/lib/datadog/core/configuration.rb +1 -1
- data/lib/datadog/core/ddsketch.rb +19 -0
- data/lib/datadog/core/environment/ext.rb +6 -0
- data/lib/datadog/core/environment/process.rb +79 -0
- data/lib/datadog/core/environment/yjit.rb +2 -1
- data/lib/datadog/core/feature_flags.rb +61 -0
- data/lib/datadog/core/pin.rb +4 -8
- data/lib/datadog/core/process_discovery.rb +4 -2
- data/lib/datadog/core/remote/client/capabilities.rb +7 -0
- data/lib/datadog/core/remote/component.rb +4 -6
- 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 +18 -3
- data/lib/datadog/core/telemetry/emitter.rb +6 -6
- data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +30 -0
- 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/event.rb +1 -0
- 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/transport/response.rb +4 -1
- 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 +22 -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/boot.rb +1 -0
- data/lib/datadog/di/component.rb +14 -16
- data/lib/datadog/di/context.rb +70 -0
- data/lib/datadog/di/el/compiler.rb +164 -0
- data/lib/datadog/di/el/evaluator.rb +159 -0
- data/lib/datadog/di/el/expression.rb +42 -0
- data/lib/datadog/di/el.rb +5 -0
- data/lib/datadog/di/error.rb +29 -0
- data/lib/datadog/di/instrumenter.rb +163 -48
- data/lib/datadog/di/probe.rb +55 -15
- data/lib/datadog/di/probe_builder.rb +39 -1
- data/lib/datadog/di/probe_manager.rb +13 -4
- data/lib/datadog/di/probe_notification_builder.rb +105 -67
- data/lib/datadog/di/proc_responder.rb +32 -0
- data/lib/datadog/di/serializer.rb +151 -7
- 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/component.rb +6 -17
- data/lib/datadog/tracing/configuration/dynamic.rb +2 -2
- data/lib/datadog/tracing/configuration/ext.rb +9 -0
- data/lib/datadog/tracing/configuration/settings.rb +77 -3
- 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/component.rb +2 -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/configuration/settings.rb +7 -0
- data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +74 -44
- 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 +9 -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 +92 -16
- data/ext/libdatadog_api/macos_development.md +0 -26
- 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
|
@@ -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
|
|
@@ -26,8 +28,6 @@ module Datadog
|
|
|
26
28
|
# Global components for the trace library.
|
|
27
29
|
class Components
|
|
28
30
|
class << self
|
|
29
|
-
include Datadog::Tracing::Component
|
|
30
|
-
|
|
31
31
|
def build_health_metrics(settings, logger, telemetry)
|
|
32
32
|
settings = settings.health_metrics
|
|
33
33
|
options = {enabled: settings.enabled}
|
|
@@ -77,12 +77,26 @@ module Datadog
|
|
|
77
77
|
|
|
78
78
|
Datadog::Core::Crashtracking::Component.build(settings, agent_settings, logger: logger)
|
|
79
79
|
end
|
|
80
|
-
end
|
|
81
80
|
|
|
82
|
-
|
|
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
|
|
94
|
+
end
|
|
83
95
|
|
|
84
96
|
attr_reader \
|
|
85
97
|
:health_metrics,
|
|
98
|
+
:settings,
|
|
99
|
+
:agent_settings,
|
|
86
100
|
:logger,
|
|
87
101
|
:remote,
|
|
88
102
|
:profiler,
|
|
@@ -93,17 +107,21 @@ module Datadog
|
|
|
93
107
|
:error_tracking,
|
|
94
108
|
:dynamic_instrumentation,
|
|
95
109
|
:appsec,
|
|
96
|
-
:agent_info
|
|
110
|
+
:agent_info,
|
|
111
|
+
:data_streams,
|
|
112
|
+
:open_feature
|
|
97
113
|
|
|
98
114
|
def initialize(settings)
|
|
115
|
+
@settings = settings
|
|
99
116
|
@logger = self.class.build_logger(settings)
|
|
100
117
|
@environment_logger_extra = {}
|
|
118
|
+
StableConfig.log_result(@logger)
|
|
101
119
|
Deprecations.log_deprecations_from_all_sources(@logger)
|
|
102
120
|
|
|
103
121
|
# This agent_settings is intended for use within Core. If you require
|
|
104
122
|
# agent_settings within a product outside of core you should extend
|
|
105
123
|
# the Core resolver from within your product/component's namespace.
|
|
106
|
-
agent_settings = AgentSettingsResolver.call(settings, logger: @logger)
|
|
124
|
+
@agent_settings = AgentSettingsResolver.call(settings, logger: @logger)
|
|
107
125
|
|
|
108
126
|
# Exposes agent capability information for detection by any components
|
|
109
127
|
@agent_info = Core::Environment::AgentInfo.new(agent_settings, logger: @logger)
|
|
@@ -111,7 +129,7 @@ module Datadog
|
|
|
111
129
|
@telemetry = self.class.build_telemetry(settings, agent_settings, @logger)
|
|
112
130
|
|
|
113
131
|
@remote = Remote::Component.build(settings, agent_settings, logger: @logger, telemetry: telemetry)
|
|
114
|
-
@tracer =
|
|
132
|
+
@tracer = Datadog::Tracing::Component.build_tracer(settings, agent_settings, logger: @logger)
|
|
115
133
|
@crashtracker = self.class.build_crashtracker(settings, agent_settings, logger: @logger)
|
|
116
134
|
|
|
117
135
|
@profiler, profiler_logger_extra = Datadog::Profiling::Component.build_profiler_component(
|
|
@@ -125,16 +143,27 @@ module Datadog
|
|
|
125
143
|
@runtime_metrics = self.class.build_runtime_metrics_worker(settings, @logger, telemetry)
|
|
126
144
|
@health_metrics = self.class.build_health_metrics(settings, @logger, telemetry)
|
|
127
145
|
@appsec = Datadog::AppSec::Component.build_appsec_component(settings, telemetry: telemetry)
|
|
146
|
+
@open_feature = OpenFeature::Component.build(settings, agent_settings, logger: @logger, telemetry: telemetry)
|
|
128
147
|
@dynamic_instrumentation = Datadog::DI::Component.build(settings, agent_settings, @logger, telemetry: telemetry)
|
|
129
148
|
@error_tracking = Datadog::ErrorTracking::Component.build(settings, @tracer, @logger)
|
|
149
|
+
@data_streams = self.class.build_data_streams(settings, agent_settings, @logger)
|
|
130
150
|
@environment_logger_extra[:dynamic_instrumentation_enabled] = !!@dynamic_instrumentation
|
|
131
151
|
|
|
132
|
-
|
|
152
|
+
# Configure non-privileged components.
|
|
153
|
+
Datadog::Tracing::Contrib::Component.configure(settings)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# Hot-swaps with a new sampler.
|
|
157
|
+
# This operation acquires the Components lock to ensure
|
|
158
|
+
# there is no concurrent modification of the sampler.
|
|
159
|
+
def reconfigure_sampler(settings = Datadog.configuration)
|
|
160
|
+
sampler = Datadog::Tracing::Component.build_sampler(settings)
|
|
161
|
+
Datadog.send(:safely_synchronize) { tracer.sampler.sampler = sampler }
|
|
133
162
|
end
|
|
134
163
|
|
|
135
164
|
# Starts up components
|
|
136
165
|
def startup!(settings, old_state: nil)
|
|
137
|
-
telemetry.start(old_state&.telemetry_enabled
|
|
166
|
+
telemetry.start(old_state&.telemetry_enabled?, components: self)
|
|
138
167
|
|
|
139
168
|
if settings.profiling.enabled
|
|
140
169
|
if profiler
|
|
@@ -174,6 +203,9 @@ module Datadog
|
|
|
174
203
|
# Shutdown DI after remote, since remote config triggers DI operations.
|
|
175
204
|
dynamic_instrumentation&.shutdown!
|
|
176
205
|
|
|
206
|
+
# Shutdown OpenFeature component
|
|
207
|
+
open_feature&.shutdown!
|
|
208
|
+
|
|
177
209
|
# Decommission AppSec
|
|
178
210
|
appsec&.shutdown!
|
|
179
211
|
|
|
@@ -187,6 +219,9 @@ module Datadog
|
|
|
187
219
|
# Shutdown workers
|
|
188
220
|
runtime_metrics.stop(true, close_metrics: false)
|
|
189
221
|
|
|
222
|
+
# Shutdown Data Streams Monitoring processor
|
|
223
|
+
data_streams&.stop(true)
|
|
224
|
+
|
|
190
225
|
# Shutdown the old metrics, unless they are still being used.
|
|
191
226
|
# (e.g. custom Statsd instances.)
|
|
192
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
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative '../utils/only_once'
|
|
4
|
+
|
|
3
5
|
module Datadog
|
|
4
6
|
module Core
|
|
5
7
|
module Configuration
|
|
6
8
|
# Import config from config files (fleet automation)
|
|
7
9
|
module StableConfig
|
|
10
|
+
LOG_ONLY_ONCE = Utils::OnlyOnce.new
|
|
11
|
+
|
|
8
12
|
def self.extract_configuration
|
|
9
13
|
if (libdatadog_api_failure = Datadog::Core::LIBDATADOG_API_FAILURE)
|
|
10
14
|
Datadog.config_init_logger.debug("Cannot enable stable config: #{libdatadog_api_failure}")
|
|
@@ -16,6 +20,12 @@ module Datadog
|
|
|
16
20
|
def self.configuration
|
|
17
21
|
@configuration ||= StableConfig.extract_configuration
|
|
18
22
|
end
|
|
23
|
+
|
|
24
|
+
def self.log_result(logger)
|
|
25
|
+
LOG_ONLY_ONCE.run do
|
|
26
|
+
logger.debug(configuration[:logs]) if configuration[:logs]
|
|
27
|
+
end
|
|
28
|
+
end
|
|
19
29
|
end
|
|
20
30
|
end
|
|
21
31
|
end
|