datadog 2.12.1 → 2.17.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 +154 -2
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +16 -14
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +1 -4
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +10 -0
- data/ext/datadog_profiling_native_extension/encoded_profile.c +79 -0
- data/ext/datadog_profiling_native_extension/encoded_profile.h +8 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +3 -0
- data/ext/datadog_profiling_native_extension/heap_recorder.c +8 -1
- data/ext/datadog_profiling_native_extension/http_transport.c +60 -94
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +8 -0
- data/ext/datadog_profiling_native_extension/profiling.c +2 -0
- data/ext/datadog_profiling_native_extension/stack_recorder.c +23 -23
- data/ext/libdatadog_api/crashtracker.c +11 -12
- data/ext/libdatadog_api/crashtracker.h +5 -0
- data/ext/libdatadog_api/datadog_ruby_common.c +1 -4
- data/ext/libdatadog_api/datadog_ruby_common.h +10 -0
- data/ext/libdatadog_api/init.c +15 -0
- data/ext/libdatadog_api/library_config.c +122 -0
- data/ext/libdatadog_api/library_config.h +19 -0
- data/ext/libdatadog_api/macos_development.md +3 -3
- data/ext/libdatadog_api/process_discovery.c +117 -0
- data/ext/libdatadog_api/process_discovery.h +5 -0
- data/ext/libdatadog_extconf_helpers.rb +1 -1
- data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +89 -0
- data/lib/datadog/appsec/actions_handler.rb +24 -2
- data/lib/datadog/appsec/anonymizer.rb +16 -0
- data/lib/datadog/appsec/api_security/lru_cache.rb +49 -0
- data/lib/datadog/appsec/api_security.rb +9 -0
- data/lib/datadog/appsec/assets/waf_rules/README.md +50 -5
- data/lib/datadog/appsec/assets/waf_rules/processors.json +239 -10
- data/lib/datadog/appsec/assets/waf_rules/scanners.json +926 -17
- data/lib/datadog/appsec/autoload.rb +1 -1
- data/lib/datadog/appsec/component.rb +29 -20
- data/lib/datadog/appsec/compressed_json.rb +40 -0
- data/lib/datadog/appsec/configuration/settings.rb +93 -28
- data/lib/datadog/appsec/context.rb +1 -1
- data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +10 -12
- data/lib/datadog/appsec/contrib/active_record/integration.rb +2 -2
- data/lib/datadog/appsec/contrib/active_record/patcher.rb +22 -22
- data/lib/datadog/appsec/contrib/auto_instrument.rb +1 -1
- data/lib/datadog/appsec/contrib/devise/configuration.rb +7 -31
- data/lib/datadog/appsec/contrib/devise/data_extractor.rb +78 -0
- data/lib/datadog/appsec/contrib/devise/ext.rb +22 -0
- data/lib/datadog/appsec/contrib/devise/integration.rb +1 -2
- data/lib/datadog/appsec/contrib/devise/patcher.rb +34 -23
- data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +102 -0
- data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +69 -0
- data/lib/datadog/appsec/contrib/devise/{patcher/rememberable_patch.rb → patches/skip_signin_tracking_patch.rb} +2 -2
- data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +106 -0
- data/lib/datadog/appsec/contrib/excon/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +9 -10
- data/lib/datadog/appsec/contrib/faraday/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +8 -9
- data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +8 -9
- data/lib/datadog/appsec/contrib/graphql/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/ext.rb +34 -0
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +49 -32
- data/lib/datadog/appsec/contrib/rack/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +19 -18
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +11 -13
- data/lib/datadog/appsec/contrib/rails/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/patcher.rb +21 -21
- data/lib/datadog/appsec/contrib/rest_client/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +10 -11
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +17 -23
- data/lib/datadog/appsec/contrib/sinatra/integration.rb +1 -1
- data/lib/datadog/appsec/event.rb +96 -135
- data/lib/datadog/appsec/ext.rb +4 -2
- data/lib/datadog/appsec/instrumentation/gateway/argument.rb +7 -2
- data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +24 -0
- data/lib/datadog/appsec/instrumentation/gateway.rb +17 -22
- data/lib/datadog/appsec/metrics/telemetry.rb +1 -1
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +49 -14
- data/lib/datadog/appsec/processor/rule_loader.rb +26 -28
- data/lib/datadog/appsec/processor/rule_merger.rb +7 -6
- data/lib/datadog/appsec/processor.rb +1 -1
- data/lib/datadog/appsec/remote.rb +23 -11
- data/lib/datadog/appsec/response.rb +6 -6
- data/lib/datadog/appsec/security_engine/runner.rb +3 -3
- data/lib/datadog/appsec/security_event.rb +39 -0
- data/lib/datadog/appsec/utils.rb +0 -2
- data/lib/datadog/appsec.rb +1 -1
- data/lib/datadog/core/buffer/random.rb +18 -2
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +5 -5
- data/lib/datadog/core/configuration/agentless_settings_resolver.rb +176 -0
- data/lib/datadog/core/configuration/components.rb +50 -31
- data/lib/datadog/core/configuration/components_state.rb +23 -0
- data/lib/datadog/core/configuration/ext.rb +4 -0
- data/lib/datadog/core/configuration/option.rb +79 -43
- data/lib/datadog/core/configuration/option_definition.rb +4 -4
- data/lib/datadog/core/configuration/options.rb +3 -3
- data/lib/datadog/core/configuration/settings.rb +68 -35
- data/lib/datadog/core/configuration/stable_config.rb +23 -0
- data/lib/datadog/core/configuration.rb +40 -16
- data/lib/datadog/core/crashtracking/component.rb +3 -10
- data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
- data/lib/datadog/core/encoding.rb +1 -1
- data/lib/datadog/core/environment/agent_info.rb +4 -3
- data/lib/datadog/core/environment/cgroup.rb +10 -12
- data/lib/datadog/core/environment/container.rb +38 -40
- data/lib/datadog/core/environment/ext.rb +6 -6
- data/lib/datadog/core/environment/git.rb +1 -0
- data/lib/datadog/core/environment/identity.rb +3 -3
- data/lib/datadog/core/environment/platform.rb +3 -3
- data/lib/datadog/core/environment/variable_helpers.rb +1 -1
- data/lib/datadog/core/error.rb +11 -9
- data/lib/datadog/core/logger.rb +2 -2
- data/lib/datadog/core/metrics/client.rb +20 -21
- data/lib/datadog/core/metrics/logging.rb +5 -5
- data/lib/datadog/core/process_discovery.rb +32 -0
- data/lib/datadog/core/rate_limiter.rb +4 -2
- data/lib/datadog/core/remote/client.rb +40 -32
- data/lib/datadog/core/remote/component.rb +6 -9
- data/lib/datadog/core/remote/configuration/digest.rb +7 -7
- data/lib/datadog/core/remote/configuration/path.rb +1 -1
- data/lib/datadog/core/remote/configuration/repository.rb +2 -1
- data/lib/datadog/core/remote/negotiation.rb +9 -9
- data/lib/datadog/core/remote/transport/config.rb +4 -3
- data/lib/datadog/core/remote/transport/http/client.rb +5 -4
- data/lib/datadog/core/remote/transport/http/config.rb +27 -37
- data/lib/datadog/core/remote/transport/http/negotiation.rb +7 -33
- data/lib/datadog/core/remote/transport/http.rb +22 -57
- data/lib/datadog/core/remote/transport/negotiation.rb +4 -3
- data/lib/datadog/core/runtime/metrics.rb +12 -5
- data/lib/datadog/core/telemetry/component.rb +78 -53
- data/lib/datadog/core/telemetry/emitter.rb +23 -11
- data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +65 -0
- data/lib/datadog/core/telemetry/event/app_closing.rb +18 -0
- data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +33 -0
- data/lib/datadog/core/telemetry/event/app_heartbeat.rb +18 -0
- data/lib/datadog/core/telemetry/event/app_integrations_change.rb +58 -0
- data/lib/datadog/core/telemetry/event/app_started.rb +179 -0
- data/lib/datadog/core/telemetry/event/base.rb +40 -0
- data/lib/datadog/core/telemetry/event/distributions.rb +18 -0
- data/lib/datadog/core/telemetry/event/generate_metrics.rb +43 -0
- data/lib/datadog/core/telemetry/event/log.rb +76 -0
- data/lib/datadog/core/telemetry/event/message_batch.rb +42 -0
- data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +43 -0
- data/lib/datadog/core/telemetry/event.rb +17 -472
- data/lib/datadog/core/telemetry/http/adapters/net.rb +12 -97
- data/lib/datadog/core/telemetry/logger.rb +1 -1
- data/lib/datadog/core/telemetry/metric.rb +8 -8
- data/lib/datadog/core/telemetry/request.rb +4 -4
- data/lib/datadog/core/telemetry/transport/http/api.rb +43 -0
- data/lib/datadog/core/telemetry/transport/http/client.rb +49 -0
- data/lib/datadog/core/telemetry/transport/http/telemetry.rb +92 -0
- data/lib/datadog/core/telemetry/transport/http.rb +63 -0
- data/lib/datadog/core/telemetry/transport/telemetry.rb +51 -0
- data/lib/datadog/core/telemetry/worker.rb +90 -24
- data/lib/datadog/core/transport/http/adapters/test.rb +2 -1
- data/lib/datadog/core/transport/http/api/instance.rb +17 -0
- data/lib/datadog/core/transport/http/api/spec.rb +17 -0
- data/lib/datadog/core/transport/http/builder.rb +18 -16
- data/lib/datadog/core/transport/http.rb +39 -2
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +6 -6
- data/lib/datadog/core/utils/duration.rb +32 -32
- data/lib/datadog/core/utils/forking.rb +2 -2
- data/lib/datadog/core/utils/network.rb +6 -6
- data/lib/datadog/core/utils/only_once_successful.rb +16 -5
- data/lib/datadog/core/utils/time.rb +20 -0
- data/lib/datadog/core/utils/truncation.rb +21 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -1
- data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +8 -8
- data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +7 -7
- data/lib/datadog/core/worker.rb +1 -1
- data/lib/datadog/core/workers/async.rb +29 -12
- data/lib/datadog/core/workers/interval_loop.rb +12 -1
- data/lib/datadog/core/workers/runtime_metrics.rb +2 -2
- data/lib/datadog/core.rb +8 -0
- data/lib/datadog/di/boot.rb +34 -0
- data/lib/datadog/di/component.rb +0 -2
- data/lib/datadog/di/probe_notification_builder.rb +1 -1
- data/lib/datadog/di/probe_notifier_worker.rb +16 -16
- data/lib/datadog/di/remote.rb +2 -0
- data/lib/datadog/di/transport/diagnostics.rb +4 -3
- data/lib/datadog/di/transport/http/api.rb +2 -12
- data/lib/datadog/di/transport/http/client.rb +4 -3
- data/lib/datadog/di/transport/http/diagnostics.rb +7 -34
- data/lib/datadog/di/transport/http/input.rb +7 -34
- data/lib/datadog/di/transport/http.rb +14 -62
- data/lib/datadog/di/transport/input.rb +4 -3
- data/lib/datadog/di/utils.rb +5 -0
- data/lib/datadog/di.rb +5 -32
- data/lib/datadog/error_tracking/collector.rb +87 -0
- data/lib/datadog/error_tracking/component.rb +167 -0
- data/lib/datadog/error_tracking/configuration/settings.rb +63 -0
- data/lib/datadog/error_tracking/configuration.rb +11 -0
- data/lib/datadog/error_tracking/ext.rb +18 -0
- data/lib/datadog/error_tracking/extensions.rb +16 -0
- data/lib/datadog/error_tracking/filters.rb +77 -0
- data/lib/datadog/error_tracking.rb +18 -0
- data/lib/datadog/kit/appsec/events.rb +12 -0
- data/lib/datadog/kit/identity.rb +5 -1
- data/lib/datadog/opentelemetry/api/baggage.rb +90 -0
- data/lib/datadog/opentelemetry/api/baggage.rbs +26 -0
- data/lib/datadog/opentelemetry/api/context.rb +16 -2
- data/lib/datadog/opentelemetry/sdk/trace/span.rb +1 -1
- data/lib/datadog/opentelemetry.rb +2 -1
- data/lib/datadog/profiling/collectors/code_provenance.rb +1 -1
- data/lib/datadog/profiling/collectors/info.rb +3 -0
- data/lib/datadog/profiling/collectors/thread_context.rb +1 -1
- data/lib/datadog/profiling/encoded_profile.rb +11 -0
- data/lib/datadog/profiling/exporter.rb +3 -4
- data/lib/datadog/profiling/ext.rb +0 -2
- data/lib/datadog/profiling/flush.rb +5 -8
- data/lib/datadog/profiling/http_transport.rb +5 -59
- data/lib/datadog/profiling/scheduler.rb +8 -1
- data/lib/datadog/profiling/stack_recorder.rb +4 -4
- data/lib/datadog/profiling/tag_builder.rb +1 -5
- data/lib/datadog/profiling.rb +6 -2
- data/lib/datadog/tracing/analytics.rb +1 -1
- data/lib/datadog/tracing/component.rb +15 -12
- data/lib/datadog/tracing/configuration/ext.rb +7 -1
- data/lib/datadog/tracing/configuration/settings.rb +18 -2
- data/lib/datadog/tracing/context_provider.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +4 -1
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +33 -0
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -0
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +2 -4
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +10 -0
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +5 -1
- data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +4 -5
- data/lib/datadog/tracing/contrib/excon/middleware.rb +5 -3
- data/lib/datadog/tracing/contrib/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +5 -3
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +7 -1
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +3 -0
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +0 -15
- data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +4 -1
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +6 -10
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +6 -16
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +7 -15
- data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +27 -0
- data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +48 -0
- data/lib/datadog/tracing/contrib/karafka/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/karafka/integration.rb +45 -0
- data/lib/datadog/tracing/contrib/karafka/monitor.rb +66 -0
- data/lib/datadog/tracing/contrib/karafka/patcher.rb +71 -0
- data/lib/datadog/tracing/contrib/karafka.rb +37 -0
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +8 -0
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +18 -1
- data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +17 -0
- data/lib/datadog/tracing/contrib/opensearch/ext.rb +9 -0
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +5 -1
- data/lib/datadog/tracing/contrib/patcher.rb +5 -2
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -1
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -3
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +6 -1
- data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +3 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +1 -1
- data/lib/datadog/tracing/contrib/support.rb +28 -0
- data/lib/datadog/tracing/contrib.rb +1 -0
- data/lib/datadog/tracing/correlation.rb +9 -2
- data/lib/datadog/tracing/distributed/b3_multi.rb +1 -1
- data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
- data/lib/datadog/tracing/distributed/baggage.rb +131 -0
- data/lib/datadog/tracing/distributed/datadog.rb +4 -2
- data/lib/datadog/tracing/distributed/propagation.rb +25 -4
- data/lib/datadog/tracing/distributed/propagation_policy.rb +42 -0
- data/lib/datadog/tracing/metadata/errors.rb +4 -4
- data/lib/datadog/tracing/metadata/ext.rb +5 -0
- data/lib/datadog/tracing/metadata/metastruct.rb +36 -0
- data/lib/datadog/tracing/metadata/metastruct_tagging.rb +42 -0
- data/lib/datadog/tracing/metadata.rb +2 -0
- data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -1
- data/lib/datadog/tracing/sampling/span/rule.rb +0 -1
- data/lib/datadog/tracing/span.rb +10 -1
- data/lib/datadog/tracing/span_event.rb +1 -1
- data/lib/datadog/tracing/span_operation.rb +46 -16
- data/lib/datadog/tracing/sync_writer.rb +1 -2
- data/lib/datadog/tracing/trace_digest.rb +9 -2
- data/lib/datadog/tracing/trace_operation.rb +44 -24
- data/lib/datadog/tracing/trace_segment.rb +6 -4
- data/lib/datadog/tracing/tracer.rb +45 -5
- data/lib/datadog/tracing/transport/http/api.rb +2 -10
- data/lib/datadog/tracing/transport/http/client.rb +5 -4
- data/lib/datadog/tracing/transport/http/traces.rb +13 -41
- data/lib/datadog/tracing/transport/http.rb +11 -44
- data/lib/datadog/tracing/transport/serializable_trace.rb +3 -1
- data/lib/datadog/tracing/transport/trace_formatter.rb +7 -0
- data/lib/datadog/tracing/transport/traces.rb +26 -9
- data/lib/datadog/tracing/utils.rb +1 -1
- data/lib/datadog/tracing/workers/trace_writer.rb +2 -6
- data/lib/datadog/tracing/writer.rb +2 -6
- data/lib/datadog/tracing.rb +16 -3
- data/lib/datadog/version.rb +2 -2
- data/lib/datadog.rb +2 -3
- metadata +80 -19
- data/lib/datadog/appsec/contrib/devise/event.rb +0 -54
- data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +0 -72
- data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +0 -47
- data/lib/datadog/appsec/contrib/devise/resource.rb +0 -35
- data/lib/datadog/appsec/contrib/devise/tracking.rb +0 -57
- data/lib/datadog/appsec/utils/trace_operation.rb +0 -15
- data/lib/datadog/core/telemetry/http/env.rb +0 -20
- data/lib/datadog/core/telemetry/http/ext.rb +0 -28
- data/lib/datadog/core/telemetry/http/response.rb +0 -70
- data/lib/datadog/core/telemetry/http/transport.rb +0 -90
@@ -43,15 +43,17 @@ module Datadog
|
|
43
43
|
# We set the value to a conservative 5 MiB, in case network speed is slow.
|
44
44
|
DEFAULT_MAX_PAYLOAD_SIZE = 5 * 1024 * 1024
|
45
45
|
|
46
|
-
attr_reader :encoder, :max_size
|
46
|
+
attr_reader :encoder, :max_size, :logger
|
47
47
|
|
48
48
|
#
|
49
49
|
# Single traces larger than +max_size+ will be discarded.
|
50
50
|
#
|
51
51
|
# @param encoder [Datadog::Core::Encoding::Encoder]
|
52
|
+
# @param logger [Datadog::Core::Logger]
|
52
53
|
# @param max_size [String] maximum acceptable payload size
|
53
|
-
def initialize(encoder, native_events_supported:, max_size: DEFAULT_MAX_PAYLOAD_SIZE)
|
54
|
+
def initialize(encoder, logger:, native_events_supported:, max_size: DEFAULT_MAX_PAYLOAD_SIZE)
|
54
55
|
@encoder = encoder
|
56
|
+
@logger = logger
|
55
57
|
@native_events_supported = native_events_supported
|
56
58
|
@max_size = max_size
|
57
59
|
end
|
@@ -78,11 +80,16 @@ module Datadog
|
|
78
80
|
private
|
79
81
|
|
80
82
|
def encode_one(trace)
|
81
|
-
encoded = Encoder.encode_trace(
|
83
|
+
encoded = Encoder.encode_trace(
|
84
|
+
encoder,
|
85
|
+
trace,
|
86
|
+
logger: logger,
|
87
|
+
native_events_supported: @native_events_supported
|
88
|
+
)
|
82
89
|
|
83
90
|
if encoded.size > max_size
|
84
91
|
# This single trace is too large, we can't flush it
|
85
|
-
|
92
|
+
logger.debug { "Dropping trace. Payload too large: '#{trace.inspect}'" }
|
86
93
|
Datadog.health_metrics.transport_trace_too_large(1)
|
87
94
|
|
88
95
|
return nil
|
@@ -96,7 +103,7 @@ module Datadog
|
|
96
103
|
module Encoder
|
97
104
|
module_function
|
98
105
|
|
99
|
-
def encode_trace(encoder, trace, native_events_supported:)
|
106
|
+
def encode_trace(encoder, trace, logger:, native_events_supported:)
|
100
107
|
# Format the trace for transport
|
101
108
|
TraceFormatter.format!(trace)
|
102
109
|
|
@@ -106,7 +113,7 @@ module Datadog
|
|
106
113
|
# Encode the trace
|
107
114
|
encoder.encode(serializable_trace).tap do |encoded|
|
108
115
|
# Print the actual serialized trace, since the encoder can change make non-trivial changes
|
109
|
-
|
116
|
+
logger.debug { "Flushing trace: #{encoder.decode(encoded)}" }
|
110
117
|
end
|
111
118
|
end
|
112
119
|
end
|
@@ -117,11 +124,12 @@ module Datadog
|
|
117
124
|
# batches of traces into smaller chunks and handles
|
118
125
|
# API version downgrade handshake.
|
119
126
|
class Transport
|
120
|
-
attr_reader :client, :apis, :default_api, :current_api_id
|
127
|
+
attr_reader :client, :apis, :default_api, :current_api_id, :logger
|
121
128
|
|
122
|
-
def initialize(apis, default_api)
|
129
|
+
def initialize(apis, default_api, logger: Datadog.logger)
|
123
130
|
@apis = apis
|
124
131
|
@default_api = default_api
|
132
|
+
@logger = logger
|
125
133
|
|
126
134
|
change_api!(default_api)
|
127
135
|
end
|
@@ -130,6 +138,7 @@ module Datadog
|
|
130
138
|
encoder = current_api.encoder
|
131
139
|
chunker = Datadog::Tracing::Transport::Traces::Chunker.new(
|
132
140
|
encoder,
|
141
|
+
logger: logger,
|
133
142
|
native_events_supported: native_events_supported?
|
134
143
|
)
|
135
144
|
|
@@ -190,7 +199,7 @@ module Datadog
|
|
190
199
|
raise UnknownApiVersionError, api_id unless apis.key?(api_id)
|
191
200
|
|
192
201
|
@current_api_id = api_id
|
193
|
-
@client = HTTP::Client.new(current_api)
|
202
|
+
@client = HTTP::Client.new(current_api, logger: logger)
|
194
203
|
end
|
195
204
|
|
196
205
|
# Queries the agent for native span events serialization support.
|
@@ -198,6 +207,14 @@ module Datadog
|
|
198
207
|
def native_events_supported?
|
199
208
|
return @native_events_supported if defined?(@native_events_supported)
|
200
209
|
|
210
|
+
# Check for an explicit override
|
211
|
+
option = Datadog.configuration.tracing.native_span_events
|
212
|
+
unless option.nil?
|
213
|
+
@native_events_supported = option
|
214
|
+
return option
|
215
|
+
end
|
216
|
+
|
217
|
+
# Otherwise, check for agent support, to ensure a configuration-less setup.
|
201
218
|
if (res = Datadog.send(:components).agent_info.fetch)
|
202
219
|
@native_events_supported = res.span_events == true
|
203
220
|
else
|
@@ -24,7 +24,7 @@ module Datadog
|
|
24
24
|
|
25
25
|
# While we only generate 63-bit integers due to limitations in other languages, we support
|
26
26
|
# parsing 64-bit integers for distributed tracing since an upstream system may generate one
|
27
|
-
EXTERNAL_MAX_ID = 1 << 64
|
27
|
+
EXTERNAL_MAX_ID = (1 << 64) - 1
|
28
28
|
|
29
29
|
# We use a custom random number generator because we want no interference
|
30
30
|
# with the default one. Using the default prng, we could break code that
|
@@ -26,14 +26,10 @@ module Datadog
|
|
26
26
|
@logger = options[:logger] || Datadog.logger
|
27
27
|
|
28
28
|
transport_options = options.fetch(:transport_options, {})
|
29
|
-
|
30
|
-
if options.key?(:agent_settings)
|
31
|
-
@agent_settings = options[:agent_settings]
|
32
|
-
transport_options = transport_options.merge(agent_settings: @agent_settings)
|
33
|
-
end
|
29
|
+
@agent_settings = options[:agent_settings]
|
34
30
|
|
35
31
|
@transport = options.fetch(:transport) do
|
36
|
-
Datadog::Tracing::Transport::HTTP.default(**transport_options)
|
32
|
+
Datadog::Tracing::Transport::HTTP.default(agent_settings: agent_settings, logger: logger, **transport_options)
|
37
33
|
end
|
38
34
|
end
|
39
35
|
# rubocop:enable Lint/MissingSuper
|
@@ -26,15 +26,11 @@ module Datadog
|
|
26
26
|
@buff_size = options.fetch(:buffer_size, Workers::AsyncTransport::DEFAULT_BUFFER_MAX_SIZE)
|
27
27
|
@flush_interval = options.fetch(:flush_interval, Workers::AsyncTransport::DEFAULT_FLUSH_INTERVAL)
|
28
28
|
transport_options = options.fetch(:transport_options, {})
|
29
|
-
|
30
|
-
if options.key?(:agent_settings)
|
31
|
-
@agent_settings = options[:agent_settings]
|
32
|
-
transport_options = transport_options.merge(agent_settings: @agent_settings)
|
33
|
-
end
|
29
|
+
@agent_settings = options[:agent_settings]
|
34
30
|
|
35
31
|
# transport and buffers
|
36
32
|
@transport = options.fetch(:transport) do
|
37
|
-
Transport::HTTP.default(**transport_options)
|
33
|
+
Transport::HTTP.default(agent_settings: agent_settings, logger: logger, **transport_options)
|
38
34
|
end
|
39
35
|
|
40
36
|
@shutdown_timeout = options.fetch(:shutdown_timeout, Workers::AsyncTransport::DEFAULT_SHUTDOWN_TIMEOUT)
|
data/lib/datadog/tracing.rb
CHANGED
@@ -26,7 +26,6 @@ module Datadog
|
|
26
26
|
id: nil,
|
27
27
|
&block
|
28
28
|
)
|
29
|
-
|
30
29
|
tracer.trace(
|
31
30
|
name,
|
32
31
|
continue_from: continue_from,
|
@@ -82,7 +81,7 @@ module Datadog
|
|
82
81
|
# @public_api
|
83
82
|
def keep!
|
84
83
|
trace = active_trace
|
85
|
-
|
84
|
+
trace.keep! if trace
|
86
85
|
end
|
87
86
|
|
88
87
|
# (see Datadog::Tracing::TraceSegment#reject!)
|
@@ -90,7 +89,7 @@ module Datadog
|
|
90
89
|
# @public_api
|
91
90
|
def reject!
|
92
91
|
trace = active_trace
|
93
|
-
|
92
|
+
trace.reject! if trace
|
94
93
|
end
|
95
94
|
|
96
95
|
# (see Datadog::Tracing::Tracer#active_correlation)
|
@@ -127,6 +126,20 @@ module Datadog
|
|
127
126
|
correlation.to_log_format
|
128
127
|
end
|
129
128
|
|
129
|
+
# Returns the baggage for the current trace.
|
130
|
+
#
|
131
|
+
# If there is no active trace, a new one is created.
|
132
|
+
#
|
133
|
+
# @return [Datadog::Tracing::Distributed::Baggage] The baggage for the current trace.
|
134
|
+
# @public_api
|
135
|
+
def baggage
|
136
|
+
# Baggage should not be dependent on there being an active trace.
|
137
|
+
# So we create a new TraceOperation if there isn't one.
|
138
|
+
active_trace = self.active_trace || tracer.continue_trace!(nil)
|
139
|
+
active_trace.baggage ||= {}
|
140
|
+
active_trace.baggage
|
141
|
+
end
|
142
|
+
|
130
143
|
# Gracefully shuts down the tracer.
|
131
144
|
#
|
132
145
|
# The public tracing API will still respond to method calls as usual
|
data/lib/datadog/version.rb
CHANGED
data/lib/datadog.rb
CHANGED
@@ -7,7 +7,6 @@ require_relative 'datadog/tracing/contrib'
|
|
7
7
|
# Load other products (must follow tracing)
|
8
8
|
require_relative 'datadog/profiling'
|
9
9
|
require_relative 'datadog/appsec'
|
10
|
-
|
11
|
-
|
12
|
-
require_relative 'datadog/di' if RUBY_VERSION >= '2.6'
|
10
|
+
require_relative 'datadog/di'
|
11
|
+
require_relative 'datadog/error_tracking'
|
13
12
|
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.17.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-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -31,6 +31,9 @@ dependencies:
|
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '3.4'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 3.4.1
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -38,34 +41,37 @@ dependencies:
|
|
38
41
|
- - "~>"
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '3.4'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 3.4.1
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: libddwaf
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
53
|
+
version: 1.22.0.0.2
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
60
|
+
version: 1.22.0.0.2
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: libdatadog
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
67
|
+
version: 18.1.0.1.0
|
62
68
|
type: :runtime
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
74
|
+
version: 18.1.0.1.0
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: logger
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -120,6 +126,8 @@ files:
|
|
120
126
|
- ext/datadog_profiling_native_extension/collectors_thread_context.h
|
121
127
|
- ext/datadog_profiling_native_extension/datadog_ruby_common.c
|
122
128
|
- ext/datadog_profiling_native_extension/datadog_ruby_common.h
|
129
|
+
- ext/datadog_profiling_native_extension/encoded_profile.c
|
130
|
+
- ext/datadog_profiling_native_extension/encoded_profile.h
|
123
131
|
- ext/datadog_profiling_native_extension/extconf.rb
|
124
132
|
- ext/datadog_profiling_native_extension/gvl_profiling_helper.c
|
125
133
|
- ext/datadog_profiling_native_extension/gvl_profiling_helper.h
|
@@ -144,14 +152,24 @@ files:
|
|
144
152
|
- ext/datadog_profiling_native_extension/unsafe_api_calls_check.c
|
145
153
|
- ext/datadog_profiling_native_extension/unsafe_api_calls_check.h
|
146
154
|
- ext/libdatadog_api/crashtracker.c
|
155
|
+
- ext/libdatadog_api/crashtracker.h
|
147
156
|
- ext/libdatadog_api/datadog_ruby_common.c
|
148
157
|
- ext/libdatadog_api/datadog_ruby_common.h
|
149
158
|
- ext/libdatadog_api/extconf.rb
|
159
|
+
- ext/libdatadog_api/init.c
|
160
|
+
- ext/libdatadog_api/library_config.c
|
161
|
+
- ext/libdatadog_api/library_config.h
|
150
162
|
- ext/libdatadog_api/macos_development.md
|
163
|
+
- ext/libdatadog_api/process_discovery.c
|
164
|
+
- ext/libdatadog_api/process_discovery.h
|
151
165
|
- ext/libdatadog_extconf_helpers.rb
|
152
166
|
- lib/datadog.rb
|
153
167
|
- lib/datadog/appsec.rb
|
154
168
|
- lib/datadog/appsec/actions_handler.rb
|
169
|
+
- lib/datadog/appsec/actions_handler/serializable_backtrace.rb
|
170
|
+
- lib/datadog/appsec/anonymizer.rb
|
171
|
+
- lib/datadog/appsec/api_security.rb
|
172
|
+
- lib/datadog/appsec/api_security/lru_cache.rb
|
155
173
|
- lib/datadog/appsec/assets.rb
|
156
174
|
- lib/datadog/appsec/assets/blocked.html
|
157
175
|
- lib/datadog/appsec/assets/blocked.json
|
@@ -163,6 +181,7 @@ files:
|
|
163
181
|
- lib/datadog/appsec/assets/waf_rules/strict.json
|
164
182
|
- lib/datadog/appsec/autoload.rb
|
165
183
|
- lib/datadog/appsec/component.rb
|
184
|
+
- lib/datadog/appsec/compressed_json.rb
|
166
185
|
- lib/datadog/appsec/configuration.rb
|
167
186
|
- lib/datadog/appsec/configuration/settings.rb
|
168
187
|
- lib/datadog/appsec/context.rb
|
@@ -171,15 +190,14 @@ files:
|
|
171
190
|
- lib/datadog/appsec/contrib/active_record/patcher.rb
|
172
191
|
- lib/datadog/appsec/contrib/auto_instrument.rb
|
173
192
|
- lib/datadog/appsec/contrib/devise/configuration.rb
|
174
|
-
- lib/datadog/appsec/contrib/devise/
|
193
|
+
- lib/datadog/appsec/contrib/devise/data_extractor.rb
|
175
194
|
- lib/datadog/appsec/contrib/devise/ext.rb
|
176
195
|
- lib/datadog/appsec/contrib/devise/integration.rb
|
177
196
|
- lib/datadog/appsec/contrib/devise/patcher.rb
|
178
|
-
- lib/datadog/appsec/contrib/devise/
|
179
|
-
- lib/datadog/appsec/contrib/devise/
|
180
|
-
- lib/datadog/appsec/contrib/devise/
|
181
|
-
- lib/datadog/appsec/contrib/devise/
|
182
|
-
- lib/datadog/appsec/contrib/devise/tracking.rb
|
197
|
+
- lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb
|
198
|
+
- lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb
|
199
|
+
- lib/datadog/appsec/contrib/devise/patches/skip_signin_tracking_patch.rb
|
200
|
+
- lib/datadog/appsec/contrib/devise/tracking_middleware.rb
|
183
201
|
- lib/datadog/appsec/contrib/excon/integration.rb
|
184
202
|
- lib/datadog/appsec/contrib/excon/patcher.rb
|
185
203
|
- lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb
|
@@ -226,6 +244,7 @@ files:
|
|
226
244
|
- lib/datadog/appsec/instrumentation.rb
|
227
245
|
- lib/datadog/appsec/instrumentation/gateway.rb
|
228
246
|
- lib/datadog/appsec/instrumentation/gateway/argument.rb
|
247
|
+
- lib/datadog/appsec/instrumentation/gateway/middleware.rb
|
229
248
|
- lib/datadog/appsec/metrics.rb
|
230
249
|
- lib/datadog/appsec/metrics/collector.rb
|
231
250
|
- lib/datadog/appsec/metrics/exporter.rb
|
@@ -242,11 +261,11 @@ files:
|
|
242
261
|
- lib/datadog/appsec/security_engine.rb
|
243
262
|
- lib/datadog/appsec/security_engine/result.rb
|
244
263
|
- lib/datadog/appsec/security_engine/runner.rb
|
264
|
+
- lib/datadog/appsec/security_event.rb
|
245
265
|
- lib/datadog/appsec/utils.rb
|
246
266
|
- lib/datadog/appsec/utils/http.rb
|
247
267
|
- lib/datadog/appsec/utils/http/media_range.rb
|
248
268
|
- lib/datadog/appsec/utils/http/media_type.rb
|
249
|
-
- lib/datadog/appsec/utils/trace_operation.rb
|
250
269
|
- lib/datadog/auto_instrument.rb
|
251
270
|
- lib/datadog/auto_instrument_base.rb
|
252
271
|
- lib/datadog/core.rb
|
@@ -256,13 +275,16 @@ files:
|
|
256
275
|
- lib/datadog/core/chunker.rb
|
257
276
|
- lib/datadog/core/configuration.rb
|
258
277
|
- lib/datadog/core/configuration/agent_settings_resolver.rb
|
278
|
+
- lib/datadog/core/configuration/agentless_settings_resolver.rb
|
259
279
|
- lib/datadog/core/configuration/base.rb
|
260
280
|
- lib/datadog/core/configuration/components.rb
|
281
|
+
- lib/datadog/core/configuration/components_state.rb
|
261
282
|
- lib/datadog/core/configuration/ext.rb
|
262
283
|
- lib/datadog/core/configuration/option.rb
|
263
284
|
- lib/datadog/core/configuration/option_definition.rb
|
264
285
|
- lib/datadog/core/configuration/options.rb
|
265
286
|
- lib/datadog/core/configuration/settings.rb
|
287
|
+
- lib/datadog/core/configuration/stable_config.rb
|
266
288
|
- lib/datadog/core/contrib/rails/utils.rb
|
267
289
|
- lib/datadog/core/crashtracking/component.rb
|
268
290
|
- lib/datadog/core/crashtracking/tag_builder.rb
|
@@ -298,6 +320,7 @@ files:
|
|
298
320
|
- lib/datadog/core/metrics/metric.rb
|
299
321
|
- lib/datadog/core/metrics/options.rb
|
300
322
|
- lib/datadog/core/pin.rb
|
323
|
+
- lib/datadog/core/process_discovery.rb
|
301
324
|
- lib/datadog/core/rate_limiter.rb
|
302
325
|
- lib/datadog/core/remote.rb
|
303
326
|
- lib/datadog/core/remote/client.rb
|
@@ -328,18 +351,31 @@ files:
|
|
328
351
|
- lib/datadog/core/telemetry/component.rb
|
329
352
|
- lib/datadog/core/telemetry/emitter.rb
|
330
353
|
- lib/datadog/core/telemetry/event.rb
|
354
|
+
- lib/datadog/core/telemetry/event/app_client_configuration_change.rb
|
355
|
+
- lib/datadog/core/telemetry/event/app_closing.rb
|
356
|
+
- lib/datadog/core/telemetry/event/app_dependencies_loaded.rb
|
357
|
+
- lib/datadog/core/telemetry/event/app_heartbeat.rb
|
358
|
+
- lib/datadog/core/telemetry/event/app_integrations_change.rb
|
359
|
+
- lib/datadog/core/telemetry/event/app_started.rb
|
360
|
+
- lib/datadog/core/telemetry/event/base.rb
|
361
|
+
- lib/datadog/core/telemetry/event/distributions.rb
|
362
|
+
- lib/datadog/core/telemetry/event/generate_metrics.rb
|
363
|
+
- lib/datadog/core/telemetry/event/log.rb
|
364
|
+
- lib/datadog/core/telemetry/event/message_batch.rb
|
365
|
+
- lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb
|
331
366
|
- lib/datadog/core/telemetry/ext.rb
|
332
367
|
- lib/datadog/core/telemetry/http/adapters/net.rb
|
333
|
-
- lib/datadog/core/telemetry/http/env.rb
|
334
|
-
- lib/datadog/core/telemetry/http/ext.rb
|
335
|
-
- lib/datadog/core/telemetry/http/response.rb
|
336
|
-
- lib/datadog/core/telemetry/http/transport.rb
|
337
368
|
- lib/datadog/core/telemetry/logger.rb
|
338
369
|
- lib/datadog/core/telemetry/logging.rb
|
339
370
|
- lib/datadog/core/telemetry/metric.rb
|
340
371
|
- lib/datadog/core/telemetry/metrics_collection.rb
|
341
372
|
- lib/datadog/core/telemetry/metrics_manager.rb
|
342
373
|
- lib/datadog/core/telemetry/request.rb
|
374
|
+
- lib/datadog/core/telemetry/transport/http.rb
|
375
|
+
- lib/datadog/core/telemetry/transport/http/api.rb
|
376
|
+
- lib/datadog/core/telemetry/transport/http/client.rb
|
377
|
+
- lib/datadog/core/telemetry/transport/http/telemetry.rb
|
378
|
+
- lib/datadog/core/telemetry/transport/telemetry.rb
|
343
379
|
- lib/datadog/core/telemetry/worker.rb
|
344
380
|
- lib/datadog/core/transport/ext.rb
|
345
381
|
- lib/datadog/core/transport/http.rb
|
@@ -370,6 +406,7 @@ files:
|
|
370
406
|
- lib/datadog/core/utils/safe_dup.rb
|
371
407
|
- lib/datadog/core/utils/sequence.rb
|
372
408
|
- lib/datadog/core/utils/time.rb
|
409
|
+
- lib/datadog/core/utils/truncation.rb
|
373
410
|
- lib/datadog/core/utils/url.rb
|
374
411
|
- lib/datadog/core/vendor/multipart-post/LICENSE
|
375
412
|
- lib/datadog/core/vendor/multipart-post/multipart.rb
|
@@ -387,6 +424,7 @@ files:
|
|
387
424
|
- lib/datadog/core/workers/runtime_metrics.rb
|
388
425
|
- lib/datadog/di.rb
|
389
426
|
- lib/datadog/di/base.rb
|
427
|
+
- lib/datadog/di/boot.rb
|
390
428
|
- lib/datadog/di/code_tracker.rb
|
391
429
|
- lib/datadog/di/component.rb
|
392
430
|
- lib/datadog/di/configuration.rb
|
@@ -415,11 +453,21 @@ files:
|
|
415
453
|
- lib/datadog/di/transport/http/input.rb
|
416
454
|
- lib/datadog/di/transport/input.rb
|
417
455
|
- lib/datadog/di/utils.rb
|
456
|
+
- lib/datadog/error_tracking.rb
|
457
|
+
- lib/datadog/error_tracking/collector.rb
|
458
|
+
- lib/datadog/error_tracking/component.rb
|
459
|
+
- lib/datadog/error_tracking/configuration.rb
|
460
|
+
- lib/datadog/error_tracking/configuration/settings.rb
|
461
|
+
- lib/datadog/error_tracking/ext.rb
|
462
|
+
- lib/datadog/error_tracking/extensions.rb
|
463
|
+
- lib/datadog/error_tracking/filters.rb
|
418
464
|
- lib/datadog/kit.rb
|
419
465
|
- lib/datadog/kit/appsec/events.rb
|
420
466
|
- lib/datadog/kit/enable_core_dumps.rb
|
421
467
|
- lib/datadog/kit/identity.rb
|
422
468
|
- lib/datadog/opentelemetry.rb
|
469
|
+
- lib/datadog/opentelemetry/api/baggage.rb
|
470
|
+
- lib/datadog/opentelemetry/api/baggage.rbs
|
423
471
|
- lib/datadog/opentelemetry/api/context.rb
|
424
472
|
- lib/datadog/opentelemetry/api/trace/span.rb
|
425
473
|
- lib/datadog/opentelemetry/sdk/configurator.rb
|
@@ -437,6 +485,7 @@ files:
|
|
437
485
|
- lib/datadog/profiling/collectors/stack.rb
|
438
486
|
- lib/datadog/profiling/collectors/thread_context.rb
|
439
487
|
- lib/datadog/profiling/component.rb
|
488
|
+
- lib/datadog/profiling/encoded_profile.rb
|
440
489
|
- lib/datadog/profiling/exporter.rb
|
441
490
|
- lib/datadog/profiling/ext.rb
|
442
491
|
- lib/datadog/profiling/ext/dir_monkey_patches.rb
|
@@ -687,6 +736,13 @@ files:
|
|
687
736
|
- lib/datadog/tracing/contrib/kafka/ext.rb
|
688
737
|
- lib/datadog/tracing/contrib/kafka/integration.rb
|
689
738
|
- lib/datadog/tracing/contrib/kafka/patcher.rb
|
739
|
+
- lib/datadog/tracing/contrib/karafka.rb
|
740
|
+
- lib/datadog/tracing/contrib/karafka/configuration/settings.rb
|
741
|
+
- lib/datadog/tracing/contrib/karafka/distributed/propagation.rb
|
742
|
+
- lib/datadog/tracing/contrib/karafka/ext.rb
|
743
|
+
- lib/datadog/tracing/contrib/karafka/integration.rb
|
744
|
+
- lib/datadog/tracing/contrib/karafka/monitor.rb
|
745
|
+
- lib/datadog/tracing/contrib/karafka/patcher.rb
|
690
746
|
- lib/datadog/tracing/contrib/lograge/configuration/settings.rb
|
691
747
|
- lib/datadog/tracing/contrib/lograge/ext.rb
|
692
748
|
- lib/datadog/tracing/contrib/lograge/instrumentation.rb
|
@@ -849,6 +905,7 @@ files:
|
|
849
905
|
- lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb
|
850
906
|
- lib/datadog/tracing/contrib/sucker_punch/integration.rb
|
851
907
|
- lib/datadog/tracing/contrib/sucker_punch/patcher.rb
|
908
|
+
- lib/datadog/tracing/contrib/support.rb
|
852
909
|
- lib/datadog/tracing/contrib/trilogy/configuration/settings.rb
|
853
910
|
- lib/datadog/tracing/contrib/trilogy/ext.rb
|
854
911
|
- lib/datadog/tracing/contrib/trilogy/instrumentation.rb
|
@@ -863,12 +920,14 @@ files:
|
|
863
920
|
- lib/datadog/tracing/diagnostics/health.rb
|
864
921
|
- lib/datadog/tracing/distributed/b3_multi.rb
|
865
922
|
- lib/datadog/tracing/distributed/b3_single.rb
|
923
|
+
- lib/datadog/tracing/distributed/baggage.rb
|
866
924
|
- lib/datadog/tracing/distributed/datadog.rb
|
867
925
|
- lib/datadog/tracing/distributed/datadog_tags_codec.rb
|
868
926
|
- lib/datadog/tracing/distributed/fetcher.rb
|
869
927
|
- lib/datadog/tracing/distributed/helpers.rb
|
870
928
|
- lib/datadog/tracing/distributed/none.rb
|
871
929
|
- lib/datadog/tracing/distributed/propagation.rb
|
930
|
+
- lib/datadog/tracing/distributed/propagation_policy.rb
|
872
931
|
- lib/datadog/tracing/distributed/trace_context.rb
|
873
932
|
- lib/datadog/tracing/event.rb
|
874
933
|
- lib/datadog/tracing/flush.rb
|
@@ -876,6 +935,8 @@ files:
|
|
876
935
|
- lib/datadog/tracing/metadata/analytics.rb
|
877
936
|
- lib/datadog/tracing/metadata/errors.rb
|
878
937
|
- lib/datadog/tracing/metadata/ext.rb
|
938
|
+
- lib/datadog/tracing/metadata/metastruct.rb
|
939
|
+
- lib/datadog/tracing/metadata/metastruct_tagging.rb
|
879
940
|
- lib/datadog/tracing/metadata/tagging.rb
|
880
941
|
- lib/datadog/tracing/pipeline.rb
|
881
942
|
- lib/datadog/tracing/pipeline/span_filter.rb
|
@@ -930,8 +991,8 @@ licenses:
|
|
930
991
|
- Apache-2.0
|
931
992
|
metadata:
|
932
993
|
allowed_push_host: https://rubygems.org
|
933
|
-
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.
|
934
|
-
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.
|
994
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.17.0/CHANGELOG.md
|
995
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.17.0
|
935
996
|
post_install_message:
|
936
997
|
rdoc_options: []
|
937
998
|
require_paths:
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Datadog
|
4
|
-
module AppSec
|
5
|
-
module Contrib
|
6
|
-
module Devise
|
7
|
-
# Class to extract event information from the resource
|
8
|
-
class Event
|
9
|
-
UUID_REGEX = /^\h{8}-\h{4}-\h{4}-\h{4}-\h{12}$/.freeze
|
10
|
-
|
11
|
-
attr_reader :user_id
|
12
|
-
|
13
|
-
def initialize(resource, mode)
|
14
|
-
@resource = resource
|
15
|
-
@mode = mode
|
16
|
-
@user_id = nil
|
17
|
-
@email = nil
|
18
|
-
@username = nil
|
19
|
-
|
20
|
-
extract if @resource
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_h
|
24
|
-
return @event if defined?(@event)
|
25
|
-
|
26
|
-
@event = {}
|
27
|
-
@event[:email] = @email if @email
|
28
|
-
@event[:username] = @username if @username
|
29
|
-
@event
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def extract
|
35
|
-
@user_id = @resource.id
|
36
|
-
|
37
|
-
case @mode
|
38
|
-
when AppSec::Configuration::Settings::IDENTIFICATION_AUTO_USER_INSTRUMENTATION_MODE
|
39
|
-
@email = @resource.email
|
40
|
-
@username = @resource.username
|
41
|
-
when AppSec::Configuration::Settings::ANONYMIZATION_AUTO_USER_INSTRUMENTATION_MODE
|
42
|
-
@user_id = nil unless @user_id && @user_id.to_s =~ UUID_REGEX
|
43
|
-
else
|
44
|
-
Datadog.logger.warn(
|
45
|
-
"Invalid auto_user_instrumentation.mode: `#{@mode}`. " \
|
46
|
-
"Supported modes are: #{AppSec::Configuration::Settings::AUTO_USER_INSTRUMENTATION_MODES.join(' | ')}."
|
47
|
-
)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../configuration'
|
4
|
-
require_relative '../tracking'
|
5
|
-
require_relative '../resource'
|
6
|
-
require_relative '../event'
|
7
|
-
|
8
|
-
module Datadog
|
9
|
-
module AppSec
|
10
|
-
module Contrib
|
11
|
-
module Devise
|
12
|
-
module Patcher
|
13
|
-
# Hook in devise validate method
|
14
|
-
module AuthenticatablePatch
|
15
|
-
# rubocop:disable Metrics/MethodLength
|
16
|
-
def validate(resource, &block)
|
17
|
-
result = super
|
18
|
-
|
19
|
-
return result unless AppSec.enabled?
|
20
|
-
return result if @_datadog_appsec_skip_track_login_event
|
21
|
-
return result unless Configuration.auto_user_instrumentation_enabled?
|
22
|
-
return result unless AppSec.active_context
|
23
|
-
|
24
|
-
devise_resource = resource ? Resource.new(resource) : nil
|
25
|
-
event_information = Event.new(devise_resource, Configuration.auto_user_instrumentation_mode)
|
26
|
-
|
27
|
-
if result
|
28
|
-
if event_information.user_id
|
29
|
-
Datadog.logger.debug { 'AppSec: User successful login event' }
|
30
|
-
else
|
31
|
-
Datadog.logger.debug do
|
32
|
-
"AppSec: User successful login event, but can't extract user ID. Tracking empty event"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
Tracking.track_login_success(
|
37
|
-
AppSec.active_context.trace,
|
38
|
-
AppSec.active_context.span,
|
39
|
-
user_id: event_information.user_id,
|
40
|
-
**event_information.to_h
|
41
|
-
)
|
42
|
-
|
43
|
-
return result
|
44
|
-
end
|
45
|
-
|
46
|
-
user_exists = nil
|
47
|
-
|
48
|
-
if resource
|
49
|
-
user_exists = true
|
50
|
-
Datadog.logger.debug { 'AppSec: User failed login event, but user exists' }
|
51
|
-
else
|
52
|
-
user_exists = false
|
53
|
-
Datadog.logger.debug { 'AppSec: User failed login event and user does not exist' }
|
54
|
-
end
|
55
|
-
|
56
|
-
Tracking.track_login_failure(
|
57
|
-
AppSec.active_context.trace,
|
58
|
-
AppSec.active_context.span,
|
59
|
-
user_id: event_information.user_id,
|
60
|
-
user_exists: user_exists,
|
61
|
-
**event_information.to_h
|
62
|
-
)
|
63
|
-
|
64
|
-
result
|
65
|
-
end
|
66
|
-
# rubocop:enable Metrics/MethodLength
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|