datadog 2.17.0 → 2.19.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 +90 -1
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +63 -56
- data/ext/datadog_profiling_native_extension/collectors_stack.c +263 -76
- data/ext/datadog_profiling_native_extension/collectors_stack.h +20 -3
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +62 -12
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +7 -0
- data/ext/datadog_profiling_native_extension/heap_recorder.c +239 -363
- data/ext/datadog_profiling_native_extension/heap_recorder.h +4 -6
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +22 -0
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +8 -5
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +38 -26
- data/ext/datadog_profiling_native_extension/private_vm_api_access.h +6 -4
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +1 -13
- data/ext/datadog_profiling_native_extension/ruby_helpers.h +3 -11
- data/ext/datadog_profiling_native_extension/stack_recorder.c +154 -57
- data/ext/libdatadog_api/extconf.rb +2 -2
- data/ext/libdatadog_api/library_config.c +54 -12
- data/ext/libdatadog_api/library_config.h +6 -0
- data/ext/libdatadog_api/process_discovery.c +2 -7
- data/ext/libdatadog_extconf_helpers.rb +1 -1
- data/lib/datadog/appsec/api_security/lru_cache.rb +9 -2
- data/lib/datadog/appsec/api_security/route_extractor.rb +71 -0
- data/lib/datadog/appsec/api_security/sampler.rb +59 -0
- data/lib/datadog/appsec/api_security.rb +14 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +257 -85
- data/lib/datadog/appsec/assets/waf_rules/strict.json +10 -78
- data/lib/datadog/appsec/component.rb +30 -54
- data/lib/datadog/appsec/configuration/settings.rb +60 -2
- data/lib/datadog/appsec/context.rb +6 -6
- data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +27 -16
- data/lib/datadog/appsec/instrumentation/gateway/argument.rb +1 -1
- data/lib/datadog/appsec/processor/rule_loader.rb +5 -6
- data/lib/datadog/appsec/remote.rb +15 -55
- data/lib/datadog/appsec/security_engine/engine.rb +194 -0
- data/lib/datadog/appsec/security_engine/runner.rb +10 -11
- data/lib/datadog/appsec.rb +4 -7
- data/lib/datadog/core/configuration/agent_settings.rb +52 -0
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +1 -43
- data/lib/datadog/core/configuration/components.rb +2 -4
- data/lib/datadog/core/configuration/option.rb +9 -9
- data/lib/datadog/core/configuration/settings.rb +42 -10
- data/lib/datadog/core/configuration/stable_config.rb +1 -2
- data/lib/datadog/core/crashtracking/tag_builder.rb +4 -22
- data/lib/datadog/core/process_discovery/tracer_memfd.rb +15 -0
- data/lib/datadog/core/process_discovery.rb +5 -1
- data/lib/datadog/core/remote/configuration/repository.rb +12 -0
- data/lib/datadog/core/tag_builder.rb +56 -0
- data/lib/datadog/core/telemetry/component.rb +8 -4
- data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +1 -0
- data/lib/datadog/core/telemetry/event/app_started.rb +148 -40
- data/lib/datadog/core/telemetry/logger.rb +5 -4
- data/lib/datadog/core/telemetry/logging.rb +11 -5
- data/lib/datadog/core/transport/http/adapters/net.rb +17 -2
- data/lib/datadog/core/transport/http/builder.rb +2 -2
- data/lib/datadog/core/transport/http/env.rb +8 -0
- data/lib/datadog/core/utils.rb +7 -0
- data/lib/datadog/di/instrumenter.rb +48 -5
- data/lib/datadog/di/probe_notification_builder.rb +37 -42
- data/lib/datadog/di/probe_notifier_worker.rb +9 -1
- data/lib/datadog/di/serializer.rb +10 -2
- data/lib/datadog/di/transport/http/input.rb +10 -0
- data/lib/datadog/di/transport/input.rb +10 -2
- data/lib/datadog/di.rb +0 -6
- data/lib/datadog/kit/appsec/events/v2.rb +195 -0
- data/lib/datadog/profiling/collectors/code_provenance.rb +17 -8
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +6 -0
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -0
- data/lib/datadog/profiling/collectors/info.rb +41 -0
- data/lib/datadog/profiling/collectors/thread_context.rb +16 -1
- data/lib/datadog/profiling/component.rb +8 -9
- data/lib/datadog/profiling/exporter.rb +9 -3
- data/lib/datadog/profiling/ext.rb +0 -12
- data/lib/datadog/profiling/http_transport.rb +2 -2
- data/lib/datadog/profiling/profiler.rb +2 -0
- data/lib/datadog/profiling/scheduler.rb +2 -1
- data/lib/datadog/profiling/sequence_tracker.rb +44 -0
- data/lib/datadog/profiling/stack_recorder.rb +5 -5
- data/lib/datadog/profiling/tag_builder.rb +7 -37
- data/lib/datadog/profiling/tasks/setup.rb +2 -0
- data/lib/datadog/profiling.rb +1 -0
- data/lib/datadog/single_step_instrument.rb +9 -0
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +15 -0
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +19 -12
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +7 -1
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +4 -2
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +16 -6
- data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -1
- data/lib/datadog/tracing/contrib/rails/runner.rb +61 -40
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -2
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +3 -1
- data/lib/datadog/tracing/span_event.rb +1 -1
- data/lib/datadog/tracing/span_operation.rb +22 -0
- data/lib/datadog/tracing/sync_writer.rb +1 -1
- data/lib/datadog/tracing/trace_operation.rb +12 -4
- data/lib/datadog/tracing/tracer.rb +6 -2
- data/lib/datadog/version.rb +1 -1
- data/lib/datadog.rb +7 -0
- metadata +14 -10
- data/lib/datadog/appsec/assets/waf_rules/processors.json +0 -321
- data/lib/datadog/appsec/assets/waf_rules/scanners.json +0 -1023
- data/lib/datadog/appsec/processor/rule_merger.rb +0 -171
- data/lib/datadog/appsec/processor.rb +0 -107
@@ -10,34 +10,48 @@ module Datadog
|
|
10
10
|
# * `-`: for code provided through the STDIN.
|
11
11
|
# * File path: for code provided through a local file.
|
12
12
|
# * `inline code`: for code provided directly as a command line argument.
|
13
|
+
#
|
14
|
+
# The difficulty in instrumenting the Rails Runner is that
|
15
|
+
# the Rails application (and as a consequence the Datadog tracing library)
|
16
|
+
# is loaded very late in the runner execution.
|
17
|
+
# The Rails application is loaded inside the same method the method
|
18
|
+
# that directly executes the code the user wants the runner to execute:
|
19
|
+
#
|
20
|
+
# ```ruby
|
21
|
+
# def perform(code_or_file = nil, *command_argv)
|
22
|
+
# boot_application! # Loads the Rails and Datadog
|
23
|
+
#
|
24
|
+
# if code_or_file == "-"
|
25
|
+
# eval($stdin.read, TOPLEVEL_BINDING, "stdin") # Calls the user code for this Runner
|
26
|
+
# # ...
|
27
|
+
# ```
|
28
|
+
#
|
29
|
+
# This means that there's no time to instrument the calling method, `perform`, which
|
30
|
+
# would be ideal. Instead, we resort to instrumenting `eval` and `load`, but
|
31
|
+
# only for calls from the `Rails::Command::RunnerCommand` class.
|
32
|
+
#
|
13
33
|
# @see https://guides.rubyonrails.org/v6.1/command_line.html#bin-rails-runner
|
14
34
|
module Runner
|
15
35
|
# Limit the maximum size of the source code captured in the source tag.
|
16
36
|
MAX_TAG_VALUE_SIZE = 4096
|
17
37
|
private_constant :MAX_TAG_VALUE_SIZE
|
18
38
|
|
19
|
-
|
20
|
-
|
39
|
+
# Instruments the `Kernel.eval` method, but only for the
|
40
|
+
# `Rails::Command::RunnerCommand` class.
|
41
|
+
def eval(*args)
|
42
|
+
source = args[0]
|
43
|
+
|
44
|
+
if args[2] == 'stdin'
|
21
45
|
name = Ext::SPAN_RUNNER_STDIN
|
22
|
-
resource = nil
|
23
46
|
operation = Ext::TAG_OPERATION_STDIN
|
24
|
-
# The source is not yet available for STDIN, but it will be captured in `eval`.
|
25
|
-
elsif File.exist?(code_or_file)
|
26
|
-
name = Ext::SPAN_RUNNER_FILE
|
27
|
-
resource = code_or_file
|
28
|
-
operation = Ext::TAG_OPERATION_FILE
|
29
|
-
source = File.read(code_or_file)
|
30
47
|
else
|
31
48
|
name = Ext::SPAN_RUNNER_INLINE
|
32
|
-
resource = nil
|
33
49
|
operation = Ext::TAG_OPERATION_INLINE
|
34
|
-
source = code_or_file
|
35
50
|
end
|
36
51
|
|
37
52
|
Tracing.trace(
|
38
53
|
name,
|
39
54
|
service: Datadog.configuration.tracing[:rails][:service_name],
|
40
|
-
resource: resource,
|
41
55
|
tags: {
|
42
56
|
Tracing::Metadata::Ext::TAG_COMPONENT => Ext::TAG_COMPONENT,
|
43
57
|
Tracing::Metadata::Ext::TAG_OPERATION => operation,
|
@@ -55,39 +69,46 @@ module Datadog
|
|
55
69
|
end
|
56
70
|
end
|
57
71
|
|
58
|
-
|
59
|
-
|
60
|
-
span = Datadog::Tracing.active_span
|
61
|
-
if span&.name == Ext::SPAN_RUNNER_STDIN
|
62
|
-
source = args[0]
|
63
|
-
span.set_tag(
|
64
|
-
Ext::TAG_RUNNER_SOURCE,
|
65
|
-
Core::Utils.truncate(source, MAX_TAG_VALUE_SIZE)
|
66
|
-
)
|
67
|
-
end
|
68
|
-
|
69
|
-
super
|
72
|
+
def self.prepend(base)
|
73
|
+
base.const_set(:Kernel, Kernel)
|
70
74
|
end
|
71
75
|
|
72
|
-
|
73
|
-
|
76
|
+
# Instruments the `Kernel.load` method, but only for the
|
77
|
+
# `Rails::Command::RunnerCommand` class.
|
78
|
+
module Kernel
|
79
|
+
def self.load(file, wrap = true)
|
80
|
+
name = Ext::SPAN_RUNNER_FILE
|
81
|
+
resource = file
|
82
|
+
operation = Ext::TAG_OPERATION_FILE
|
83
|
+
|
84
|
+
begin
|
85
|
+
# Reads one more byte than the limit to allow us to check if the source exceeds the limit.
|
86
|
+
source = File.read(file, MAX_TAG_VALUE_SIZE + 1)
|
87
|
+
rescue => e
|
88
|
+
Datadog.logger.debug("Failed to read file '#{file}' for Rails runner: #{e.message}")
|
89
|
+
end
|
74
90
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
91
|
+
Tracing.trace(
|
92
|
+
name,
|
93
|
+
service: Datadog.configuration.tracing[:rails][:service_name],
|
94
|
+
resource: resource,
|
95
|
+
tags: {
|
96
|
+
Tracing::Metadata::Ext::TAG_COMPONENT => Ext::TAG_COMPONENT,
|
97
|
+
Tracing::Metadata::Ext::TAG_OPERATION => operation,
|
98
|
+
}
|
99
|
+
) do |span|
|
100
|
+
if source
|
101
|
+
span.set_tag(
|
102
|
+
Ext::TAG_RUNNER_SOURCE,
|
103
|
+
Core::Utils.truncate(source, MAX_TAG_VALUE_SIZE)
|
104
|
+
)
|
105
|
+
end
|
106
|
+
Contrib::Analytics.set_rate!(span, Datadog.configuration.tracing[:rails])
|
107
|
+
|
108
|
+
super
|
109
|
+
end
|
86
110
|
end
|
87
|
-
ret
|
88
111
|
end
|
89
|
-
|
90
|
-
ruby2_keywords :find_by_namespace if respond_to?(:ruby2_keywords, true)
|
91
112
|
end
|
92
113
|
end
|
93
114
|
end
|
@@ -13,6 +13,7 @@ module Datadog
|
|
13
13
|
ENV_ANALYTICS_ENABLED = 'DD_TRACE_SIDEKIQ_ANALYTICS_ENABLED'
|
14
14
|
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_SIDEKIQ_ANALYTICS_SAMPLE_RATE'
|
15
15
|
SERVICE_NAME = 'sidekiq'
|
16
|
+
SIDEKIQ_8_SECONDS_PER_INTEGER = 0.001 # Sidekiq 8 uses integer epoch milliseconds, rather than epoch floats
|
16
17
|
SPAN_PUSH = 'sidekiq.push'
|
17
18
|
SPAN_JOB = 'sidekiq.job'
|
18
19
|
SPAN_JOB_FETCH = 'sidekiq.job_fetch'
|
@@ -22,7 +22,7 @@ module Datadog
|
|
22
22
|
@quantize = options[:quantize] || configuration[:quantize]
|
23
23
|
end
|
24
24
|
|
25
|
-
def call(worker, job, queue)
|
25
|
+
def call(worker, job, queue) # rubocop:disable Metrics/MethodLength
|
26
26
|
resource = job_resource(job)
|
27
27
|
|
28
28
|
if @distributed_tracing
|
@@ -61,7 +61,10 @@ module Datadog
|
|
61
61
|
span.set_tag(Ext::TAG_JOB_RETRY_COUNT, job['retry_count'])
|
62
62
|
span.set_tag(Ext::TAG_JOB_QUEUE, job['queue'])
|
63
63
|
span.set_tag(Ext::TAG_JOB_WRAPPER, job['class']) if job['wrapped']
|
64
|
-
|
64
|
+
|
65
|
+
enqueued_at = job['enqueued_at']
|
66
|
+
enqueued_at *= Ext::SIDEKIQ_8_SECONDS_PER_INTEGER if enqueued_at.is_a?(Integer)
|
67
|
+
span.set_tag(Ext::TAG_JOB_DELAY, 1000.0 * (Core::Utils::Time.now.utc.to_f - enqueued_at.to_f))
|
65
68
|
|
66
69
|
args = job['args']
|
67
70
|
if args && !args.empty?
|
@@ -84,7 +84,7 @@ module Datadog
|
|
84
84
|
# @return [Numeric, nil] tracer sample rate configured
|
85
85
|
def sample_rate
|
86
86
|
sampler = Datadog.configuration.tracing.sampler
|
87
|
-
return
|
87
|
+
return Datadog.configuration.tracing.sampling.default_rate unless sampler
|
88
88
|
|
89
89
|
sampler.sample_rate(nil) rescue nil
|
90
90
|
end
|
@@ -97,6 +97,8 @@ module Datadog
|
|
97
97
|
# @return [Hash, nil] sample rules configured
|
98
98
|
def sampling_rules
|
99
99
|
sampler = Datadog.configuration.tracing.sampler
|
100
|
+
return Datadog.configuration.tracing.sampling.rules unless sampler
|
101
|
+
|
100
102
|
return nil unless sampler.is_a?(Tracing::Sampling::PrioritySampler) &&
|
101
103
|
sampler.priority_sampler.is_a?(Tracing::Sampling::RuleSampler)
|
102
104
|
|
@@ -56,7 +56,7 @@ module Datadog
|
|
56
56
|
attr = {}
|
57
57
|
@attributes.each do |key, value|
|
58
58
|
attr[key] = if value.is_a?(Array)
|
59
|
-
{ type: ARRAY_TYPE, array_value: value.map { |v| serialize_native_attribute(v) } }
|
59
|
+
{ type: ARRAY_TYPE, array_value: { values: value.map { |v| serialize_native_attribute(v) } } }
|
60
60
|
else
|
61
61
|
serialize_native_attribute(value)
|
62
62
|
end
|
@@ -297,6 +297,28 @@ module Datadog
|
|
297
297
|
set_error_tags(e)
|
298
298
|
end
|
299
299
|
|
300
|
+
# Record an exception during the execution of this span. Multiple exceptions
|
301
|
+
# can be recorded on a span.
|
302
|
+
#
|
303
|
+
# @param [Exception] exception The exception to record
|
304
|
+
# @param [optional Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}]
|
305
|
+
# attributes One or more key:value pairs, where the keys must be
|
306
|
+
# strings and the values may be (array of) string, boolean or numeric
|
307
|
+
# type.
|
308
|
+
#
|
309
|
+
# @return [void]
|
310
|
+
def record_exception(exception, attributes: {})
|
311
|
+
exc = Core::Error.build_from(exception)
|
312
|
+
|
313
|
+
event_attributes = {
|
314
|
+
'exception.type' => exc.type,
|
315
|
+
'exception.message' => exc.message,
|
316
|
+
'exception.stacktrace' => exc.backtrace,
|
317
|
+
}
|
318
|
+
|
319
|
+
@span_events << SpanEvent.new('exception', attributes: event_attributes.merge!(attributes)) # steep:ignore
|
320
|
+
end
|
321
|
+
|
300
322
|
# Return a string representation of the span.
|
301
323
|
def to_s
|
302
324
|
"SpanOperation(name:#{@name},sid:#{@id},tid:#{@trace_id},pid:#{@parent_id})"
|
@@ -25,7 +25,7 @@ module Datadog
|
|
25
25
|
# @param [Datadog::Tracing::Transport::Traces::Transport] transport a custom transport instance.
|
26
26
|
# If provided, overrides `transport_options` and `agent_settings`.
|
27
27
|
# @param [Hash<Symbol,Object>] transport_options options for the default transport instance.
|
28
|
-
# @param [Datadog::Tracing::Configuration::
|
28
|
+
# @param [Datadog::Tracing::Configuration::AgentSettings] agent_settings agent options for
|
29
29
|
# the default transport instance.
|
30
30
|
def initialize(transport: nil, transport_options: {}, agent_settings: nil, logger: Datadog.logger)
|
31
31
|
@logger = logger
|
@@ -79,7 +79,7 @@ module Datadog
|
|
79
79
|
trace_state: nil,
|
80
80
|
trace_state_unknown_fields: nil,
|
81
81
|
remote_parent: false,
|
82
|
-
tracer: nil,
|
82
|
+
tracer: nil, # DEV-3.0: deprecated, remove in 3.0
|
83
83
|
baggage: nil
|
84
84
|
)
|
85
85
|
@logger = logger
|
@@ -106,7 +106,6 @@ module Datadog
|
|
106
106
|
@apm_tracing_enabled = apm_tracing_enabled
|
107
107
|
@trace_state = trace_state
|
108
108
|
@trace_state_unknown_fields = trace_state_unknown_fields
|
109
|
-
@tracer = tracer
|
110
109
|
@baggage = baggage
|
111
110
|
|
112
111
|
# Generic tags
|
@@ -329,7 +328,7 @@ module Datadog
|
|
329
328
|
span_id = @active_span && @active_span.id
|
330
329
|
span_id ||= @parent_span_id unless finished?
|
331
330
|
# sample the trace_operation with the tracer
|
332
|
-
|
331
|
+
events.trace_propagated.publish(self)
|
333
332
|
|
334
333
|
TraceDigest.new(
|
335
334
|
span_id: span_id,
|
@@ -399,12 +398,14 @@ module Datadog
|
|
399
398
|
attr_reader \
|
400
399
|
:span_before_start,
|
401
400
|
:span_finished,
|
402
|
-
:trace_finished
|
401
|
+
:trace_finished,
|
402
|
+
:trace_propagated
|
403
403
|
|
404
404
|
def initialize
|
405
405
|
@span_before_start = SpanBeforeStart.new
|
406
406
|
@span_finished = SpanFinished.new
|
407
407
|
@trace_finished = TraceFinished.new
|
408
|
+
@trace_propagated = TracePropagated.new
|
408
409
|
end
|
409
410
|
|
410
411
|
# Triggered before a span starts.
|
@@ -421,6 +422,13 @@ module Datadog
|
|
421
422
|
end
|
422
423
|
end
|
423
424
|
|
425
|
+
# Triggered when trace is being propagated between applications or contexts
|
426
|
+
class TracePropagated < Tracing::Event
|
427
|
+
def initialize
|
428
|
+
super(:trace_propagated)
|
429
|
+
end
|
430
|
+
end
|
431
|
+
|
424
432
|
# Triggered when the trace finishes, regardless of error.
|
425
433
|
class TraceFinished < Tracing::Event
|
426
434
|
def initialize
|
@@ -273,7 +273,7 @@ module Datadog
|
|
273
273
|
# Sample a span, tagging the trace as appropriate.
|
274
274
|
def sample_trace(trace_op)
|
275
275
|
begin
|
276
|
-
@sampler.sample!(trace_op)
|
276
|
+
@sampler.sample!(trace_op) if trace_op.sampling_priority.nil?
|
277
277
|
rescue StandardError => e
|
278
278
|
SAMPLE_TRACE_LOG_ONLY_ONCE.run do
|
279
279
|
logger.warn { "Failed to sample trace: #{e.class.name} #{e} at #{Array(e.backtrace).first}" }
|
@@ -378,7 +378,12 @@ module Datadog
|
|
378
378
|
event_span_op.service ||= @default_service
|
379
379
|
end
|
380
380
|
|
381
|
+
events.trace_propagated.subscribe do |event_trace_op|
|
382
|
+
sample_trace(event_trace_op)
|
383
|
+
end
|
384
|
+
|
381
385
|
events.span_finished.subscribe do |event_span, event_trace_op|
|
386
|
+
sample_trace(trace_op) if event_trace_op.sampling_priority.nil?
|
382
387
|
sample_span(event_trace_op, event_span)
|
383
388
|
flush_trace(event_trace_op)
|
384
389
|
end
|
@@ -516,7 +521,6 @@ module Datadog
|
|
516
521
|
|
517
522
|
# Flush finished spans from the trace buffer, send them to writer.
|
518
523
|
def flush_trace(trace_op)
|
519
|
-
sample_trace(trace_op) unless trace_op.sampling_priority
|
520
524
|
begin
|
521
525
|
trace = @trace_flush.consume!(trace_op)
|
522
526
|
write(trace) if trace && !trace.empty?
|
data/lib/datadog/version.rb
CHANGED
data/lib/datadog.rb
CHANGED
@@ -8,5 +8,12 @@ require_relative 'datadog/tracing/contrib'
|
|
8
8
|
require_relative 'datadog/profiling'
|
9
9
|
require_relative 'datadog/appsec'
|
10
10
|
require_relative 'datadog/di'
|
11
|
+
|
12
|
+
# Line probes will not work on Ruby < 2.6 because of lack of :script_compiled
|
13
|
+
# trace point. Activate DI automatically on supported Ruby versions but
|
14
|
+
# always load its settings so that, for example, turning DI off when
|
15
|
+
# we are on Ruby 2.5 does not produce exceptions.
|
16
|
+
require_relative 'datadog/di/boot' if RUBY_VERSION >= '2.6' && RUBY_ENGINE != 'jruby'
|
17
|
+
|
11
18
|
require_relative 'datadog/error_tracking'
|
12
19
|
require_relative 'datadog/kit'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datadog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -50,14 +50,14 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 1.
|
53
|
+
version: 1.24.1.0.3
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 1.
|
60
|
+
version: 1.24.1.0.3
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: libdatadog
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +170,14 @@ files:
|
|
170
170
|
- lib/datadog/appsec/anonymizer.rb
|
171
171
|
- lib/datadog/appsec/api_security.rb
|
172
172
|
- lib/datadog/appsec/api_security/lru_cache.rb
|
173
|
+
- lib/datadog/appsec/api_security/route_extractor.rb
|
174
|
+
- lib/datadog/appsec/api_security/sampler.rb
|
173
175
|
- lib/datadog/appsec/assets.rb
|
174
176
|
- lib/datadog/appsec/assets/blocked.html
|
175
177
|
- lib/datadog/appsec/assets/blocked.json
|
176
178
|
- lib/datadog/appsec/assets/blocked.text
|
177
179
|
- lib/datadog/appsec/assets/waf_rules/README.md
|
178
|
-
- lib/datadog/appsec/assets/waf_rules/processors.json
|
179
180
|
- lib/datadog/appsec/assets/waf_rules/recommended.json
|
180
|
-
- lib/datadog/appsec/assets/waf_rules/scanners.json
|
181
181
|
- lib/datadog/appsec/assets/waf_rules/strict.json
|
182
182
|
- lib/datadog/appsec/autoload.rb
|
183
183
|
- lib/datadog/appsec/component.rb
|
@@ -251,14 +251,13 @@ files:
|
|
251
251
|
- lib/datadog/appsec/metrics/telemetry.rb
|
252
252
|
- lib/datadog/appsec/monitor.rb
|
253
253
|
- lib/datadog/appsec/monitor/gateway/watcher.rb
|
254
|
-
- lib/datadog/appsec/processor.rb
|
255
254
|
- lib/datadog/appsec/processor/rule_loader.rb
|
256
|
-
- lib/datadog/appsec/processor/rule_merger.rb
|
257
255
|
- lib/datadog/appsec/rate_limiter.rb
|
258
256
|
- lib/datadog/appsec/remote.rb
|
259
257
|
- lib/datadog/appsec/response.rb
|
260
258
|
- lib/datadog/appsec/sample_rate.rb
|
261
259
|
- lib/datadog/appsec/security_engine.rb
|
260
|
+
- lib/datadog/appsec/security_engine/engine.rb
|
262
261
|
- lib/datadog/appsec/security_engine/result.rb
|
263
262
|
- lib/datadog/appsec/security_engine/runner.rb
|
264
263
|
- lib/datadog/appsec/security_event.rb
|
@@ -274,6 +273,7 @@ files:
|
|
274
273
|
- lib/datadog/core/buffer/thread_safe.rb
|
275
274
|
- lib/datadog/core/chunker.rb
|
276
275
|
- lib/datadog/core/configuration.rb
|
276
|
+
- lib/datadog/core/configuration/agent_settings.rb
|
277
277
|
- lib/datadog/core/configuration/agent_settings_resolver.rb
|
278
278
|
- lib/datadog/core/configuration/agentless_settings_resolver.rb
|
279
279
|
- lib/datadog/core/configuration/base.rb
|
@@ -321,6 +321,7 @@ files:
|
|
321
321
|
- lib/datadog/core/metrics/options.rb
|
322
322
|
- lib/datadog/core/pin.rb
|
323
323
|
- lib/datadog/core/process_discovery.rb
|
324
|
+
- lib/datadog/core/process_discovery/tracer_memfd.rb
|
324
325
|
- lib/datadog/core/rate_limiter.rb
|
325
326
|
- lib/datadog/core/remote.rb
|
326
327
|
- lib/datadog/core/remote/client.rb
|
@@ -348,6 +349,7 @@ files:
|
|
348
349
|
- lib/datadog/core/runtime/ext.rb
|
349
350
|
- lib/datadog/core/runtime/metrics.rb
|
350
351
|
- lib/datadog/core/semaphore.rb
|
352
|
+
- lib/datadog/core/tag_builder.rb
|
351
353
|
- lib/datadog/core/telemetry/component.rb
|
352
354
|
- lib/datadog/core/telemetry/emitter.rb
|
353
355
|
- lib/datadog/core/telemetry/event.rb
|
@@ -463,6 +465,7 @@ files:
|
|
463
465
|
- lib/datadog/error_tracking/filters.rb
|
464
466
|
- lib/datadog/kit.rb
|
465
467
|
- lib/datadog/kit/appsec/events.rb
|
468
|
+
- lib/datadog/kit/appsec/events/v2.rb
|
466
469
|
- lib/datadog/kit/enable_core_dumps.rb
|
467
470
|
- lib/datadog/kit/identity.rb
|
468
471
|
- lib/datadog/opentelemetry.rb
|
@@ -496,6 +499,7 @@ files:
|
|
496
499
|
- lib/datadog/profiling/preload.rb
|
497
500
|
- lib/datadog/profiling/profiler.rb
|
498
501
|
- lib/datadog/profiling/scheduler.rb
|
502
|
+
- lib/datadog/profiling/sequence_tracker.rb
|
499
503
|
- lib/datadog/profiling/stack_recorder.rb
|
500
504
|
- lib/datadog/profiling/tag_builder.rb
|
501
505
|
- lib/datadog/profiling/tasks/exec.rb
|
@@ -991,8 +995,8 @@ licenses:
|
|
991
995
|
- Apache-2.0
|
992
996
|
metadata:
|
993
997
|
allowed_push_host: https://rubygems.org
|
994
|
-
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.
|
995
|
-
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.
|
998
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.19.0/CHANGELOG.md
|
999
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.19.0
|
996
1000
|
post_install_message:
|
997
1001
|
rdoc_options: []
|
998
1002
|
require_paths:
|