cw-datadog 2.23.0.2

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 (944) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +5142 -0
  3. data/LICENSE +6 -0
  4. data/LICENSE-3rdparty.csv +7 -0
  5. data/LICENSE.Apache +200 -0
  6. data/LICENSE.BSD3 +24 -0
  7. data/NOTICE +4 -0
  8. data/README.md +24 -0
  9. data/bin/ddprofrb +15 -0
  10. data/ext/LIBDATADOG_DEVELOPMENT.md +3 -0
  11. data/ext/datadog_profiling_native_extension/NativeExtensionDesign.md +156 -0
  12. data/ext/datadog_profiling_native_extension/clock_id.h +23 -0
  13. data/ext/datadog_profiling_native_extension/clock_id_from_pthread.c +55 -0
  14. data/ext/datadog_profiling_native_extension/clock_id_noop.c +21 -0
  15. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +1423 -0
  16. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +447 -0
  17. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h +131 -0
  18. data/ext/datadog_profiling_native_extension/collectors_dynamic_sampling_rate.c +150 -0
  19. data/ext/datadog_profiling_native_extension/collectors_dynamic_sampling_rate.h +18 -0
  20. data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.c +156 -0
  21. data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.h +5 -0
  22. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +248 -0
  23. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
  24. data/ext/datadog_profiling_native_extension/collectors_stack.c +659 -0
  25. data/ext/datadog_profiling_native_extension/collectors_stack.h +44 -0
  26. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +2221 -0
  27. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +31 -0
  28. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +80 -0
  29. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +63 -0
  30. data/ext/datadog_profiling_native_extension/encoded_profile.c +79 -0
  31. data/ext/datadog_profiling_native_extension/encoded_profile.h +8 -0
  32. data/ext/datadog_profiling_native_extension/extconf.rb +321 -0
  33. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.c +52 -0
  34. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.h +67 -0
  35. data/ext/datadog_profiling_native_extension/heap_recorder.c +998 -0
  36. data/ext/datadog_profiling_native_extension/heap_recorder.h +177 -0
  37. data/ext/datadog_profiling_native_extension/helpers.h +12 -0
  38. data/ext/datadog_profiling_native_extension/http_transport.c +280 -0
  39. data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +84 -0
  40. data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +28 -0
  41. data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +244 -0
  42. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +881 -0
  43. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +81 -0
  44. data/ext/datadog_profiling_native_extension/profiling.c +284 -0
  45. data/ext/datadog_profiling_native_extension/ruby_helpers.c +235 -0
  46. data/ext/datadog_profiling_native_extension/ruby_helpers.h +88 -0
  47. data/ext/datadog_profiling_native_extension/setup_signal_handler.c +115 -0
  48. data/ext/datadog_profiling_native_extension/setup_signal_handler.h +12 -0
  49. data/ext/datadog_profiling_native_extension/stack_recorder.c +1145 -0
  50. data/ext/datadog_profiling_native_extension/stack_recorder.h +31 -0
  51. data/ext/datadog_profiling_native_extension/time_helpers.c +38 -0
  52. data/ext/datadog_profiling_native_extension/time_helpers.h +56 -0
  53. data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.c +47 -0
  54. data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.h +31 -0
  55. data/ext/libdatadog_api/crashtracker.c +125 -0
  56. data/ext/libdatadog_api/crashtracker.h +5 -0
  57. data/ext/libdatadog_api/datadog_ruby_common.c +80 -0
  58. data/ext/libdatadog_api/datadog_ruby_common.h +63 -0
  59. data/ext/libdatadog_api/ddsketch.c +106 -0
  60. data/ext/libdatadog_api/extconf.rb +110 -0
  61. data/ext/libdatadog_api/init.c +18 -0
  62. data/ext/libdatadog_api/library_config.c +172 -0
  63. data/ext/libdatadog_api/library_config.h +25 -0
  64. data/ext/libdatadog_api/process_discovery.c +118 -0
  65. data/ext/libdatadog_api/process_discovery.h +5 -0
  66. data/ext/libdatadog_extconf_helpers.rb +140 -0
  67. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +89 -0
  68. data/lib/datadog/appsec/actions_handler.rb +49 -0
  69. data/lib/datadog/appsec/anonymizer.rb +16 -0
  70. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +26 -0
  71. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +59 -0
  72. data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +29 -0
  73. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +26 -0
  74. data/lib/datadog/appsec/api_security/endpoint_collection.rb +10 -0
  75. data/lib/datadog/appsec/api_security/route_extractor.rb +77 -0
  76. data/lib/datadog/appsec/api_security/sampler.rb +60 -0
  77. data/lib/datadog/appsec/api_security.rb +23 -0
  78. data/lib/datadog/appsec/assets/blocked.html +99 -0
  79. data/lib/datadog/appsec/assets/blocked.json +1 -0
  80. data/lib/datadog/appsec/assets/blocked.text +5 -0
  81. data/lib/datadog/appsec/assets/waf_rules/README.md +46 -0
  82. data/lib/datadog/appsec/assets/waf_rules/recommended.json +10504 -0
  83. data/lib/datadog/appsec/assets/waf_rules/strict.json +3066 -0
  84. data/lib/datadog/appsec/assets.rb +46 -0
  85. data/lib/datadog/appsec/autoload.rb +13 -0
  86. data/lib/datadog/appsec/component.rb +89 -0
  87. data/lib/datadog/appsec/compressed_json.rb +40 -0
  88. data/lib/datadog/appsec/configuration/settings.rb +409 -0
  89. data/lib/datadog/appsec/configuration.rb +11 -0
  90. data/lib/datadog/appsec/context.rb +97 -0
  91. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +94 -0
  92. data/lib/datadog/appsec/contrib/active_record/integration.rb +41 -0
  93. data/lib/datadog/appsec/contrib/active_record/patcher.rb +101 -0
  94. data/lib/datadog/appsec/contrib/auto_instrument.rb +25 -0
  95. data/lib/datadog/appsec/contrib/devise/configuration.rb +52 -0
  96. data/lib/datadog/appsec/contrib/devise/data_extractor.rb +78 -0
  97. data/lib/datadog/appsec/contrib/devise/ext.rb +35 -0
  98. data/lib/datadog/appsec/contrib/devise/integration.rb +41 -0
  99. data/lib/datadog/appsec/contrib/devise/patcher.rb +63 -0
  100. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +103 -0
  101. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +70 -0
  102. data/lib/datadog/appsec/contrib/devise/patches/skip_signin_tracking_patch.rb +21 -0
  103. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +106 -0
  104. data/lib/datadog/appsec/contrib/excon/integration.rb +41 -0
  105. data/lib/datadog/appsec/contrib/excon/patcher.rb +28 -0
  106. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +42 -0
  107. data/lib/datadog/appsec/contrib/faraday/connection_patch.rb +22 -0
  108. data/lib/datadog/appsec/contrib/faraday/integration.rb +42 -0
  109. data/lib/datadog/appsec/contrib/faraday/patcher.rb +53 -0
  110. data/lib/datadog/appsec/contrib/faraday/rack_builder_patch.rb +22 -0
  111. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +42 -0
  112. data/lib/datadog/appsec/contrib/graphql/appsec_trace.rb +29 -0
  113. data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +109 -0
  114. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +56 -0
  115. data/lib/datadog/appsec/contrib/graphql/integration.rb +54 -0
  116. data/lib/datadog/appsec/contrib/graphql/patcher.rb +34 -0
  117. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  118. data/lib/datadog/appsec/contrib/rack/ext.rb +47 -0
  119. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +101 -0
  120. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  121. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +141 -0
  122. data/lib/datadog/appsec/contrib/rack/integration.rb +44 -0
  123. data/lib/datadog/appsec/contrib/rack/patcher.rb +31 -0
  124. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +43 -0
  125. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +218 -0
  126. data/lib/datadog/appsec/contrib/rails/ext.rb +13 -0
  127. data/lib/datadog/appsec/contrib/rails/framework.rb +16 -0
  128. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  129. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +78 -0
  130. data/lib/datadog/appsec/contrib/rails/integration.rb +43 -0
  131. data/lib/datadog/appsec/contrib/rails/patcher.rb +171 -0
  132. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
  133. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
  134. data/lib/datadog/appsec/contrib/rails/request.rb +36 -0
  135. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  136. data/lib/datadog/appsec/contrib/rest_client/integration.rb +45 -0
  137. data/lib/datadog/appsec/contrib/rest_client/patcher.rb +28 -0
  138. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +39 -0
  139. data/lib/datadog/appsec/contrib/sinatra/framework.rb +20 -0
  140. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  141. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  142. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +105 -0
  143. data/lib/datadog/appsec/contrib/sinatra/integration.rb +43 -0
  144. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +132 -0
  145. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
  146. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  147. data/lib/datadog/appsec/event.rb +139 -0
  148. data/lib/datadog/appsec/ext.rb +23 -0
  149. data/lib/datadog/appsec/extensions.rb +16 -0
  150. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +43 -0
  151. data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +24 -0
  152. data/lib/datadog/appsec/instrumentation/gateway.rb +59 -0
  153. data/lib/datadog/appsec/instrumentation.rb +9 -0
  154. data/lib/datadog/appsec/metrics/collector.rb +58 -0
  155. data/lib/datadog/appsec/metrics/exporter.rb +35 -0
  156. data/lib/datadog/appsec/metrics/telemetry.rb +23 -0
  157. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +29 -0
  158. data/lib/datadog/appsec/metrics.rb +14 -0
  159. data/lib/datadog/appsec/monitor/gateway/watcher.rb +85 -0
  160. data/lib/datadog/appsec/monitor.rb +11 -0
  161. data/lib/datadog/appsec/processor/rule_loader.rb +119 -0
  162. data/lib/datadog/appsec/rate_limiter.rb +45 -0
  163. data/lib/datadog/appsec/remote.rb +119 -0
  164. data/lib/datadog/appsec/response.rb +99 -0
  165. data/lib/datadog/appsec/sample_rate.rb +21 -0
  166. data/lib/datadog/appsec/security_engine/engine.rb +176 -0
  167. data/lib/datadog/appsec/security_engine/result.rb +102 -0
  168. data/lib/datadog/appsec/security_engine/runner.rb +111 -0
  169. data/lib/datadog/appsec/security_engine.rb +9 -0
  170. data/lib/datadog/appsec/security_event.rb +37 -0
  171. data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
  172. data/lib/datadog/appsec/trace_keeper.rb +24 -0
  173. data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
  174. data/lib/datadog/appsec/utils/http/media_range.rb +201 -0
  175. data/lib/datadog/appsec/utils/http/media_type.rb +87 -0
  176. data/lib/datadog/appsec/utils/http.rb +11 -0
  177. data/lib/datadog/appsec/utils.rb +9 -0
  178. data/lib/datadog/appsec.rb +65 -0
  179. data/lib/datadog/auto_instrument.rb +19 -0
  180. data/lib/datadog/auto_instrument_base.rb +9 -0
  181. data/lib/datadog/core/buffer/cruby.rb +55 -0
  182. data/lib/datadog/core/buffer/random.rb +150 -0
  183. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  184. data/lib/datadog/core/chunker.rb +35 -0
  185. data/lib/datadog/core/cloudwise/IMPLEMENTATION_V2.md +517 -0
  186. data/lib/datadog/core/cloudwise/QUICKSTART.md +398 -0
  187. data/lib/datadog/core/cloudwise/README.md +722 -0
  188. data/lib/datadog/core/cloudwise/app_registration_worker.rb +90 -0
  189. data/lib/datadog/core/cloudwise/client.rb +490 -0
  190. data/lib/datadog/core/cloudwise/component.rb +351 -0
  191. data/lib/datadog/core/cloudwise/heartbeat_worker.rb +137 -0
  192. data/lib/datadog/core/cloudwise/host_id_worker.rb +85 -0
  193. data/lib/datadog/core/cloudwise/license_worker.rb +108 -0
  194. data/lib/datadog/core/cloudwise/probe_state.rb +160 -0
  195. data/lib/datadog/core/configuration/agent_settings.rb +52 -0
  196. data/lib/datadog/core/configuration/agent_settings_resolver.rb +339 -0
  197. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +176 -0
  198. data/lib/datadog/core/configuration/base.rb +91 -0
  199. data/lib/datadog/core/configuration/components.rb +386 -0
  200. data/lib/datadog/core/configuration/components_state.rb +23 -0
  201. data/lib/datadog/core/configuration/config_helper.rb +100 -0
  202. data/lib/datadog/core/configuration/deprecations.rb +36 -0
  203. data/lib/datadog/core/configuration/ext.rb +49 -0
  204. data/lib/datadog/core/configuration/option.rb +368 -0
  205. data/lib/datadog/core/configuration/option_definition.rb +158 -0
  206. data/lib/datadog/core/configuration/options.rb +134 -0
  207. data/lib/datadog/core/configuration/settings.rb +1087 -0
  208. data/lib/datadog/core/configuration/stable_config.rb +32 -0
  209. data/lib/datadog/core/configuration/supported_configurations.rb +347 -0
  210. data/lib/datadog/core/configuration.rb +328 -0
  211. data/lib/datadog/core/contrib/rails/utils.rb +24 -0
  212. data/lib/datadog/core/crashtracking/component.rb +105 -0
  213. data/lib/datadog/core/crashtracking/tag_builder.rb +21 -0
  214. data/lib/datadog/core/ddsketch.rb +19 -0
  215. data/lib/datadog/core/deprecations.rb +58 -0
  216. data/lib/datadog/core/diagnostics/environment_logger.rb +170 -0
  217. data/lib/datadog/core/diagnostics/health.rb +19 -0
  218. data/lib/datadog/core/encoding.rb +90 -0
  219. data/lib/datadog/core/environment/agent_info.rb +78 -0
  220. data/lib/datadog/core/environment/cgroup.rb +51 -0
  221. data/lib/datadog/core/environment/class_count.rb +21 -0
  222. data/lib/datadog/core/environment/container.rb +89 -0
  223. data/lib/datadog/core/environment/execution.rb +103 -0
  224. data/lib/datadog/core/environment/ext.rb +45 -0
  225. data/lib/datadog/core/environment/gc.rb +20 -0
  226. data/lib/datadog/core/environment/git.rb +26 -0
  227. data/lib/datadog/core/environment/identity.rb +84 -0
  228. data/lib/datadog/core/environment/platform.rb +46 -0
  229. data/lib/datadog/core/environment/socket.rb +24 -0
  230. data/lib/datadog/core/environment/thread_count.rb +20 -0
  231. data/lib/datadog/core/environment/variable_helpers.rb +53 -0
  232. data/lib/datadog/core/environment/vm_cache.rb +64 -0
  233. data/lib/datadog/core/environment/yjit.rb +69 -0
  234. data/lib/datadog/core/error.rb +102 -0
  235. data/lib/datadog/core/extensions.rb +16 -0
  236. data/lib/datadog/core/git/ext.rb +16 -0
  237. data/lib/datadog/core/header_collection.rb +43 -0
  238. data/lib/datadog/core/logger.rb +45 -0
  239. data/lib/datadog/core/logging/ext.rb +13 -0
  240. data/lib/datadog/core/metrics/client.rb +206 -0
  241. data/lib/datadog/core/metrics/ext.rb +18 -0
  242. data/lib/datadog/core/metrics/helpers.rb +25 -0
  243. data/lib/datadog/core/metrics/logging.rb +44 -0
  244. data/lib/datadog/core/metrics/metric.rb +14 -0
  245. data/lib/datadog/core/metrics/options.rb +52 -0
  246. data/lib/datadog/core/pin.rb +71 -0
  247. data/lib/datadog/core/process_discovery/tracer_memfd.rb +13 -0
  248. data/lib/datadog/core/process_discovery.rb +61 -0
  249. data/lib/datadog/core/rate_limiter.rb +185 -0
  250. data/lib/datadog/core/remote/client/capabilities.rb +70 -0
  251. data/lib/datadog/core/remote/client.rb +245 -0
  252. data/lib/datadog/core/remote/component.rb +161 -0
  253. data/lib/datadog/core/remote/configuration/content.rb +111 -0
  254. data/lib/datadog/core/remote/configuration/digest.rb +62 -0
  255. data/lib/datadog/core/remote/configuration/path.rb +90 -0
  256. data/lib/datadog/core/remote/configuration/repository.rb +307 -0
  257. data/lib/datadog/core/remote/configuration/target.rb +74 -0
  258. data/lib/datadog/core/remote/configuration.rb +18 -0
  259. data/lib/datadog/core/remote/dispatcher.rb +59 -0
  260. data/lib/datadog/core/remote/ext.rb +13 -0
  261. data/lib/datadog/core/remote/negotiation.rb +70 -0
  262. data/lib/datadog/core/remote/tie/tracing.rb +39 -0
  263. data/lib/datadog/core/remote/tie.rb +29 -0
  264. data/lib/datadog/core/remote/transport/config.rb +61 -0
  265. data/lib/datadog/core/remote/transport/http/api.rb +53 -0
  266. data/lib/datadog/core/remote/transport/http/client.rb +49 -0
  267. data/lib/datadog/core/remote/transport/http/config.rb +252 -0
  268. data/lib/datadog/core/remote/transport/http/negotiation.rb +103 -0
  269. data/lib/datadog/core/remote/transport/http.rb +83 -0
  270. data/lib/datadog/core/remote/transport/negotiation.rb +75 -0
  271. data/lib/datadog/core/remote/worker.rb +105 -0
  272. data/lib/datadog/core/remote.rb +24 -0
  273. data/lib/datadog/core/runtime/ext.rb +40 -0
  274. data/lib/datadog/core/runtime/metrics.rb +202 -0
  275. data/lib/datadog/core/semaphore.rb +35 -0
  276. data/lib/datadog/core/tag_builder.rb +52 -0
  277. data/lib/datadog/core/telemetry/component.rb +206 -0
  278. data/lib/datadog/core/telemetry/emitter.rb +56 -0
  279. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +66 -0
  280. data/lib/datadog/core/telemetry/event/app_closing.rb +18 -0
  281. data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +33 -0
  282. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +30 -0
  283. data/lib/datadog/core/telemetry/event/app_heartbeat.rb +18 -0
  284. data/lib/datadog/core/telemetry/event/app_integrations_change.rb +58 -0
  285. data/lib/datadog/core/telemetry/event/app_started.rb +287 -0
  286. data/lib/datadog/core/telemetry/event/base.rb +40 -0
  287. data/lib/datadog/core/telemetry/event/distributions.rb +18 -0
  288. data/lib/datadog/core/telemetry/event/generate_metrics.rb +43 -0
  289. data/lib/datadog/core/telemetry/event/log.rb +76 -0
  290. data/lib/datadog/core/telemetry/event/message_batch.rb +42 -0
  291. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +43 -0
  292. data/lib/datadog/core/telemetry/event.rb +37 -0
  293. data/lib/datadog/core/telemetry/ext.rb +20 -0
  294. data/lib/datadog/core/telemetry/http/adapters/net.rb +26 -0
  295. data/lib/datadog/core/telemetry/logger.rb +52 -0
  296. data/lib/datadog/core/telemetry/logging.rb +71 -0
  297. data/lib/datadog/core/telemetry/metric.rb +189 -0
  298. data/lib/datadog/core/telemetry/metrics_collection.rb +81 -0
  299. data/lib/datadog/core/telemetry/metrics_manager.rb +81 -0
  300. data/lib/datadog/core/telemetry/request.rb +71 -0
  301. data/lib/datadog/core/telemetry/transport/http/api.rb +43 -0
  302. data/lib/datadog/core/telemetry/transport/http/client.rb +49 -0
  303. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +92 -0
  304. data/lib/datadog/core/telemetry/transport/http.rb +63 -0
  305. data/lib/datadog/core/telemetry/transport/telemetry.rb +51 -0
  306. data/lib/datadog/core/telemetry/worker.rb +276 -0
  307. data/lib/datadog/core/transport/ext.rb +44 -0
  308. data/lib/datadog/core/transport/http/adapters/net.rb +175 -0
  309. data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
  310. data/lib/datadog/core/transport/http/adapters/test.rb +90 -0
  311. data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
  312. data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
  313. data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
  314. data/lib/datadog/core/transport/http/api/instance.rb +54 -0
  315. data/lib/datadog/core/transport/http/api/map.rb +18 -0
  316. data/lib/datadog/core/transport/http/api/spec.rb +36 -0
  317. data/lib/datadog/core/transport/http/builder.rb +184 -0
  318. data/lib/datadog/core/transport/http/env.rb +70 -0
  319. data/lib/datadog/core/transport/http/response.rb +60 -0
  320. data/lib/datadog/core/transport/http.rb +75 -0
  321. data/lib/datadog/core/transport/parcel.rb +22 -0
  322. data/lib/datadog/core/transport/request.rb +17 -0
  323. data/lib/datadog/core/transport/response.rb +71 -0
  324. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +102 -0
  325. data/lib/datadog/core/utils/base64.rb +22 -0
  326. data/lib/datadog/core/utils/duration.rb +52 -0
  327. data/lib/datadog/core/utils/forking.rb +63 -0
  328. data/lib/datadog/core/utils/hash.rb +79 -0
  329. data/lib/datadog/core/utils/lru_cache.rb +45 -0
  330. data/lib/datadog/core/utils/network.rb +142 -0
  331. data/lib/datadog/core/utils/only_once.rb +42 -0
  332. data/lib/datadog/core/utils/only_once_successful.rb +87 -0
  333. data/lib/datadog/core/utils/safe_dup.rb +40 -0
  334. data/lib/datadog/core/utils/sequence.rb +26 -0
  335. data/lib/datadog/core/utils/time.rb +84 -0
  336. data/lib/datadog/core/utils/truncation.rb +21 -0
  337. data/lib/datadog/core/utils/url.rb +25 -0
  338. data/lib/datadog/core/utils.rb +101 -0
  339. data/lib/datadog/core/vendor/multipart-post/LICENSE +11 -0
  340. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +118 -0
  341. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +59 -0
  342. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +137 -0
  343. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +11 -0
  344. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +10 -0
  345. data/lib/datadog/core/vendor/multipart-post/multipart.rb +14 -0
  346. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +34 -0
  347. data/lib/datadog/core/worker.rb +24 -0
  348. data/lib/datadog/core/workers/async.rb +202 -0
  349. data/lib/datadog/core/workers/interval_loop.rb +134 -0
  350. data/lib/datadog/core/workers/polling.rb +59 -0
  351. data/lib/datadog/core/workers/queue.rb +44 -0
  352. data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
  353. data/lib/datadog/core.rb +38 -0
  354. data/lib/datadog/data_streams/configuration/settings.rb +49 -0
  355. data/lib/datadog/data_streams/configuration.rb +11 -0
  356. data/lib/datadog/data_streams/ext.rb +11 -0
  357. data/lib/datadog/data_streams/extensions.rb +16 -0
  358. data/lib/datadog/data_streams/pathway_context.rb +169 -0
  359. data/lib/datadog/data_streams/processor.rb +509 -0
  360. data/lib/datadog/data_streams/transport/http/api.rb +33 -0
  361. data/lib/datadog/data_streams/transport/http/client.rb +49 -0
  362. data/lib/datadog/data_streams/transport/http/stats.rb +87 -0
  363. data/lib/datadog/data_streams/transport/http.rb +41 -0
  364. data/lib/datadog/data_streams/transport/stats.rb +60 -0
  365. data/lib/datadog/data_streams.rb +100 -0
  366. data/lib/datadog/di/base.rb +115 -0
  367. data/lib/datadog/di/boot.rb +43 -0
  368. data/lib/datadog/di/code_tracker.rb +204 -0
  369. data/lib/datadog/di/component.rb +122 -0
  370. data/lib/datadog/di/configuration/settings.rb +212 -0
  371. data/lib/datadog/di/configuration.rb +11 -0
  372. data/lib/datadog/di/context.rb +70 -0
  373. data/lib/datadog/di/contrib/active_record.rb +12 -0
  374. data/lib/datadog/di/contrib/railtie.rb +15 -0
  375. data/lib/datadog/di/contrib.rb +28 -0
  376. data/lib/datadog/di/el/compiler.rb +164 -0
  377. data/lib/datadog/di/el/evaluator.rb +159 -0
  378. data/lib/datadog/di/el/expression.rb +42 -0
  379. data/lib/datadog/di/el.rb +5 -0
  380. data/lib/datadog/di/error.rb +82 -0
  381. data/lib/datadog/di/extensions.rb +16 -0
  382. data/lib/datadog/di/instrumenter.rb +566 -0
  383. data/lib/datadog/di/logger.rb +30 -0
  384. data/lib/datadog/di/preload.rb +18 -0
  385. data/lib/datadog/di/probe.rb +231 -0
  386. data/lib/datadog/di/probe_builder.rb +86 -0
  387. data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
  388. data/lib/datadog/di/probe_file_loader.rb +82 -0
  389. data/lib/datadog/di/probe_manager.rb +261 -0
  390. data/lib/datadog/di/probe_notification_builder.rb +236 -0
  391. data/lib/datadog/di/probe_notifier_worker.rb +305 -0
  392. data/lib/datadog/di/proc_responder.rb +32 -0
  393. data/lib/datadog/di/redactor.rb +187 -0
  394. data/lib/datadog/di/remote.rb +145 -0
  395. data/lib/datadog/di/serializer.rb +422 -0
  396. data/lib/datadog/di/transport/diagnostics.rb +62 -0
  397. data/lib/datadog/di/transport/http/api.rb +42 -0
  398. data/lib/datadog/di/transport/http/client.rb +47 -0
  399. data/lib/datadog/di/transport/http/diagnostics.rb +65 -0
  400. data/lib/datadog/di/transport/http/input.rb +77 -0
  401. data/lib/datadog/di/transport/http.rb +57 -0
  402. data/lib/datadog/di/transport/input.rb +70 -0
  403. data/lib/datadog/di/utils.rb +142 -0
  404. data/lib/datadog/di.rb +36 -0
  405. data/lib/datadog/error_tracking/collector.rb +87 -0
  406. data/lib/datadog/error_tracking/component.rb +167 -0
  407. data/lib/datadog/error_tracking/configuration/settings.rb +63 -0
  408. data/lib/datadog/error_tracking/configuration.rb +11 -0
  409. data/lib/datadog/error_tracking/ext.rb +18 -0
  410. data/lib/datadog/error_tracking/extensions.rb +16 -0
  411. data/lib/datadog/error_tracking/filters.rb +77 -0
  412. data/lib/datadog/error_tracking.rb +18 -0
  413. data/lib/datadog/kit/appsec/events/v2.rb +196 -0
  414. data/lib/datadog/kit/appsec/events.rb +180 -0
  415. data/lib/datadog/kit/enable_core_dumps.rb +49 -0
  416. data/lib/datadog/kit/identity.rb +114 -0
  417. data/lib/datadog/kit.rb +11 -0
  418. data/lib/datadog/opentelemetry/api/baggage.rb +90 -0
  419. data/lib/datadog/opentelemetry/api/baggage.rbs +26 -0
  420. data/lib/datadog/opentelemetry/api/context.rb +208 -0
  421. data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
  422. data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
  423. data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
  424. data/lib/datadog/opentelemetry/sdk/propagator.rb +89 -0
  425. data/lib/datadog/opentelemetry/sdk/span_processor.rb +169 -0
  426. data/lib/datadog/opentelemetry/sdk/trace/span.rb +182 -0
  427. data/lib/datadog/opentelemetry/trace.rb +59 -0
  428. data/lib/datadog/opentelemetry.rb +52 -0
  429. data/lib/datadog/profiling/collectors/code_provenance.rb +150 -0
  430. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +147 -0
  431. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
  432. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +69 -0
  433. data/lib/datadog/profiling/collectors/info.rb +156 -0
  434. data/lib/datadog/profiling/collectors/stack.rb +13 -0
  435. data/lib/datadog/profiling/collectors/thread_context.rb +102 -0
  436. data/lib/datadog/profiling/component.rb +445 -0
  437. data/lib/datadog/profiling/encoded_profile.rb +11 -0
  438. data/lib/datadog/profiling/exporter.rb +111 -0
  439. data/lib/datadog/profiling/ext/dir_monkey_patches.rb +410 -0
  440. data/lib/datadog/profiling/ext.rb +22 -0
  441. data/lib/datadog/profiling/flush.rb +40 -0
  442. data/lib/datadog/profiling/http_transport.rb +67 -0
  443. data/lib/datadog/profiling/load_native_extension.rb +9 -0
  444. data/lib/datadog/profiling/native_extension.rb +20 -0
  445. data/lib/datadog/profiling/preload.rb +5 -0
  446. data/lib/datadog/profiling/profiler.rb +70 -0
  447. data/lib/datadog/profiling/scheduler.rb +153 -0
  448. data/lib/datadog/profiling/sequence_tracker.rb +44 -0
  449. data/lib/datadog/profiling/stack_recorder.rb +104 -0
  450. data/lib/datadog/profiling/tag_builder.rb +59 -0
  451. data/lib/datadog/profiling/tasks/exec.rb +50 -0
  452. data/lib/datadog/profiling/tasks/help.rb +18 -0
  453. data/lib/datadog/profiling/tasks/setup.rb +43 -0
  454. data/lib/datadog/profiling.rb +167 -0
  455. data/lib/datadog/single_step_instrument.rb +21 -0
  456. data/lib/datadog/tracing/analytics.rb +25 -0
  457. data/lib/datadog/tracing/buffer.rb +129 -0
  458. data/lib/datadog/tracing/client_ip.rb +61 -0
  459. data/lib/datadog/tracing/component.rb +216 -0
  460. data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
  461. data/lib/datadog/tracing/configuration/dynamic.rb +100 -0
  462. data/lib/datadog/tracing/configuration/ext.rb +118 -0
  463. data/lib/datadog/tracing/configuration/http.rb +74 -0
  464. data/lib/datadog/tracing/configuration/settings.rb +579 -0
  465. data/lib/datadog/tracing/context.rb +68 -0
  466. data/lib/datadog/tracing/context_provider.rb +82 -0
  467. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +39 -0
  468. data/lib/datadog/tracing/contrib/action_cable/event.rb +71 -0
  469. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +58 -0
  470. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +63 -0
  471. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +59 -0
  472. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  473. data/lib/datadog/tracing/contrib/action_cable/ext.rb +33 -0
  474. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +86 -0
  475. data/lib/datadog/tracing/contrib/action_cable/integration.rb +53 -0
  476. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  477. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +43 -0
  478. data/lib/datadog/tracing/contrib/action_mailer/event.rb +50 -0
  479. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +65 -0
  480. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +48 -0
  481. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  482. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +34 -0
  483. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +54 -0
  484. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  485. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +158 -0
  486. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  487. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +85 -0
  488. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb +33 -0
  489. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +40 -0
  490. data/lib/datadog/tracing/contrib/action_pack/ext.rb +25 -0
  491. data/lib/datadog/tracing/contrib/action_pack/integration.rb +54 -0
  492. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +29 -0
  493. data/lib/datadog/tracing/contrib/action_pack/utils.rb +39 -0
  494. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +43 -0
  495. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  496. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +50 -0
  497. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +57 -0
  498. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  499. data/lib/datadog/tracing/contrib/action_view/ext.rb +25 -0
  500. data/lib/datadog/tracing/contrib/action_view/integration.rb +61 -0
  501. data/lib/datadog/tracing/contrib/action_view/patcher.rb +34 -0
  502. data/lib/datadog/tracing/contrib/action_view/utils.rb +36 -0
  503. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +39 -0
  504. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  505. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +50 -0
  506. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +49 -0
  507. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +49 -0
  508. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +51 -0
  509. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +49 -0
  510. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +50 -0
  511. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  512. data/lib/datadog/tracing/contrib/active_job/ext.rb +40 -0
  513. data/lib/datadog/tracing/contrib/active_job/integration.rb +53 -0
  514. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +38 -0
  515. data/lib/datadog/tracing/contrib/active_job/patcher.rb +40 -0
  516. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +37 -0
  517. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +68 -0
  518. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +45 -0
  519. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +47 -0
  520. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  521. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +25 -0
  522. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +44 -0
  523. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +32 -0
  524. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +36 -0
  525. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +152 -0
  526. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +48 -0
  527. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  528. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +60 -0
  529. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +80 -0
  530. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  531. data/lib/datadog/tracing/contrib/active_record/ext.rb +30 -0
  532. data/lib/datadog/tracing/contrib/active_record/integration.rb +71 -0
  533. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  534. data/lib/datadog/tracing/contrib/active_record/utils.rb +128 -0
  535. data/lib/datadog/tracing/contrib/active_support/cache/event.rb +32 -0
  536. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +171 -0
  537. data/lib/datadog/tracing/contrib/active_support/cache/events.rb +34 -0
  538. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +225 -0
  539. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +57 -0
  540. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +60 -0
  541. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +70 -0
  542. data/lib/datadog/tracing/contrib/active_support/ext.rb +32 -0
  543. data/lib/datadog/tracing/contrib/active_support/integration.rb +55 -0
  544. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +95 -0
  545. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +83 -0
  546. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +166 -0
  547. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  548. data/lib/datadog/tracing/contrib/analytics.rb +33 -0
  549. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  550. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +53 -0
  551. data/lib/datadog/tracing/contrib/aws/ext.rb +50 -0
  552. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +136 -0
  553. data/lib/datadog/tracing/contrib/aws/integration.rb +50 -0
  554. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +70 -0
  555. data/lib/datadog/tracing/contrib/aws/patcher.rb +61 -0
  556. data/lib/datadog/tracing/contrib/aws/service/base.rb +17 -0
  557. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +22 -0
  558. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +22 -0
  559. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +32 -0
  560. data/lib/datadog/tracing/contrib/aws/service/s3.rb +22 -0
  561. data/lib/datadog/tracing/contrib/aws/service/sns.rb +30 -0
  562. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +27 -0
  563. data/lib/datadog/tracing/contrib/aws/service/states.rb +40 -0
  564. data/lib/datadog/tracing/contrib/aws/services.rb +139 -0
  565. data/lib/datadog/tracing/contrib/cloudwise/propagation.rb +315 -0
  566. data/lib/datadog/tracing/contrib/component.rb +41 -0
  567. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +20 -0
  568. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +24 -0
  569. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
  570. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
  571. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +20 -0
  572. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +47 -0
  573. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +49 -0
  574. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
  575. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  576. data/lib/datadog/tracing/contrib/configuration/resolver.rb +128 -0
  577. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  578. data/lib/datadog/tracing/contrib/configuration/settings.rb +43 -0
  579. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +58 -0
  580. data/lib/datadog/tracing/contrib/dalli/ext.rb +41 -0
  581. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +75 -0
  582. data/lib/datadog/tracing/contrib/dalli/integration.rb +52 -0
  583. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  584. data/lib/datadog/tracing/contrib/dalli/quantize.rb +26 -0
  585. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +49 -0
  586. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +29 -0
  587. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +43 -0
  588. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +37 -0
  589. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +108 -0
  590. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +34 -0
  591. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +61 -0
  592. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +35 -0
  593. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +50 -0
  594. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +172 -0
  595. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +87 -0
  596. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +56 -0
  597. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +229 -0
  598. data/lib/datadog/tracing/contrib/ethon/ext.rb +33 -0
  599. data/lib/datadog/tracing/contrib/ethon/integration.rb +48 -0
  600. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +102 -0
  601. data/lib/datadog/tracing/contrib/ethon/patcher.rb +30 -0
  602. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +82 -0
  603. data/lib/datadog/tracing/contrib/excon/ext.rb +31 -0
  604. data/lib/datadog/tracing/contrib/excon/integration.rb +48 -0
  605. data/lib/datadog/tracing/contrib/excon/middleware.rb +201 -0
  606. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  607. data/lib/datadog/tracing/contrib/ext.rb +70 -0
  608. data/lib/datadog/tracing/contrib/extensions.rb +255 -0
  609. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +81 -0
  610. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  611. data/lib/datadog/tracing/contrib/faraday/ext.rb +31 -0
  612. data/lib/datadog/tracing/contrib/faraday/integration.rb +48 -0
  613. data/lib/datadog/tracing/contrib/faraday/middleware.rb +128 -0
  614. data/lib/datadog/tracing/contrib/faraday/patcher.rb +56 -0
  615. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  616. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +59 -0
  617. data/lib/datadog/tracing/contrib/grape/endpoint.rb +316 -0
  618. data/lib/datadog/tracing/contrib/grape/ext.rb +30 -0
  619. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +37 -0
  620. data/lib/datadog/tracing/contrib/grape/integration.rb +44 -0
  621. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  622. data/lib/datadog/tracing/contrib/graphql/configuration/error_extension_env_parser.rb +21 -0
  623. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +73 -0
  624. data/lib/datadog/tracing/contrib/graphql/ext.rb +26 -0
  625. data/lib/datadog/tracing/contrib/graphql/integration.rb +56 -0
  626. data/lib/datadog/tracing/contrib/graphql/patcher.rb +58 -0
  627. data/lib/datadog/tracing/contrib/graphql/trace_patcher.rb +24 -0
  628. data/lib/datadog/tracing/contrib/graphql/tracing_patcher.rb +28 -0
  629. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +297 -0
  630. data/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb +31 -0
  631. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +58 -0
  632. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +123 -0
  633. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +96 -0
  634. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +107 -0
  635. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
  636. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +49 -0
  637. data/lib/datadog/tracing/contrib/grpc/ext.rb +29 -0
  638. data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
  639. data/lib/datadog/tracing/contrib/grpc/integration.rb +50 -0
  640. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  641. data/lib/datadog/tracing/contrib/grpc/patcher.rb +34 -0
  642. data/lib/datadog/tracing/contrib/grpc.rb +45 -0
  643. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
  644. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +23 -0
  645. data/lib/datadog/tracing/contrib/hanami/ext.rb +24 -0
  646. data/lib/datadog/tracing/contrib/hanami/integration.rb +44 -0
  647. data/lib/datadog/tracing/contrib/hanami/patcher.rb +33 -0
  648. data/lib/datadog/tracing/contrib/hanami/plugin.rb +23 -0
  649. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +41 -0
  650. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +42 -0
  651. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +34 -0
  652. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +77 -0
  653. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
  654. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +48 -0
  655. data/lib/datadog/tracing/contrib/http/ext.rb +30 -0
  656. data/lib/datadog/tracing/contrib/http/instrumentation.rb +152 -0
  657. data/lib/datadog/tracing/contrib/http/integration.rb +52 -0
  658. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  659. data/lib/datadog/tracing/contrib/http.rb +45 -0
  660. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  661. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +76 -0
  662. data/lib/datadog/tracing/contrib/httpclient/ext.rb +31 -0
  663. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +132 -0
  664. data/lib/datadog/tracing/contrib/httpclient/integration.rb +48 -0
  665. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +29 -0
  666. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +76 -0
  667. data/lib/datadog/tracing/contrib/httprb/ext.rb +30 -0
  668. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +146 -0
  669. data/lib/datadog/tracing/contrib/httprb/integration.rb +51 -0
  670. data/lib/datadog/tracing/contrib/httprb/patcher.rb +29 -0
  671. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  672. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +39 -0
  673. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +19 -0
  674. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  675. data/lib/datadog/tracing/contrib/kafka/event.rb +53 -0
  676. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +42 -0
  677. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +49 -0
  678. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +47 -0
  679. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +47 -0
  680. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +37 -0
  681. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +37 -0
  682. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +37 -0
  683. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +41 -0
  684. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +44 -0
  685. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  686. data/lib/datadog/tracing/contrib/kafka/ext.rb +55 -0
  687. data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +66 -0
  688. data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +66 -0
  689. data/lib/datadog/tracing/contrib/kafka/integration.rb +47 -0
  690. data/lib/datadog/tracing/contrib/kafka/patcher.rb +43 -0
  691. data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +27 -0
  692. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +48 -0
  693. data/lib/datadog/tracing/contrib/karafka/ext.rb +27 -0
  694. data/lib/datadog/tracing/contrib/karafka/integration.rb +45 -0
  695. data/lib/datadog/tracing/contrib/karafka/monitor.rb +77 -0
  696. data/lib/datadog/tracing/contrib/karafka/patcher.rb +89 -0
  697. data/lib/datadog/tracing/contrib/karafka.rb +37 -0
  698. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +24 -0
  699. data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
  700. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +31 -0
  701. data/lib/datadog/tracing/contrib/lograge/integration.rb +50 -0
  702. data/lib/datadog/tracing/contrib/lograge/patcher.rb +46 -0
  703. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +64 -0
  704. data/lib/datadog/tracing/contrib/mongodb/ext.rb +39 -0
  705. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  706. data/lib/datadog/tracing/contrib/mongodb/integration.rb +51 -0
  707. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +49 -0
  708. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  709. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +160 -0
  710. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +69 -0
  711. data/lib/datadog/tracing/contrib/mysql2/ext.rb +28 -0
  712. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +109 -0
  713. data/lib/datadog/tracing/contrib/mysql2/integration.rb +43 -0
  714. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  715. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +71 -0
  716. data/lib/datadog/tracing/contrib/opensearch/ext.rb +48 -0
  717. data/lib/datadog/tracing/contrib/opensearch/integration.rb +46 -0
  718. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +144 -0
  719. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
  720. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  721. data/lib/datadog/tracing/contrib/patcher.rb +87 -0
  722. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +69 -0
  723. data/lib/datadog/tracing/contrib/pg/ext.rb +35 -0
  724. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +214 -0
  725. data/lib/datadog/tracing/contrib/pg/integration.rb +43 -0
  726. data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
  727. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +52 -0
  728. data/lib/datadog/tracing/contrib/presto/ext.rb +38 -0
  729. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +138 -0
  730. data/lib/datadog/tracing/contrib/presto/integration.rb +46 -0
  731. data/lib/datadog/tracing/contrib/presto/patcher.rb +25 -0
  732. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
  733. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +61 -0
  734. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +32 -0
  735. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +67 -0
  736. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +55 -0
  737. data/lib/datadog/tracing/contrib/que/ext.rb +33 -0
  738. data/lib/datadog/tracing/contrib/que/integration.rb +44 -0
  739. data/lib/datadog/tracing/contrib/que/patcher.rb +26 -0
  740. data/lib/datadog/tracing/contrib/que/tracer.rb +63 -0
  741. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +47 -0
  742. data/lib/datadog/tracing/contrib/racecar/event.rb +81 -0
  743. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +38 -0
  744. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +35 -0
  745. data/lib/datadog/tracing/contrib/racecar/events/message.rb +38 -0
  746. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  747. data/lib/datadog/tracing/contrib/racecar/ext.rb +33 -0
  748. data/lib/datadog/tracing/contrib/racecar/integration.rb +44 -0
  749. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  750. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +59 -0
  751. data/lib/datadog/tracing/contrib/rack/ext.rb +30 -0
  752. data/lib/datadog/tracing/contrib/rack/header_collection.rb +50 -0
  753. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +63 -0
  754. data/lib/datadog/tracing/contrib/rack/integration.rb +50 -0
  755. data/lib/datadog/tracing/contrib/rack/middlewares.rb +475 -0
  756. data/lib/datadog/tracing/contrib/rack/patcher.rb +119 -0
  757. data/lib/datadog/tracing/contrib/rack/request_queue.rb +49 -0
  758. data/lib/datadog/tracing/contrib/rack/route_inference.rb +53 -0
  759. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +58 -0
  760. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +10 -0
  761. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +76 -0
  762. data/lib/datadog/tracing/contrib/rails/ext.rb +33 -0
  763. data/lib/datadog/tracing/contrib/rails/framework.rb +148 -0
  764. data/lib/datadog/tracing/contrib/rails/integration.rb +52 -0
  765. data/lib/datadog/tracing/contrib/rails/log_injection.rb +29 -0
  766. data/lib/datadog/tracing/contrib/rails/middlewares.rb +46 -0
  767. data/lib/datadog/tracing/contrib/rails/patcher.rb +98 -0
  768. data/lib/datadog/tracing/contrib/rails/railtie.rb +19 -0
  769. data/lib/datadog/tracing/contrib/rails/runner.rb +117 -0
  770. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +55 -0
  771. data/lib/datadog/tracing/contrib/rake/ext.rb +27 -0
  772. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +103 -0
  773. data/lib/datadog/tracing/contrib/rake/integration.rb +43 -0
  774. data/lib/datadog/tracing/contrib/rake/patcher.rb +33 -0
  775. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +49 -0
  776. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +57 -0
  777. data/lib/datadog/tracing/contrib/redis/ext.rb +36 -0
  778. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +53 -0
  779. data/lib/datadog/tracing/contrib/redis/integration.rb +80 -0
  780. data/lib/datadog/tracing/contrib/redis/patcher.rb +92 -0
  781. data/lib/datadog/tracing/contrib/redis/quantize.rb +80 -0
  782. data/lib/datadog/tracing/contrib/redis/tags.rb +72 -0
  783. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +85 -0
  784. data/lib/datadog/tracing/contrib/redis/vendor/LICENSE +20 -0
  785. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +160 -0
  786. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  787. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  788. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +42 -0
  789. data/lib/datadog/tracing/contrib/resque/ext.rb +22 -0
  790. data/lib/datadog/tracing/contrib/resque/integration.rb +48 -0
  791. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  792. data/lib/datadog/tracing/contrib/resque/resque_job.rb +106 -0
  793. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +55 -0
  794. data/lib/datadog/tracing/contrib/rest_client/ext.rb +29 -0
  795. data/lib/datadog/tracing/contrib/rest_client/integration.rb +46 -0
  796. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +28 -0
  797. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +137 -0
  798. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +38 -0
  799. data/lib/datadog/tracing/contrib/roda/ext.rb +19 -0
  800. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +78 -0
  801. data/lib/datadog/tracing/contrib/roda/integration.rb +45 -0
  802. data/lib/datadog/tracing/contrib/roda/patcher.rb +30 -0
  803. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +24 -0
  804. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
  805. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +35 -0
  806. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +52 -0
  807. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  808. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +37 -0
  809. data/lib/datadog/tracing/contrib/sequel/database.rb +62 -0
  810. data/lib/datadog/tracing/contrib/sequel/dataset.rb +67 -0
  811. data/lib/datadog/tracing/contrib/sequel/ext.rb +23 -0
  812. data/lib/datadog/tracing/contrib/sequel/integration.rb +43 -0
  813. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  814. data/lib/datadog/tracing/contrib/sequel/utils.rb +90 -0
  815. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +43 -0
  816. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +27 -0
  817. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +44 -0
  818. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  819. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +65 -0
  820. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +67 -0
  821. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +47 -0
  822. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +49 -0
  823. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +45 -0
  824. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +61 -0
  825. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +90 -0
  826. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +61 -0
  827. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +36 -0
  828. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +34 -0
  829. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +57 -0
  830. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +34 -0
  831. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +91 -0
  832. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +44 -0
  833. data/lib/datadog/tracing/contrib/sidekiq.rb +37 -0
  834. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +46 -0
  835. data/lib/datadog/tracing/contrib/sinatra/env.rb +38 -0
  836. data/lib/datadog/tracing/contrib/sinatra/ext.rb +31 -0
  837. data/lib/datadog/tracing/contrib/sinatra/framework.rb +116 -0
  838. data/lib/datadog/tracing/contrib/sinatra/integration.rb +43 -0
  839. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +75 -0
  840. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +90 -0
  841. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +109 -0
  842. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +43 -0
  843. data/lib/datadog/tracing/contrib/sneakers/ext.rb +27 -0
  844. data/lib/datadog/tracing/contrib/sneakers/integration.rb +44 -0
  845. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +27 -0
  846. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +60 -0
  847. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +97 -0
  848. data/lib/datadog/tracing/contrib/status_range_env_parser.rb +33 -0
  849. data/lib/datadog/tracing/contrib/status_range_matcher.rb +32 -0
  850. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +37 -0
  851. data/lib/datadog/tracing/contrib/stripe/ext.rb +27 -0
  852. data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
  853. data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
  854. data/lib/datadog/tracing/contrib/stripe/request.rb +68 -0
  855. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +39 -0
  856. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  857. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +28 -0
  858. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +104 -0
  859. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +43 -0
  860. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +35 -0
  861. data/lib/datadog/tracing/contrib/support.rb +28 -0
  862. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +63 -0
  863. data/lib/datadog/tracing/contrib/trilogy/ext.rb +27 -0
  864. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +97 -0
  865. data/lib/datadog/tracing/contrib/trilogy/integration.rb +43 -0
  866. data/lib/datadog/tracing/contrib/trilogy/patcher.rb +31 -0
  867. data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
  868. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +111 -0
  869. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +179 -0
  870. data/lib/datadog/tracing/contrib.rb +82 -0
  871. data/lib/datadog/tracing/correlation.rb +113 -0
  872. data/lib/datadog/tracing/diagnostics/environment_logger.rb +163 -0
  873. data/lib/datadog/tracing/diagnostics/ext.rb +36 -0
  874. data/lib/datadog/tracing/diagnostics/health.rb +40 -0
  875. data/lib/datadog/tracing/distributed/b3_multi.rb +73 -0
  876. data/lib/datadog/tracing/distributed/b3_single.rb +71 -0
  877. data/lib/datadog/tracing/distributed/baggage.rb +196 -0
  878. data/lib/datadog/tracing/distributed/datadog.rb +201 -0
  879. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +82 -0
  880. data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
  881. data/lib/datadog/tracing/distributed/helpers.rb +65 -0
  882. data/lib/datadog/tracing/distributed/none.rb +20 -0
  883. data/lib/datadog/tracing/distributed/propagation.rb +187 -0
  884. data/lib/datadog/tracing/distributed/propagation_policy.rb +42 -0
  885. data/lib/datadog/tracing/distributed/trace_context.rb +444 -0
  886. data/lib/datadog/tracing/event.rb +74 -0
  887. data/lib/datadog/tracing/flush.rb +96 -0
  888. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  889. data/lib/datadog/tracing/metadata/errors.rb +32 -0
  890. data/lib/datadog/tracing/metadata/ext.rb +213 -0
  891. data/lib/datadog/tracing/metadata/metastruct.rb +36 -0
  892. data/lib/datadog/tracing/metadata/metastruct_tagging.rb +42 -0
  893. data/lib/datadog/tracing/metadata/tagging.rb +131 -0
  894. data/lib/datadog/tracing/metadata.rb +22 -0
  895. data/lib/datadog/tracing/pipeline/span_filter.rb +48 -0
  896. data/lib/datadog/tracing/pipeline/span_processor.rb +41 -0
  897. data/lib/datadog/tracing/pipeline.rb +63 -0
  898. data/lib/datadog/tracing/remote.rb +85 -0
  899. data/lib/datadog/tracing/runtime/metrics.rb +17 -0
  900. data/lib/datadog/tracing/sampling/all_sampler.rb +24 -0
  901. data/lib/datadog/tracing/sampling/ext.rb +58 -0
  902. data/lib/datadog/tracing/sampling/matcher.rb +119 -0
  903. data/lib/datadog/tracing/sampling/priority_sampler.rb +160 -0
  904. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +87 -0
  905. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +63 -0
  906. data/lib/datadog/tracing/sampling/rate_sampler.rb +59 -0
  907. data/lib/datadog/tracing/sampling/rule.rb +86 -0
  908. data/lib/datadog/tracing/sampling/rule_sampler.rb +172 -0
  909. data/lib/datadog/tracing/sampling/sampler.rb +32 -0
  910. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  911. data/lib/datadog/tracing/sampling/span/matcher.rb +61 -0
  912. data/lib/datadog/tracing/sampling/span/rule.rb +77 -0
  913. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  914. data/lib/datadog/tracing/sampling/span/sampler.rb +70 -0
  915. data/lib/datadog/tracing/span.rb +236 -0
  916. data/lib/datadog/tracing/span_event.rb +161 -0
  917. data/lib/datadog/tracing/span_link.rb +92 -0
  918. data/lib/datadog/tracing/span_operation.rb +561 -0
  919. data/lib/datadog/tracing/sync_writer.rb +71 -0
  920. data/lib/datadog/tracing/trace_digest.rb +190 -0
  921. data/lib/datadog/tracing/trace_operation.rb +556 -0
  922. data/lib/datadog/tracing/trace_segment.rb +227 -0
  923. data/lib/datadog/tracing/tracer.rb +644 -0
  924. data/lib/datadog/tracing/transport/http/api.rb +44 -0
  925. data/lib/datadog/tracing/transport/http/client.rb +59 -0
  926. data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
  927. data/lib/datadog/tracing/transport/http/traces.rb +155 -0
  928. data/lib/datadog/tracing/transport/http.rb +44 -0
  929. data/lib/datadog/tracing/transport/io/client.rb +90 -0
  930. data/lib/datadog/tracing/transport/io/response.rb +27 -0
  931. data/lib/datadog/tracing/transport/io/traces.rb +101 -0
  932. data/lib/datadog/tracing/transport/io.rb +30 -0
  933. data/lib/datadog/tracing/transport/serializable_trace.rb +155 -0
  934. data/lib/datadog/tracing/transport/statistics.rb +77 -0
  935. data/lib/datadog/tracing/transport/trace_formatter.rb +276 -0
  936. data/lib/datadog/tracing/transport/traces.rb +258 -0
  937. data/lib/datadog/tracing/utils.rb +99 -0
  938. data/lib/datadog/tracing/workers/trace_writer.rb +199 -0
  939. data/lib/datadog/tracing/workers.rb +126 -0
  940. data/lib/datadog/tracing/writer.rb +190 -0
  941. data/lib/datadog/tracing.rb +214 -0
  942. data/lib/datadog/version.rb +27 -0
  943. data/lib/datadog.rb +20 -0
  944. metadata +1074 -0
@@ -0,0 +1,1087 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+
5
+ require_relative 'base'
6
+ require_relative 'ext'
7
+ require_relative '../environment/execution'
8
+ require_relative '../environment/ext'
9
+ require_relative '../runtime/ext'
10
+ require_relative '../telemetry/ext'
11
+ require_relative '../remote/ext'
12
+ require_relative '../../profiling/ext'
13
+
14
+ require_relative '../../tracing/configuration/settings'
15
+
16
+ module Datadog
17
+ module Core
18
+ module Configuration
19
+ # Global configuration settings for the Datadog library.
20
+ # @public_api
21
+ # standard:disable Metrics/BlockLength
22
+ class Settings
23
+ include Base
24
+
25
+ # @!visibility private
26
+ def initialize(*_)
27
+ super
28
+
29
+ # WORKAROUND: The values for services, version, and env can get set either directly OR as a side effect of
30
+ # accessing tags (reading or writing). This is of course really confusing and error-prone, e.g. in an app
31
+ # WITHOUT this workaround where you define `DD_TAGS=env:envenvtag,service:envservicetag,version:envversiontag`
32
+ # and do:
33
+ #
34
+ # puts Datadog.configuration.instance_exec { "#{service} #{env} #{version}" }
35
+ # Datadog.configuration.tags
36
+ # puts Datadog.configuration.instance_exec { "#{service} #{env} #{version}" }
37
+ #
38
+ # the output will be:
39
+ #
40
+ # [empty]
41
+ # envservicetag envenvtag envversiontag
42
+ #
43
+ # That is -- the proper values for service/env/version are only set AFTER something accidentally or not triggers
44
+ # the resolution of the tags.
45
+ # This is really confusing, error prone, etc, so calling tags here is a really hacky but effective way to
46
+ # avoid this. I could not think of a better way of fixing this issue without massive refactoring of tags parsing
47
+ # (so that the individual service/env/version get correctly set even from their tags values, not as a side
48
+ # effect). Sorry :(
49
+ tags
50
+ end
51
+
52
+ # {https://docs.datadoghq.com/agent/ Datadog Agent} configuration.
53
+ # @public_api
54
+ settings :agent do
55
+ # Agent hostname or IP.
56
+ # @default `DD_AGENT_HOST` environment variable, otherwise `127.0.0.1`
57
+ # @return [String,nil]
58
+ option :host
59
+
60
+ # Agent APM TCP port.
61
+ # @see https://docs.datadoghq.com/getting_started/tracing/#datadog-apm
62
+ # @default `DD_TRACE_AGENT_PORT` environment variable, otherwise `8126`
63
+ # @return [String,nil]
64
+ option :port
65
+
66
+ # Agent APM SSL.
67
+ # @see https://docs.datadoghq.com/getting_started/tracing/#datadog-apm
68
+ # @default defined as part of `DD_TRACE_AGENT_URL` environment variable, otherwise `false`
69
+ # Only applies to http connections.
70
+ # @return [Boolean,nil]
71
+ option :use_ssl
72
+
73
+ # Agent APM Timeout.
74
+ # @see https://docs.datadoghq.com/getting_started/tracing/#datadog-apm
75
+ # @default `DD_TRACE_AGENT_TIMEOUT_SECONDS` environment variable, otherwise `30` for http, '1' for UDS
76
+ # @return [Integer,nil]
77
+ option :timeout_seconds
78
+
79
+ # Agent unix domain socket path.
80
+ # @default defined in `DD_TRACE_AGENT_URL` environment variable, otherwise '/var/run/datadog/apm.socket'
81
+ # Agent connects via HTTP by default, but will use UDS if this is set or if unix scheme defined in
82
+ # DD_TRACE_AGENT_URL.
83
+ # @return [String,nil]
84
+ option :uds_path
85
+
86
+ # TODO: add declarative statsd configuration. Currently only usable via an environment variable.
87
+ # Statsd configuration for agent access.
88
+ # @public_api
89
+ # settings :statsd do
90
+ # # Agent Statsd UDP port.
91
+ # # @configure_with {Datadog::Statsd}
92
+ # # @default `DD_AGENT_HOST` environment variable, otherwise `8125`
93
+ # # @return [String,nil]
94
+ # option :port
95
+ # end
96
+ end
97
+
98
+ # Datadog API key.
99
+ #
100
+ # For internal use only.
101
+ #
102
+ # @default `DD_API_KEY` environment variable, otherwise `nil`
103
+ # @return [String,nil]
104
+ option :api_key do |o|
105
+ o.type :string, nilable: true
106
+ o.env Core::Environment::Ext::ENV_API_KEY
107
+ end
108
+
109
+ # Datadog diagnostic settings.
110
+ #
111
+ # Enabling these surfaces debug information that can be helpful to
112
+ # diagnose issues related to Datadog internals.
113
+ # @public_api
114
+ settings :diagnostics do
115
+ # Outputs all spans created by the host application to `Datadog.logger`.
116
+ #
117
+ # **This option is very verbose!** It's only recommended for non-production
118
+ # environments.
119
+ #
120
+ # This option is helpful when trying to understand what information the
121
+ # Datadog features are sending to the Agent or backend.
122
+ # @default `DD_TRACE_DEBUG` environment variable, otherwise `false`
123
+ # @return [Boolean]
124
+ option :debug do |o|
125
+ # Note: Alias (OTEL_LOG_LEVEL) defined in supported-configurations.json
126
+ o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_DEBUG_ENABLED
127
+ o.default false
128
+ o.type :bool
129
+ o.env_parser do |value|
130
+ if value
131
+ value = value.strip.downcase
132
+ # Debug is enabled when DD_TRACE_DEBUG is true or 1 OR
133
+ # when OTEL_LOG_LEVEL is set to debug
134
+ ['true', '1', 'debug'].include?(value)
135
+ end
136
+ end
137
+ o.after_set do |enabled|
138
+ # Enable rich debug print statements.
139
+ # We do not need to unnecessarily load 'pp' unless in debugging mode.
140
+ require 'pp' if enabled # standard:disable Lint/RedundantRequireStatement
141
+ end
142
+ end
143
+
144
+ # Tracer startup debug log statement configuration.
145
+ # @public_api
146
+ settings :startup_logs do
147
+ # Enable startup logs collection.
148
+ #
149
+ # If `nil`, defaults to logging startup logs when `datadog` detects that the application
150
+ # is *not* running in a development environment.
151
+ #
152
+ # @default `DD_TRACE_STARTUP_LOGS` environment variable, otherwise `nil`
153
+ # @return [Boolean, nil]
154
+ option :enabled do |o|
155
+ o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_STARTUP_LOGS_ENABLED
156
+ # Defaults to nil as we want to know when the default value is being used
157
+ o.type :bool, nilable: true
158
+ end
159
+ end
160
+ end
161
+
162
+ # The `env` tag in Datadog. Use it to separate out your staging, development, and production environments.
163
+ # @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
164
+ # @default `DD_ENV` environment variable, otherwise `nil`
165
+ # @return [String,nil]
166
+ option :env do |o|
167
+ o.type :string, nilable: true
168
+ # NOTE: env also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
169
+ o.env Core::Environment::Ext::ENV_ENVIRONMENT
170
+ end
171
+
172
+ # Internal {Datadog::Statsd} metrics collection.
173
+ #
174
+ # @public_api
175
+ settings :health_metrics do
176
+ # Enable health metrics collection.
177
+ #
178
+ # @default `DD_HEALTH_METRICS_ENABLED` environment variable, otherwise `false`
179
+ # @return [Boolean]
180
+ option :enabled do |o|
181
+ o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_HEALTH_METRICS_ENABLED
182
+ o.default false
183
+ o.type :bool
184
+ end
185
+
186
+ # {Datadog::Statsd} instance to collect health metrics.
187
+ #
188
+ # If `nil`, health metrics creates a new {Datadog::Statsd} client with default agent configuration.
189
+ #
190
+ # @default `nil`
191
+ # @return [Datadog::Statsd,nil] a custom {Datadog::Statsd} instance
192
+ # @return [nil] an instance with default agent configuration will be lazily created
193
+ option :statsd
194
+ end
195
+
196
+ # Internal `Datadog.logger` configuration.
197
+ #
198
+ # This logger instance is only used internally by the gem.
199
+ # @public_api
200
+ settings :logger do
201
+ # The `Datadog.logger` object.
202
+ #
203
+ # Can be overwritten with a custom logger object that respects the
204
+ # [built-in Ruby Logger](https://ruby-doc.org/stdlib-3.0.1/libdoc/logger/rdoc/Logger.html)
205
+ # interface.
206
+ #
207
+ # @return Logger::Severity
208
+ option :instance do |o|
209
+ o.after_set { |value| set_option(:level, value.level) unless value.nil? }
210
+ end
211
+
212
+ # Log level for `Datadog.logger`.
213
+ # @see Logger::Severity
214
+ # @return Logger::Severity
215
+ # TODO: Add environment variable for this `DD_TRACE_LOG_LEVEL`
216
+ option :level, default: ::Logger::INFO
217
+ end
218
+
219
+ # Datadog Profiler-specific configurations.
220
+ #
221
+ # @see https://docs.datadoghq.com/tracing/profiler/
222
+ # @public_api
223
+ settings :profiling do
224
+ # Enable profiling.
225
+ #
226
+ # @default `DD_PROFILING_ENABLED` environment variable, otherwise `false`
227
+ # @return [Boolean]
228
+ option :enabled do |o|
229
+ o.env Profiling::Ext::ENV_ENABLED
230
+ o.default false
231
+ o.type :bool
232
+ end
233
+
234
+ # @public_api
235
+ settings :exporter do
236
+ option :transport
237
+ end
238
+
239
+ # Can be used to enable/disable collection of allocation profiles.
240
+ #
241
+ # This feature is disabled by default
242
+ #
243
+ # @warn Due to bugs in Ruby we only recommend enabling this feature in
244
+ # Ruby versions 2.x, 3.1.4+, 3.2.3+ and 3.3.0+
245
+ # (more details in {Datadog::Profiling::Component.enable_allocation_profiling?})
246
+ #
247
+ # @default `DD_PROFILING_ALLOCATION_ENABLED` environment variable as a boolean, otherwise `false`
248
+ option :allocation_enabled do |o|
249
+ o.type :bool
250
+ o.env 'DD_PROFILING_ALLOCATION_ENABLED'
251
+ o.default false
252
+ end
253
+
254
+ # @public_api
255
+ settings :advanced do
256
+ # Controls the maximum number of frames for each thread sampled. Can be tuned to avoid omitted frames in the
257
+ # produced profiles. Increasing this may increase the overhead of profiling.
258
+ #
259
+ # @default `DD_PROFILING_MAX_FRAMES` environment variable, otherwise 400
260
+ option :max_frames do |o|
261
+ o.type :int
262
+ o.env Profiling::Ext::ENV_MAX_FRAMES
263
+ o.default 400
264
+ end
265
+
266
+ # @public_api
267
+ settings :endpoint do
268
+ settings :collection do
269
+ # When using profiling together with tracing, this controls if endpoint names
270
+ # are gathered and reported together with profiles.
271
+ #
272
+ # @default `DD_PROFILING_ENDPOINT_COLLECTION_ENABLED` environment variable, otherwise `true`
273
+ # @return [Boolean]
274
+ option :enabled do |o|
275
+ o.env Profiling::Ext::ENV_ENDPOINT_COLLECTION_ENABLED
276
+ o.default true
277
+ o.type :bool
278
+ end
279
+ end
280
+ end
281
+
282
+ # Can be used to disable the gathering of names and versions of gems in use by the service, used to power
283
+ # grouping and categorization of stack traces.
284
+ option :code_provenance_enabled do |o|
285
+ o.type :bool
286
+ o.default true
287
+ end
288
+
289
+ # Can be used to enable/disable garbage collection profiling.
290
+ #
291
+ # @warn To avoid https://bugs.ruby-lang.org/issues/18464 even when enabled, GC profiling is only started
292
+ # for Ruby versions 2.x, 3.1.4+, 3.2.3+ and 3.3.0+
293
+ # (more details in {Datadog::Profiling::Component.enable_gc_profiling?})
294
+ #
295
+ # @warn Due to a VM bug in the Ractor implementation (https://bugs.ruby-lang.org/issues/19112) this feature
296
+ # stops working when Ractors get garbage collected.
297
+ #
298
+ # @default `DD_PROFILING_GC_ENABLED` environment variable, otherwise `true`
299
+ option :gc_enabled do |o|
300
+ o.type :bool
301
+ o.env 'DD_PROFILING_GC_ENABLED'
302
+ o.default true
303
+ end
304
+
305
+ # Can be used to enable/disable the Datadog::Profiling.allocation_count feature.
306
+ #
307
+ # Requires allocation profiling to be enabled.
308
+ #
309
+ # @default false
310
+ option :allocation_counting_enabled do |o|
311
+ o.type :bool
312
+ o.default false
313
+ end
314
+
315
+ # Can be used to enable/disable the collection of heap profiles.
316
+ #
317
+ # This feature is in preview and disabled by default. Requires Ruby 3.1+.
318
+ #
319
+ # @warn To enable heap profiling you are required to also enable allocation profiling.
320
+ #
321
+ # @default `DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED` environment variable as a boolean, otherwise `false`
322
+ option :experimental_heap_enabled do |o|
323
+ o.type :bool
324
+ o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED'
325
+ o.default false
326
+ end
327
+
328
+ # Can be used to enable/disable the collection of heap size profiles.
329
+ #
330
+ # This feature is in preview and by default is enabled whenever heap profiling is enabled.
331
+ #
332
+ # @warn Heap size profiling depends on allocation and heap profiling, so they must be enabled as well.
333
+ #
334
+ # @default `DD_PROFILING_EXPERIMENTAL_HEAP_SIZE_ENABLED` environment variable as a boolean, otherwise it
335
+ # follows the value of `experimental_heap_enabled`.
336
+ option :experimental_heap_size_enabled do |o|
337
+ o.type :bool
338
+ o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_SIZE_ENABLED'
339
+ o.default true # This gets ANDed with experimental_heap_enabled in the profiler component.
340
+ end
341
+
342
+ # Can be used to configure the heap sampling rate: a heap sample will be collected for every x allocation
343
+ # samples.
344
+ #
345
+ # The higher the value, the less accuracy in heap tracking but the smaller the overhead.
346
+ #
347
+ # If you needed to tweak this, please tell us why on <https://github.com/DataDog/dd-trace-rb/issues/new>,
348
+ # so we can fix it!
349
+ #
350
+ # The effective heap sampling rate in terms of allocations (not allocation samples) can be calculated via
351
+ # effective_heap_sample_rate = allocation_sample_rate * heap_sample_rate.
352
+ #
353
+ # @default `DD_PROFILING_EXPERIMENTAL_HEAP_SAMPLE_RATE` environment variable, otherwise `1`.
354
+ option :experimental_heap_sample_rate do |o|
355
+ o.type :int
356
+ o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_SAMPLE_RATE'
357
+ o.default 1
358
+ end
359
+
360
+ # Can be used to disable checking which version of `libmysqlclient` is being used by the `mysql2` gem.
361
+ #
362
+ # This setting is only used when the `mysql2` gem is installed.
363
+ #
364
+ # @default `DD_PROFILING_SKIP_MYSQL2_CHECK` environment variable, otherwise `false`
365
+ option :skip_mysql2_check do |o|
366
+ o.type :bool
367
+ o.env 'DD_PROFILING_SKIP_MYSQL2_CHECK'
368
+ o.default false
369
+ end
370
+
371
+ # Controls data collection for the timeline feature.
372
+ #
373
+ # If you needed to disable this, please tell us why on <https://github.com/DataDog/dd-trace-rb/issues/new>,
374
+ # so we can fix it!
375
+ #
376
+ # @default `DD_PROFILING_TIMELINE_ENABLED` environment variable as a boolean, otherwise `true`
377
+ option :timeline_enabled do |o|
378
+ o.type :bool
379
+ o.env 'DD_PROFILING_TIMELINE_ENABLED'
380
+ o.default true
381
+ end
382
+
383
+ # The profiler gathers data by sending `SIGPROF` unix signals to Ruby application threads.
384
+ #
385
+ # Sending `SIGPROF` is a common profiling approach, and may cause system calls from native
386
+ # extensions/libraries to be interrupted with a system
387
+ # [EINTR error code.](https://man7.org/linux/man-pages/man7/signal.7.html#:~:text=Interruption%20of%20system%20calls%20and%20library%20functions%20by%20signal%20handlers)
388
+ # Rarely, native extensions or libraries called by them may have missing or incorrect error handling for the
389
+ # `EINTR` error code.
390
+ #
391
+ # The "no signals" workaround, when enabled, enables an alternative mode for the profiler where it does not
392
+ # send `SIGPROF` unix signals. The downside of this approach is that the profiler data will have lower
393
+ # quality.
394
+ #
395
+ # This workaround is automatically enabled when gems that are known to have issues handling
396
+ # `EINTR` error codes are detected. If you suspect you may be seeing an issue due to the profiler's use of
397
+ # signals, you can try manually enabling this mode as a fallback.
398
+ # Please also report these issues to us on <https://github.com/DataDog/dd-trace-rb/issues/new>, so we can
399
+ # work with the gem authors to fix them!
400
+ #
401
+ # @default `DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED` environment variable as a boolean, otherwise `:auto`
402
+ option :no_signals_workaround_enabled do |o|
403
+ o.env 'DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED'
404
+ o.default :auto
405
+ o.env_parser do |value|
406
+ if value
407
+ value = value.strip.downcase
408
+ ['true', '1'].include?(value)
409
+ end
410
+ end
411
+ end
412
+
413
+ # The profiler gathers data by sending `SIGPROF` unix signals to Ruby application threads.
414
+ #
415
+ # We've discovered that this can trigger a bug in a number of Ruby APIs in the `Dir` class, as
416
+ # described in https://bugs.ruby-lang.org/issues/20586 .
417
+ # This was fixed for Ruby 3.4+, and this setting is a no-op for those versions.
418
+ #
419
+ # @default `DD_PROFILING_DIR_INTERRUPTION_WORKAROUND_ENABLED` environment variable as a boolean,
420
+ # otherwise `true`
421
+ option :dir_interruption_workaround_enabled do |o|
422
+ o.env 'DD_PROFILING_DIR_INTERRUPTION_WORKAROUND_ENABLED'
423
+ o.type :bool
424
+ o.default true
425
+ end
426
+
427
+ # Configures how much wall-time overhead the profiler targets. The profiler will dynamically adjust the
428
+ # interval between samples it takes so as to try and maintain the property that it spends no longer than
429
+ # this amount of wall-clock time profiling. For example, with the default value of 2%, the profiler will
430
+ # try and cause no more than 1.2 seconds per minute of overhead. Decreasing this value will reduce the
431
+ # accuracy of the data collected. Increasing will impact the application.
432
+ #
433
+ # We do not recommend tweaking this value.
434
+ #
435
+ # This value should be a percentage i.e. a number between 0 and 100, not 0 and 1.
436
+ #
437
+ # @default `DD_PROFILING_OVERHEAD_TARGET_PERCENTAGE` as a float, otherwise 2.0
438
+ option :overhead_target_percentage do |o|
439
+ o.type :float
440
+ o.env 'DD_PROFILING_OVERHEAD_TARGET_PERCENTAGE'
441
+ o.default 2.0
442
+ end
443
+
444
+ # Controls how often the profiler reports data, in seconds. Cannot be lower than 60 seconds.
445
+ #
446
+ # We do not recommend tweaking this value.
447
+ #
448
+ # @default `DD_PROFILING_UPLOAD_PERIOD` environment variable, otherwise 60
449
+ option :upload_period_seconds do |o|
450
+ o.type :int
451
+ o.env 'DD_PROFILING_UPLOAD_PERIOD'
452
+ o.default 60
453
+ end
454
+
455
+ # DEV-3.0: Remove `experimental_crash_tracking_enabled` option
456
+ option :experimental_crash_tracking_enabled do |o|
457
+ o.after_set do |_, _, precedence|
458
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
459
+ Core.log_deprecation(key: :experimental_crash_tracking_enabled) do
460
+ 'The profiling.advanced.experimental_crash_tracking_enabled setting has been deprecated for removal ' \
461
+ 'and no longer does anything. Please remove it from your Datadog.configure block.'
462
+ end
463
+ end
464
+ end
465
+ end
466
+
467
+ # @deprecated Use {:gvl_enabled} instead.
468
+ option :preview_gvl_enabled do |o|
469
+ o.type :bool
470
+ o.default false
471
+ o.after_set do |_, _, precedence|
472
+ unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
473
+ Datadog.logger.warn(
474
+ 'The profiling.advanced.preview_gvl_enabled setting has been deprecated for removal and ' \
475
+ 'no longer does anything. Please remove it from your Datadog.configure block. ' \
476
+ 'GVL profiling is now controlled by the profiling.advanced.gvl_enabled setting instead.'
477
+ )
478
+ end
479
+ end
480
+ end
481
+
482
+ # Controls GVL profiling. This will show when threads are waiting for GVL in the timeline view.
483
+ #
484
+ # This feature requires Ruby 3.2+.
485
+ #
486
+ # @default `DD_PROFILING_GVL_ENABLED` environment variable as a boolean, otherwise `true`
487
+ option :gvl_enabled do |o|
488
+ o.type :bool
489
+ # Note: Deprecated alias (DD_PROFILING_PREVIEW_GVL_ENABLED) defined in supported-configurations.json
490
+ o.env 'DD_PROFILING_GVL_ENABLED'
491
+ o.default true
492
+ end
493
+
494
+ # Controls the smallest time period the profiler will report a thread waiting for the GVL.
495
+ #
496
+ # The default value was set to minimize overhead. Periods smaller than the set value will not be reported (e.g.
497
+ # the thread will be reported as whatever it was doing before it waited for the GVL).
498
+ #
499
+ # We do not recommend setting this to less than 1ms. Tweaking this value can increase application latency and
500
+ # memory use.
501
+ #
502
+ # @default 10_000_000 (10ms)
503
+ option :waiting_for_gvl_threshold_ns do |o|
504
+ o.type :int
505
+ o.default 10_000_000
506
+ end
507
+
508
+ # Controls if the profiler should attempt to read context from the otel library
509
+ #
510
+ # @default false
511
+ option :preview_otel_context_enabled do |o|
512
+ o.env 'DD_PROFILING_PREVIEW_OTEL_CONTEXT_ENABLED'
513
+ o.default false
514
+ o.env_parser do |value|
515
+ if value
516
+ value = value.strip.downcase
517
+ if ['only', 'both'].include?(value)
518
+ value
519
+ elsif ['true', '1'].include?(value)
520
+ 'both'
521
+ else
522
+ 'false'
523
+ end
524
+ end
525
+ end
526
+ o.setter do |value|
527
+ if value == true
528
+ :both
529
+ elsif ['only', 'both', :only, :both].include?(value)
530
+ value.to_sym
531
+ else
532
+ false
533
+ end
534
+ end
535
+ end
536
+
537
+ # Controls if the heap profiler should attempt to clean young objects after GC, rather than just at
538
+ # serialization time. This lowers memory usage and high percentile latency.
539
+ #
540
+ # Only has effect when used together with `gc_enabled: true` and `experimental_heap_enabled: true`.
541
+ #
542
+ # @default true
543
+ option :heap_clean_after_gc_enabled do |o|
544
+ o.type :bool
545
+ o.env 'DD_PROFILING_HEAP_CLEAN_AFTER_GC_ENABLED'
546
+ o.default true
547
+ end
548
+
549
+ # Controls if the profiler should use native filenames for frames in stack traces for functions implemented using
550
+ # native code. Setting to `false` will make the profiler fall back to default Ruby stack trace behavior (only show .rb files).
551
+ #
552
+ # @default true
553
+ option :native_filenames_enabled do |o|
554
+ o.type :bool
555
+ o.env 'DD_PROFILING_NATIVE_FILENAMES_ENABLED'
556
+ o.default true
557
+ end
558
+
559
+ # Controls if the profiler should sample directly from the signal handler.
560
+ # Sampling directly from the signal handler improves accuracy of the data collected.
561
+ #
562
+ # We recommend using this setting with Ruby 3.2.5+ / Ruby 3.3.4+ and above
563
+ # as they include additional safety measures added in https://github.com/ruby/ruby/pull/11036.
564
+ # We have not validated it thoroughly with earlier versions, but in practice it should work on Ruby 3.0+
565
+ # (the key change was https://github.com/ruby/ruby/pull/3296).
566
+ #
567
+ # Enabling this on Ruby 2 is not recommended as it may cause VM crashes and/or incorrect data.
568
+ #
569
+ # @default true on Ruby 3.2.5+ / Ruby 3.3.4+, false on older Rubies
570
+ option :sighandler_sampling_enabled do |o|
571
+ o.type :bool
572
+ o.env 'DD_PROFILING_SIGHANDLER_SAMPLING_ENABLED'
573
+ o.default do
574
+ Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.2.5') &&
575
+ !(RUBY_VERSION.start_with?('3.3.') && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.3.4'))
576
+ end
577
+ end
578
+ end
579
+
580
+ # @public_api
581
+ settings :upload do
582
+ # Network timeout for reporting profiling data to Datadog.
583
+ #
584
+ # @default `DD_PROFILING_UPLOAD_TIMEOUT` environment variable, otherwise `30.0`
585
+ option :timeout_seconds do |o|
586
+ o.type :float
587
+ o.env Profiling::Ext::ENV_UPLOAD_TIMEOUT
588
+ o.default 30.0
589
+ end
590
+ end
591
+ end
592
+
593
+ # [Runtime Metrics](https://docs.datadoghq.com/tracing/runtime_metrics/)
594
+ # are StatsD metrics collected by the tracer to gain additional insights into an application's performance.
595
+ # @public_api
596
+ settings :runtime_metrics do
597
+ # Enable runtime metrics.
598
+ # @default `DD_RUNTIME_METRICS_ENABLED` environment variable, otherwise `false`
599
+ # @return [Boolean]
600
+ option :enabled do |o|
601
+ o.env Core::Runtime::Ext::Metrics::ENV_ENABLED
602
+ o.default false
603
+ o.type :bool
604
+ end
605
+
606
+ option :experimental_runtime_id_enabled do |o|
607
+ o.type :bool
608
+ # Note: Alias (DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED) defined in supported-configurations.json
609
+ o.env 'DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED'
610
+ o.default false
611
+ end
612
+
613
+ option :opts, default: {}, type: :hash
614
+ option :statsd
615
+ end
616
+
617
+ # The `service` tag in Datadog. Use it to group related traces into a service.
618
+ # @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
619
+ # @default `DD_SERVICE` environment variable, otherwise the program name (e.g. `'ruby'`, `'rails'`, `'pry'`)
620
+ # @return [String]
621
+ option :service do |o|
622
+ o.type :string, nilable: true
623
+
624
+ # NOTE: service also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
625
+ # Note: Alias (OTEL_SERVICE_NAME) defined in supported-configurations.json
626
+ o.env Core::Environment::Ext::ENV_SERVICE
627
+ o.default Core::Environment::Ext::FALLBACK_SERVICE_NAME
628
+
629
+ # There's a few cases where we don't want to use the fallback service name, so this helper allows us to get a
630
+ # nil instead so that one can do
631
+ # nice_service_name = Datadog.configuration.service_without_fallback || nice_service_name_default
632
+ o.helper(:service_without_fallback) do
633
+ service_name = service
634
+ service_name unless service_name.equal?(Core::Environment::Ext::FALLBACK_SERVICE_NAME)
635
+ end
636
+ end
637
+
638
+ # The Datadog site host to send data to.
639
+ # By default, data is sent to the Datadog US site: `app.datadoghq.com`.
640
+ #
641
+ # If your organization is on another site, you must update this value to the new site.
642
+ #
643
+ # For internal use only.
644
+ #
645
+ # @see https://docs.datadoghq.com/agent/troubleshooting/site/
646
+ # @default `DD_SITE` environment variable, otherwise `nil` which sends data to `app.datadoghq.com`
647
+ # @return [String,nil]
648
+ option :site do |o|
649
+ o.type :string, nilable: true
650
+ o.env Core::Environment::Ext::ENV_SITE
651
+ end
652
+
653
+ # Default tags
654
+ #
655
+ # These tags are used by all Datadog products, when applicable.
656
+ # e.g. trace spans, profiles, etc.
657
+ # @default `DD_TAGS` environment variable (in the format `'tag1:value1,tag2:value2'`), otherwise `{}`
658
+ # @return [Hash<String,String>]
659
+ option :tags do |o|
660
+ o.type :hash, nilable: true
661
+ # Note: Alias (OTEL_RESOURCE_ATTRIBUTES) defined in supported-configurations.json
662
+ o.env Core::Environment::Ext::ENV_TAGS
663
+ o.env_parser do |env_value|
664
+ # Parses a string containing key-value pairs and returns a hash.
665
+ # Key-value pairs are delimited by ':' OR `=`, and pairs are separated by whitespace, comma, OR BOTH.
666
+ result = {}
667
+ unless env_value.nil? || env_value.empty?
668
+ # falling back to comma as separator
669
+ sep = env_value.include?(',') ? ',' : ' '
670
+ # split by separator
671
+ env_value.split(sep).each do |tag|
672
+ tag.strip!
673
+ next if tag.empty?
674
+
675
+ # tag by : or = (for OpenTelemetry)
676
+ key, val = tag.split(/[:=]/, 2).map(&:strip)
677
+ val ||= ''
678
+ # maps OpenTelemetry semantic attributes to Datadog tags
679
+ key = case key.downcase
680
+ when 'deployment.environment' then 'env'
681
+ when 'service.version' then 'version'
682
+ when 'service.name' then 'service'
683
+ else key
684
+ end
685
+ result[key] = val unless key.empty?
686
+ end
687
+ end
688
+ result
689
+ end
690
+ o.setter do |new_value, old_value|
691
+ raw_tags = new_value || {}
692
+
693
+ env_value = env
694
+ version_value = version
695
+ service_name = service_without_fallback
696
+
697
+ # Override tags if defined
698
+ raw_tags[Core::Environment::Ext::TAG_ENV] = env_value unless env_value.nil?
699
+ raw_tags[Core::Environment::Ext::TAG_VERSION] = version_value unless version_value.nil?
700
+
701
+ # Coerce keys to strings
702
+ string_tags = raw_tags.collect { |k, v| [k.to_s, v] }.to_h
703
+
704
+ # Cross-populate tag values with other settings
705
+ if env_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_ENV)
706
+ self.env = string_tags[Core::Environment::Ext::TAG_ENV]
707
+ end
708
+
709
+ if version_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_VERSION)
710
+ self.version = string_tags[Core::Environment::Ext::TAG_VERSION]
711
+ end
712
+
713
+ if service_name.nil? && string_tags.key?(Core::Environment::Ext::TAG_SERVICE)
714
+ self.service = string_tags[Core::Environment::Ext::TAG_SERVICE]
715
+ end
716
+
717
+ # Merge with previous tags
718
+ (old_value || {}).merge(string_tags)
719
+ end
720
+ end
721
+
722
+ # The time provider used by Datadog. It must respect the interface of [Time](https://ruby-doc.org/core-3.0.1/Time.html).
723
+ #
724
+ # When testing, it can be helpful to use a different time provider.
725
+ #
726
+ # For [Timecop](https://rubygems.org/gems/timecop), for example, `->{ Time.now_without_mock_time }`
727
+ # allows Datadog features to use the real wall time when time is frozen.
728
+ #
729
+ # @default `->{ Time.now }`
730
+ # @return [Proc<Time>]
731
+ option :time_now_provider do |o|
732
+ o.default_proc { ::Time.now }
733
+ o.type :proc
734
+
735
+ o.after_set do |time_provider|
736
+ Core::Utils::Time.now_provider = time_provider
737
+ end
738
+
739
+ o.resetter do |_value|
740
+ # TODO: Resetter needs access to the default value
741
+ # TODO: to help reduce duplication.
742
+ -> { ::Time.now }.tap do |default|
743
+ Core::Utils::Time.now_provider = default
744
+ end
745
+ end
746
+ end
747
+
748
+ # The monotonic clock time provider used by Datadog. This option is internal and is used by `datadog-ci`
749
+ # gem to avoid traces' durations being skewed by timecop.
750
+ #
751
+ # It must respect the interface of [Datadog::Core::Utils::Time#get_time] method.
752
+ #
753
+ # For [Timecop](https://rubygems.org/gems/timecop), for example,
754
+ # `->(unit = :float_second) { ::Process.clock_gettime_without_mock(::Process::CLOCK_MONOTONIC, unit) }`
755
+ # allows Datadog features to use the real monotonic time when time is frozen with
756
+ # `Timecop.mock_process_clock = true`.
757
+ #
758
+ # @default `->(unit = :float_second) { ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, unit)}`
759
+ # @return [Proc<Numeric>]
760
+ option :get_time_provider do |o|
761
+ o.default_proc { |unit = :float_second| ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, unit) }
762
+ o.type :proc
763
+
764
+ o.after_set do |get_time_provider|
765
+ Core::Utils::Time.get_time_provider = get_time_provider
766
+ end
767
+
768
+ o.resetter do |_value|
769
+ ->(unit = :float_second) { ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, unit) }.tap do |default|
770
+ Core::Utils::Time.get_time_provider = default
771
+ end
772
+ end
773
+ end
774
+
775
+ # The `version` tag in Datadog. Use it to enable [Deployment Tracking](https://docs.datadoghq.com/tracing/deployment_tracking/).
776
+ # @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
777
+ # @default `DD_VERSION` environment variable, otherwise `nils`
778
+ # @return [String,nil]
779
+ option :version do |o|
780
+ # NOTE: version also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
781
+ o.type :string, nilable: true
782
+ o.env Core::Environment::Ext::ENV_VERSION
783
+ end
784
+
785
+ # Client-side telemetry configuration
786
+ # @public_api
787
+ settings :telemetry do
788
+ # Whether the bundled Ruby gems as reported through telemetry.
789
+ #
790
+ # @default `DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED` environment variable, otherwise `true`.
791
+ # @return [Boolean]
792
+ option :dependency_collection do |o|
793
+ o.type :bool
794
+ o.env Core::Telemetry::Ext::ENV_DEPENDENCY_COLLECTION
795
+ o.default true
796
+ end
797
+
798
+ # Enable telemetry collection. This allows telemetry events to be emitted to the telemetry API.
799
+ #
800
+ # @default `DD_INSTRUMENTATION_TELEMETRY_ENABLED` environment variable, otherwise `true`.
801
+ # Can be disabled as documented [here](https://docs.datadoghq.com/tracing/configure_data_security/#telemetry-collection).
802
+ # By default, telemetry is disabled in development environments.
803
+ # @return [Boolean]
804
+ option :enabled do |o|
805
+ o.env Core::Telemetry::Ext::ENV_ENABLED
806
+ o.default do
807
+ if Datadog::Core::Environment::Execution.development?
808
+ Datadog.logger.debug do
809
+ 'Development environment detected, disabling Telemetry. ' \
810
+ 'You can enable it with DD_INSTRUMENTATION_TELEMETRY_ENABLED=true.'
811
+ end
812
+ false
813
+ else
814
+ false #使用cloudwise 心跳
815
+ end
816
+ end
817
+ o.type :bool
818
+ end
819
+
820
+ # Enable agentless mode for telemetry: submit telemetry events directly to the intake without Datadog Agent.
821
+ #
822
+ # @return [Boolean]
823
+ # @!visibility private
824
+ option :agentless_enabled do |o|
825
+ o.type :bool
826
+ o.default false
827
+ end
828
+
829
+ # Overrides agentless telemetry URL. To be used internally for testing purposes only.
830
+ #
831
+ # @return [String]
832
+ # @!visibility private
833
+ option :agentless_url_override do |o|
834
+ o.type :string, nilable: true
835
+ o.env Core::Telemetry::Ext::ENV_AGENTLESS_URL_OVERRIDE
836
+ end
837
+
838
+ # Enable metrics collection for telemetry. Metrics collection only works when telemetry is enabled and
839
+ # metrics are enabled.
840
+ # @default `DD_TELEMETRY_METRICS_ENABLED` environment variable, otherwise `true`.
841
+ # @return [Boolean]
842
+ option :metrics_enabled do |o|
843
+ o.type :bool
844
+ o.env Core::Telemetry::Ext::ENV_METRICS_ENABLED
845
+ o.default true
846
+ end
847
+
848
+ # The interval in seconds when telemetry must be sent.
849
+ #
850
+ # This method is used internally, for testing purposes only.
851
+ #
852
+ # @default `DD_TELEMETRY_HEARTBEAT_INTERVAL` environment variable, otherwise `60`.
853
+ # @return [Float]
854
+ # @!visibility private
855
+ option :heartbeat_interval_seconds do |o|
856
+ o.type :float
857
+ o.env Core::Telemetry::Ext::ENV_HEARTBEAT_INTERVAL
858
+ o.default 60.0
859
+ end
860
+
861
+ # The interval in seconds when telemetry metrics are aggregated.
862
+ # Should be a denominator of `heartbeat_interval_seconds`.
863
+ #
864
+ # This method is used internally, for testing purposes only.
865
+ # @default `DD_TELEMETRY_METRICS_AGGREGATION_INTERVAL` environment variable, otherwise `10`.
866
+ # @return [Float]
867
+ # @!visibility private
868
+ option :metrics_aggregation_interval_seconds do |o|
869
+ o.type :float
870
+ o.env Core::Telemetry::Ext::ENV_METRICS_AGGREGATION_INTERVAL
871
+ o.default 10.0
872
+ end
873
+
874
+ # The install id of the application.
875
+ #
876
+ # This method is used internally, by library injection.
877
+ #
878
+ # @default `DD_INSTRUMENTATION_INSTALL_ID` environment variable, otherwise `nil`.
879
+ # @return [String,nil]
880
+ # @!visibility private
881
+ option :install_id do |o|
882
+ o.type :string, nilable: true
883
+ o.env Core::Telemetry::Ext::ENV_INSTALL_ID
884
+ end
885
+
886
+ # The install type of the application.
887
+ #
888
+ # This method is used internally, by library injection.
889
+ #
890
+ # @default `DD_INSTRUMENTATION_INSTALL_TYPE` environment variable, otherwise `nil`.
891
+ # @return [String,nil]
892
+ # @!visibility private
893
+ option :install_type do |o|
894
+ o.type :string, nilable: true
895
+ o.env Core::Telemetry::Ext::ENV_INSTALL_TYPE
896
+ end
897
+
898
+ # The install time of the application.
899
+ #
900
+ # This method is used internally, by library injection.
901
+ #
902
+ # @default `DD_INSTRUMENTATION_INSTALL_TIME` environment variable, otherwise `nil`.
903
+ # @return [String,nil]
904
+ # @!visibility private
905
+ option :install_time do |o|
906
+ o.type :string, nilable: true
907
+ o.env Core::Telemetry::Ext::ENV_INSTALL_TIME
908
+ end
909
+
910
+ # Telemetry shutdown timeout in seconds
911
+ #
912
+ # @!visibility private
913
+ option :shutdown_timeout_seconds do |o|
914
+ o.type :float
915
+ o.default 1.0
916
+ end
917
+
918
+ # Enable log collection for telemetry. Log collection only works when telemetry is enabled and
919
+ # logs are enabled.
920
+ # @default `DD_TELEMETRY_LOG_COLLECTION_ENABLED` environment variable, otherwise `true`.
921
+ # @return [Boolean]
922
+ option :log_collection_enabled do |o|
923
+ o.type :bool
924
+ o.env Core::Telemetry::Ext::ENV_LOG_COLLECTION
925
+ o.default true
926
+ end
927
+
928
+ # For internal use only.
929
+ # Enables telemetry debugging through the Datadog platform.
930
+ #
931
+ # @default `false`.
932
+ # @return [Boolean]
933
+ option :debug do |o|
934
+ o.type :bool
935
+ o.default false
936
+ end
937
+ end
938
+
939
+ # Remote configuration
940
+ # @public_api
941
+ settings :remote do
942
+ # Enable remote configuration. This allows fetching of remote configuration for live updates.
943
+ #
944
+ # @default `DD_REMOTE_CONFIGURATION_ENABLED` environment variable, otherwise `true`.
945
+ # By default, remote configuration is disabled in development environments.
946
+ # @return [Boolean]
947
+ option :enabled do |o|
948
+ o.env Core::Remote::Ext::ENV_ENABLED
949
+ o.default do
950
+ if Datadog::Core::Environment::Execution.development?
951
+ Datadog.logger.debug do
952
+ 'Development environment detected, disabling Remote Configuration. ' \
953
+ 'You can enable it with DD_REMOTE_CONFIGURATION_ENABLED=true.'
954
+ end
955
+ false
956
+ else
957
+ true
958
+ end
959
+ end
960
+ o.type :bool
961
+ end
962
+
963
+ # Tune remote configuration polling interval.
964
+ # This is a private setting. Do not use outside of Datadog. It might change at any point in time.
965
+ #
966
+ # @default `DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS` environment variable, otherwise `5.0` seconds.
967
+ # @return [Float]
968
+ # @!visibility private
969
+ option :poll_interval_seconds do |o|
970
+ o.env Core::Remote::Ext::ENV_POLL_INTERVAL_SECONDS
971
+ o.type :float
972
+ o.default 5.0
973
+ end
974
+
975
+ # Tune remote configuration boot timeout.
976
+ # Early operations such as requests are blocked until RC is ready. In
977
+ # order to not block the application indefinitely a timeout is
978
+ # enforced allowing requests to proceed with the local configuration.
979
+ #
980
+ # @default `DD_REMOTE_CONFIG_BOOT_TIMEOUT` environment variable, otherwise `1.0` seconds.
981
+ # @return [Float]
982
+ option :boot_timeout_seconds do |o|
983
+ o.env Core::Remote::Ext::ENV_BOOT_TIMEOUT_SECONDS
984
+ o.type :float
985
+ o.default 1.0
986
+ end
987
+
988
+ # Declare service name to bind to remote configuration. Use when
989
+ # DD_SERVICE does not match the correct integration for which remote
990
+ # configuration applies.
991
+ #
992
+ # @default `nil`.
993
+ # @return [String,nil]
994
+ option :service
995
+ end
996
+
997
+ settings :crashtracking do
998
+ # Enables reporting of information when Ruby VM crashes.
999
+ option :enabled do |o|
1000
+ o.type :bool
1001
+ o.default true
1002
+ o.env 'DD_CRASHTRACKING_ENABLED'
1003
+ end
1004
+ end
1005
+
1006
+ # Cloudwise integration configuration
1007
+ # Uses DD_SERVICE for server_name and DD_AGENT_HOST/DD_AGENT_PORT for API URL
1008
+ # @public_api
1009
+ settings :cloudwise do
1010
+ # Enable Cloudwise integration
1011
+ # @default `DD_CLOUDWISE_ENABLED` environment variable, otherwise `false`
1012
+ # @return [Boolean]
1013
+ option :enabled do |o|
1014
+ o.type :bool
1015
+ o.env 'DD_CLOUDWISE_ENABLED'
1016
+ o.default true
1017
+ end
1018
+
1019
+ # License key for Cloudwise
1020
+ # @default `DD_CLOUDWISE_LICENSE_KEY` environment variable
1021
+ # @return [String,nil]
1022
+ option :license_key do |o|
1023
+ o.type :string, nilable: true
1024
+ o.env 'DD_CLOUDWISE_LICENSE_KEY'
1025
+ o.default nil
1026
+ end
1027
+
1028
+ # Heartbeat interval in seconds
1029
+ # @default `DD_CLOUDWISE_HEARTBEAT_INTERVAL` environment variable, otherwise `30`
1030
+ # @return [Integer]
1031
+ option :heartbeat_interval do |o|
1032
+ o.type :int
1033
+ o.env 'DD_CLOUDWISE_HEARTBEAT_INTERVAL'
1034
+ o.default 30
1035
+ end
1036
+
1037
+ # License check interval in seconds (5 minutes)
1038
+ # @default `DD_CLOUDWISE_LICENSE_CHECK_INTERVAL` environment variable, otherwise `300`
1039
+ # @return [Integer]
1040
+ option :license_check_interval do |o|
1041
+ o.type :int
1042
+ o.env 'DD_CLOUDWISE_LICENSE_CHECK_INTERVAL'
1043
+ o.default 300
1044
+ end
1045
+
1046
+ # Application registration interval in seconds (3 minutes)
1047
+ # @default `DD_CLOUDWISE_APP_REGISTRATION_INTERVAL` environment variable, otherwise `180`
1048
+ # @return [Integer]
1049
+ option :app_registration_interval do |o|
1050
+ o.type :int
1051
+ o.env 'DD_CLOUDWISE_APP_REGISTRATION_INTERVAL'
1052
+ o.default 180
1053
+ end
1054
+ end
1055
+
1056
+ # Tracer specific configuration starting with APM (e.g. DD_APM_TRACING_ENABLED).
1057
+ # @public_api
1058
+ settings :apm do
1059
+ # Tracing as a transport
1060
+ # @public_api
1061
+ settings :tracing do
1062
+ # Enables tracing as transport.
1063
+ # Disabling it will set sampling priority to -1 (FORCE_DROP) on most traces,
1064
+ # (which tells to the agent to drop these traces)
1065
+ # except heartbeat ones (1 per minute) and manually kept ones (sampling priority to 2) (e.g. appsec events)
1066
+ #
1067
+ # This is different than `DD_TRACE_ENABLED`, which completely disables tracing (sends no trace at all),
1068
+ # while this will send heartbeat traces (1 per minute) so that the service is considered alive in the backend.
1069
+ #
1070
+ # @default `DD_APM_TRACING_ENABLED` environment variable, otherwise `true`
1071
+ # @return [Boolean]
1072
+ option :enabled do |o|
1073
+ o.env Configuration::Ext::APM::ENV_TRACING_ENABLED
1074
+ o.default true
1075
+ o.type :bool
1076
+ end
1077
+ end
1078
+ end
1079
+
1080
+ # TODO: Tracing should manage its own settings.
1081
+ # Keep this extension here for now to keep things working.
1082
+ extend Datadog::Tracing::Configuration::Settings
1083
+ end
1084
+ # standard:enable Metrics/BlockLength
1085
+ end
1086
+ end
1087
+ end