datadog 2.20.0 → 2.22.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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +73 -1
  3. data/README.md +0 -1
  4. data/ext/LIBDATADOG_DEVELOPMENT.md +60 -0
  5. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -1
  6. data/ext/libdatadog_api/ddsketch.c +106 -0
  7. data/ext/libdatadog_api/init.c +3 -0
  8. data/ext/libdatadog_api/library_config.c +35 -27
  9. data/ext/libdatadog_api/process_discovery.c +24 -18
  10. data/ext/libdatadog_extconf_helpers.rb +1 -1
  11. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +26 -0
  12. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +59 -0
  13. data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +29 -0
  14. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +26 -0
  15. data/lib/datadog/appsec/api_security/endpoint_collection.rb +10 -0
  16. data/lib/datadog/appsec/api_security/route_extractor.rb +6 -2
  17. data/lib/datadog/appsec/assets/waf_rules/README.md +30 -36
  18. data/lib/datadog/appsec/assets/waf_rules/recommended.json +359 -4
  19. data/lib/datadog/appsec/assets/waf_rules/strict.json +43 -2
  20. data/lib/datadog/appsec/autoload.rb +1 -1
  21. data/lib/datadog/appsec/compressed_json.rb +1 -1
  22. data/lib/datadog/appsec/configuration/settings.rb +9 -0
  23. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +3 -1
  24. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +3 -2
  25. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +3 -1
  26. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +3 -1
  27. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +9 -4
  28. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +5 -1
  29. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +7 -2
  30. data/lib/datadog/appsec/contrib/rails/patcher.rb +30 -0
  31. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +3 -1
  32. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +10 -4
  33. data/lib/datadog/appsec/event.rb +12 -14
  34. data/lib/datadog/appsec/metrics/collector.rb +19 -3
  35. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +2 -1
  36. data/lib/datadog/appsec/monitor/gateway/watcher.rb +4 -4
  37. data/lib/datadog/appsec/remote.rb +25 -13
  38. data/lib/datadog/appsec/security_engine/result.rb +28 -9
  39. data/lib/datadog/appsec/security_engine/runner.rb +17 -7
  40. data/lib/datadog/appsec/security_event.rb +5 -7
  41. data/lib/datadog/core/configuration/agent_settings_resolver.rb +4 -4
  42. data/lib/datadog/core/configuration/components.rb +22 -8
  43. data/lib/datadog/core/configuration/config_helper.rb +100 -0
  44. data/lib/datadog/core/configuration/deprecations.rb +36 -0
  45. data/lib/datadog/core/configuration/ext.rb +0 -1
  46. data/lib/datadog/core/configuration/option.rb +38 -43
  47. data/lib/datadog/core/configuration/option_definition.rb +0 -9
  48. data/lib/datadog/core/configuration/options.rb +1 -5
  49. data/lib/datadog/core/configuration/settings.rb +10 -6
  50. data/lib/datadog/core/configuration/stable_config.rb +10 -0
  51. data/lib/datadog/core/configuration/supported_configurations.rb +337 -0
  52. data/lib/datadog/core/configuration.rb +2 -2
  53. data/lib/datadog/core/ddsketch.rb +21 -0
  54. data/lib/datadog/core/deprecations.rb +2 -2
  55. data/lib/datadog/core/environment/ext.rb +0 -2
  56. data/lib/datadog/core/environment/git.rb +2 -2
  57. data/lib/datadog/core/environment/variable_helpers.rb +3 -3
  58. data/lib/datadog/core/environment/yjit.rb +2 -1
  59. data/lib/datadog/core/metrics/client.rb +2 -2
  60. data/lib/datadog/core/pin.rb +4 -8
  61. data/lib/datadog/core/process_discovery/tracer_memfd.rb +2 -4
  62. data/lib/datadog/core/process_discovery.rb +48 -23
  63. data/lib/datadog/core/remote/component.rb +4 -6
  64. data/lib/datadog/core/runtime/ext.rb +0 -1
  65. data/lib/datadog/core/telemetry/component.rb +11 -0
  66. data/lib/datadog/core/telemetry/emitter.rb +6 -6
  67. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +30 -0
  68. data/lib/datadog/core/telemetry/event/app_started.rb +2 -2
  69. data/lib/datadog/core/telemetry/event.rb +1 -0
  70. data/lib/datadog/core/transport/response.rb +4 -1
  71. data/lib/datadog/core/utils/network.rb +19 -0
  72. data/lib/datadog/core.rb +2 -0
  73. data/lib/datadog/di/boot.rb +5 -3
  74. data/lib/datadog/di/component.rb +14 -0
  75. data/lib/datadog/di/context.rb +70 -0
  76. data/lib/datadog/di/el/compiler.rb +164 -0
  77. data/lib/datadog/di/el/evaluator.rb +159 -0
  78. data/lib/datadog/di/el/expression.rb +42 -0
  79. data/lib/datadog/di/el.rb +5 -0
  80. data/lib/datadog/di/error.rb +25 -0
  81. data/lib/datadog/di/instrumenter.rb +101 -32
  82. data/lib/datadog/di/probe.rb +35 -15
  83. data/lib/datadog/di/probe_builder.rb +39 -1
  84. data/lib/datadog/di/probe_file_loader.rb +1 -1
  85. data/lib/datadog/di/probe_manager.rb +3 -2
  86. data/lib/datadog/di/probe_notification_builder.rb +50 -51
  87. data/lib/datadog/di/serializer.rb +151 -7
  88. data/lib/datadog/opentelemetry/sdk/configurator.rb +1 -1
  89. data/lib/datadog/profiling/collectors/info.rb +1 -1
  90. data/lib/datadog/profiling/ext.rb +2 -1
  91. data/lib/datadog/profiling/http_transport.rb +1 -1
  92. data/lib/datadog/profiling/tasks/exec.rb +2 -2
  93. data/lib/datadog/tracing/component.rb +6 -17
  94. data/lib/datadog/tracing/configuration/dynamic.rb +2 -2
  95. data/lib/datadog/tracing/configuration/ext.rb +0 -3
  96. data/lib/datadog/tracing/configuration/settings.rb +15 -10
  97. data/lib/datadog/tracing/contrib/component.rb +2 -2
  98. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +7 -0
  99. data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
  100. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +63 -27
  101. data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -0
  102. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +7 -1
  103. data/lib/datadog/tracing/contrib/rails/ext.rb +2 -1
  104. data/lib/datadog/tracing/contrib/rails/integration.rb +1 -1
  105. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +1 -1
  106. data/lib/datadog/tracing/metadata/ext.rb +8 -0
  107. data/lib/datadog/version.rb +1 -1
  108. metadata +25 -9
  109. data/ext/libdatadog_api/macos_development.md +0 -26
@@ -12,7 +12,8 @@ module Datadog
12
12
  # @!visibility private
13
13
  ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAILS_ANALYTICS_ENABLED'
14
14
  ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAILS_ANALYTICS_SAMPLE_RATE'
15
- ENV_DISABLE = 'DISABLE_DATADOG_RAILS'
15
+ # Note: Alias (previous name DISABLE_DATADOG_RAILS) defined in supported-configurations.json
16
+ ENV_DISABLE = 'DD_DISABLE_DATADOG_RAILS'
16
17
 
17
18
  SPAN_RUNNER_FILE = 'rails.runner.file'
18
19
  SPAN_RUNNER_INLINE = 'rails.runner.inline'
@@ -35,7 +35,7 @@ module Datadog
35
35
  end
36
36
 
37
37
  def self.patchable?
38
- super && !ENV.key?(Ext::ENV_DISABLE)
38
+ super && !DATADOG_ENV.key?(Ext::ENV_DISABLE)
39
39
  end
40
40
 
41
41
  def new_configuration
@@ -11,7 +11,7 @@ module Datadog
11
11
  NO_SOURCE = [].freeze
12
12
 
13
13
  def self.fetch_service_name(env, default)
14
- ENV.fetch(env) do
14
+ DATADOG_ENV.fetch(env) do
15
15
  if Datadog.configuration.tracing.contrib.global_default_service_name.enabled
16
16
  return Datadog.configuration.service
17
17
  end
@@ -82,6 +82,14 @@ module Datadog
82
82
  TAG_MSG = 'error.message'
83
83
  TAG_STACK = 'error.stack'
84
84
  TAG_TYPE = 'error.type'
85
+
86
+ # From https://opentelemetry.io/docs/specs/semconv/registry/attributes/exception/#exception-stacktrace
87
+ ATTRIBUTE_MESSAGE = 'exception.message'
88
+ ATTRIBUTE_STACKTRACE = 'exception.stacktrace'
89
+ ATTRIBUTE_TYPE = 'exception.type'
90
+
91
+ # From https://opentelemetry.io/docs/specs/semconv/exceptions/exceptions-spans/#exception-event
92
+ EVENT_NAME = 'exception'
85
93
  end
86
94
 
87
95
  # @public_api
@@ -3,7 +3,7 @@
3
3
  module Datadog
4
4
  module VERSION
5
5
  MAJOR = 2
6
- MINOR = 20
6
+ MINOR = 22
7
7
  PATCH = 0
8
8
  PRE = nil
9
9
  BUILD = nil
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.20.0
4
+ version: 2.22.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-09-04 00:00:00.000000000 Z
11
+ date: 2025-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -50,28 +50,28 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 1.24.1.1.0
53
+ version: 1.25.1.1.0
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.24.1.1.0
60
+ version: 1.25.1.1.0
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: libdatadog
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 18.1.0.1.0
67
+ version: 22.0.1.1.0
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 18.1.0.1.0
74
+ version: 22.0.1.1.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: logger
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +107,7 @@ files:
107
107
  - NOTICE
108
108
  - README.md
109
109
  - bin/ddprofrb
110
+ - ext/LIBDATADOG_DEVELOPMENT.md
110
111
  - ext/datadog_profiling_native_extension/NativeExtensionDesign.md
111
112
  - ext/datadog_profiling_native_extension/clock_id.h
112
113
  - ext/datadog_profiling_native_extension/clock_id_from_pthread.c
@@ -155,11 +156,11 @@ files:
155
156
  - ext/libdatadog_api/crashtracker.h
156
157
  - ext/libdatadog_api/datadog_ruby_common.c
157
158
  - ext/libdatadog_api/datadog_ruby_common.h
159
+ - ext/libdatadog_api/ddsketch.c
158
160
  - ext/libdatadog_api/extconf.rb
159
161
  - ext/libdatadog_api/init.c
160
162
  - ext/libdatadog_api/library_config.c
161
163
  - ext/libdatadog_api/library_config.h
162
- - ext/libdatadog_api/macos_development.md
163
164
  - ext/libdatadog_api/process_discovery.c
164
165
  - ext/libdatadog_api/process_discovery.h
165
166
  - ext/libdatadog_extconf_helpers.rb
@@ -169,6 +170,11 @@ files:
169
170
  - lib/datadog/appsec/actions_handler/serializable_backtrace.rb
170
171
  - lib/datadog/appsec/anonymizer.rb
171
172
  - lib/datadog/appsec/api_security.rb
173
+ - lib/datadog/appsec/api_security/endpoint_collection.rb
174
+ - lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb
175
+ - lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb
176
+ - lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb
177
+ - lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb
172
178
  - lib/datadog/appsec/api_security/lru_cache.rb
173
179
  - lib/datadog/appsec/api_security/route_extractor.rb
174
180
  - lib/datadog/appsec/api_security/sampler.rb
@@ -286,15 +292,19 @@ files:
286
292
  - lib/datadog/core/configuration/base.rb
287
293
  - lib/datadog/core/configuration/components.rb
288
294
  - lib/datadog/core/configuration/components_state.rb
295
+ - lib/datadog/core/configuration/config_helper.rb
296
+ - lib/datadog/core/configuration/deprecations.rb
289
297
  - lib/datadog/core/configuration/ext.rb
290
298
  - lib/datadog/core/configuration/option.rb
291
299
  - lib/datadog/core/configuration/option_definition.rb
292
300
  - lib/datadog/core/configuration/options.rb
293
301
  - lib/datadog/core/configuration/settings.rb
294
302
  - lib/datadog/core/configuration/stable_config.rb
303
+ - lib/datadog/core/configuration/supported_configurations.rb
295
304
  - lib/datadog/core/contrib/rails/utils.rb
296
305
  - lib/datadog/core/crashtracking/component.rb
297
306
  - lib/datadog/core/crashtracking/tag_builder.rb
307
+ - lib/datadog/core/ddsketch.rb
298
308
  - lib/datadog/core/deprecations.rb
299
309
  - lib/datadog/core/diagnostics/environment_logger.rb
300
310
  - lib/datadog/core/diagnostics/health.rb
@@ -363,6 +373,7 @@ files:
363
373
  - lib/datadog/core/telemetry/event/app_client_configuration_change.rb
364
374
  - lib/datadog/core/telemetry/event/app_closing.rb
365
375
  - lib/datadog/core/telemetry/event/app_dependencies_loaded.rb
376
+ - lib/datadog/core/telemetry/event/app_endpoints_loaded.rb
366
377
  - lib/datadog/core/telemetry/event/app_heartbeat.rb
367
378
  - lib/datadog/core/telemetry/event/app_integrations_change.rb
368
379
  - lib/datadog/core/telemetry/event/app_started.rb
@@ -438,9 +449,14 @@ files:
438
449
  - lib/datadog/di/component.rb
439
450
  - lib/datadog/di/configuration.rb
440
451
  - lib/datadog/di/configuration/settings.rb
452
+ - lib/datadog/di/context.rb
441
453
  - lib/datadog/di/contrib.rb
442
454
  - lib/datadog/di/contrib/active_record.rb
443
455
  - lib/datadog/di/contrib/railtie.rb
456
+ - lib/datadog/di/el.rb
457
+ - lib/datadog/di/el/compiler.rb
458
+ - lib/datadog/di/el/evaluator.rb
459
+ - lib/datadog/di/el/expression.rb
444
460
  - lib/datadog/di/error.rb
445
461
  - lib/datadog/di/extensions.rb
446
462
  - lib/datadog/di/instrumenter.rb
@@ -1004,8 +1020,8 @@ licenses:
1004
1020
  - Apache-2.0
1005
1021
  metadata:
1006
1022
  allowed_push_host: https://rubygems.org
1007
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.20.0/CHANGELOG.md
1008
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.20.0
1023
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.22.0/CHANGELOG.md
1024
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.22.0
1009
1025
  post_install_message:
1010
1026
  rdoc_options: []
1011
1027
  require_paths:
@@ -1,26 +0,0 @@
1
- # Developing on macOS
2
-
3
- As of this writing (August 2024), the libdatadog builds on rubygems.org only support Linux.
4
-
5
- We don't officially support using libdatadog for Ruby on other platforms yet, but it is possible to use it for local development on macOS.
6
- (**Note that you don't need these instructions if you develop inside docker.**)
7
-
8
- Here's how you can do so:
9
-
10
- 1. [Install rust](https://www.rust-lang.org/tools/install)
11
- 2. Install `cbindgen`: `cargo install cbindgen`
12
- 3. Clone [libdatadog](https://github.com/datadog/libdatadog)
13
- 4. Create a folder for building into based on your ruby platform:
14
-
15
- ```
16
- export DD_RUBY_PLATFORM=`ruby -e 'puts Gem::Platform.local.to_s'`
17
- mkdir -p my-libdatadog-build/$DD_RUBY_PLATFORM
18
- ```
19
-
20
- 5. From inside of the libdatadog repo, build libdatadog into this folder: `./build-profiling-ffi.sh my-libdatadog-build/$DD_RUBY_PLATFORM`
21
- 6. Tell Ruby where to find libdatadog: `export LIBDATADOG_VENDOR_OVERRIDE=/full/path/to/my-libdatadog-build/` (Notice no platform here)
22
- 7. From dd-trace-rb, run `bundle exec rake clean compile`
23
-
24
- If you additionally want to run the profiler test suite, also remember to `export DD_PROFILING_MACOS_TESTING=true` and re-run `rake clean compile`.
25
-
26
- These instructions can quickly get outdated, so feel free to open an issue if they're not working (and/or ping @ivoanjo).