datadog 2.12.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 (570) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +348 -1
  3. data/README.md +0 -1
  4. data/ext/LIBDATADOG_DEVELOPMENT.md +60 -0
  5. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +63 -56
  6. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -1
  7. data/ext/datadog_profiling_native_extension/collectors_stack.c +263 -76
  8. data/ext/datadog_profiling_native_extension/collectors_stack.h +20 -3
  9. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +78 -26
  10. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -0
  11. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +1 -4
  12. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +10 -0
  13. data/ext/datadog_profiling_native_extension/encoded_profile.c +79 -0
  14. data/ext/datadog_profiling_native_extension/encoded_profile.h +8 -0
  15. data/ext/datadog_profiling_native_extension/extconf.rb +10 -0
  16. data/ext/datadog_profiling_native_extension/heap_recorder.c +247 -364
  17. data/ext/datadog_profiling_native_extension/heap_recorder.h +4 -6
  18. data/ext/datadog_profiling_native_extension/http_transport.c +60 -94
  19. data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +22 -0
  20. data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +8 -5
  21. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +41 -21
  22. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +6 -4
  23. data/ext/datadog_profiling_native_extension/profiling.c +2 -0
  24. data/ext/datadog_profiling_native_extension/ruby_helpers.c +1 -13
  25. data/ext/datadog_profiling_native_extension/ruby_helpers.h +3 -11
  26. data/ext/datadog_profiling_native_extension/stack_recorder.c +173 -76
  27. data/ext/libdatadog_api/crashtracker.c +11 -12
  28. data/ext/libdatadog_api/crashtracker.h +5 -0
  29. data/ext/libdatadog_api/datadog_ruby_common.c +1 -4
  30. data/ext/libdatadog_api/datadog_ruby_common.h +10 -0
  31. data/ext/libdatadog_api/ddsketch.c +106 -0
  32. data/ext/libdatadog_api/extconf.rb +5 -3
  33. data/ext/libdatadog_api/init.c +18 -0
  34. data/ext/libdatadog_api/library_config.c +172 -0
  35. data/ext/libdatadog_api/library_config.h +25 -0
  36. data/ext/libdatadog_api/process_discovery.c +118 -0
  37. data/ext/libdatadog_api/process_discovery.h +5 -0
  38. data/ext/libdatadog_extconf_helpers.rb +15 -5
  39. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +89 -0
  40. data/lib/datadog/appsec/actions_handler.rb +24 -2
  41. data/lib/datadog/appsec/anonymizer.rb +16 -0
  42. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +26 -0
  43. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +59 -0
  44. data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +29 -0
  45. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +26 -0
  46. data/lib/datadog/appsec/api_security/endpoint_collection.rb +10 -0
  47. data/lib/datadog/appsec/api_security/lru_cache.rb +56 -0
  48. data/lib/datadog/appsec/api_security/route_extractor.rb +75 -0
  49. data/lib/datadog/appsec/api_security/sampler.rb +59 -0
  50. data/lib/datadog/appsec/api_security.rb +23 -0
  51. data/lib/datadog/appsec/assets/waf_rules/README.md +44 -5
  52. data/lib/datadog/appsec/assets/waf_rules/recommended.json +601 -74
  53. data/lib/datadog/appsec/assets/waf_rules/strict.json +48 -75
  54. data/lib/datadog/appsec/autoload.rb +2 -2
  55. data/lib/datadog/appsec/component.rb +46 -71
  56. data/lib/datadog/appsec/compressed_json.rb +40 -0
  57. data/lib/datadog/appsec/configuration/settings.rb +162 -30
  58. data/lib/datadog/appsec/context.rb +30 -7
  59. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +35 -18
  60. data/lib/datadog/appsec/contrib/active_record/integration.rb +2 -2
  61. data/lib/datadog/appsec/contrib/active_record/patcher.rb +62 -11
  62. data/lib/datadog/appsec/contrib/auto_instrument.rb +1 -1
  63. data/lib/datadog/appsec/contrib/devise/configuration.rb +7 -31
  64. data/lib/datadog/appsec/contrib/devise/data_extractor.rb +78 -0
  65. data/lib/datadog/appsec/contrib/devise/ext.rb +22 -0
  66. data/lib/datadog/appsec/contrib/devise/integration.rb +1 -2
  67. data/lib/datadog/appsec/contrib/devise/patcher.rb +34 -23
  68. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +103 -0
  69. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +70 -0
  70. data/lib/datadog/appsec/contrib/devise/{patcher/rememberable_patch.rb → patches/skip_signin_tracking_patch.rb} +2 -2
  71. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +106 -0
  72. data/lib/datadog/appsec/contrib/excon/integration.rb +1 -1
  73. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +11 -12
  74. data/lib/datadog/appsec/contrib/faraday/integration.rb +1 -1
  75. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +10 -10
  76. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +10 -9
  77. data/lib/datadog/appsec/contrib/graphql/integration.rb +1 -1
  78. data/lib/datadog/appsec/contrib/rack/ext.rb +34 -0
  79. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +53 -31
  80. data/lib/datadog/appsec/contrib/rack/integration.rb +1 -1
  81. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +52 -44
  82. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +35 -11
  83. data/lib/datadog/appsec/contrib/rails/integration.rb +1 -1
  84. data/lib/datadog/appsec/contrib/rails/patcher.rb +65 -47
  85. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
  86. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
  87. data/lib/datadog/appsec/contrib/rest_client/integration.rb +1 -1
  88. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +12 -12
  89. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +45 -22
  90. data/lib/datadog/appsec/contrib/sinatra/integration.rb +1 -1
  91. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +8 -18
  92. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
  93. data/lib/datadog/appsec/event.rb +91 -147
  94. data/lib/datadog/appsec/ext.rb +4 -2
  95. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +23 -2
  96. data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +24 -0
  97. data/lib/datadog/appsec/instrumentation/gateway.rb +17 -22
  98. data/lib/datadog/appsec/metrics/collector.rb +23 -3
  99. data/lib/datadog/appsec/metrics/telemetry.rb +2 -2
  100. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +29 -0
  101. data/lib/datadog/appsec/metrics.rb +1 -0
  102. data/lib/datadog/appsec/monitor/gateway/watcher.rb +49 -14
  103. data/lib/datadog/appsec/processor/rule_loader.rb +30 -33
  104. data/lib/datadog/appsec/remote.rb +43 -59
  105. data/lib/datadog/appsec/response.rb +6 -6
  106. data/lib/datadog/appsec/security_engine/engine.rb +176 -0
  107. data/lib/datadog/appsec/security_engine/result.rb +44 -9
  108. data/lib/datadog/appsec/security_engine/runner.rb +44 -21
  109. data/lib/datadog/appsec/security_event.rb +37 -0
  110. data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
  111. data/lib/datadog/appsec/trace_keeper.rb +24 -0
  112. data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
  113. data/lib/datadog/appsec/utils.rb +0 -2
  114. data/lib/datadog/appsec.rb +5 -15
  115. data/lib/datadog/auto_instrument_base.rb +2 -1
  116. data/lib/datadog/core/buffer/random.rb +18 -2
  117. data/lib/datadog/core/configuration/agent_settings.rb +52 -0
  118. data/lib/datadog/core/configuration/agent_settings_resolver.rb +8 -50
  119. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +176 -0
  120. data/lib/datadog/core/configuration/components.rb +69 -37
  121. data/lib/datadog/core/configuration/components_state.rb +23 -0
  122. data/lib/datadog/core/configuration/config_helper.rb +100 -0
  123. data/lib/datadog/core/configuration/deprecations.rb +36 -0
  124. data/lib/datadog/core/configuration/ext.rb +4 -1
  125. data/lib/datadog/core/configuration/option.rb +117 -77
  126. data/lib/datadog/core/configuration/option_definition.rb +5 -14
  127. data/lib/datadog/core/configuration/options.rb +15 -13
  128. data/lib/datadog/core/configuration/settings.rb +117 -48
  129. data/lib/datadog/core/configuration/stable_config.rb +32 -0
  130. data/lib/datadog/core/configuration/supported_configurations.rb +337 -0
  131. data/lib/datadog/core/configuration.rb +40 -16
  132. data/lib/datadog/core/crashtracking/component.rb +3 -10
  133. data/lib/datadog/core/crashtracking/tag_builder.rb +4 -22
  134. data/lib/datadog/core/ddsketch.rb +21 -0
  135. data/lib/datadog/core/deprecations.rb +2 -2
  136. data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
  137. data/lib/datadog/core/encoding.rb +1 -1
  138. data/lib/datadog/core/environment/agent_info.rb +4 -3
  139. data/lib/datadog/core/environment/cgroup.rb +10 -12
  140. data/lib/datadog/core/environment/container.rb +38 -40
  141. data/lib/datadog/core/environment/ext.rb +6 -8
  142. data/lib/datadog/core/environment/git.rb +3 -2
  143. data/lib/datadog/core/environment/identity.rb +3 -3
  144. data/lib/datadog/core/environment/platform.rb +3 -3
  145. data/lib/datadog/core/environment/variable_helpers.rb +4 -4
  146. data/lib/datadog/core/environment/yjit.rb +2 -1
  147. data/lib/datadog/core/error.rb +11 -9
  148. data/lib/datadog/core/logger.rb +2 -2
  149. data/lib/datadog/core/metrics/client.rb +29 -29
  150. data/lib/datadog/core/metrics/logging.rb +5 -5
  151. data/lib/datadog/core/pin.rb +4 -8
  152. data/lib/datadog/core/process_discovery/tracer_memfd.rb +13 -0
  153. data/lib/datadog/core/process_discovery.rb +61 -0
  154. data/lib/datadog/core/rate_limiter.rb +4 -2
  155. data/lib/datadog/core/remote/client.rb +44 -35
  156. data/lib/datadog/core/remote/component.rb +12 -17
  157. data/lib/datadog/core/remote/configuration/digest.rb +7 -7
  158. data/lib/datadog/core/remote/configuration/path.rb +1 -1
  159. data/lib/datadog/core/remote/configuration/repository.rb +14 -1
  160. data/lib/datadog/core/remote/negotiation.rb +9 -9
  161. data/lib/datadog/core/remote/transport/config.rb +4 -3
  162. data/lib/datadog/core/remote/transport/http/client.rb +5 -4
  163. data/lib/datadog/core/remote/transport/http/config.rb +27 -37
  164. data/lib/datadog/core/remote/transport/http/negotiation.rb +7 -33
  165. data/lib/datadog/core/remote/transport/http.rb +25 -89
  166. data/lib/datadog/core/remote/transport/negotiation.rb +4 -3
  167. data/lib/datadog/core/runtime/ext.rb +0 -1
  168. data/lib/datadog/core/runtime/metrics.rb +12 -5
  169. data/lib/datadog/core/tag_builder.rb +56 -0
  170. data/lib/datadog/core/telemetry/component.rb +92 -52
  171. data/lib/datadog/core/telemetry/emitter.rb +23 -11
  172. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +66 -0
  173. data/lib/datadog/core/telemetry/event/app_closing.rb +18 -0
  174. data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +33 -0
  175. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +30 -0
  176. data/lib/datadog/core/telemetry/event/app_heartbeat.rb +18 -0
  177. data/lib/datadog/core/telemetry/event/app_integrations_change.rb +58 -0
  178. data/lib/datadog/core/telemetry/event/app_started.rb +287 -0
  179. data/lib/datadog/core/telemetry/event/base.rb +40 -0
  180. data/lib/datadog/core/telemetry/event/distributions.rb +18 -0
  181. data/lib/datadog/core/telemetry/event/generate_metrics.rb +43 -0
  182. data/lib/datadog/core/telemetry/event/log.rb +76 -0
  183. data/lib/datadog/core/telemetry/event/message_batch.rb +42 -0
  184. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +43 -0
  185. data/lib/datadog/core/telemetry/event.rb +18 -472
  186. data/lib/datadog/core/telemetry/http/adapters/net.rb +12 -97
  187. data/lib/datadog/core/telemetry/logger.rb +5 -4
  188. data/lib/datadog/core/telemetry/logging.rb +11 -5
  189. data/lib/datadog/core/telemetry/metric.rb +8 -8
  190. data/lib/datadog/core/telemetry/request.rb +4 -4
  191. data/lib/datadog/core/telemetry/transport/http/api.rb +43 -0
  192. data/lib/datadog/core/telemetry/transport/http/client.rb +49 -0
  193. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +92 -0
  194. data/lib/datadog/core/telemetry/transport/http.rb +63 -0
  195. data/lib/datadog/core/telemetry/transport/telemetry.rb +51 -0
  196. data/lib/datadog/core/telemetry/worker.rb +90 -24
  197. data/lib/datadog/core/transport/http/adapters/net.rb +17 -2
  198. data/lib/datadog/core/transport/http/adapters/test.rb +2 -1
  199. data/lib/datadog/core/transport/http/api/instance.rb +17 -0
  200. data/lib/datadog/core/transport/http/api/spec.rb +17 -0
  201. data/lib/datadog/core/transport/http/builder.rb +19 -17
  202. data/lib/datadog/core/transport/http/env.rb +8 -0
  203. data/lib/datadog/core/transport/http.rb +75 -0
  204. data/lib/datadog/core/transport/response.rb +4 -1
  205. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +6 -6
  206. data/lib/datadog/core/utils/duration.rb +32 -32
  207. data/lib/datadog/core/utils/forking.rb +2 -2
  208. data/lib/datadog/core/utils/network.rb +25 -6
  209. data/lib/datadog/core/utils/only_once_successful.rb +16 -5
  210. data/lib/datadog/core/utils/time.rb +20 -0
  211. data/lib/datadog/core/utils/truncation.rb +21 -0
  212. data/lib/datadog/core/utils.rb +7 -0
  213. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -1
  214. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +8 -8
  215. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +7 -7
  216. data/lib/datadog/core/worker.rb +1 -1
  217. data/lib/datadog/core/workers/async.rb +29 -12
  218. data/lib/datadog/core/workers/interval_loop.rb +12 -1
  219. data/lib/datadog/core/workers/runtime_metrics.rb +2 -2
  220. data/lib/datadog/core.rb +10 -0
  221. data/lib/datadog/di/boot.rb +43 -0
  222. data/lib/datadog/di/component.rb +21 -2
  223. data/lib/datadog/di/context.rb +70 -0
  224. data/lib/datadog/di/el/compiler.rb +164 -0
  225. data/lib/datadog/di/el/evaluator.rb +159 -0
  226. data/lib/datadog/di/el/expression.rb +42 -0
  227. data/lib/datadog/di/el.rb +5 -0
  228. data/lib/datadog/di/error.rb +25 -0
  229. data/lib/datadog/di/instrumenter.rb +132 -20
  230. data/lib/datadog/di/probe.rb +35 -15
  231. data/lib/datadog/di/probe_builder.rb +39 -1
  232. data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
  233. data/lib/datadog/di/probe_file_loader.rb +82 -0
  234. data/lib/datadog/di/probe_manager.rb +3 -2
  235. data/lib/datadog/di/probe_notification_builder.rb +61 -67
  236. data/lib/datadog/di/probe_notifier_worker.rb +25 -17
  237. data/lib/datadog/di/remote.rb +5 -5
  238. data/lib/datadog/di/serializer.rb +160 -8
  239. data/lib/datadog/di/transport/diagnostics.rb +4 -3
  240. data/lib/datadog/di/transport/http/api.rb +2 -12
  241. data/lib/datadog/di/transport/http/client.rb +4 -3
  242. data/lib/datadog/di/transport/http/diagnostics.rb +7 -34
  243. data/lib/datadog/di/transport/http/input.rb +18 -35
  244. data/lib/datadog/di/transport/http.rb +15 -77
  245. data/lib/datadog/di/transport/input.rb +14 -5
  246. data/lib/datadog/di/utils.rb +5 -0
  247. data/lib/datadog/di.rb +0 -34
  248. data/lib/datadog/error_tracking/collector.rb +87 -0
  249. data/lib/datadog/error_tracking/component.rb +167 -0
  250. data/lib/datadog/error_tracking/configuration/settings.rb +63 -0
  251. data/lib/datadog/error_tracking/configuration.rb +11 -0
  252. data/lib/datadog/error_tracking/ext.rb +18 -0
  253. data/lib/datadog/error_tracking/extensions.rb +16 -0
  254. data/lib/datadog/error_tracking/filters.rb +77 -0
  255. data/lib/datadog/error_tracking.rb +18 -0
  256. data/lib/datadog/kit/appsec/events/v2.rb +196 -0
  257. data/lib/datadog/kit/appsec/events.rb +17 -4
  258. data/lib/datadog/kit/identity.rb +22 -12
  259. data/lib/datadog/opentelemetry/api/baggage.rb +90 -0
  260. data/lib/datadog/opentelemetry/api/baggage.rbs +26 -0
  261. data/lib/datadog/opentelemetry/api/context.rb +21 -6
  262. data/lib/datadog/opentelemetry/sdk/configurator.rb +1 -1
  263. data/lib/datadog/opentelemetry/sdk/propagator.rb +4 -4
  264. data/lib/datadog/opentelemetry/sdk/span_processor.rb +8 -8
  265. data/lib/datadog/opentelemetry/sdk/trace/span.rb +15 -11
  266. data/lib/datadog/opentelemetry/trace.rb +4 -4
  267. data/lib/datadog/opentelemetry.rb +2 -1
  268. data/lib/datadog/profiling/collectors/code_provenance.rb +18 -9
  269. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +6 -0
  270. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -0
  271. data/lib/datadog/profiling/collectors/info.rb +44 -0
  272. data/lib/datadog/profiling/collectors/thread_context.rb +17 -2
  273. data/lib/datadog/profiling/component.rb +8 -9
  274. data/lib/datadog/profiling/encoded_profile.rb +11 -0
  275. data/lib/datadog/profiling/exporter.rb +12 -7
  276. data/lib/datadog/profiling/ext.rb +2 -15
  277. data/lib/datadog/profiling/flush.rb +5 -8
  278. data/lib/datadog/profiling/http_transport.rb +8 -62
  279. data/lib/datadog/profiling/profiler.rb +2 -0
  280. data/lib/datadog/profiling/scheduler.rb +10 -2
  281. data/lib/datadog/profiling/sequence_tracker.rb +44 -0
  282. data/lib/datadog/profiling/stack_recorder.rb +9 -9
  283. data/lib/datadog/profiling/tag_builder.rb +7 -41
  284. data/lib/datadog/profiling/tasks/exec.rb +2 -2
  285. data/lib/datadog/profiling/tasks/setup.rb +2 -0
  286. data/lib/datadog/profiling.rb +13 -10
  287. data/lib/datadog/single_step_instrument.rb +9 -0
  288. data/lib/datadog/tracing/analytics.rb +1 -1
  289. data/lib/datadog/tracing/buffer.rb +7 -7
  290. data/lib/datadog/tracing/component.rb +21 -29
  291. data/lib/datadog/tracing/configuration/dynamic.rb +6 -8
  292. data/lib/datadog/tracing/configuration/ext.rb +8 -4
  293. data/lib/datadog/tracing/configuration/settings.rb +50 -12
  294. data/lib/datadog/tracing/context.rb +2 -2
  295. data/lib/datadog/tracing/context_provider.rb +1 -1
  296. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  297. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -1
  298. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -1
  299. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +19 -4
  300. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +19 -12
  301. data/lib/datadog/tracing/contrib/action_pack/ext.rb +2 -0
  302. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
  303. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
  304. data/lib/datadog/tracing/contrib/active_job/event.rb +8 -8
  305. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
  306. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
  307. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
  308. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
  309. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
  310. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
  311. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -1
  312. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
  313. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +3 -3
  314. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -2
  315. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
  316. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
  317. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +5 -5
  318. data/lib/datadog/tracing/contrib/active_record/integration.rb +2 -2
  319. data/lib/datadog/tracing/contrib/active_record/utils.rb +15 -15
  320. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +17 -8
  321. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +33 -0
  322. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -0
  323. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +2 -4
  324. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
  325. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
  326. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +2 -1
  327. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +7 -9
  328. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  329. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +12 -2
  330. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +8 -2
  331. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -1
  332. data/lib/datadog/tracing/contrib/aws/service/base.rb +2 -1
  333. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +1 -1
  334. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +1 -1
  335. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +1 -1
  336. data/lib/datadog/tracing/contrib/aws/service/s3.rb +1 -1
  337. data/lib/datadog/tracing/contrib/aws/service/sns.rb +1 -1
  338. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +1 -1
  339. data/lib/datadog/tracing/contrib/aws/service/states.rb +1 -1
  340. data/lib/datadog/tracing/contrib/aws/services.rb +7 -7
  341. data/lib/datadog/tracing/contrib/component.rb +2 -2
  342. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  343. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  344. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  345. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -1
  346. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  347. data/lib/datadog/tracing/contrib/configurable.rb +6 -6
  348. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +4 -4
  349. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
  350. data/lib/datadog/tracing/contrib/dalli/ext.rb +3 -2
  351. data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -1
  352. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -1
  353. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
  354. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +4 -4
  355. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +51 -53
  356. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +5 -5
  357. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +6 -7
  358. data/lib/datadog/tracing/contrib/ethon/ext.rb +3 -2
  359. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -1
  360. data/lib/datadog/tracing/contrib/excon/ext.rb +3 -2
  361. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -1
  362. data/lib/datadog/tracing/contrib/excon/middleware.rb +7 -5
  363. data/lib/datadog/tracing/contrib/ext.rb +4 -3
  364. data/lib/datadog/tracing/contrib/extensions.rb +9 -9
  365. data/lib/datadog/tracing/contrib/faraday/ext.rb +3 -2
  366. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -1
  367. data/lib/datadog/tracing/contrib/faraday/middleware.rb +9 -5
  368. data/lib/datadog/tracing/contrib/grape/endpoint.rb +8 -8
  369. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -1
  370. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +7 -0
  371. data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
  372. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -1
  373. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -2
  374. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +84 -48
  375. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +15 -9
  376. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +3 -3
  377. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  378. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +3 -0
  379. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -1
  380. data/lib/datadog/tracing/contrib/hanami/ext.rb +2 -2
  381. data/lib/datadog/tracing/contrib/hanami/integration.rb +1 -1
  382. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
  383. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +9 -11
  384. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +0 -15
  385. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +4 -4
  386. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +4 -1
  387. data/lib/datadog/tracing/contrib/http/ext.rb +3 -2
  388. data/lib/datadog/tracing/contrib/http/instrumentation.rb +11 -15
  389. data/lib/datadog/tracing/contrib/httpclient/ext.rb +3 -2
  390. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +9 -19
  391. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -1
  392. data/lib/datadog/tracing/contrib/httprb/ext.rb +3 -2
  393. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +11 -19
  394. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -1
  395. data/lib/datadog/tracing/contrib/kafka/event.rb +1 -1
  396. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -1
  397. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -1
  398. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -1
  399. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -1
  400. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -1
  401. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -1
  402. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -1
  403. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -1
  404. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -1
  405. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -1
  406. data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +27 -0
  407. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +48 -0
  408. data/lib/datadog/tracing/contrib/karafka/ext.rb +27 -0
  409. data/lib/datadog/tracing/contrib/karafka/integration.rb +45 -0
  410. data/lib/datadog/tracing/contrib/karafka/monitor.rb +66 -0
  411. data/lib/datadog/tracing/contrib/karafka/patcher.rb +71 -0
  412. data/lib/datadog/tracing/contrib/karafka.rb +37 -0
  413. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -1
  414. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -1
  415. data/lib/datadog/tracing/contrib/lograge/patcher.rb +4 -2
  416. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +9 -1
  417. data/lib/datadog/tracing/contrib/mongodb/ext.rb +2 -1
  418. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -1
  419. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  420. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +23 -6
  421. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -1
  422. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +16 -6
  423. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -1
  424. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +17 -0
  425. data/lib/datadog/tracing/contrib/opensearch/ext.rb +12 -2
  426. data/lib/datadog/tracing/contrib/opensearch/integration.rb +1 -2
  427. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +68 -66
  428. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +5 -5
  429. data/lib/datadog/tracing/contrib/patcher.rb +12 -11
  430. data/lib/datadog/tracing/contrib/pg/integration.rb +1 -1
  431. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -1
  432. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
  433. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -1
  434. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +1 -1
  435. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  436. data/lib/datadog/tracing/contrib/que/integration.rb +1 -1
  437. data/lib/datadog/tracing/contrib/racecar/event.rb +1 -1
  438. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  439. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -1
  440. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  441. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -1
  442. data/lib/datadog/tracing/contrib/rack/header_collection.rb +1 -1
  443. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +32 -32
  444. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -1
  445. data/lib/datadog/tracing/contrib/rack/middlewares.rb +21 -17
  446. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  447. data/lib/datadog/tracing/contrib/rack/request_queue.rb +4 -3
  448. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +7 -1
  449. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -1
  450. data/lib/datadog/tracing/contrib/rails/ext.rb +2 -1
  451. data/lib/datadog/tracing/contrib/rails/integration.rb +2 -2
  452. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  453. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  454. data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -1
  455. data/lib/datadog/tracing/contrib/rails/runner.rb +62 -40
  456. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
  457. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -1
  458. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  459. data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
  460. data/lib/datadog/tracing/contrib/redis/integration.rb +2 -2
  461. data/lib/datadog/tracing/contrib/redis/patcher.rb +4 -4
  462. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
  463. data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
  464. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +4 -4
  465. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  466. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -1
  467. data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -1
  468. data/lib/datadog/tracing/contrib/rest_client/ext.rb +3 -2
  469. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -1
  470. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +8 -6
  471. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +1 -1
  472. data/lib/datadog/tracing/contrib/roda/integration.rb +1 -1
  473. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -1
  474. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -1
  475. data/lib/datadog/tracing/contrib/sequel/database.rb +5 -5
  476. data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
  477. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -1
  478. data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -1
  479. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -1
  480. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +6 -1
  481. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +3 -0
  482. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
  483. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -1
  484. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -2
  485. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
  486. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -1
  487. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +38 -40
  488. data/lib/datadog/tracing/contrib/sneakers/integration.rb +1 -1
  489. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +1 -1
  490. data/lib/datadog/tracing/contrib/stripe/integration.rb +1 -1
  491. data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
  492. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -1
  493. data/lib/datadog/tracing/contrib/support.rb +28 -0
  494. data/lib/datadog/tracing/contrib/trilogy/ext.rb +1 -1
  495. data/lib/datadog/tracing/contrib/trilogy/integration.rb +1 -1
  496. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +11 -11
  497. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +6 -6
  498. data/lib/datadog/tracing/contrib.rb +1 -0
  499. data/lib/datadog/tracing/correlation.rb +9 -2
  500. data/lib/datadog/tracing/diagnostics/environment_logger.rb +8 -2
  501. data/lib/datadog/tracing/distributed/b3_multi.rb +1 -1
  502. data/lib/datadog/tracing/distributed/b3_single.rb +2 -2
  503. data/lib/datadog/tracing/distributed/baggage.rb +196 -0
  504. data/lib/datadog/tracing/distributed/datadog.rb +8 -7
  505. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +11 -13
  506. data/lib/datadog/tracing/distributed/helpers.rb +1 -1
  507. data/lib/datadog/tracing/distributed/none.rb +4 -2
  508. data/lib/datadog/tracing/distributed/propagation.rb +28 -4
  509. data/lib/datadog/tracing/distributed/propagation_policy.rb +42 -0
  510. data/lib/datadog/tracing/distributed/trace_context.rb +22 -16
  511. data/lib/datadog/tracing/event.rb +5 -7
  512. data/lib/datadog/tracing/flush.rb +1 -1
  513. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  514. data/lib/datadog/tracing/metadata/errors.rb +4 -4
  515. data/lib/datadog/tracing/metadata/ext.rb +13 -0
  516. data/lib/datadog/tracing/metadata/metastruct.rb +36 -0
  517. data/lib/datadog/tracing/metadata/metastruct_tagging.rb +42 -0
  518. data/lib/datadog/tracing/metadata/tagging.rb +4 -4
  519. data/lib/datadog/tracing/metadata.rb +2 -0
  520. data/lib/datadog/tracing/pipeline/span_filter.rb +3 -1
  521. data/lib/datadog/tracing/pipeline/span_processor.rb +3 -1
  522. data/lib/datadog/tracing/pipeline.rb +1 -1
  523. data/lib/datadog/tracing/sampling/ext.rb +0 -2
  524. data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -1
  525. data/lib/datadog/tracing/sampling/rule_sampler.rb +30 -30
  526. data/lib/datadog/tracing/sampling/span/rule.rb +0 -1
  527. data/lib/datadog/tracing/sampling/span/rule_parser.rb +1 -1
  528. data/lib/datadog/tracing/sampling/span/sampler.rb +0 -7
  529. data/lib/datadog/tracing/span.rb +11 -2
  530. data/lib/datadog/tracing/span_event.rb +11 -11
  531. data/lib/datadog/tracing/span_link.rb +12 -12
  532. data/lib/datadog/tracing/span_operation.rb +76 -26
  533. data/lib/datadog/tracing/sync_writer.rb +5 -4
  534. data/lib/datadog/tracing/trace_digest.rb +29 -24
  535. data/lib/datadog/tracing/trace_operation.rb +121 -97
  536. data/lib/datadog/tracing/trace_segment.rb +8 -6
  537. data/lib/datadog/tracing/tracer.rb +90 -43
  538. data/lib/datadog/tracing/transport/http/api.rb +2 -10
  539. data/lib/datadog/tracing/transport/http/client.rb +6 -5
  540. data/lib/datadog/tracing/transport/http/traces.rb +15 -43
  541. data/lib/datadog/tracing/transport/http.rb +13 -75
  542. data/lib/datadog/tracing/transport/io/client.rb +5 -5
  543. data/lib/datadog/tracing/transport/io/traces.rb +4 -4
  544. data/lib/datadog/tracing/transport/serializable_trace.rb +3 -1
  545. data/lib/datadog/tracing/transport/statistics.rb +1 -1
  546. data/lib/datadog/tracing/transport/trace_formatter.rb +7 -0
  547. data/lib/datadog/tracing/transport/traces.rb +31 -14
  548. data/lib/datadog/tracing/utils.rb +1 -1
  549. data/lib/datadog/tracing/workers/trace_writer.rb +16 -16
  550. data/lib/datadog/tracing/workers.rb +2 -2
  551. data/lib/datadog/tracing/writer.rb +4 -4
  552. data/lib/datadog/tracing.rb +16 -3
  553. data/lib/datadog/version.rb +1 -1
  554. data/lib/datadog.rb +8 -2
  555. metadata +115 -24
  556. data/ext/libdatadog_api/macos_development.md +0 -26
  557. data/lib/datadog/appsec/assets/waf_rules/processors.json +0 -92
  558. data/lib/datadog/appsec/assets/waf_rules/scanners.json +0 -114
  559. data/lib/datadog/appsec/contrib/devise/event.rb +0 -54
  560. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +0 -72
  561. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +0 -47
  562. data/lib/datadog/appsec/contrib/devise/resource.rb +0 -35
  563. data/lib/datadog/appsec/contrib/devise/tracking.rb +0 -57
  564. data/lib/datadog/appsec/processor/rule_merger.rb +0 -170
  565. data/lib/datadog/appsec/processor.rb +0 -107
  566. data/lib/datadog/appsec/utils/trace_operation.rb +0 -15
  567. data/lib/datadog/core/telemetry/http/env.rb +0 -20
  568. data/lib/datadog/core/telemetry/http/ext.rb +0 -28
  569. data/lib/datadog/core/telemetry/http/response.rb +0 -70
  570. data/lib/datadog/core/telemetry/http/transport.rb +0 -90
@@ -0,0 +1,337 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is auto-generated from `supported-configurations.json` by `rake local_config_map:generate`.
4
+ # Do not change manually! Please refer to `docs/AccessEnvironmentVariables.md` for more information.
5
+
6
+ module Datadog
7
+ module Core
8
+ module Configuration
9
+ SUPPORTED_CONFIGURATIONS =
10
+ {"DD_AGENT_HOST" => {version: ["A"]},
11
+ "DD_API_KEY" => {version: ["A"]},
12
+ "DD_API_SECURITY_ENABLED" => {version: ["A"]},
13
+ "DD_API_SECURITY_ENDPOINT_COLLECTION_ENABLED" => {version: ["A"]},
14
+ "DD_API_SECURITY_REQUEST_SAMPLE_RATE" => {version: ["A"]},
15
+ "DD_API_SECURITY_SAMPLE_DELAY" => {version: ["A"]},
16
+ "DD_APM_TRACING_ENABLED" => {version: ["A"]},
17
+ "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING" => {version: ["A"]},
18
+ "DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE" => {version: ["A"]},
19
+ "DD_APPSEC_ENABLED" => {version: ["A"]},
20
+ "DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML" => {version: ["A"]},
21
+ "DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON" => {version: ["A"]},
22
+ "DD_APPSEC_HTTP_BLOCKED_TEMPLATE_TEXT" => {version: ["A"]},
23
+ "DD_APPSEC_MAX_STACK_TRACES" => {version: ["A"]},
24
+ "DD_APPSEC_MAX_STACK_TRACE_DEPTH" => {version: ["A"]},
25
+ "DD_APPSEC_MAX_STACK_TRACE_DEPTH_TOP_PERCENT" => {version: ["A"]},
26
+ "DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP" => {version: ["A"]},
27
+ "DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP" => {version: ["A"]},
28
+ "DD_APPSEC_RASP_ENABLED" => {version: ["A"]},
29
+ "DD_APPSEC_RULES" => {version: ["A"]},
30
+ "DD_APPSEC_SCA_ENABLED" => {version: ["A"]},
31
+ "DD_APPSEC_STACK_TRACE_ENABLED" => {version: ["A"]},
32
+ "DD_APPSEC_TRACE_RATE_LIMIT" => {version: ["A"]},
33
+ "DD_APPSEC_WAF_DEBUG" => {version: ["A"]},
34
+ "DD_APPSEC_WAF_TIMEOUT" => {version: ["A"]},
35
+ "DD_CRASHTRACKING_ENABLED" => {version: ["A"]},
36
+ "DD_DBM_PROPAGATION_MODE" => {version: ["A"]},
37
+ "DD_DISABLE_DATADOG_RAILS" => {version: ["A"]},
38
+ "DD_DYNAMIC_INSTRUMENTATION_ENABLED" => {version: ["A"]},
39
+ "DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE" => {version: ["A"]},
40
+ "DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS" => {version: ["A"]},
41
+ "DD_DYNAMIC_INSTRUMENTATION_REDACTED_TYPES" => {version: ["A"]},
42
+ "DD_ENV" => {version: ["A"]},
43
+ "DD_ERROR_TRACKING_HANDLED_ERRORS" => {version: ["A"]},
44
+ "DD_ERROR_TRACKING_HANDLED_ERRORS_INCLUDE" => {version: ["A"]},
45
+ "DD_GIT_COMMIT_SHA" => {version: ["A"]},
46
+ "DD_GIT_REPOSITORY_URL" => {version: ["A"]},
47
+ "DD_HEALTH_METRICS_ENABLED" => {version: ["A"]},
48
+ "DD_INJECTION_ENABLED" => {version: ["A"]},
49
+ "DD_INJECT_FORCE" => {version: ["A"]},
50
+ "DD_INSTRUMENTATION_INSTALL_ID" => {version: ["A"]},
51
+ "DD_INSTRUMENTATION_INSTALL_TIME" => {version: ["A"]},
52
+ "DD_INSTRUMENTATION_INSTALL_TYPE" => {version: ["A"]},
53
+ "DD_INSTRUMENTATION_TELEMETRY_ENABLED" => {version: ["A"]},
54
+ "DD_INTEGRATION_SERVICE" => {version: ["A"]},
55
+ "DD_LOGS_INJECTION" => {version: ["A"]},
56
+ "DD_METRIC_AGENT_PORT" => {version: ["A"]},
57
+ "DD_PROFILING_ALLOCATION_ENABLED" => {version: ["A"]},
58
+ "DD_PROFILING_DIR_INTERRUPTION_WORKAROUND_ENABLED" => {version: ["A"]},
59
+ "DD_PROFILING_ENABLED" => {version: ["A"]},
60
+ "DD_PROFILING_ENDPOINT_COLLECTION_ENABLED" => {version: ["A"]},
61
+ "DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED" => {version: ["A"]},
62
+ "DD_PROFILING_EXPERIMENTAL_HEAP_SAMPLE_RATE" => {version: ["A"]},
63
+ "DD_PROFILING_EXPERIMENTAL_HEAP_SIZE_ENABLED" => {version: ["A"]},
64
+ "DD_PROFILING_GC_ENABLED" => {version: ["A"]},
65
+ "DD_PROFILING_GVL_ENABLED" => {version: ["A"]},
66
+ "DD_PROFILING_HEAP_CLEAN_AFTER_GC_ENABLED" => {version: ["A"]},
67
+ "DD_PROFILING_MAX_FRAMES" => {version: ["A"]},
68
+ "DD_PROFILING_NATIVE_FILENAMES_ENABLED" => {version: ["A"]},
69
+ "DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED" => {version: ["A"]},
70
+ "DD_PROFILING_OVERHEAD_TARGET_PERCENTAGE" => {version: ["A"]},
71
+ "DD_PROFILING_PREVIEW_OTEL_CONTEXT_ENABLED" => {version: ["A"]},
72
+ "DD_PROFILING_SIGHANDLER_SAMPLING_ENABLED" => {version: ["A"]},
73
+ "DD_PROFILING_SKIP_MYSQL2_CHECK" => {version: ["A"]},
74
+ "DD_PROFILING_TIMELINE_ENABLED" => {version: ["A"]},
75
+ "DD_PROFILING_UPLOAD_PERIOD" => {version: ["A"]},
76
+ "DD_PROFILING_UPLOAD_TIMEOUT" => {version: ["A"]},
77
+ "DD_REDIS_COMMAND_ARGS" => {version: ["A"]},
78
+ "DD_REMOTE_CONFIGURATION_ENABLED" => {version: ["A"]},
79
+ "DD_REMOTE_CONFIG_BOOT_TIMEOUT_SECONDS" => {version: ["A"]},
80
+ "DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS" => {version: ["A"]},
81
+ "DD_RODA_ANALYTICS_ENABLED" => {version: ["A"]},
82
+ "DD_RODA_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
83
+ "DD_RUNTIME_METRICS_ENABLED" => {version: ["A"]},
84
+ "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED" => {version: ["A"]},
85
+ "DD_SERVICE" => {version: ["B"]},
86
+ "DD_SITE" => {version: ["A"]},
87
+ "DD_SPAN_SAMPLING_RULES" => {version: ["A"]},
88
+ "DD_SPAN_SAMPLING_RULES_FILE" => {version: ["A"]},
89
+ "DD_TAGS" => {version: ["B"]},
90
+ "DD_TELEMETRY_AGENTLESS_URL" => {version: ["A"]},
91
+ "DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED" => {version: ["A"]},
92
+ "DD_TELEMETRY_HEARTBEAT_INTERVAL" => {version: ["A"]},
93
+ "DD_TELEMETRY_LOG_COLLECTION_ENABLED" => {version: ["A"]},
94
+ "DD_TELEMETRY_METRICS_AGGREGATION_INTERVAL" => {version: ["A"]},
95
+ "DD_TELEMETRY_METRICS_ENABLED" => {version: ["A"]},
96
+ "DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED" => {version: ["A"]},
97
+ "DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED" => {version: ["A"]},
98
+ "DD_TRACE_ACTION_CABLE_ANALYTICS_ENABLED" => {version: ["A"]},
99
+ "DD_TRACE_ACTION_CABLE_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
100
+ "DD_TRACE_ACTION_CABLE_ENABLED" => {version: ["A"]},
101
+ "DD_TRACE_ACTION_MAILER_ANALYTICS_ENABLED" => {version: ["A"]},
102
+ "DD_TRACE_ACTION_MAILER_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
103
+ "DD_TRACE_ACTION_MAILER_ENABLED" => {version: ["A"]},
104
+ "DD_TRACE_ACTION_PACK_ANALYTICS_ENABLED" => {version: ["A"]},
105
+ "DD_TRACE_ACTION_PACK_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
106
+ "DD_TRACE_ACTION_PACK_ENABLED" => {version: ["A"]},
107
+ "DD_TRACE_ACTION_VIEW_ANALYTICS_ENABLED" => {version: ["A"]},
108
+ "DD_TRACE_ACTION_VIEW_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
109
+ "DD_TRACE_ACTION_VIEW_ENABLED" => {version: ["A"]},
110
+ "DD_TRACE_ACTIVE_JOB_ANALYTICS_ENABLED" => {version: ["A"]},
111
+ "DD_TRACE_ACTIVE_JOB_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
112
+ "DD_TRACE_ACTIVE_JOB_ENABLED" => {version: ["A"]},
113
+ "DD_TRACE_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_ENABLED" => {version: ["A"]},
114
+ "DD_TRACE_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
115
+ "DD_TRACE_ACTIVE_MODEL_SERIALIZERS_ENABLED" => {version: ["A"]},
116
+ "DD_TRACE_ACTIVE_RECORD_ANALYTICS_ENABLED" => {version: ["A"]},
117
+ "DD_TRACE_ACTIVE_RECORD_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
118
+ "DD_TRACE_ACTIVE_RECORD_ENABLED" => {version: ["A"]},
119
+ "DD_TRACE_ACTIVE_SUPPORT_ANALYTICS_ENABLED" => {version: ["A"]},
120
+ "DD_TRACE_ACTIVE_SUPPORT_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
121
+ "DD_TRACE_ACTIVE_SUPPORT_ENABLED" => {version: ["A"]},
122
+ "DD_TRACE_AGENT_PORT" => {version: ["A"]},
123
+ "DD_TRACE_AGENT_TIMEOUT_SECONDS" => {version: ["A"]},
124
+ "DD_TRACE_AGENT_URL" => {version: ["A"]},
125
+ "DD_TRACE_ANALYTICS_ENABLED" => {version: ["A"]},
126
+ "DD_TRACE_AWS_ANALYTICS_ENABLED" => {version: ["A"]},
127
+ "DD_TRACE_AWS_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
128
+ "DD_TRACE_AWS_ENABLED" => {version: ["A"]},
129
+ "DD_TRACE_AWS_PEER_SERVICE" => {version: ["A"]},
130
+ "DD_TRACE_AWS_SERVICE_NAME" => {version: ["A"]},
131
+ "DD_TRACE_BAGGAGE_TAG_KEYS" => {version: ["A"]},
132
+ "DD_TRACE_CLIENT_IP_ENABLED" => {version: ["A"]},
133
+ "DD_TRACE_CLIENT_IP_HEADER" => {version: ["A"]},
134
+ "DD_TRACE_CONCURRENT_RUBY_ENABLED" => {version: ["A"]},
135
+ "DD_TRACE_DALLI_ANALYTICS_ENABLED" => {version: ["A"]},
136
+ "DD_TRACE_DALLI_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
137
+ "DD_TRACE_DALLI_ENABLED" => {version: ["A"]},
138
+ "DD_TRACE_DALLI_PEER_SERVICE" => {version: ["A"]},
139
+ "DD_TRACE_DALLI_SERVICE_NAME" => {version: ["A"]},
140
+ "DD_TRACE_DEBUG" => {version: ["B"]},
141
+ "DD_TRACE_DELAYED_JOB_ANALYTICS_ENABLED" => {version: ["A"]},
142
+ "DD_TRACE_DELAYED_JOB_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
143
+ "DD_TRACE_DELAYED_JOB_ENABLED" => {version: ["A"]},
144
+ "DD_TRACE_ELASTICSEARCH_ANALYTICS_ENABLED" => {version: ["A"]},
145
+ "DD_TRACE_ELASTICSEARCH_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
146
+ "DD_TRACE_ELASTICSEARCH_ENABLED" => {version: ["A"]},
147
+ "DD_TRACE_ELASTICSEARCH_PEER_SERVICE" => {version: ["A"]},
148
+ "DD_TRACE_ELASTICSEARCH_SERVICE_NAME" => {version: ["A"]},
149
+ "DD_TRACE_ENABLED" => {version: ["B"]},
150
+ "DD_TRACE_ETHON_ANALYTICS_ENABLED" => {version: ["A"]},
151
+ "DD_TRACE_ETHON_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
152
+ "DD_TRACE_ETHON_ENABLED" => {version: ["A"]},
153
+ "DD_TRACE_ETHON_PEER_SERVICE" => {version: ["A"]},
154
+ "DD_TRACE_ETHON_SERVICE_NAME" => {version: ["A"]},
155
+ "DD_TRACE_EXCON_ANALYTICS_ENABLED" => {version: ["A"]},
156
+ "DD_TRACE_EXCON_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
157
+ "DD_TRACE_EXCON_ENABLED" => {version: ["A"]},
158
+ "DD_TRACE_EXCON_ERROR_STATUS_CODES" => {version: ["A"]},
159
+ "DD_TRACE_EXCON_PEER_SERVICE" => {version: ["A"]},
160
+ "DD_TRACE_EXCON_SERVICE_NAME" => {version: ["A"]},
161
+ "DD_TRACE_FARADAY_ANALYTICS_ENABLED" => {version: ["A"]},
162
+ "DD_TRACE_FARADAY_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
163
+ "DD_TRACE_FARADAY_ENABLED" => {version: ["A"]},
164
+ "DD_TRACE_FARADAY_ERROR_STATUS_CODES" => {version: ["A"]},
165
+ "DD_TRACE_FARADAY_PEER_SERVICE" => {version: ["A"]},
166
+ "DD_TRACE_FARADAY_SERVICE_NAME" => {version: ["A"]},
167
+ "DD_TRACE_GRAPE_ANALYTICS_ENABLED" => {version: ["A"]},
168
+ "DD_TRACE_GRAPE_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
169
+ "DD_TRACE_GRAPE_ENABLED" => {version: ["A"]},
170
+ "DD_TRACE_GRAPE_ERROR_STATUS_CODES" => {version: ["A"]},
171
+ "DD_TRACE_GRAPHQL_ANALYTICS_ENABLED" => {version: ["A"]},
172
+ "DD_TRACE_GRAPHQL_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
173
+ "DD_TRACE_GRAPHQL_ENABLED" => {version: ["A"]},
174
+ "DD_TRACE_GRAPHQL_ERROR_EXTENSIONS" => {version: ["A"]},
175
+ "DD_TRACE_GRAPHQL_ERROR_TRACKING" => {version: ["A"]},
176
+ "DD_TRACE_GRAPHQL_WITH_UNIFIED_TRACER" => {version: ["A"]},
177
+ "DD_TRACE_GRPC_ANALYTICS_ENABLED" => {version: ["A"]},
178
+ "DD_TRACE_GRPC_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
179
+ "DD_TRACE_GRPC_ENABLED" => {version: ["A"]},
180
+ "DD_TRACE_GRPC_PEER_SERVICE" => {version: ["A"]},
181
+ "DD_TRACE_GRPC_SERVICE_NAME" => {version: ["A"]},
182
+ "DD_TRACE_HANAMI_ENABLED" => {version: ["A"]},
183
+ "DD_TRACE_HEADER_TAGS" => {version: ["A"]},
184
+ "DD_TRACE_HTTPCLIENT_ANALYTICS_ENABLED" => {version: ["A"]},
185
+ "DD_TRACE_HTTPCLIENT_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
186
+ "DD_TRACE_HTTPCLIENT_ENABLED" => {version: ["A"]},
187
+ "DD_TRACE_HTTPCLIENT_ERROR_STATUS_CODES" => {version: ["A"]},
188
+ "DD_TRACE_HTTPCLIENT_PEER_SERVICE" => {version: ["A"]},
189
+ "DD_TRACE_HTTPCLIENT_SERVICE_NAME" => {version: ["A"]},
190
+ "DD_TRACE_HTTPRB_ANALYTICS_ENABLED" => {version: ["A"]},
191
+ "DD_TRACE_HTTPRB_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
192
+ "DD_TRACE_HTTPRB_ENABLED" => {version: ["A"]},
193
+ "DD_TRACE_HTTPRB_ERROR_STATUS_CODES" => {version: ["A"]},
194
+ "DD_TRACE_HTTPRB_PEER_SERVICE" => {version: ["A"]},
195
+ "DD_TRACE_HTTPRB_SERVICE_NAME" => {version: ["A"]},
196
+ "DD_TRACE_HTTP_ANALYTICS_ENABLED" => {version: ["A"]},
197
+ "DD_TRACE_HTTP_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
198
+ "DD_TRACE_HTTP_ENABLED" => {version: ["A"]},
199
+ "DD_TRACE_HTTP_ERROR_STATUS_CODES" => {version: ["A"]},
200
+ "DD_TRACE_KAFKA_ANALYTICS_ENABLED" => {version: ["A"]},
201
+ "DD_TRACE_KAFKA_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
202
+ "DD_TRACE_KAFKA_ENABLED" => {version: ["A"]},
203
+ "DD_TRACE_KARAFKA_ENABLED" => {version: ["A"]},
204
+ "DD_TRACE_LOGRAGE_ENABLED" => {version: ["A"]},
205
+ "DD_TRACE_MEMCACHED_COMMAND_ENABLED" => {version: ["A"]},
206
+ "DD_TRACE_MONGO_ANALYTICS_ENABLED" => {version: ["A"]},
207
+ "DD_TRACE_MONGO_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
208
+ "DD_TRACE_MONGO_ENABLED" => {version: ["A"]},
209
+ "DD_TRACE_MONGO_JSON_COMMAND" => {version: ["A"]},
210
+ "DD_TRACE_MONGO_PEER_SERVICE" => {version: ["A"]},
211
+ "DD_TRACE_MONGO_SERVICE_NAME" => {version: ["A"]},
212
+ "DD_TRACE_MYSQL2_ANALYTICS_ENABLED" => {version: ["A"]},
213
+ "DD_TRACE_MYSQL2_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
214
+ "DD_TRACE_MYSQL2_ENABLED" => {version: ["A"]},
215
+ "DD_TRACE_MYSQL2_PEER_SERVICE" => {version: ["A"]},
216
+ "DD_TRACE_MYSQL2_SERVICE_NAME" => {version: ["A"]},
217
+ "DD_TRACE_NATIVE_SPAN_EVENTS" => {version: ["A"]},
218
+ "DD_TRACE_NET_HTTP_PEER_SERVICE" => {version: ["A"]},
219
+ "DD_TRACE_NET_HTTP_SERVICE_NAME" => {version: ["A"]},
220
+ "DD_TRACE_OPENSEARCH_ANALYTICS_ENABLED" => {version: ["A"]},
221
+ "DD_TRACE_OPENSEARCH_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
222
+ "DD_TRACE_OPENSEARCH_ENABLED" => {version: ["A"]},
223
+ "DD_TRACE_OPENSEARCH_PEER_SERVICE" => {version: ["A"]},
224
+ "DD_TRACE_OPENSEARCH_RESOURCE_PATTERN" => {version: ["A"]},
225
+ "DD_TRACE_OPENSEARCH_SERVICE_NAME" => {version: ["A"]},
226
+ "DD_TRACE_PEER_SERVICE_DEFAULTS_ENABLED" => {version: ["A"]},
227
+ "DD_TRACE_PEER_SERVICE_MAPPING" => {version: ["A"]},
228
+ "DD_TRACE_PG_ANALYTICS_ENABLED" => {version: ["A"]},
229
+ "DD_TRACE_PG_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
230
+ "DD_TRACE_PG_ENABLED" => {version: ["A"]},
231
+ "DD_TRACE_PG_PEER_SERVICE" => {version: ["A"]},
232
+ "DD_TRACE_PG_SERVICE_NAME" => {version: ["A"]},
233
+ "DD_TRACE_PRESTO_ANALYTICS_ENABLED" => {version: ["A"]},
234
+ "DD_TRACE_PRESTO_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
235
+ "DD_TRACE_PRESTO_ENABLED" => {version: ["A"]},
236
+ "DD_TRACE_PRESTO_PEER_SERVICE" => {version: ["A"]},
237
+ "DD_TRACE_PRESTO_SERVICE_NAME" => {version: ["A"]},
238
+ "DD_TRACE_PROPAGATION_EXTRACT_FIRST" => {version: ["A"]},
239
+ "DD_TRACE_PROPAGATION_STYLE" => {version: ["B"]},
240
+ "DD_TRACE_PROPAGATION_STYLE_EXTRACT" => {version: ["A"]},
241
+ "DD_TRACE_PROPAGATION_STYLE_INJECT" => {version: ["A"]},
242
+ "DD_TRACE_QUE_ANALYTICS_ENABLED" => {version: ["A"]},
243
+ "DD_TRACE_QUE_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
244
+ "DD_TRACE_QUE_ENABLED" => {version: ["A"]},
245
+ "DD_TRACE_QUE_TAG_ARGS_ENABLED" => {version: ["A"]},
246
+ "DD_TRACE_QUE_TAG_DATA_ENABLED" => {version: ["A"]},
247
+ "DD_TRACE_RACECAR_ANALYTICS_ENABLED" => {version: ["A"]},
248
+ "DD_TRACE_RACECAR_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
249
+ "DD_TRACE_RACECAR_ENABLED" => {version: ["A"]},
250
+ "DD_TRACE_RACK_ANALYTICS_ENABLED" => {version: ["A"]},
251
+ "DD_TRACE_RACK_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
252
+ "DD_TRACE_RACK_ENABLED" => {version: ["A"]},
253
+ "DD_TRACE_RAILS_ANALYTICS_ENABLED" => {version: ["A"]},
254
+ "DD_TRACE_RAILS_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
255
+ "DD_TRACE_RAILS_ENABLED" => {version: ["A"]},
256
+ "DD_TRACE_RAKE_ANALYTICS_ENABLED" => {version: ["A"]},
257
+ "DD_TRACE_RAKE_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
258
+ "DD_TRACE_RAKE_ENABLED" => {version: ["A"]},
259
+ "DD_TRACE_RATE_LIMIT" => {version: ["A"]},
260
+ "DD_TRACE_REDIS_ANALYTICS_ENABLED" => {version: ["A"]},
261
+ "DD_TRACE_REDIS_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
262
+ "DD_TRACE_REDIS_ENABLED" => {version: ["A"]},
263
+ "DD_TRACE_REDIS_PEER_SERVICE" => {version: ["A"]},
264
+ "DD_TRACE_REDIS_SERVICE_NAME" => {version: ["A"]},
265
+ "DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED" => {version: ["A"]},
266
+ "DD_TRACE_REPORT_HOSTNAME" => {version: ["A"]},
267
+ "DD_TRACE_RESQUE_ANALYTICS_ENABLED" => {version: ["A"]},
268
+ "DD_TRACE_RESQUE_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
269
+ "DD_TRACE_RESQUE_ENABLED" => {version: ["A"]},
270
+ "DD_TRACE_REST_CLIENT_ANALYTICS_ENABLED" => {version: ["A"]},
271
+ "DD_TRACE_REST_CLIENT_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
272
+ "DD_TRACE_REST_CLIENT_ENABLED" => {version: ["A"]},
273
+ "DD_TRACE_REST_CLIENT_PEER_SERVICE" => {version: ["A"]},
274
+ "DD_TRACE_REST_CLIENT_SERVICE_NAME" => {version: ["A"]},
275
+ "DD_TRACE_RODA_ENABLED" => {version: ["A"]},
276
+ "DD_TRACE_SAMPLE_RATE" => {version: ["B"]},
277
+ "DD_TRACE_SAMPLING_RULES" => {version: ["A"]},
278
+ "DD_TRACE_SEMANTIC_LOGGER_ENABLED" => {version: ["A"]},
279
+ "DD_TRACE_SEQUEL_ANALYTICS_ENABLED" => {version: ["A"]},
280
+ "DD_TRACE_SEQUEL_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
281
+ "DD_TRACE_SEQUEL_ENABLED" => {version: ["A"]},
282
+ "DD_TRACE_SHORYUKEN_ANALYTICS_ENABLED" => {version: ["A"]},
283
+ "DD_TRACE_SHORYUKEN_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
284
+ "DD_TRACE_SHORYUKEN_ENABLED" => {version: ["A"]},
285
+ "DD_TRACE_SIDEKIQ_ANALYTICS_ENABLED" => {version: ["A"]},
286
+ "DD_TRACE_SIDEKIQ_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
287
+ "DD_TRACE_SIDEKIQ_ENABLED" => {version: ["A"]},
288
+ "DD_TRACE_SINATRA_ANALYTICS_ENABLED" => {version: ["A"]},
289
+ "DD_TRACE_SINATRA_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
290
+ "DD_TRACE_SINATRA_ENABLED" => {version: ["A"]},
291
+ "DD_TRACE_SNEAKERS_ANALYTICS_ENABLED" => {version: ["A"]},
292
+ "DD_TRACE_SNEAKERS_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
293
+ "DD_TRACE_SNEAKERS_ENABLED" => {version: ["A"]},
294
+ "DD_TRACE_STARTUP_LOGS" => {version: ["A"]},
295
+ "DD_TRACE_STRIPE_ANALYTICS_ENABLED" => {version: ["A"]},
296
+ "DD_TRACE_STRIPE_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
297
+ "DD_TRACE_STRIPE_ENABLED" => {version: ["A"]},
298
+ "DD_TRACE_SUCKER_PUNCH_ANALYTICS_ENABLED" => {version: ["A"]},
299
+ "DD_TRACE_SUCKER_PUNCH_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
300
+ "DD_TRACE_SUCKER_PUNCH_ENABLED" => {version: ["A"]},
301
+ "DD_TRACE_TEST_MODE_ENABLED" => {version: ["A"]},
302
+ "DD_TRACE_TRILOGY_ANALYTICS_ENABLED" => {version: ["A"]},
303
+ "DD_TRACE_TRILOGY_ANALYTICS_SAMPLE_RATE" => {version: ["A"]},
304
+ "DD_TRACE_TRILOGY_ENABLED" => {version: ["A"]},
305
+ "DD_TRACE_TRILOGY_PEER_SERVICE" => {version: ["A"]},
306
+ "DD_TRACE_TRILOGY_SERVICE_NAME" => {version: ["A"]},
307
+ "DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH" => {version: ["A"]},
308
+ "DD_VERSION" => {version: ["A"]},
309
+ "OTEL_TRACES_SAMPLER_ARG" => {version: ["A"]}}.freeze
310
+
311
+ ALIASES =
312
+ {"DD_DISABLE_DATADOG_RAILS" => ["DISABLE_DATADOG_RAILS"],
313
+ "DD_PROFILING_GVL_ENABLED" => ["DD_PROFILING_PREVIEW_GVL_ENABLED"],
314
+ "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED" => ["DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED"],
315
+ "DD_SERVICE" => ["OTEL_SERVICE_NAME"],
316
+ "DD_TAGS" => ["OTEL_RESOURCE_ATTRIBUTES"],
317
+ "DD_TRACE_DEBUG" => ["OTEL_LOG_LEVEL"],
318
+ "DD_TRACE_ENABLED" => ["OTEL_TRACES_EXPORTER"],
319
+ "DD_TRACE_PROPAGATION_STYLE" => ["OTEL_PROPAGATORS"],
320
+ "DD_TRACE_SAMPLE_RATE" => ["OTEL_TRACES_SAMPLER"]}.freeze
321
+
322
+ DEPRECATIONS =
323
+ {"DD_PROFILING_PREVIEW_GVL_ENABLED" => "(This doesn't need a deprecation message since there's an alias for it)"}.freeze
324
+
325
+ ALIAS_TO_CANONICAL =
326
+ {"DD_PROFILING_PREVIEW_GVL_ENABLED" => "DD_PROFILING_GVL_ENABLED",
327
+ "DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED" => "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED",
328
+ "DISABLE_DATADOG_RAILS" => "DD_DISABLE_DATADOG_RAILS",
329
+ "OTEL_LOG_LEVEL" => "DD_TRACE_DEBUG",
330
+ "OTEL_PROPAGATORS" => "DD_TRACE_PROPAGATION_STYLE",
331
+ "OTEL_RESOURCE_ATTRIBUTES" => "DD_TAGS",
332
+ "OTEL_SERVICE_NAME" => "DD_SERVICE",
333
+ "OTEL_TRACES_EXPORTER" => "DD_TRACE_ENABLED",
334
+ "OTEL_TRACES_SAMPLER" => "DD_TRACE_SAMPLE_RATE"}.freeze
335
+ end
336
+ end
337
+ end
@@ -172,6 +172,10 @@ module Datadog
172
172
  end
173
173
  end
174
174
 
175
+ def config_init_logger
176
+ configuration? ? logger : logger_without_configuration
177
+ end
178
+
175
179
  # Gracefully shuts down all components.
176
180
  #
177
181
  # Components will still respond to method calls as usual,
@@ -231,19 +235,21 @@ module Datadog
231
235
  end
232
236
 
233
237
  COMPONENTS_WRITE_LOCK.synchronize do
234
- begin
235
- yield write_components
236
- rescue ThreadError => e
237
- logger_without_components.error(
238
- 'Detected deadlock during datadog initialization. ' \
239
- 'Please report this at https://github.com/datadog/dd-trace-rb/blob/master/CONTRIBUTING.md#found-a-bug' \
240
- "\n\tSource:\n\t#{Array(e.backtrace).join("\n\t")}"
241
- )
242
- nil
243
- end
238
+ yield write_components
239
+ rescue ThreadError => e
240
+ logger_without_components.error(
241
+ "Detected deadlock during datadog initialization: #{e.class}: #{e}. " \
242
+ 'Please report this at https://github.com/datadog/dd-trace-rb/blob/master/CONTRIBUTING.md#found-a-bug' \
243
+ "\n\tSource:\n\t#{Array(e.backtrace).join("\n\t")}"
244
+ )
245
+ nil
244
246
  end
245
247
  end
246
248
 
249
+ def configuration?
250
+ (defined?(@configuration) && @configuration) != nil
251
+ end
252
+
247
253
  def components?
248
254
  # This does not need to grab the COMPONENTS_READ_LOCK because it's not returning the components
249
255
  (defined?(@components) && @components) != nil
@@ -259,12 +265,14 @@ module Datadog
259
265
  components = Components.new(settings)
260
266
 
261
267
  # Carry over state from existing components to the new ones.
262
- # Currently, if we already started the remote component (which
263
- # happens after a request goes through installed Rack middleware),
264
- # we will start the new remote component as well.
265
- old_state = {
266
- remote_started: old.remote&.started?,
267
- }
268
+ # Currently:
269
+ # 1. If we already started the remote component (which
270
+ # happens after a request goes through installed Rack middleware),
271
+ # we will start the new remote component as well.
272
+ # 2. If telemetry has been enabled and is enabled in the new
273
+ # component tree, we send AppConfigurationChange event instead
274
+ # of AppStarted event.
275
+ old_state = old.state
268
276
 
269
277
  old.shutdown!(components)
270
278
  components.startup!(settings, old_state: old_state)
@@ -274,6 +282,7 @@ module Datadog
274
282
  def logger_without_components
275
283
  # Use default logger without initializing components.
276
284
  # This enables logging during initialization, otherwise we'd run into deadlocks.
285
+
277
286
  @temp_logger ||= begin
278
287
  logger = configuration.logger.instance || Core::Logger.new($stdout)
279
288
  logger.level = configuration.diagnostics.debug ? ::Logger::DEBUG : configuration.logger.level
@@ -281,6 +290,21 @@ module Datadog
281
290
  end
282
291
  end
283
292
 
293
+ def logger_without_configuration
294
+ # There's rare cases where we need to use logger during configuration initialization,
295
+ # such as reading stable config. In this case we cannot access configuration.
296
+
297
+ @temp_config_logger ||= begin
298
+ debug_env_value = DATADOG_ENV[Ext::Diagnostics::ENV_DEBUG_ENABLED]&.strip&.downcase
299
+ debug_value = debug_env_value == 'true' || debug_env_value == '1'
300
+
301
+ logger = Core::Logger.new($stdout)
302
+ # We cannot access config and the default level is INFO, so we need to set the level manually
303
+ logger.level = debug_value ? ::Logger::DEBUG : ::Logger::INFO
304
+ logger
305
+ end
306
+ end
307
+
284
308
  # Called from our at_exit hook whenever there was a pending Interrupt exception (e.g. typically due to ctrl+c)
285
309
  # to print a nice message whenever we're taking a bit longer than usual to finish the process.
286
310
  def handle_interrupt_shutdown!
@@ -18,14 +18,6 @@ module Datadog
18
18
  #
19
19
  # Methods prefixed with _native_ are implemented in `crashtracker.c`
20
20
  class Component
21
- LIBDATADOG_API_FAILURE =
22
- begin
23
- require "libdatadog_api.#{RUBY_VERSION[/\d+.\d+/]}_#{RUBY_PLATFORM}"
24
- nil
25
- rescue LoadError => e
26
- e.message
27
- end
28
-
29
21
  ONLY_ONCE = Core::Utils::OnlyOnce.new
30
22
 
31
23
  def self.build(settings, agent_settings, logger:)
@@ -71,7 +63,7 @@ module Datadog
71
63
  # Must NOT reference `self` here, as only the first instance will
72
64
  # be captured by the ONLY_ONCE and we want to pick the latest active one
73
65
  # (which may have different tags or agent config)
74
- Datadog.send(:components).crashtracker&.update_on_fork
66
+ Datadog.send(:components, allow_initialization: false)&.crashtracker&.update_on_fork
75
67
  end
76
68
  end
77
69
  end
@@ -100,7 +92,8 @@ module Datadog
100
92
  path_to_crashtracking_receiver_binary: path_to_crashtracking_receiver_binary,
101
93
  ld_library_path: ld_library_path,
102
94
  tags_as_array: tags.to_a,
103
- upload_timeout_seconds: 1
95
+ # @ivoanjo: On my machine this needs to be > 5 seconds, and seems to work with 10; the extra 15 is extra margin
96
+ upload_timeout_seconds: 15,
104
97
  )
105
98
  logger.debug("Crash tracking action: #{action} successful")
106
99
  rescue => e
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../tag_builder'
3
4
  require_relative '../utils'
4
- require_relative '../environment/socket'
5
- require_relative '../environment/identity'
6
- require_relative '../environment/git'
7
5
 
8
6
  module Datadog
9
7
  module Core
@@ -11,27 +9,11 @@ module Datadog
11
9
  # This module builds a hash of tags
12
10
  module TagBuilder
13
11
  def self.call(settings)
14
- hash = {
15
- 'host' => Environment::Socket.hostname,
16
- 'process_id' => Process.pid.to_s,
17
- 'runtime_engine' => Environment::Identity.lang_engine,
18
- 'runtime-id' => Environment::Identity.id,
19
- 'runtime_platform' => Environment::Identity.lang_platform,
20
- 'runtime_version' => Environment::Identity.lang_version,
21
- 'env' => settings.env,
22
- 'service' => settings.service,
23
- 'version' => settings.version,
24
- 'git.repository_url' => Environment::Git.git_repository_url,
25
- 'git.commit.sha' => Environment::Git.git_commit_sha,
12
+ hash = Core::TagBuilder.tags(settings).merge(
26
13
  'is_crash' => 'true',
27
- 'language' => 'ruby',
28
- 'library_version' => Core::Environment::Identity.gem_datadog_version,
29
- }.compact
14
+ )
30
15
 
31
- # Make sure everything is an utf-8 string, to avoid encoding issues in downstream
32
- settings.tags.merge(hash).each_with_object({}) do |(key, value), h|
33
- h[Utils.utf8_encode(key)] = Utils.utf8_encode(value)
34
- end
16
+ Utils.encode_tags(hash)
35
17
  end
36
18
  end
37
19
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'datadog/core'
4
+
5
+ module Datadog
6
+ module Core
7
+ # Used to access ddsketch APIs.
8
+ # APIs in this class are implemented as native code.
9
+ class DDSketch
10
+ def self.supported?
11
+ Datadog::Core::LIBDATADOG_API_FAILURE.nil?
12
+ end
13
+
14
+ def initialize
15
+ unless self.class.supported?
16
+ raise(ArgumentError, "DDSketch is not supported: #{Datadog::Core::LIBDATADOG_API_FAILURE}")
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -14,10 +14,10 @@ module Datadog
14
14
  # @yieldreturn [String] a String with the lazily evaluated deprecation message.
15
15
  # @param [Boolean] disallowed_next_major whether this deprecation will be enforced in the next major release.
16
16
  # @param [Object] key A unique key for the deprecation. Only the first message with the same key will be logged.
17
- def log_deprecation(disallowed_next_major: true, key: nil)
17
+ def log_deprecation(disallowed_next_major: true, key: nil, logger: Datadog.logger)
18
18
  return unless log_deprecation?(key)
19
19
 
20
- Datadog.logger.warn do
20
+ logger.warn do
21
21
  message = yield
22
22
  message += ' This will be enforced in the next major release.' if disallowed_next_major
23
23
  message
@@ -79,7 +79,7 @@ module Datadog
79
79
 
80
80
  # @return [String] current time in ISO8601 format
81
81
  def date
82
- Time.now.utc.iso8601
82
+ Core::Utils::Time.now.utc.iso8601
83
83
  end
84
84
 
85
85
  # Best portable guess of OS information.
@@ -54,7 +54,7 @@ module Datadog
54
54
  end
55
55
 
56
56
  def join(encoded_data)
57
- "[#{encoded_data.join(',')}]"
57
+ "[#{encoded_data.join(",")}]"
58
58
  end
59
59
  end
60
60
 
@@ -51,11 +51,12 @@ module Datadog
51
51
  #
52
52
  # @see https://github.com/DataDog/datadog-agent/blob/f07df0a3c1fca0c83b5a15f553bd994091b0c8ac/pkg/trace/api/info.go#L20
53
53
  class AgentInfo
54
- attr_reader :agent_settings
54
+ attr_reader :agent_settings, :logger
55
55
 
56
- def initialize(agent_settings)
56
+ def initialize(agent_settings, logger: Datadog.logger)
57
57
  @agent_settings = agent_settings
58
- @client = Remote::Transport::HTTP.root(agent_settings: agent_settings)
58
+ @logger = logger
59
+ @client = Remote::Transport::HTTP.root(agent_settings: agent_settings, logger: logger)
59
60
  end
60
61
 
61
62
  # Fetches the information from the agent.
@@ -23,20 +23,18 @@ module Datadog
23
23
 
24
24
  def descriptors(process = 'self')
25
25
  [].tap do |descriptors|
26
- begin
27
- filepath = "/proc/#{process}/cgroup"
28
-
29
- if File.exist?(filepath)
30
- File.foreach("/proc/#{process}/cgroup") do |line|
31
- line = line.strip
32
- descriptors << parse(line) unless line.empty?
33
- end
26
+ filepath = "/proc/#{process}/cgroup"
27
+
28
+ if File.exist?(filepath)
29
+ File.foreach("/proc/#{process}/cgroup") do |line|
30
+ line = line.strip
31
+ descriptors << parse(line) unless line.empty?
34
32
  end
35
- rescue StandardError => e
36
- Datadog.logger.error(
37
- "Error while parsing cgroup. Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}"
38
- )
39
33
  end
34
+ rescue => e
35
+ Datadog.logger.error(
36
+ "Error while parsing cgroup. Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}"
37
+ )
40
38
  end
41
39
  end
42
40