ddtrace 0.49.0 → 1.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1785) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1213 -12
  3. data/LICENSE-3rdparty.csv +7 -1
  4. data/README.md +16 -9
  5. data/bin/ddtracerb +5 -5
  6. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +134 -0
  7. data/ext/ddtrace_profiling_loader/extconf.rb +72 -0
  8. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +158 -0
  9. data/ext/ddtrace_profiling_native_extension/clock_id.h +25 -0
  10. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +75 -0
  11. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +23 -0
  12. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +931 -0
  13. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c +142 -0
  14. data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h +14 -0
  15. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +241 -0
  16. data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
  17. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +379 -0
  18. data/ext/ddtrace_profiling_native_extension/collectors_stack.h +20 -0
  19. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +1001 -0
  20. data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +14 -0
  21. data/ext/ddtrace_profiling_native_extension/extconf.rb +253 -0
  22. data/ext/ddtrace_profiling_native_extension/helpers.h +17 -0
  23. data/ext/ddtrace_profiling_native_extension/http_transport.c +347 -0
  24. data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +25 -0
  25. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +319 -0
  26. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +769 -0
  27. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +45 -0
  28. data/ext/ddtrace_profiling_native_extension/profiling.c +251 -0
  29. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +110 -0
  30. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +89 -0
  31. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.c +115 -0
  32. data/ext/ddtrace_profiling_native_extension/setup_signal_handler.h +11 -0
  33. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +591 -0
  34. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +14 -0
  35. data/ext/ddtrace_profiling_native_extension/time_helpers.c +17 -0
  36. data/ext/ddtrace_profiling_native_extension/time_helpers.h +10 -0
  37. data/lib/datadog/appsec/assets/blocked.html +99 -0
  38. data/lib/datadog/appsec/assets/blocked.json +1 -0
  39. data/lib/datadog/appsec/assets/blocked.text +5 -0
  40. data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
  41. data/lib/datadog/appsec/assets/waf_rules/recommended.json +7080 -0
  42. data/lib/datadog/appsec/assets/waf_rules/strict.json +1545 -0
  43. data/lib/datadog/appsec/assets.rb +36 -0
  44. data/lib/datadog/appsec/autoload.rb +11 -0
  45. data/lib/datadog/appsec/component.rb +75 -0
  46. data/lib/datadog/appsec/configuration/settings.rb +224 -0
  47. data/lib/datadog/appsec/configuration.rb +90 -0
  48. data/lib/datadog/appsec/contrib/auto_instrument.rb +27 -0
  49. data/lib/datadog/appsec/contrib/integration.rb +37 -0
  50. data/lib/datadog/appsec/contrib/patcher.rb +12 -0
  51. data/lib/datadog/appsec/contrib/rack/ext.rb +12 -0
  52. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +100 -0
  53. data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
  54. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +158 -0
  55. data/lib/datadog/appsec/contrib/rack/integration.rb +42 -0
  56. data/lib/datadog/appsec/contrib/rack/patcher.rb +34 -0
  57. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +86 -0
  58. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +63 -0
  59. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +69 -0
  60. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +43 -0
  61. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +174 -0
  62. data/lib/datadog/appsec/contrib/rails/ext.rb +12 -0
  63. data/lib/datadog/appsec/contrib/rails/framework.rb +18 -0
  64. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
  65. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +68 -0
  66. data/lib/datadog/appsec/contrib/rails/integration.rb +41 -0
  67. data/lib/datadog/appsec/contrib/rails/patcher.rb +159 -0
  68. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +69 -0
  69. data/lib/datadog/appsec/contrib/rails/request.rb +36 -0
  70. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
  71. data/lib/datadog/appsec/contrib/sinatra/ext.rb +13 -0
  72. data/lib/datadog/appsec/contrib/sinatra/framework.rb +22 -0
  73. data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
  74. data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
  75. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +113 -0
  76. data/lib/datadog/appsec/contrib/sinatra/integration.rb +41 -0
  77. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +160 -0
  78. data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +64 -0
  79. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
  80. data/lib/datadog/appsec/event.rb +113 -0
  81. data/lib/datadog/appsec/ext.rb +10 -0
  82. data/lib/datadog/appsec/extensions.rb +144 -0
  83. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +22 -0
  84. data/lib/datadog/appsec/instrumentation/gateway.rb +64 -0
  85. data/lib/datadog/appsec/instrumentation.rb +9 -0
  86. data/lib/datadog/appsec/monitor/gateway/watcher.rb +67 -0
  87. data/lib/datadog/appsec/monitor/reactive/set_user.rb +61 -0
  88. data/lib/datadog/appsec/monitor.rb +11 -0
  89. data/lib/datadog/appsec/processor/rule_loader.rb +63 -0
  90. data/lib/datadog/appsec/processor/rule_merger.rb +132 -0
  91. data/lib/datadog/appsec/processor.rb +143 -0
  92. data/lib/datadog/appsec/rate_limiter.rb +58 -0
  93. data/lib/datadog/appsec/reactive/address_hash.rb +22 -0
  94. data/lib/datadog/appsec/reactive/engine.rb +47 -0
  95. data/lib/datadog/appsec/reactive/operation.rb +68 -0
  96. data/lib/datadog/appsec/reactive/subscriber.rb +19 -0
  97. data/lib/datadog/appsec/remote.rb +123 -0
  98. data/lib/datadog/appsec/response.rb +73 -0
  99. data/lib/datadog/appsec/scope.rb +61 -0
  100. data/lib/datadog/appsec/utils/http/media_range.rb +199 -0
  101. data/lib/datadog/appsec/utils/http/media_type.rb +85 -0
  102. data/lib/datadog/appsec/utils/http.rb +11 -0
  103. data/lib/datadog/appsec/utils.rb +9 -0
  104. data/lib/datadog/appsec.rb +61 -0
  105. data/lib/datadog/ci/configuration/components.rb +32 -0
  106. data/lib/datadog/ci/configuration/settings.rb +53 -0
  107. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +33 -0
  108. data/lib/datadog/ci/contrib/cucumber/ext.rb +20 -0
  109. data/lib/datadog/ci/contrib/cucumber/formatter.rb +94 -0
  110. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +28 -0
  111. data/lib/datadog/ci/contrib/cucumber/integration.rb +47 -0
  112. data/lib/datadog/ci/contrib/cucumber/patcher.rb +27 -0
  113. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +33 -0
  114. data/lib/datadog/ci/contrib/rspec/example.rb +68 -0
  115. data/lib/datadog/ci/contrib/rspec/ext.rb +19 -0
  116. data/lib/datadog/ci/contrib/rspec/integration.rb +48 -0
  117. data/lib/datadog/ci/contrib/rspec/patcher.rb +27 -0
  118. data/lib/datadog/ci/ext/app_types.rb +9 -0
  119. data/lib/datadog/ci/ext/environment.rb +575 -0
  120. data/lib/datadog/ci/ext/settings.rb +10 -0
  121. data/lib/datadog/ci/ext/test.rb +35 -0
  122. data/lib/datadog/ci/extensions.rb +19 -0
  123. data/lib/datadog/ci/flush.rb +38 -0
  124. data/lib/datadog/ci/test.rb +81 -0
  125. data/lib/datadog/ci.rb +20 -0
  126. data/lib/datadog/core/buffer/cruby.rb +55 -0
  127. data/lib/datadog/core/buffer/random.rb +134 -0
  128. data/lib/datadog/core/buffer/thread_safe.rb +58 -0
  129. data/lib/datadog/core/chunker.rb +35 -0
  130. data/lib/datadog/core/configuration/agent_settings_resolver.rb +396 -0
  131. data/lib/datadog/core/configuration/base.rb +99 -0
  132. data/lib/datadog/core/configuration/components.rb +161 -0
  133. data/lib/datadog/core/configuration/dependency_resolver.rb +28 -0
  134. data/lib/datadog/core/configuration/ext.rb +24 -0
  135. data/lib/datadog/core/configuration/option.rb +69 -0
  136. data/lib/datadog/core/configuration/option_definition.rb +135 -0
  137. data/lib/datadog/core/configuration/option_definition_set.rb +22 -0
  138. data/lib/datadog/core/configuration/option_set.rb +10 -0
  139. data/lib/datadog/core/configuration/options.rb +116 -0
  140. data/lib/datadog/core/configuration/settings.rb +569 -0
  141. data/lib/datadog/core/configuration.rb +289 -0
  142. data/lib/datadog/core/diagnostics/environment_logger.rb +286 -0
  143. data/lib/datadog/core/diagnostics/health.rb +19 -0
  144. data/lib/datadog/core/encoding.rb +72 -0
  145. data/lib/datadog/core/environment/cgroup.rb +51 -0
  146. data/lib/datadog/core/environment/class_count.rb +21 -0
  147. data/lib/datadog/core/environment/container.rb +89 -0
  148. data/lib/datadog/core/environment/ext.rb +44 -0
  149. data/lib/datadog/core/environment/gc.rb +20 -0
  150. data/lib/datadog/core/environment/identity.rb +114 -0
  151. data/lib/datadog/core/environment/platform.rb +38 -0
  152. data/lib/datadog/core/environment/socket.rb +24 -0
  153. data/lib/datadog/core/environment/thread_count.rb +20 -0
  154. data/lib/datadog/core/environment/variable_helpers.rb +122 -0
  155. data/lib/datadog/core/environment/vm_cache.rb +64 -0
  156. data/lib/datadog/core/error.rb +99 -0
  157. data/lib/datadog/core/extensions.rb +16 -0
  158. data/lib/datadog/core/git/ext.rb +33 -0
  159. data/lib/datadog/core/header_collection.rb +43 -0
  160. data/lib/datadog/core/logger.rb +44 -0
  161. data/lib/datadog/core/logging/ext.rb +11 -0
  162. data/lib/datadog/core/metrics/client.rb +197 -0
  163. data/lib/datadog/core/metrics/ext.rb +16 -0
  164. data/lib/datadog/core/metrics/helpers.rb +25 -0
  165. data/lib/datadog/core/metrics/logging.rb +42 -0
  166. data/lib/datadog/core/metrics/metric.rb +14 -0
  167. data/lib/datadog/core/metrics/options.rb +48 -0
  168. data/lib/datadog/core/pin.rb +73 -0
  169. data/lib/datadog/core/remote/client/capabilities.rb +57 -0
  170. data/lib/datadog/core/remote/client.rb +229 -0
  171. data/lib/datadog/core/remote/component.rb +158 -0
  172. data/lib/datadog/core/remote/configuration/content.rb +84 -0
  173. data/lib/datadog/core/remote/configuration/digest.rb +62 -0
  174. data/lib/datadog/core/remote/configuration/path.rb +90 -0
  175. data/lib/datadog/core/remote/configuration/repository.rb +292 -0
  176. data/lib/datadog/core/remote/configuration/target.rb +74 -0
  177. data/lib/datadog/core/remote/configuration.rb +18 -0
  178. data/lib/datadog/core/remote/dispatcher.rb +59 -0
  179. data/lib/datadog/core/remote/ext.rb +12 -0
  180. data/lib/datadog/core/remote/negotiation.rb +57 -0
  181. data/lib/datadog/core/remote/worker.rb +96 -0
  182. data/lib/datadog/core/remote.rb +24 -0
  183. data/lib/datadog/core/runtime/ext.rb +28 -0
  184. data/lib/datadog/core/runtime/metrics.rb +140 -0
  185. data/lib/datadog/core/telemetry/client.rb +77 -0
  186. data/lib/datadog/core/telemetry/collector.rb +231 -0
  187. data/lib/datadog/core/telemetry/emitter.rb +46 -0
  188. data/lib/datadog/core/telemetry/event.rb +67 -0
  189. data/lib/datadog/core/telemetry/ext.rb +9 -0
  190. data/lib/datadog/core/telemetry/heartbeat.rb +37 -0
  191. data/lib/datadog/core/telemetry/http/adapters/net.rb +111 -0
  192. data/lib/datadog/core/telemetry/http/env.rb +20 -0
  193. data/lib/datadog/core/telemetry/http/ext.rb +20 -0
  194. data/lib/datadog/core/telemetry/http/response.rb +64 -0
  195. data/lib/datadog/core/telemetry/http/transport.rb +54 -0
  196. data/lib/datadog/core/telemetry/v1/app_event.rb +52 -0
  197. data/lib/datadog/core/telemetry/v1/application.rb +92 -0
  198. data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
  199. data/lib/datadog/core/telemetry/v1/dependency.rb +43 -0
  200. data/lib/datadog/core/telemetry/v1/host.rb +59 -0
  201. data/lib/datadog/core/telemetry/v1/integration.rb +64 -0
  202. data/lib/datadog/core/telemetry/v1/product.rb +36 -0
  203. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +106 -0
  204. data/lib/datadog/core/transport/config.rb +58 -0
  205. data/lib/datadog/core/transport/http/api/instance.rb +37 -0
  206. data/lib/datadog/core/transport/http/api/spec.rb +19 -0
  207. data/lib/datadog/core/transport/http/api.rb +57 -0
  208. data/lib/datadog/core/transport/http/builder.rb +217 -0
  209. data/lib/datadog/core/transport/http/client.rb +45 -0
  210. data/lib/datadog/core/transport/http/config.rb +268 -0
  211. data/lib/datadog/core/transport/http/negotiation.rb +144 -0
  212. data/lib/datadog/core/transport/http.rb +169 -0
  213. data/lib/datadog/core/transport/negotiation.rb +60 -0
  214. data/lib/datadog/core/utils/compression.rb +36 -0
  215. data/lib/datadog/core/utils/forking.rb +61 -0
  216. data/lib/datadog/core/utils/hash.rb +32 -0
  217. data/lib/datadog/core/utils/network.rb +140 -0
  218. data/lib/datadog/core/utils/object_set.rb +43 -0
  219. data/lib/datadog/core/utils/only_once.rb +42 -0
  220. data/lib/datadog/core/utils/safe_dup.rb +43 -0
  221. data/lib/datadog/core/utils/sequence.rb +26 -0
  222. data/lib/datadog/core/utils/string_table.rb +47 -0
  223. data/lib/datadog/core/utils/time.rb +52 -0
  224. data/lib/datadog/core/utils.rb +92 -0
  225. data/lib/datadog/core/vendor/ipaddr.rb +78 -0
  226. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +118 -0
  227. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +59 -0
  228. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +137 -0
  229. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +11 -0
  230. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +10 -0
  231. data/lib/datadog/core/vendor/multipart-post/multipart.rb +14 -0
  232. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +34 -0
  233. data/lib/datadog/core/worker.rb +24 -0
  234. data/lib/datadog/core/workers/async.rb +182 -0
  235. data/lib/datadog/core/workers/interval_loop.rb +123 -0
  236. data/lib/datadog/core/workers/polling.rb +57 -0
  237. data/lib/datadog/core/workers/queue.rb +44 -0
  238. data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
  239. data/lib/datadog/core.rb +45 -0
  240. data/lib/datadog/kit/appsec/events.rb +119 -0
  241. data/lib/datadog/kit/enable_core_dumps.rb +50 -0
  242. data/lib/datadog/kit/identity.rb +89 -0
  243. data/lib/datadog/kit.rb +11 -0
  244. data/lib/datadog/opentelemetry/api/context.rb +186 -0
  245. data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
  246. data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
  247. data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
  248. data/lib/datadog/opentelemetry/sdk/propagator.rb +90 -0
  249. data/lib/datadog/opentelemetry/sdk/span_processor.rb +91 -0
  250. data/lib/datadog/opentelemetry.rb +47 -0
  251. data/lib/datadog/opentracer/binary_propagator.rb +26 -0
  252. data/lib/datadog/opentracer/carrier.rb +9 -0
  253. data/lib/datadog/opentracer/distributed_headers.rb +54 -0
  254. data/lib/datadog/opentracer/global_tracer.rb +17 -0
  255. data/lib/datadog/opentracer/propagator.rb +26 -0
  256. data/lib/datadog/opentracer/rack_propagator.rb +71 -0
  257. data/lib/datadog/opentracer/scope.rb +18 -0
  258. data/lib/datadog/opentracer/scope_manager.rb +9 -0
  259. data/lib/datadog/opentracer/span.rb +99 -0
  260. data/lib/datadog/opentracer/span_context.rb +19 -0
  261. data/lib/datadog/opentracer/span_context_factory.rb +27 -0
  262. data/lib/datadog/opentracer/text_map_propagator.rb +86 -0
  263. data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
  264. data/lib/datadog/opentracer/thread_local_scope_manager.rb +64 -0
  265. data/lib/datadog/opentracer/tracer.rb +212 -0
  266. data/lib/datadog/opentracer.rb +24 -0
  267. data/lib/datadog/profiling/backtrace_location.rb +34 -0
  268. data/lib/datadog/profiling/buffer.rb +43 -0
  269. data/lib/datadog/profiling/collectors/code_provenance.rb +113 -0
  270. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +114 -0
  271. data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
  272. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +66 -0
  273. data/lib/datadog/profiling/collectors/old_stack.rb +301 -0
  274. data/lib/datadog/profiling/collectors/stack.rb +13 -0
  275. data/lib/datadog/profiling/collectors/thread_context.rb +46 -0
  276. data/lib/datadog/profiling/component.rb +275 -0
  277. data/lib/datadog/profiling/encoding/profile.rb +41 -0
  278. data/lib/datadog/profiling/event.rb +15 -0
  279. data/lib/datadog/profiling/events/stack.rb +82 -0
  280. data/lib/datadog/profiling/exporter.rb +83 -0
  281. data/lib/datadog/profiling/ext/forking.rb +96 -0
  282. data/lib/datadog/profiling/ext.rb +45 -0
  283. data/lib/datadog/profiling/flush.rb +38 -0
  284. data/lib/datadog/profiling/http_transport.rb +130 -0
  285. data/lib/datadog/profiling/load_native_extension.rb +20 -0
  286. data/lib/datadog/profiling/native_extension.rb +41 -0
  287. data/lib/datadog/profiling/old_recorder.rb +107 -0
  288. data/lib/datadog/profiling/pprof/builder.rb +125 -0
  289. data/lib/datadog/profiling/pprof/converter.rb +102 -0
  290. data/lib/datadog/profiling/pprof/message_set.rb +16 -0
  291. data/lib/datadog/profiling/pprof/payload.rb +20 -0
  292. data/lib/datadog/profiling/pprof/pprof_pb.rb +81 -0
  293. data/lib/datadog/profiling/pprof/stack_sample.rb +139 -0
  294. data/lib/datadog/profiling/pprof/string_table.rb +12 -0
  295. data/lib/datadog/profiling/pprof/template.rb +118 -0
  296. data/lib/datadog/profiling/preload.rb +5 -0
  297. data/lib/datadog/profiling/profiler.rb +39 -0
  298. data/lib/datadog/profiling/scheduler.rb +130 -0
  299. data/lib/datadog/profiling/stack_recorder.rb +56 -0
  300. data/lib/datadog/profiling/tag_builder.rb +53 -0
  301. data/lib/datadog/profiling/tasks/exec.rb +48 -0
  302. data/lib/datadog/profiling/tasks/help.rb +16 -0
  303. data/lib/datadog/profiling/tasks/setup.rb +58 -0
  304. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +43 -0
  305. data/lib/datadog/profiling/trace_identifiers/helper.rb +45 -0
  306. data/lib/datadog/profiling.rb +212 -0
  307. data/lib/datadog/tracing/analytics.rb +25 -0
  308. data/lib/datadog/tracing/buffer.rb +127 -0
  309. data/lib/datadog/tracing/client_ip.rb +61 -0
  310. data/lib/datadog/tracing/component.rb +176 -0
  311. data/lib/datadog/tracing/configuration/ext.rb +101 -0
  312. data/lib/datadog/tracing/configuration/settings.rb +465 -0
  313. data/lib/datadog/tracing/context.rb +68 -0
  314. data/lib/datadog/tracing/context_provider.rb +80 -0
  315. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +35 -0
  316. data/lib/datadog/tracing/contrib/action_cable/event.rb +71 -0
  317. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +56 -0
  318. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +61 -0
  319. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +57 -0
  320. data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
  321. data/lib/datadog/tracing/contrib/action_cable/ext.rb +30 -0
  322. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +88 -0
  323. data/lib/datadog/tracing/contrib/action_cable/integration.rb +48 -0
  324. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
  325. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +36 -0
  326. data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
  327. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +58 -0
  328. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +45 -0
  329. data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
  330. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +31 -0
  331. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +48 -0
  332. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
  333. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +136 -0
  334. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
  335. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +47 -0
  336. data/lib/datadog/tracing/contrib/action_pack/ext.rb +20 -0
  337. data/lib/datadog/tracing/contrib/action_pack/integration.rb +48 -0
  338. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
  339. data/lib/datadog/tracing/contrib/action_pack/utils.rb +38 -0
  340. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +34 -0
  341. data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
  342. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +52 -0
  343. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +55 -0
  344. data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
  345. data/lib/datadog/tracing/contrib/action_view/ext.rb +22 -0
  346. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +76 -0
  347. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +89 -0
  348. data/lib/datadog/tracing/contrib/action_view/integration.rb +55 -0
  349. data/lib/datadog/tracing/contrib/action_view/patcher.rb +45 -0
  350. data/lib/datadog/tracing/contrib/action_view/utils.rb +34 -0
  351. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +37 -0
  352. data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
  353. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +48 -0
  354. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +47 -0
  355. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +47 -0
  356. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +49 -0
  357. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +47 -0
  358. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +48 -0
  359. data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
  360. data/lib/datadog/tracing/contrib/active_job/ext.rb +37 -0
  361. data/lib/datadog/tracing/contrib/active_job/integration.rb +48 -0
  362. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +24 -0
  363. data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
  364. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +33 -0
  365. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +68 -0
  366. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +43 -0
  367. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +45 -0
  368. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
  369. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +22 -0
  370. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +43 -0
  371. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +32 -0
  372. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +34 -0
  373. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +136 -0
  374. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +44 -0
  375. data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
  376. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +56 -0
  377. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +79 -0
  378. data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
  379. data/lib/datadog/tracing/contrib/active_record/ext.rb +27 -0
  380. data/lib/datadog/tracing/contrib/active_record/integration.rb +54 -0
  381. data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
  382. data/lib/datadog/tracing/contrib/active_record/utils.rb +126 -0
  383. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +305 -0
  384. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +282 -0
  385. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +73 -0
  386. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
  387. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +43 -0
  388. data/lib/datadog/tracing/contrib/active_support/ext.rb +29 -0
  389. data/lib/datadog/tracing/contrib/active_support/integration.rb +49 -0
  390. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
  391. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
  392. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +162 -0
  393. data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
  394. data/lib/datadog/tracing/contrib/analytics.rb +29 -0
  395. data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
  396. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +44 -0
  397. data/lib/datadog/tracing/contrib/aws/ext.rb +36 -0
  398. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +108 -0
  399. data/lib/datadog/tracing/contrib/aws/integration.rb +45 -0
  400. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +62 -0
  401. data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
  402. data/lib/datadog/tracing/contrib/aws/service/base.rb +16 -0
  403. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +22 -0
  404. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +22 -0
  405. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +32 -0
  406. data/lib/datadog/tracing/contrib/aws/service/s3.rb +22 -0
  407. data/lib/datadog/tracing/contrib/aws/service/sns.rb +30 -0
  408. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +27 -0
  409. data/lib/datadog/tracing/contrib/aws/service/states.rb +40 -0
  410. data/lib/datadog/tracing/contrib/aws/services.rb +137 -0
  411. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +23 -0
  412. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
  413. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +14 -0
  414. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +27 -0
  415. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +41 -0
  416. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +32 -0
  417. data/lib/datadog/tracing/contrib/configurable.rb +102 -0
  418. data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
  419. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
  420. data/lib/datadog/tracing/contrib/configuration/settings.rb +39 -0
  421. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +43 -0
  422. data/lib/datadog/tracing/contrib/dalli/ext.rb +24 -0
  423. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +64 -0
  424. data/lib/datadog/tracing/contrib/dalli/integration.rb +50 -0
  425. data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
  426. data/lib/datadog/tracing/contrib/dalli/quantize.rb +24 -0
  427. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +38 -0
  428. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +26 -0
  429. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +41 -0
  430. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +37 -0
  431. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +108 -0
  432. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +34 -0
  433. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +45 -0
  434. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +27 -0
  435. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +48 -0
  436. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +155 -0
  437. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +85 -0
  438. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +47 -0
  439. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +176 -0
  440. data/lib/datadog/tracing/contrib/ethon/ext.rb +23 -0
  441. data/lib/datadog/tracing/contrib/ethon/integration.rb +46 -0
  442. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +99 -0
  443. data/lib/datadog/tracing/contrib/ethon/patcher.rb +30 -0
  444. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +47 -0
  445. data/lib/datadog/tracing/contrib/excon/ext.rb +20 -0
  446. data/lib/datadog/tracing/contrib/excon/integration.rb +46 -0
  447. data/lib/datadog/tracing/contrib/excon/middleware.rb +172 -0
  448. data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
  449. data/lib/datadog/tracing/contrib/ext.rb +30 -0
  450. data/lib/datadog/tracing/contrib/extensions.rb +197 -0
  451. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +51 -0
  452. data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
  453. data/lib/datadog/tracing/contrib/faraday/ext.rb +20 -0
  454. data/lib/datadog/tracing/contrib/faraday/integration.rb +46 -0
  455. data/lib/datadog/tracing/contrib/faraday/middleware.rb +94 -0
  456. data/lib/datadog/tracing/contrib/faraday/patcher.rb +54 -0
  457. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
  458. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +42 -0
  459. data/lib/datadog/tracing/contrib/grape/endpoint.rb +248 -0
  460. data/lib/datadog/tracing/contrib/grape/ext.rb +26 -0
  461. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +35 -0
  462. data/lib/datadog/tracing/contrib/grape/integration.rb +42 -0
  463. data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
  464. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +36 -0
  465. data/lib/datadog/tracing/contrib/graphql/ext.rb +17 -0
  466. data/lib/datadog/tracing/contrib/graphql/integration.rb +42 -0
  467. data/lib/datadog/tracing/contrib/graphql/patcher.rb +88 -0
  468. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +48 -0
  469. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +100 -0
  470. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +88 -0
  471. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +105 -0
  472. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
  473. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +42 -0
  474. data/lib/datadog/tracing/contrib/grpc/ext.rb +25 -0
  475. data/lib/datadog/tracing/contrib/grpc/integration.rb +48 -0
  476. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
  477. data/lib/datadog/tracing/contrib/grpc/patcher.rb +34 -0
  478. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
  479. data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +22 -0
  480. data/lib/datadog/tracing/contrib/hanami/ext.rb +22 -0
  481. data/lib/datadog/tracing/contrib/hanami/integration.rb +42 -0
  482. data/lib/datadog/tracing/contrib/hanami/patcher.rb +33 -0
  483. data/lib/datadog/tracing/contrib/hanami/plugin.rb +23 -0
  484. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +41 -0
  485. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +44 -0
  486. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +43 -0
  487. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +52 -0
  488. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
  489. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +37 -0
  490. data/lib/datadog/tracing/contrib/http/ext.rb +21 -0
  491. data/lib/datadog/tracing/contrib/http/instrumentation.rb +138 -0
  492. data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
  493. data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
  494. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
  495. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +52 -0
  496. data/lib/datadog/tracing/contrib/httpclient/ext.rb +21 -0
  497. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +118 -0
  498. data/lib/datadog/tracing/contrib/httpclient/integration.rb +46 -0
  499. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +40 -0
  500. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +52 -0
  501. data/lib/datadog/tracing/contrib/httprb/ext.rb +21 -0
  502. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +128 -0
  503. data/lib/datadog/tracing/contrib/httprb/integration.rb +46 -0
  504. data/lib/datadog/tracing/contrib/httprb/patcher.rb +40 -0
  505. data/lib/datadog/tracing/contrib/integration.rb +78 -0
  506. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +35 -0
  507. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +19 -0
  508. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
  509. data/lib/datadog/tracing/contrib/kafka/event.rb +53 -0
  510. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +40 -0
  511. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +47 -0
  512. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +45 -0
  513. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +45 -0
  514. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +35 -0
  515. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +35 -0
  516. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +35 -0
  517. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +39 -0
  518. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +42 -0
  519. data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
  520. data/lib/datadog/tracing/contrib/kafka/ext.rb +51 -0
  521. data/lib/datadog/tracing/contrib/kafka/integration.rb +42 -0
  522. data/lib/datadog/tracing/contrib/kafka/patcher.rb +29 -0
  523. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +23 -0
  524. data/lib/datadog/tracing/contrib/lograge/ext.rb +13 -0
  525. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +46 -0
  526. data/lib/datadog/tracing/contrib/lograge/integration.rb +48 -0
  527. data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
  528. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +47 -0
  529. data/lib/datadog/tracing/contrib/mongodb/ext.rb +33 -0
  530. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
  531. data/lib/datadog/tracing/contrib/mongodb/integration.rb +46 -0
  532. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +47 -0
  533. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
  534. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +128 -0
  535. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +55 -0
  536. data/lib/datadog/tracing/contrib/mysql2/ext.rb +22 -0
  537. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +80 -0
  538. data/lib/datadog/tracing/contrib/mysql2/integration.rb +41 -0
  539. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
  540. data/lib/datadog/tracing/contrib/patchable.rb +109 -0
  541. data/lib/datadog/tracing/contrib/patcher.rb +83 -0
  542. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +55 -0
  543. data/lib/datadog/tracing/contrib/pg/ext.rb +31 -0
  544. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +171 -0
  545. data/lib/datadog/tracing/contrib/pg/integration.rb +41 -0
  546. data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
  547. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +43 -0
  548. data/lib/datadog/tracing/contrib/presto/ext.rb +32 -0
  549. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +127 -0
  550. data/lib/datadog/tracing/contrib/presto/integration.rb +41 -0
  551. data/lib/datadog/tracing/contrib/presto/patcher.rb +35 -0
  552. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
  553. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +31 -0
  554. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +28 -0
  555. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +53 -0
  556. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +40 -0
  557. data/lib/datadog/tracing/contrib/qless/ext.rb +24 -0
  558. data/lib/datadog/tracing/contrib/qless/integration.rb +41 -0
  559. data/lib/datadog/tracing/contrib/qless/patcher.rb +36 -0
  560. data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
  561. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +30 -0
  562. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +47 -0
  563. data/lib/datadog/tracing/contrib/que/ext.rb +32 -0
  564. data/lib/datadog/tracing/contrib/que/integration.rb +44 -0
  565. data/lib/datadog/tracing/contrib/que/patcher.rb +26 -0
  566. data/lib/datadog/tracing/contrib/que/tracer.rb +63 -0
  567. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +43 -0
  568. data/lib/datadog/tracing/contrib/racecar/event.rb +81 -0
  569. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +36 -0
  570. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +33 -0
  571. data/lib/datadog/tracing/contrib/racecar/events/message.rb +36 -0
  572. data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
  573. data/lib/datadog/tracing/contrib/racecar/ext.rb +30 -0
  574. data/lib/datadog/tracing/contrib/racecar/integration.rb +42 -0
  575. data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
  576. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +49 -0
  577. data/lib/datadog/tracing/contrib/rack/ext.rb +28 -0
  578. data/lib/datadog/tracing/contrib/rack/header_collection.rb +35 -0
  579. data/lib/datadog/tracing/contrib/rack/integration.rb +48 -0
  580. data/lib/datadog/tracing/contrib/rack/middlewares.rb +349 -0
  581. data/lib/datadog/tracing/contrib/rack/patcher.rb +117 -0
  582. data/lib/datadog/tracing/contrib/rack/request_queue.rb +46 -0
  583. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +10 -0
  584. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +79 -0
  585. data/lib/datadog/tracing/contrib/rails/ext.rb +17 -0
  586. data/lib/datadog/tracing/contrib/rails/framework.rb +148 -0
  587. data/lib/datadog/tracing/contrib/rails/integration.rb +47 -0
  588. data/lib/datadog/tracing/contrib/rails/log_injection.rb +30 -0
  589. data/lib/datadog/tracing/contrib/rails/middlewares.rb +46 -0
  590. data/lib/datadog/tracing/contrib/rails/patcher.rb +118 -0
  591. data/lib/datadog/tracing/contrib/rails/railtie.rb +17 -0
  592. data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
  593. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +51 -0
  594. data/lib/datadog/tracing/contrib/rake/ext.rb +24 -0
  595. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +101 -0
  596. data/lib/datadog/tracing/contrib/rake/integration.rb +41 -0
  597. data/lib/datadog/tracing/contrib/rake/patcher.rb +33 -0
  598. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +47 -0
  599. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +48 -0
  600. data/lib/datadog/tracing/contrib/redis/ext.rb +27 -0
  601. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +86 -0
  602. data/lib/datadog/tracing/contrib/redis/integration.rb +78 -0
  603. data/lib/datadog/tracing/contrib/redis/patcher.rb +77 -0
  604. data/lib/datadog/tracing/contrib/redis/quantize.rb +80 -0
  605. data/lib/datadog/tracing/contrib/redis/tags.rb +59 -0
  606. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +70 -0
  607. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +160 -0
  608. data/lib/datadog/tracing/contrib/registerable.rb +50 -0
  609. data/lib/datadog/tracing/contrib/registry.rb +52 -0
  610. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +37 -0
  611. data/lib/datadog/tracing/contrib/resque/ext.rb +19 -0
  612. data/lib/datadog/tracing/contrib/resque/integration.rb +46 -0
  613. data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
  614. data/lib/datadog/tracing/contrib/resque/resque_job.rb +106 -0
  615. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +47 -0
  616. data/lib/datadog/tracing/contrib/rest_client/ext.rb +20 -0
  617. data/lib/datadog/tracing/contrib/rest_client/integration.rb +41 -0
  618. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +28 -0
  619. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +109 -0
  620. data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +34 -0
  621. data/lib/datadog/tracing/contrib/roda/ext.rb +18 -0
  622. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +76 -0
  623. data/lib/datadog/tracing/contrib/roda/integration.rb +45 -0
  624. data/lib/datadog/tracing/contrib/roda/patcher.rb +30 -0
  625. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +23 -0
  626. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +13 -0
  627. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +51 -0
  628. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +50 -0
  629. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
  630. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +33 -0
  631. data/lib/datadog/tracing/contrib/sequel/database.rb +60 -0
  632. data/lib/datadog/tracing/contrib/sequel/dataset.rb +67 -0
  633. data/lib/datadog/tracing/contrib/sequel/ext.rb +20 -0
  634. data/lib/datadog/tracing/contrib/sequel/integration.rb +41 -0
  635. data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
  636. data/lib/datadog/tracing/contrib/sequel/utils.rb +88 -0
  637. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +38 -0
  638. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +24 -0
  639. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +42 -0
  640. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
  641. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +65 -0
  642. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +66 -0
  643. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +45 -0
  644. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +38 -0
  645. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +42 -0
  646. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +59 -0
  647. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +90 -0
  648. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +61 -0
  649. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +36 -0
  650. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +34 -0
  651. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +57 -0
  652. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +34 -0
  653. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +118 -0
  654. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +44 -0
  655. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +41 -0
  656. data/lib/datadog/tracing/contrib/sinatra/env.rb +53 -0
  657. data/lib/datadog/tracing/contrib/sinatra/ext.rb +34 -0
  658. data/lib/datadog/tracing/contrib/sinatra/framework.rb +114 -0
  659. data/lib/datadog/tracing/contrib/sinatra/headers.rb +35 -0
  660. data/lib/datadog/tracing/contrib/sinatra/integration.rb +41 -0
  661. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +75 -0
  662. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +84 -0
  663. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +127 -0
  664. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +36 -0
  665. data/lib/datadog/tracing/contrib/sneakers/ext.rb +25 -0
  666. data/lib/datadog/tracing/contrib/sneakers/integration.rb +44 -0
  667. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +27 -0
  668. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +60 -0
  669. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +28 -0
  670. data/lib/datadog/tracing/contrib/status_code_matcher.rb +72 -0
  671. data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +33 -0
  672. data/lib/datadog/tracing/contrib/stripe/ext.rb +26 -0
  673. data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
  674. data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
  675. data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
  676. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +35 -0
  677. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
  678. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +25 -0
  679. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +102 -0
  680. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +41 -0
  681. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +35 -0
  682. data/lib/datadog/tracing/contrib/utils/database.rb +29 -0
  683. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +109 -0
  684. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +177 -0
  685. data/lib/datadog/tracing/contrib.rb +80 -0
  686. data/lib/datadog/tracing/correlation.rb +111 -0
  687. data/lib/datadog/tracing/diagnostics/ext.rb +34 -0
  688. data/lib/datadog/tracing/diagnostics/health.rb +40 -0
  689. data/lib/datadog/tracing/distributed/b3_multi.rb +72 -0
  690. data/lib/datadog/tracing/distributed/b3_single.rb +68 -0
  691. data/lib/datadog/tracing/distributed/datadog.rb +200 -0
  692. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +84 -0
  693. data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
  694. data/lib/datadog/tracing/distributed/headers/ext.rb +34 -0
  695. data/lib/datadog/tracing/distributed/helpers.rb +65 -0
  696. data/lib/datadog/tracing/distributed/none.rb +18 -0
  697. data/lib/datadog/tracing/distributed/propagation.rb +126 -0
  698. data/lib/datadog/tracing/distributed/trace_context.rb +380 -0
  699. data/lib/datadog/tracing/event.rb +74 -0
  700. data/lib/datadog/tracing/flush.rb +96 -0
  701. data/lib/datadog/tracing/metadata/analytics.rb +26 -0
  702. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  703. data/lib/datadog/tracing/metadata/ext.rb +188 -0
  704. data/lib/datadog/tracing/metadata/tagging.rb +129 -0
  705. data/lib/datadog/tracing/metadata.rb +20 -0
  706. data/lib/datadog/tracing/pipeline/span_filter.rb +46 -0
  707. data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
  708. data/lib/datadog/tracing/pipeline.rb +61 -0
  709. data/lib/datadog/tracing/propagation/http.rb +14 -0
  710. data/lib/datadog/tracing/runtime/metrics.rb +17 -0
  711. data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
  712. data/lib/datadog/tracing/sampling/ext.rb +56 -0
  713. data/lib/datadog/tracing/sampling/matcher.rb +68 -0
  714. data/lib/datadog/tracing/sampling/priority_sampler.rb +165 -0
  715. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +94 -0
  716. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +62 -0
  717. data/lib/datadog/tracing/sampling/rate_limiter.rb +186 -0
  718. data/lib/datadog/tracing/sampling/rate_sampler.rb +68 -0
  719. data/lib/datadog/tracing/sampling/rule.rb +72 -0
  720. data/lib/datadog/tracing/sampling/rule_sampler.rb +128 -0
  721. data/lib/datadog/tracing/sampling/sampler.rb +42 -0
  722. data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
  723. data/lib/datadog/tracing/sampling/span/matcher.rb +89 -0
  724. data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
  725. data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
  726. data/lib/datadog/tracing/sampling/span/sampler.rb +77 -0
  727. data/lib/datadog/tracing/span.rb +214 -0
  728. data/lib/datadog/tracing/span_operation.rb +517 -0
  729. data/lib/datadog/tracing/sync_writer.rb +67 -0
  730. data/lib/datadog/tracing/trace_digest.rb +146 -0
  731. data/lib/datadog/tracing/trace_operation.rb +473 -0
  732. data/lib/datadog/tracing/trace_segment.rb +217 -0
  733. data/lib/datadog/tracing/tracer.rb +530 -0
  734. data/lib/datadog/tracing/utils.rb +83 -0
  735. data/lib/datadog/tracing/workers/trace_writer.rb +192 -0
  736. data/lib/datadog/tracing/workers.rb +121 -0
  737. data/lib/datadog/tracing/writer.rb +183 -0
  738. data/lib/datadog/tracing.rb +142 -0
  739. data/lib/ddtrace/auto_instrument.rb +15 -2
  740. data/lib/ddtrace/auto_instrument_base.rb +2 -0
  741. data/lib/ddtrace/profiling/preload.rb +2 -3
  742. data/lib/ddtrace/transport/ext.rb +39 -0
  743. data/lib/ddtrace/transport/http/adapters/net.rb +29 -6
  744. data/lib/ddtrace/transport/http/adapters/registry.rb +2 -0
  745. data/lib/ddtrace/transport/http/adapters/test.rb +5 -3
  746. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +24 -13
  747. data/lib/ddtrace/transport/http/api/endpoint.rb +2 -0
  748. data/lib/ddtrace/transport/http/api/fallbacks.rb +2 -0
  749. data/lib/ddtrace/transport/http/api/instance.rb +2 -0
  750. data/lib/ddtrace/transport/http/api/map.rb +3 -1
  751. data/lib/ddtrace/transport/http/api/spec.rb +2 -0
  752. data/lib/ddtrace/transport/http/api.rb +7 -14
  753. data/lib/ddtrace/transport/http/builder.rb +17 -10
  754. data/lib/ddtrace/transport/http/client.rb +5 -3
  755. data/lib/ddtrace/transport/http/env.rb +2 -0
  756. data/lib/ddtrace/transport/http/response.rb +37 -5
  757. data/lib/ddtrace/transport/http/statistics.rb +3 -3
  758. data/lib/ddtrace/transport/http/traces.rb +9 -7
  759. data/lib/ddtrace/transport/http.rb +40 -39
  760. data/lib/ddtrace/transport/io/client.rb +5 -3
  761. data/lib/ddtrace/transport/io/response.rb +3 -1
  762. data/lib/ddtrace/transport/io/traces.rb +7 -5
  763. data/lib/ddtrace/transport/io.rb +6 -4
  764. data/lib/ddtrace/transport/parcel.rb +3 -0
  765. data/lib/ddtrace/transport/request.rb +3 -1
  766. data/lib/ddtrace/transport/serializable_trace.rb +122 -0
  767. data/lib/ddtrace/transport/statistics.rb +7 -4
  768. data/lib/ddtrace/transport/trace_formatter.rb +198 -0
  769. data/lib/ddtrace/transport/traces.rb +22 -11
  770. data/lib/ddtrace/version.rb +20 -17
  771. data/lib/ddtrace.rb +9 -82
  772. metadata +784 -1026
  773. data/.circleci/config.yml +0 -894
  774. data/.circleci/images/primary/Dockerfile-2.0.0 +0 -83
  775. data/.circleci/images/primary/Dockerfile-2.1.10 +0 -83
  776. data/.circleci/images/primary/Dockerfile-2.2.10 +0 -83
  777. data/.circleci/images/primary/Dockerfile-2.3.8 +0 -85
  778. data/.circleci/images/primary/Dockerfile-2.4.6 +0 -83
  779. data/.circleci/images/primary/Dockerfile-2.5.6 +0 -83
  780. data/.circleci/images/primary/Dockerfile-2.6.4 +0 -83
  781. data/.circleci/images/primary/Dockerfile-2.7.0 +0 -83
  782. data/.circleci/images/primary/Dockerfile-3.0.0 +0 -73
  783. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +0 -88
  784. data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +0 -73
  785. data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +0 -73
  786. data/.dockerignore +0 -0
  787. data/.env +0 -26
  788. data/.github/CODEOWNERS +0 -1
  789. data/.github/workflows/add-milestone-to-pull-requests.yml +0 -42
  790. data/.github/workflows/create-next-milestone.yml +0 -20
  791. data/.gitignore +0 -62
  792. data/.gitlab-ci.yml +0 -27
  793. data/.rspec +0 -1
  794. data/.rubocop.yml +0 -359
  795. data/.rubocop_todo.yml +0 -438
  796. data/.simplecov +0 -47
  797. data/.yardopts +0 -5
  798. data/Appraisals +0 -1429
  799. data/CONTRIBUTING.md +0 -85
  800. data/Gemfile +0 -69
  801. data/Rakefile +0 -994
  802. data/benchmarks/postgres_database.yml +0 -9
  803. data/benchmarks/profiler_sample_loop.rb +0 -69
  804. data/benchmarks/sidekiq_test.rb +0 -154
  805. data/ddtrace.gemspec +0 -44
  806. data/docker-compose.yml +0 -444
  807. data/docs/DevelopmentGuide.md +0 -249
  808. data/docs/GettingStarted.md +0 -2482
  809. data/docs/ProfilingDevelopment.md +0 -88
  810. data/gemfiles/jruby_9.2.0.0_contrib.gemfile +0 -79
  811. data/gemfiles/jruby_9.2.0.0_contrib.gemfile.lock +0 -1518
  812. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile +0 -35
  813. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile.lock +0 -157
  814. data/gemfiles/jruby_9.2.0.0_core_old.gemfile +0 -34
  815. data/gemfiles/jruby_9.2.0.0_core_old.gemfile.lock +0 -153
  816. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile +0 -35
  817. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile.lock +0 -174
  818. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile +0 -35
  819. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile.lock +0 -206
  820. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile +0 -35
  821. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile.lock +0 -206
  822. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile +0 -40
  823. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile.lock +0 -271
  824. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile +0 -40
  825. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile.lock +0 -271
  826. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile +0 -41
  827. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile.lock +0 -273
  828. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile +0 -41
  829. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile.lock +0 -273
  830. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile +0 -42
  831. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile.lock +0 -279
  832. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile +0 -40
  833. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile.lock +0 -290
  834. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile +0 -40
  835. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile.lock +0 -290
  836. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile +0 -41
  837. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile.lock +0 -292
  838. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile +0 -41
  839. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile.lock +0 -297
  840. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile +0 -40
  841. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile.lock +0 -287
  842. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile +0 -40
  843. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile.lock +0 -287
  844. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile +0 -41
  845. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile.lock +0 -289
  846. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile +0 -41
  847. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile.lock +0 -289
  848. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile +0 -42
  849. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile.lock +0 -295
  850. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile +0 -36
  851. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile.lock +0 -180
  852. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile +0 -36
  853. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile.lock +0 -180
  854. data/gemfiles/jruby_9.2.11.1_contrib.gemfile +0 -79
  855. data/gemfiles/jruby_9.2.11.1_contrib.gemfile.lock +0 -1518
  856. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile +0 -35
  857. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile.lock +0 -157
  858. data/gemfiles/jruby_9.2.11.1_core_old.gemfile +0 -34
  859. data/gemfiles/jruby_9.2.11.1_core_old.gemfile.lock +0 -153
  860. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile +0 -35
  861. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile.lock +0 -174
  862. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile +0 -35
  863. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile.lock +0 -206
  864. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile +0 -35
  865. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile.lock +0 -206
  866. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile +0 -40
  867. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile.lock +0 -271
  868. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile +0 -40
  869. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile.lock +0 -271
  870. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile +0 -41
  871. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile.lock +0 -273
  872. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile +0 -41
  873. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile.lock +0 -273
  874. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile +0 -42
  875. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile.lock +0 -279
  876. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile +0 -40
  877. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile.lock +0 -290
  878. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile +0 -40
  879. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile.lock +0 -290
  880. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile +0 -41
  881. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile.lock +0 -292
  882. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile +0 -41
  883. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile.lock +0 -297
  884. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile +0 -40
  885. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile.lock +0 -287
  886. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile +0 -40
  887. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile.lock +0 -287
  888. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile +0 -41
  889. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile.lock +0 -289
  890. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile +0 -41
  891. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile.lock +0 -289
  892. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile +0 -42
  893. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile.lock +0 -295
  894. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile +0 -36
  895. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile.lock +0 -180
  896. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile +0 -36
  897. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile.lock +0 -180
  898. data/gemfiles/ruby_2.0.0_contrib_old.gemfile +0 -64
  899. data/gemfiles/ruby_2.0.0_contrib_old.gemfile.lock +0 -290
  900. data/gemfiles/ruby_2.0.0_core_old.gemfile +0 -33
  901. data/gemfiles/ruby_2.0.0_core_old.gemfile.lock +0 -118
  902. data/gemfiles/ruby_2.0.0_rails30_postgres.gemfile +0 -39
  903. data/gemfiles/ruby_2.0.0_rails30_postgres.gemfile.lock +0 -196
  904. data/gemfiles/ruby_2.0.0_rails30_postgres_sidekiq.gemfile +0 -40
  905. data/gemfiles/ruby_2.0.0_rails30_postgres_sidekiq.gemfile.lock +0 -205
  906. data/gemfiles/ruby_2.0.0_rails32_mysql2.gemfile +0 -43
  907. data/gemfiles/ruby_2.0.0_rails32_mysql2.gemfile.lock +0 -217
  908. data/gemfiles/ruby_2.0.0_rails32_postgres.gemfile +0 -39
  909. data/gemfiles/ruby_2.0.0_rails32_postgres.gemfile.lock +0 -204
  910. data/gemfiles/ruby_2.0.0_rails32_postgres_redis.gemfile +0 -41
  911. data/gemfiles/ruby_2.0.0_rails32_postgres_redis.gemfile.lock +0 -223
  912. data/gemfiles/ruby_2.0.0_rails32_postgres_sidekiq.gemfile +0 -40
  913. data/gemfiles/ruby_2.0.0_rails32_postgres_sidekiq.gemfile.lock +0 -213
  914. data/gemfiles/ruby_2.1.10_contrib_old.gemfile +0 -66
  915. data/gemfiles/ruby_2.1.10_contrib_old.gemfile.lock +0 -305
  916. data/gemfiles/ruby_2.1.10_core_old.gemfile +0 -33
  917. data/gemfiles/ruby_2.1.10_core_old.gemfile.lock +0 -118
  918. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile +0 -39
  919. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile.lock +0 -196
  920. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile +0 -40
  921. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile.lock +0 -205
  922. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile +0 -42
  923. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile.lock +0 -215
  924. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile +0 -39
  925. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile.lock +0 -204
  926. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile +0 -41
  927. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile.lock +0 -223
  928. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile +0 -40
  929. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile.lock +0 -213
  930. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile +0 -38
  931. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile.lock +0 -218
  932. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile +0 -38
  933. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile.lock +0 -218
  934. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile +0 -40
  935. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile.lock +0 -237
  936. data/gemfiles/ruby_2.2.10_contrib.gemfile +0 -73
  937. data/gemfiles/ruby_2.2.10_contrib.gemfile.lock +0 -1450
  938. data/gemfiles/ruby_2.2.10_core_old.gemfile +0 -33
  939. data/gemfiles/ruby_2.2.10_core_old.gemfile.lock +0 -118
  940. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile +0 -39
  941. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile.lock +0 -196
  942. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile +0 -40
  943. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile.lock +0 -205
  944. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile +0 -41
  945. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile.lock +0 -212
  946. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile +0 -39
  947. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile.lock +0 -204
  948. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile +0 -41
  949. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile.lock +0 -223
  950. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile +0 -40
  951. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile.lock +0 -213
  952. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile +0 -38
  953. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile.lock +0 -218
  954. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile +0 -38
  955. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile.lock +0 -218
  956. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile +0 -40
  957. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile.lock +0 -237
  958. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile +0 -40
  959. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile.lock +0 -229
  960. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile +0 -38
  961. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile.lock +0 -234
  962. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile +0 -38
  963. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile.lock +0 -234
  964. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile +0 -39
  965. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile.lock +0 -236
  966. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile +0 -39
  967. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile.lock +0 -236
  968. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile +0 -40
  969. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile.lock +0 -245
  970. data/gemfiles/ruby_2.3.8_contrib.gemfile +0 -73
  971. data/gemfiles/ruby_2.3.8_contrib.gemfile.lock +0 -1459
  972. data/gemfiles/ruby_2.3.8_contrib_old.gemfile +0 -34
  973. data/gemfiles/ruby_2.3.8_contrib_old.gemfile.lock +0 -127
  974. data/gemfiles/ruby_2.3.8_core_old.gemfile +0 -33
  975. data/gemfiles/ruby_2.3.8_core_old.gemfile.lock +0 -123
  976. data/gemfiles/ruby_2.3.8_cucumber3.gemfile +0 -34
  977. data/gemfiles/ruby_2.3.8_cucumber3.gemfile.lock +0 -144
  978. data/gemfiles/ruby_2.3.8_cucumber4.gemfile +0 -34
  979. data/gemfiles/ruby_2.3.8_cucumber4.gemfile.lock +0 -174
  980. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile +0 -39
  981. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile.lock +0 -201
  982. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile +0 -40
  983. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile.lock +0 -210
  984. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile +0 -41
  985. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile.lock +0 -217
  986. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile +0 -39
  987. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile.lock +0 -209
  988. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile +0 -41
  989. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile.lock +0 -228
  990. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile +0 -40
  991. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile.lock +0 -218
  992. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile +0 -38
  993. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile.lock +0 -223
  994. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile +0 -38
  995. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile.lock +0 -223
  996. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile +0 -40
  997. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile.lock +0 -242
  998. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile +0 -40
  999. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile.lock +0 -234
  1000. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile +0 -37
  1001. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile.lock +0 -234
  1002. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile +0 -37
  1003. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile.lock +0 -234
  1004. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile +0 -38
  1005. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile.lock +0 -236
  1006. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile +0 -38
  1007. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile.lock +0 -236
  1008. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile +0 -39
  1009. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile.lock +0 -245
  1010. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile +0 -35
  1011. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile.lock +0 -150
  1012. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile +0 -35
  1013. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile.lock +0 -150
  1014. data/gemfiles/ruby_2.4.6_contrib.gemfile +0 -78
  1015. data/gemfiles/ruby_2.4.6_contrib.gemfile.lock +0 -1513
  1016. data/gemfiles/ruby_2.4.6_contrib_old.gemfile +0 -38
  1017. data/gemfiles/ruby_2.4.6_contrib_old.gemfile.lock +0 -155
  1018. data/gemfiles/ruby_2.4.6_core_old.gemfile +0 -37
  1019. data/gemfiles/ruby_2.4.6_core_old.gemfile.lock +0 -151
  1020. data/gemfiles/ruby_2.4.6_cucumber3.gemfile +0 -38
  1021. data/gemfiles/ruby_2.4.6_cucumber3.gemfile.lock +0 -172
  1022. data/gemfiles/ruby_2.4.6_cucumber4.gemfile +0 -38
  1023. data/gemfiles/ruby_2.4.6_cucumber4.gemfile.lock +0 -202
  1024. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile +0 -41
  1025. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile.lock +0 -262
  1026. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile +0 -41
  1027. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile.lock +0 -262
  1028. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile +0 -42
  1029. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile.lock +0 -264
  1030. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile +0 -42
  1031. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile.lock +0 -264
  1032. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile +0 -43
  1033. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile.lock +0 -273
  1034. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile +0 -39
  1035. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile.lock +0 -178
  1036. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile +0 -39
  1037. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile.lock +0 -178
  1038. data/gemfiles/ruby_2.5.6_contrib.gemfile +0 -83
  1039. data/gemfiles/ruby_2.5.6_contrib.gemfile.lock +0 -1526
  1040. data/gemfiles/ruby_2.5.6_contrib_old.gemfile +0 -39
  1041. data/gemfiles/ruby_2.5.6_contrib_old.gemfile.lock +0 -165
  1042. data/gemfiles/ruby_2.5.6_core_old.gemfile +0 -38
  1043. data/gemfiles/ruby_2.5.6_core_old.gemfile.lock +0 -161
  1044. data/gemfiles/ruby_2.5.6_cucumber3.gemfile +0 -39
  1045. data/gemfiles/ruby_2.5.6_cucumber3.gemfile.lock +0 -182
  1046. data/gemfiles/ruby_2.5.6_cucumber4.gemfile +0 -39
  1047. data/gemfiles/ruby_2.5.6_cucumber4.gemfile.lock +0 -214
  1048. data/gemfiles/ruby_2.5.6_cucumber5.gemfile +0 -39
  1049. data/gemfiles/ruby_2.5.6_cucumber5.gemfile.lock +0 -214
  1050. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile +0 -44
  1051. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile.lock +0 -276
  1052. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile +0 -44
  1053. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile.lock +0 -276
  1054. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile +0 -45
  1055. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile.lock +0 -278
  1056. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile +0 -45
  1057. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile.lock +0 -278
  1058. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile +0 -46
  1059. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile.lock +0 -284
  1060. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile +0 -44
  1061. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile.lock +0 -295
  1062. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile +0 -44
  1063. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile.lock +0 -295
  1064. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile +0 -45
  1065. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile.lock +0 -297
  1066. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile +0 -45
  1067. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile.lock +0 -302
  1068. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile +0 -44
  1069. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile.lock +0 -292
  1070. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile +0 -44
  1071. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile.lock +0 -292
  1072. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile +0 -45
  1073. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile.lock +0 -294
  1074. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile +0 -45
  1075. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile.lock +0 -294
  1076. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile +0 -46
  1077. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile.lock +0 -300
  1078. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile +0 -40
  1079. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile.lock +0 -188
  1080. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile +0 -40
  1081. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile.lock +0 -188
  1082. data/gemfiles/ruby_2.6.4_contrib.gemfile +0 -79
  1083. data/gemfiles/ruby_2.6.4_contrib.gemfile.lock +0 -1524
  1084. data/gemfiles/ruby_2.6.4_contrib_old.gemfile +0 -39
  1085. data/gemfiles/ruby_2.6.4_contrib_old.gemfile.lock +0 -167
  1086. data/gemfiles/ruby_2.6.4_core_old.gemfile +0 -38
  1087. data/gemfiles/ruby_2.6.4_core_old.gemfile.lock +0 -163
  1088. data/gemfiles/ruby_2.6.4_cucumber3.gemfile +0 -39
  1089. data/gemfiles/ruby_2.6.4_cucumber3.gemfile.lock +0 -184
  1090. data/gemfiles/ruby_2.6.4_cucumber4.gemfile +0 -39
  1091. data/gemfiles/ruby_2.6.4_cucumber4.gemfile.lock +0 -216
  1092. data/gemfiles/ruby_2.6.4_cucumber5.gemfile +0 -39
  1093. data/gemfiles/ruby_2.6.4_cucumber5.gemfile.lock +0 -216
  1094. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile +0 -42
  1095. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile.lock +0 -276
  1096. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile +0 -42
  1097. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile.lock +0 -276
  1098. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile +0 -43
  1099. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile.lock +0 -278
  1100. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile +0 -43
  1101. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile.lock +0 -278
  1102. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile +0 -44
  1103. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile.lock +0 -284
  1104. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile +0 -42
  1105. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile.lock +0 -295
  1106. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile +0 -42
  1107. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile.lock +0 -295
  1108. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile +0 -43
  1109. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile.lock +0 -297
  1110. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile +0 -43
  1111. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile.lock +0 -302
  1112. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile +0 -42
  1113. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile.lock +0 -292
  1114. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile +0 -42
  1115. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile.lock +0 -292
  1116. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile +0 -43
  1117. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile.lock +0 -294
  1118. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile +0 -43
  1119. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile.lock +0 -294
  1120. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile +0 -44
  1121. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile.lock +0 -300
  1122. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile +0 -40
  1123. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile.lock +0 -190
  1124. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile +0 -40
  1125. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile.lock +0 -190
  1126. data/gemfiles/ruby_2.7.0_contrib.gemfile +0 -78
  1127. data/gemfiles/ruby_2.7.0_contrib.gemfile.lock +0 -1523
  1128. data/gemfiles/ruby_2.7.0_contrib_old.gemfile +0 -39
  1129. data/gemfiles/ruby_2.7.0_contrib_old.gemfile.lock +0 -167
  1130. data/gemfiles/ruby_2.7.0_core_old.gemfile +0 -38
  1131. data/gemfiles/ruby_2.7.0_core_old.gemfile.lock +0 -163
  1132. data/gemfiles/ruby_2.7.0_cucumber3.gemfile +0 -39
  1133. data/gemfiles/ruby_2.7.0_cucumber3.gemfile.lock +0 -184
  1134. data/gemfiles/ruby_2.7.0_cucumber4.gemfile +0 -39
  1135. data/gemfiles/ruby_2.7.0_cucumber4.gemfile.lock +0 -216
  1136. data/gemfiles/ruby_2.7.0_cucumber5.gemfile +0 -39
  1137. data/gemfiles/ruby_2.7.0_cucumber5.gemfile.lock +0 -216
  1138. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile +0 -42
  1139. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile.lock +0 -276
  1140. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile +0 -42
  1141. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile.lock +0 -276
  1142. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile +0 -44
  1143. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile.lock +0 -295
  1144. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile +0 -44
  1145. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile.lock +0 -295
  1146. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile +0 -44
  1147. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile.lock +0 -284
  1148. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile +0 -42
  1149. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile.lock +0 -295
  1150. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile +0 -42
  1151. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile.lock +0 -295
  1152. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile +0 -43
  1153. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile.lock +0 -297
  1154. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile +0 -43
  1155. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile.lock +0 -302
  1156. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile +0 -42
  1157. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile.lock +0 -292
  1158. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile +0 -42
  1159. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile.lock +0 -292
  1160. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile +0 -44
  1161. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile.lock +0 -311
  1162. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile +0 -44
  1163. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile.lock +0 -311
  1164. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile +0 -44
  1165. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile.lock +0 -300
  1166. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile +0 -40
  1167. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile.lock +0 -190
  1168. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile +0 -40
  1169. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile.lock +0 -190
  1170. data/gemfiles/ruby_3.0.0_contrib.gemfile +0 -77
  1171. data/gemfiles/ruby_3.0.0_contrib.gemfile.lock +0 -1534
  1172. data/gemfiles/ruby_3.0.0_core_old.gemfile +0 -39
  1173. data/gemfiles/ruby_3.0.0_core_old.gemfile.lock +0 -165
  1174. data/gemfiles/ruby_3.0.0_cucumber3.gemfile +0 -40
  1175. data/gemfiles/ruby_3.0.0_cucumber3.gemfile.lock +0 -186
  1176. data/gemfiles/ruby_3.0.0_cucumber4.gemfile +0 -40
  1177. data/gemfiles/ruby_3.0.0_cucumber4.gemfile.lock +0 -218
  1178. data/gemfiles/ruby_3.0.0_cucumber5.gemfile +0 -40
  1179. data/gemfiles/ruby_3.0.0_cucumber5.gemfile.lock +0 -218
  1180. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile +0 -43
  1181. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile.lock +0 -295
  1182. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile +0 -43
  1183. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile.lock +0 -295
  1184. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile +0 -44
  1185. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile.lock +0 -297
  1186. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile +0 -44
  1187. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile.lock +0 -302
  1188. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile +0 -41
  1189. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile.lock +0 -192
  1190. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile +0 -41
  1191. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile.lock +0 -192
  1192. data/integration/README.md +0 -67
  1193. data/integration/apps/rack/.dockerignore +0 -1
  1194. data/integration/apps/rack/.envrc.sample +0 -1
  1195. data/integration/apps/rack/.gitignore +0 -4
  1196. data/integration/apps/rack/.rspec +0 -1
  1197. data/integration/apps/rack/Dockerfile +0 -28
  1198. data/integration/apps/rack/Dockerfile-ci +0 -11
  1199. data/integration/apps/rack/Gemfile +0 -24
  1200. data/integration/apps/rack/README.md +0 -93
  1201. data/integration/apps/rack/app/acme.rb +0 -80
  1202. data/integration/apps/rack/app/datadog.rb +0 -17
  1203. data/integration/apps/rack/bin/run +0 -22
  1204. data/integration/apps/rack/bin/setup +0 -17
  1205. data/integration/apps/rack/bin/test +0 -24
  1206. data/integration/apps/rack/config/puma.rb +0 -14
  1207. data/integration/apps/rack/config/unicorn.rb +0 -23
  1208. data/integration/apps/rack/config.ru +0 -6
  1209. data/integration/apps/rack/docker-compose.ci.yml +0 -62
  1210. data/integration/apps/rack/docker-compose.yml +0 -78
  1211. data/integration/apps/rack/script/build-images +0 -38
  1212. data/integration/apps/rack/script/ci +0 -50
  1213. data/integration/apps/rack/spec/integration/basic_spec.rb +0 -10
  1214. data/integration/apps/rack/spec/spec_helper.rb +0 -16
  1215. data/integration/apps/rack/spec/support/integration_helper.rb +0 -22
  1216. data/integration/apps/rails-five/.dockerignore +0 -1
  1217. data/integration/apps/rails-five/.env +0 -3
  1218. data/integration/apps/rails-five/.envrc.sample +0 -1
  1219. data/integration/apps/rails-five/.gitignore +0 -30
  1220. data/integration/apps/rails-five/Dockerfile +0 -25
  1221. data/integration/apps/rails-five/Dockerfile-ci +0 -11
  1222. data/integration/apps/rails-five/Gemfile +0 -104
  1223. data/integration/apps/rails-five/README.md +0 -94
  1224. data/integration/apps/rails-five/Rakefile +0 -6
  1225. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +0 -4
  1226. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +0 -4
  1227. data/integration/apps/rails-five/app/controllers/application_controller.rb +0 -2
  1228. data/integration/apps/rails-five/app/controllers/basic_controller.rb +0 -36
  1229. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  1230. data/integration/apps/rails-five/app/controllers/health_controller.rb +0 -9
  1231. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +0 -12
  1232. data/integration/apps/rails-five/app/jobs/application_job.rb +0 -2
  1233. data/integration/apps/rails-five/app/jobs/test_job.rb +0 -12
  1234. data/integration/apps/rails-five/app/mailers/application_mailer.rb +0 -4
  1235. data/integration/apps/rails-five/app/models/application_record.rb +0 -3
  1236. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  1237. data/integration/apps/rails-five/app/models/test.rb +0 -2
  1238. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +0 -13
  1239. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +0 -1
  1240. data/integration/apps/rails-five/bin/bundle +0 -3
  1241. data/integration/apps/rails-five/bin/rails +0 -9
  1242. data/integration/apps/rails-five/bin/rake +0 -9
  1243. data/integration/apps/rails-five/bin/run +0 -24
  1244. data/integration/apps/rails-five/bin/setup +0 -27
  1245. data/integration/apps/rails-five/bin/spring +0 -17
  1246. data/integration/apps/rails-five/bin/test +0 -21
  1247. data/integration/apps/rails-five/bin/update +0 -28
  1248. data/integration/apps/rails-five/config/application.rb +0 -97
  1249. data/integration/apps/rails-five/config/boot.rb +0 -4
  1250. data/integration/apps/rails-five/config/cable.yml +0 -10
  1251. data/integration/apps/rails-five/config/credentials.yml.enc +0 -1
  1252. data/integration/apps/rails-five/config/database.yml +0 -28
  1253. data/integration/apps/rails-five/config/environment.rb +0 -5
  1254. data/integration/apps/rails-five/config/environments/development.rb +0 -51
  1255. data/integration/apps/rails-five/config/environments/production.rb +0 -82
  1256. data/integration/apps/rails-five/config/environments/test.rb +0 -43
  1257. data/integration/apps/rails-five/config/initializers/datadog.rb +0 -18
  1258. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +0 -4
  1259. data/integration/apps/rails-five/config/initializers/resque.rb +0 -4
  1260. data/integration/apps/rails-five/config/initializers/rollbar.rb +0 -5
  1261. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +0 -14
  1262. data/integration/apps/rails-five/config/locales/en.yml +0 -33
  1263. data/integration/apps/rails-five/config/puma.rb +0 -24
  1264. data/integration/apps/rails-five/config/routes.rb +0 -11
  1265. data/integration/apps/rails-five/config/spring.rb +0 -6
  1266. data/integration/apps/rails-five/config/unicorn.rb +0 -29
  1267. data/integration/apps/rails-five/config.ru +0 -5
  1268. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +0 -11
  1269. data/integration/apps/rails-five/db/schema.rb +0 -23
  1270. data/integration/apps/rails-five/db/seeds.rb +0 -7
  1271. data/integration/apps/rails-five/docker-compose.ci.yml +0 -98
  1272. data/integration/apps/rails-five/docker-compose.yml +0 -100
  1273. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  1274. data/integration/apps/rails-five/log/.keep +0 -0
  1275. data/integration/apps/rails-five/public/robots.txt +0 -1
  1276. data/integration/apps/rails-five/script/build-images +0 -35
  1277. data/integration/apps/rails-five/script/ci +0 -50
  1278. data/integration/apps/rails-five/spec/integration/basic_spec.rb +0 -10
  1279. data/integration/apps/rails-five/spec/spec_helper.rb +0 -16
  1280. data/integration/apps/rails-five/spec/support/integration_helper.rb +0 -22
  1281. data/integration/apps/rails-five/storage/.keep +0 -0
  1282. data/integration/apps/rails-five/tmp/.keep +0 -0
  1283. data/integration/apps/rails-five/vendor/.keep +0 -0
  1284. data/integration/apps/ruby/.dockerignore +0 -1
  1285. data/integration/apps/ruby/.envrc.sample +0 -1
  1286. data/integration/apps/ruby/.gitignore +0 -2
  1287. data/integration/apps/ruby/Dockerfile +0 -25
  1288. data/integration/apps/ruby/Dockerfile-ci +0 -11
  1289. data/integration/apps/ruby/Gemfile +0 -11
  1290. data/integration/apps/ruby/README.md +0 -70
  1291. data/integration/apps/ruby/agent.yaml +0 -3
  1292. data/integration/apps/ruby/app/datadog.rb +0 -13
  1293. data/integration/apps/ruby/app/fibonacci.rb +0 -58
  1294. data/integration/apps/ruby/bin/run +0 -20
  1295. data/integration/apps/ruby/bin/setup +0 -17
  1296. data/integration/apps/ruby/bin/test +0 -21
  1297. data/integration/apps/ruby/docker-compose.ci.yml +0 -51
  1298. data/integration/apps/ruby/docker-compose.yml +0 -63
  1299. data/integration/apps/ruby/script/build-images +0 -38
  1300. data/integration/apps/ruby/script/ci +0 -50
  1301. data/integration/images/agent/Dockerfile +0 -2
  1302. data/integration/images/agent/agent.yaml +0 -3
  1303. data/integration/images/include/datadog/analyzer.rb +0 -71
  1304. data/integration/images/include/datadog/demo_env.rb +0 -101
  1305. data/integration/images/include/http-health-check +0 -33
  1306. data/integration/images/ruby/2.0/Dockerfile +0 -54
  1307. data/integration/images/ruby/2.1/Dockerfile +0 -54
  1308. data/integration/images/ruby/2.2/Dockerfile +0 -54
  1309. data/integration/images/ruby/2.3/Dockerfile +0 -70
  1310. data/integration/images/ruby/2.4/Dockerfile +0 -54
  1311. data/integration/images/ruby/2.5/Dockerfile +0 -54
  1312. data/integration/images/ruby/2.6/Dockerfile +0 -54
  1313. data/integration/images/ruby/2.7/Dockerfile +0 -54
  1314. data/integration/images/ruby/3.0/Dockerfile +0 -54
  1315. data/integration/images/wrk/Dockerfile +0 -33
  1316. data/integration/images/wrk/scripts/entrypoint.sh +0 -17
  1317. data/integration/images/wrk/scripts/scenarios/basic/default.lua +0 -1
  1318. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +0 -1
  1319. data/integration/script/build-images +0 -43
  1320. data/lib/ddtrace/analytics.rb +0 -38
  1321. data/lib/ddtrace/buffer.rb +0 -326
  1322. data/lib/ddtrace/chunker.rb +0 -34
  1323. data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -241
  1324. data/lib/ddtrace/configuration/base.rb +0 -84
  1325. data/lib/ddtrace/configuration/components.rb +0 -226
  1326. data/lib/ddtrace/configuration/dependency_resolver.rb +0 -24
  1327. data/lib/ddtrace/configuration/option.rb +0 -64
  1328. data/lib/ddtrace/configuration/option_definition.rb +0 -121
  1329. data/lib/ddtrace/configuration/option_definition_set.rb +0 -18
  1330. data/lib/ddtrace/configuration/option_set.rb +0 -6
  1331. data/lib/ddtrace/configuration/options.rb +0 -111
  1332. data/lib/ddtrace/configuration/pin_setup.rb +0 -31
  1333. data/lib/ddtrace/configuration/settings.rb +0 -340
  1334. data/lib/ddtrace/configuration.rb +0 -198
  1335. data/lib/ddtrace/context.rb +0 -322
  1336. data/lib/ddtrace/context_flush.rb +0 -69
  1337. data/lib/ddtrace/context_provider.rb +0 -61
  1338. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -30
  1339. data/lib/ddtrace/contrib/action_cable/event.rb +0 -66
  1340. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -49
  1341. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -55
  1342. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -50
  1343. data/lib/ddtrace/contrib/action_cable/events.rb +0 -33
  1344. data/lib/ddtrace/contrib/action_cable/ext.rb +0 -26
  1345. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -31
  1346. data/lib/ddtrace/contrib/action_cable/integration.rb +0 -45
  1347. data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -27
  1348. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -146
  1349. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -25
  1350. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -32
  1351. data/lib/ddtrace/contrib/action_pack/ext.rb +0 -19
  1352. data/lib/ddtrace/contrib/action_pack/integration.rb +0 -45
  1353. data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -23
  1354. data/lib/ddtrace/contrib/action_pack/utils.rb +0 -36
  1355. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -31
  1356. data/lib/ddtrace/contrib/action_view/event.rb +0 -35
  1357. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -46
  1358. data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -49
  1359. data/lib/ddtrace/contrib/action_view/events.rb +0 -30
  1360. data/lib/ddtrace/contrib/action_view/ext.rb +0 -20
  1361. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -74
  1362. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -167
  1363. data/lib/ddtrace/contrib/action_view/integration.rb +0 -52
  1364. data/lib/ddtrace/contrib/action_view/patcher.rb +0 -47
  1365. data/lib/ddtrace/contrib/action_view/utils.rb +0 -32
  1366. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -30
  1367. data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -68
  1368. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -32
  1369. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -35
  1370. data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -30
  1371. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -20
  1372. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -40
  1373. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -29
  1374. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -30
  1375. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -134
  1376. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -35
  1377. data/lib/ddtrace/contrib/active_record/event.rb +0 -30
  1378. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -60
  1379. data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -68
  1380. data/lib/ddtrace/contrib/active_record/events.rb +0 -30
  1381. data/lib/ddtrace/contrib/active_record/ext.rb +0 -24
  1382. data/lib/ddtrace/contrib/active_record/integration.rb +0 -53
  1383. data/lib/ddtrace/contrib/active_record/patcher.rb +0 -23
  1384. data/lib/ddtrace/contrib/active_record/utils.rb +0 -123
  1385. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -258
  1386. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -69
  1387. data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -47
  1388. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -30
  1389. data/lib/ddtrace/contrib/active_support/ext.rb +0 -27
  1390. data/lib/ddtrace/contrib/active_support/integration.rb +0 -46
  1391. data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -75
  1392. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -67
  1393. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -163
  1394. data/lib/ddtrace/contrib/active_support/patcher.rb +0 -23
  1395. data/lib/ddtrace/contrib/analytics.rb +0 -24
  1396. data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
  1397. data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -30
  1398. data/lib/ddtrace/contrib/aws/ext.rb +0 -23
  1399. data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -61
  1400. data/lib/ddtrace/contrib/aws/integration.rb +0 -42
  1401. data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -56
  1402. data/lib/ddtrace/contrib/aws/patcher.rb +0 -49
  1403. data/lib/ddtrace/contrib/aws/services.rb +0 -118
  1404. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -20
  1405. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -41
  1406. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -12
  1407. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -23
  1408. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -38
  1409. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -28
  1410. data/lib/ddtrace/contrib/configurable.rb +0 -102
  1411. data/lib/ddtrace/contrib/configuration/resolver.rb +0 -81
  1412. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -39
  1413. data/lib/ddtrace/contrib/configuration/settings.rb +0 -55
  1414. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -28
  1415. data/lib/ddtrace/contrib/cucumber/ext.rb +0 -17
  1416. data/lib/ddtrace/contrib/cucumber/formatter.rb +0 -98
  1417. data/lib/ddtrace/contrib/cucumber/instrumentation.rb +0 -24
  1418. data/lib/ddtrace/contrib/cucumber/integration.rb +0 -45
  1419. data/lib/ddtrace/contrib/cucumber/patcher.rb +0 -23
  1420. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -30
  1421. data/lib/ddtrace/contrib/dalli/ext.rb +0 -20
  1422. data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -54
  1423. data/lib/ddtrace/contrib/dalli/integration.rb +0 -38
  1424. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -25
  1425. data/lib/ddtrace/contrib/dalli/quantize.rb +0 -22
  1426. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -32
  1427. data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -23
  1428. data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -38
  1429. data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -28
  1430. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -84
  1431. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -31
  1432. data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -22
  1433. data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -39
  1434. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -122
  1435. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -81
  1436. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -32
  1437. data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -151
  1438. data/lib/ddtrace/contrib/ethon/ext.rb +0 -19
  1439. data/lib/ddtrace/contrib/ethon/integration.rb +0 -43
  1440. data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -84
  1441. data/lib/ddtrace/contrib/ethon/patcher.rb +0 -25
  1442. data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -33
  1443. data/lib/ddtrace/contrib/excon/ext.rb +0 -17
  1444. data/lib/ddtrace/contrib/excon/integration.rb +0 -43
  1445. data/lib/ddtrace/contrib/excon/middleware.rb +0 -163
  1446. data/lib/ddtrace/contrib/excon/patcher.rb +0 -27
  1447. data/lib/ddtrace/contrib/extensions.rb +0 -143
  1448. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -38
  1449. data/lib/ddtrace/contrib/faraday/connection.rb +0 -18
  1450. data/lib/ddtrace/contrib/faraday/ext.rb +0 -17
  1451. data/lib/ddtrace/contrib/faraday/integration.rb +0 -43
  1452. data/lib/ddtrace/contrib/faraday/middleware.rb +0 -85
  1453. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -53
  1454. data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -18
  1455. data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -38
  1456. data/lib/ddtrace/contrib/grape/endpoint.rb +0 -236
  1457. data/lib/ddtrace/contrib/grape/ext.rb +0 -23
  1458. data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -33
  1459. data/lib/ddtrace/contrib/grape/integration.rb +0 -39
  1460. data/lib/ddtrace/contrib/grape/patcher.rb +0 -31
  1461. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -32
  1462. data/lib/ddtrace/contrib/graphql/ext.rb +0 -16
  1463. data/lib/ddtrace/contrib/graphql/integration.rb +0 -39
  1464. data/lib/ddtrace/contrib/graphql/patcher.rb +0 -60
  1465. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -30
  1466. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -58
  1467. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -81
  1468. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -74
  1469. data/lib/ddtrace/contrib/grpc/ext.rb +0 -18
  1470. data/lib/ddtrace/contrib/grpc/integration.rb +0 -38
  1471. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -49
  1472. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -32
  1473. data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -37
  1474. data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -32
  1475. data/lib/ddtrace/contrib/http/ext.rb +0 -17
  1476. data/lib/ddtrace/contrib/http/instrumentation.rb +0 -179
  1477. data/lib/ddtrace/contrib/http/integration.rb +0 -45
  1478. data/lib/ddtrace/contrib/http/patcher.rb +0 -26
  1479. data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -10
  1480. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -32
  1481. data/lib/ddtrace/contrib/httpclient/ext.rb +0 -17
  1482. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -147
  1483. data/lib/ddtrace/contrib/httpclient/integration.rb +0 -43
  1484. data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -38
  1485. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -32
  1486. data/lib/ddtrace/contrib/httprb/ext.rb +0 -17
  1487. data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -157
  1488. data/lib/ddtrace/contrib/httprb/integration.rb +0 -43
  1489. data/lib/ddtrace/contrib/httprb/patcher.rb +0 -38
  1490. data/lib/ddtrace/contrib/integration.rb +0 -16
  1491. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -30
  1492. data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -14
  1493. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -14
  1494. data/lib/ddtrace/contrib/kafka/event.rb +0 -51
  1495. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -34
  1496. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -41
  1497. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -39
  1498. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -39
  1499. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -29
  1500. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -29
  1501. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -29
  1502. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -32
  1503. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -35
  1504. data/lib/ddtrace/contrib/kafka/events.rb +0 -44
  1505. data/lib/ddtrace/contrib/kafka/ext.rb +0 -41
  1506. data/lib/ddtrace/contrib/kafka/integration.rb +0 -39
  1507. data/lib/ddtrace/contrib/kafka/patcher.rb +0 -26
  1508. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -33
  1509. data/lib/ddtrace/contrib/mongodb/ext.rb +0 -23
  1510. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -69
  1511. data/lib/ddtrace/contrib/mongodb/integration.rb +0 -38
  1512. data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -68
  1513. data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -31
  1514. data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -111
  1515. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -30
  1516. data/lib/ddtrace/contrib/mysql2/ext.rb +0 -18
  1517. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -64
  1518. data/lib/ddtrace/contrib/mysql2/integration.rb +0 -38
  1519. data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -27
  1520. data/lib/ddtrace/contrib/patchable.rb +0 -70
  1521. data/lib/ddtrace/contrib/patcher.rb +0 -65
  1522. data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -30
  1523. data/lib/ddtrace/contrib/presto/ext.rb +0 -28
  1524. data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -110
  1525. data/lib/ddtrace/contrib/presto/integration.rb +0 -38
  1526. data/lib/ddtrace/contrib/presto/patcher.rb +0 -33
  1527. data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -35
  1528. data/lib/ddtrace/contrib/qless/ext.rb +0 -20
  1529. data/lib/ddtrace/contrib/qless/integration.rb +0 -38
  1530. data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
  1531. data/lib/ddtrace/contrib/qless/qless_job.rb +0 -73
  1532. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -33
  1533. data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -43
  1534. data/lib/ddtrace/contrib/que/ext.rb +0 -30
  1535. data/lib/ddtrace/contrib/que/integration.rb +0 -42
  1536. data/lib/ddtrace/contrib/que/patcher.rb +0 -24
  1537. data/lib/ddtrace/contrib/que/tracer.rb +0 -57
  1538. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -30
  1539. data/lib/ddtrace/contrib/racecar/event.rb +0 -76
  1540. data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -27
  1541. data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -27
  1542. data/lib/ddtrace/contrib/racecar/events/message.rb +0 -27
  1543. data/lib/ddtrace/contrib/racecar/events.rb +0 -32
  1544. data/lib/ddtrace/contrib/racecar/ext.rb +0 -25
  1545. data/lib/ddtrace/contrib/racecar/integration.rb +0 -39
  1546. data/lib/ddtrace/contrib/racecar/patcher.rb +0 -26
  1547. data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -46
  1548. data/lib/ddtrace/contrib/rack/ext.rb +0 -21
  1549. data/lib/ddtrace/contrib/rack/integration.rb +0 -45
  1550. data/lib/ddtrace/contrib/rack/middlewares.rb +0 -287
  1551. data/lib/ddtrace/contrib/rack/patcher.rb +0 -105
  1552. data/lib/ddtrace/contrib/rack/request_queue.rb +0 -44
  1553. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
  1554. data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -93
  1555. data/lib/ddtrace/contrib/rails/ext.rb +0 -17
  1556. data/lib/ddtrace/contrib/rails/framework.rb +0 -124
  1557. data/lib/ddtrace/contrib/rails/integration.rb +0 -44
  1558. data/lib/ddtrace/contrib/rails/log_injection.rb +0 -81
  1559. data/lib/ddtrace/contrib/rails/middlewares.rb +0 -43
  1560. data/lib/ddtrace/contrib/rails/patcher.rb +0 -107
  1561. data/lib/ddtrace/contrib/rails/railtie.rb +0 -17
  1562. data/lib/ddtrace/contrib/rails/utils.rb +0 -24
  1563. data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -31
  1564. data/lib/ddtrace/contrib/rake/ext.rb +0 -21
  1565. data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -90
  1566. data/lib/ddtrace/contrib/rake/integration.rb +0 -38
  1567. data/lib/ddtrace/contrib/rake/patcher.rb +0 -30
  1568. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -45
  1569. data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -35
  1570. data/lib/ddtrace/contrib/redis/ext.rb +0 -22
  1571. data/lib/ddtrace/contrib/redis/integration.rb +0 -42
  1572. data/lib/ddtrace/contrib/redis/patcher.rb +0 -114
  1573. data/lib/ddtrace/contrib/redis/quantize.rb +0 -75
  1574. data/lib/ddtrace/contrib/redis/tags.rb +0 -46
  1575. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -158
  1576. data/lib/ddtrace/contrib/registerable.rb +0 -33
  1577. data/lib/ddtrace/contrib/registry.rb +0 -42
  1578. data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -48
  1579. data/lib/ddtrace/contrib/resque/ext.rb +0 -17
  1580. data/lib/ddtrace/contrib/resque/integration.rb +0 -47
  1581. data/lib/ddtrace/contrib/resque/patcher.rb +0 -29
  1582. data/lib/ddtrace/contrib/resque/resque_job.rb +0 -103
  1583. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -31
  1584. data/lib/ddtrace/contrib/rest_client/ext.rb +0 -17
  1585. data/lib/ddtrace/contrib/rest_client/integration.rb +0 -38
  1586. data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -23
  1587. data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -91
  1588. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -28
  1589. data/lib/ddtrace/contrib/rspec/example.rb +0 -75
  1590. data/lib/ddtrace/contrib/rspec/ext.rb +0 -16
  1591. data/lib/ddtrace/contrib/rspec/integration.rb +0 -46
  1592. data/lib/ddtrace/contrib/rspec/patcher.rb +0 -23
  1593. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -28
  1594. data/lib/ddtrace/contrib/sequel/database.rb +0 -63
  1595. data/lib/ddtrace/contrib/sequel/dataset.rb +0 -63
  1596. data/lib/ddtrace/contrib/sequel/ext.rb +0 -19
  1597. data/lib/ddtrace/contrib/sequel/integration.rb +0 -38
  1598. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -33
  1599. data/lib/ddtrace/contrib/sequel/utils.rb +0 -74
  1600. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -31
  1601. data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -21
  1602. data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -39
  1603. data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -24
  1604. data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -55
  1605. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -43
  1606. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -37
  1607. data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -27
  1608. data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -38
  1609. data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -41
  1610. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -65
  1611. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -44
  1612. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -39
  1613. data/lib/ddtrace/contrib/sinatra/env.rb +0 -57
  1614. data/lib/ddtrace/contrib/sinatra/ext.rb +0 -27
  1615. data/lib/ddtrace/contrib/sinatra/headers.rb +0 -29
  1616. data/lib/ddtrace/contrib/sinatra/integration.rb +0 -38
  1617. data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -28
  1618. data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -127
  1619. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -105
  1620. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -33
  1621. data/lib/ddtrace/contrib/sneakers/ext.rb +0 -22
  1622. data/lib/ddtrace/contrib/sneakers/integration.rb +0 -41
  1623. data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -24
  1624. data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -53
  1625. data/lib/ddtrace/contrib/status_code_matcher.rb +0 -69
  1626. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -30
  1627. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -26
  1628. data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -21
  1629. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -88
  1630. data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -38
  1631. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -42
  1632. data/lib/ddtrace/correlation.rb +0 -39
  1633. data/lib/ddtrace/diagnostics/environment_logger.rb +0 -279
  1634. data/lib/ddtrace/diagnostics/health.rb +0 -33
  1635. data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -44
  1636. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -56
  1637. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -42
  1638. data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -71
  1639. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -43
  1640. data/lib/ddtrace/encoding.rb +0 -69
  1641. data/lib/ddtrace/environment.rb +0 -41
  1642. data/lib/ddtrace/error.rb +0 -105
  1643. data/lib/ddtrace/event.rb +0 -52
  1644. data/lib/ddtrace/ext/analytics.rb +0 -12
  1645. data/lib/ddtrace/ext/app_types.rb +0 -12
  1646. data/lib/ddtrace/ext/ci.rb +0 -297
  1647. data/lib/ddtrace/ext/correlation.rb +0 -11
  1648. data/lib/ddtrace/ext/diagnostics.rb +0 -36
  1649. data/lib/ddtrace/ext/distributed.rb +0 -39
  1650. data/lib/ddtrace/ext/environment.rb +0 -16
  1651. data/lib/ddtrace/ext/errors.rb +0 -10
  1652. data/lib/ddtrace/ext/forced_tracing.rb +0 -25
  1653. data/lib/ddtrace/ext/git.rb +0 -11
  1654. data/lib/ddtrace/ext/http.rb +0 -46
  1655. data/lib/ddtrace/ext/integration.rb +0 -8
  1656. data/lib/ddtrace/ext/manual_tracing.rb +0 -9
  1657. data/lib/ddtrace/ext/metrics.rb +0 -15
  1658. data/lib/ddtrace/ext/net.rb +0 -10
  1659. data/lib/ddtrace/ext/priority.rb +0 -16
  1660. data/lib/ddtrace/ext/profiling.rb +0 -53
  1661. data/lib/ddtrace/ext/runtime.rb +0 -30
  1662. data/lib/ddtrace/ext/sampling.rb +0 -16
  1663. data/lib/ddtrace/ext/sql.rb +0 -8
  1664. data/lib/ddtrace/ext/test.rb +0 -24
  1665. data/lib/ddtrace/ext/transport.rb +0 -20
  1666. data/lib/ddtrace/forced_tracing.rb +0 -38
  1667. data/lib/ddtrace/logger.rb +0 -40
  1668. data/lib/ddtrace/metrics.rb +0 -230
  1669. data/lib/ddtrace/opentelemetry/extensions.rb +0 -13
  1670. data/lib/ddtrace/opentelemetry/span.rb +0 -33
  1671. data/lib/ddtrace/opentracer/binary_propagator.rb +0 -24
  1672. data/lib/ddtrace/opentracer/carrier.rb +0 -6
  1673. data/lib/ddtrace/opentracer/distributed_headers.rb +0 -55
  1674. data/lib/ddtrace/opentracer/global_tracer.rb +0 -15
  1675. data/lib/ddtrace/opentracer/propagator.rb +0 -22
  1676. data/lib/ddtrace/opentracer/rack_propagator.rb +0 -60
  1677. data/lib/ddtrace/opentracer/scope.rb +0 -15
  1678. data/lib/ddtrace/opentracer/scope_manager.rb +0 -6
  1679. data/lib/ddtrace/opentracer/span.rb +0 -94
  1680. data/lib/ddtrace/opentracer/span_context.rb +0 -14
  1681. data/lib/ddtrace/opentracer/span_context_factory.rb +0 -23
  1682. data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -75
  1683. data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -31
  1684. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -40
  1685. data/lib/ddtrace/opentracer/tracer.rb +0 -208
  1686. data/lib/ddtrace/opentracer.rb +0 -40
  1687. data/lib/ddtrace/patcher.rb +0 -68
  1688. data/lib/ddtrace/pin.rb +0 -85
  1689. data/lib/ddtrace/pipeline/span_filter.rb +0 -38
  1690. data/lib/ddtrace/pipeline/span_processor.rb +0 -20
  1691. data/lib/ddtrace/pipeline.rb +0 -46
  1692. data/lib/ddtrace/profiling/backtrace_location.rb +0 -32
  1693. data/lib/ddtrace/profiling/buffer.rb +0 -41
  1694. data/lib/ddtrace/profiling/collectors/stack.rb +0 -259
  1695. data/lib/ddtrace/profiling/encoding/profile.rb +0 -31
  1696. data/lib/ddtrace/profiling/event.rb +0 -13
  1697. data/lib/ddtrace/profiling/events/stack.rb +0 -102
  1698. data/lib/ddtrace/profiling/exporter.rb +0 -23
  1699. data/lib/ddtrace/profiling/ext/cpu.rb +0 -52
  1700. data/lib/ddtrace/profiling/ext/cthread.rb +0 -157
  1701. data/lib/ddtrace/profiling/ext/forking.rb +0 -97
  1702. data/lib/ddtrace/profiling/flush.rb +0 -41
  1703. data/lib/ddtrace/profiling/pprof/builder.rb +0 -121
  1704. data/lib/ddtrace/profiling/pprof/converter.rb +0 -85
  1705. data/lib/ddtrace/profiling/pprof/message_set.rb +0 -12
  1706. data/lib/ddtrace/profiling/pprof/payload.rb +0 -18
  1707. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -81
  1708. data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -90
  1709. data/lib/ddtrace/profiling/pprof/string_table.rb +0 -10
  1710. data/lib/ddtrace/profiling/pprof/template.rb +0 -114
  1711. data/lib/ddtrace/profiling/profiler.rb +0 -30
  1712. data/lib/ddtrace/profiling/recorder.rb +0 -95
  1713. data/lib/ddtrace/profiling/scheduler.rb +0 -105
  1714. data/lib/ddtrace/profiling/tasks/setup.rb +0 -77
  1715. data/lib/ddtrace/profiling/transport/client.rb +0 -12
  1716. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -91
  1717. data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -36
  1718. data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -40
  1719. data/lib/ddtrace/profiling/transport/http/api.rb +0 -43
  1720. data/lib/ddtrace/profiling/transport/http/builder.rb +0 -28
  1721. data/lib/ddtrace/profiling/transport/http/client.rb +0 -33
  1722. data/lib/ddtrace/profiling/transport/http/response.rb +0 -21
  1723. data/lib/ddtrace/profiling/transport/http.rb +0 -118
  1724. data/lib/ddtrace/profiling/transport/io/client.rb +0 -27
  1725. data/lib/ddtrace/profiling/transport/io/response.rb +0 -16
  1726. data/lib/ddtrace/profiling/transport/io.rb +0 -30
  1727. data/lib/ddtrace/profiling/transport/parcel.rb +0 -17
  1728. data/lib/ddtrace/profiling/transport/request.rb +0 -15
  1729. data/lib/ddtrace/profiling/transport/response.rb +0 -8
  1730. data/lib/ddtrace/profiling.rb +0 -105
  1731. data/lib/ddtrace/propagation/grpc_propagator.rb +0 -74
  1732. data/lib/ddtrace/propagation/http_propagator.rb +0 -90
  1733. data/lib/ddtrace/quantization/hash.rb +0 -103
  1734. data/lib/ddtrace/quantization/http.rb +0 -87
  1735. data/lib/ddtrace/runtime/cgroup.rb +0 -44
  1736. data/lib/ddtrace/runtime/class_count.rb +0 -17
  1737. data/lib/ddtrace/runtime/container.rb +0 -87
  1738. data/lib/ddtrace/runtime/gc.rb +0 -16
  1739. data/lib/ddtrace/runtime/identity.rb +0 -48
  1740. data/lib/ddtrace/runtime/metrics.rb +0 -114
  1741. data/lib/ddtrace/runtime/object_space.rb +0 -19
  1742. data/lib/ddtrace/runtime/socket.rb +0 -14
  1743. data/lib/ddtrace/runtime/thread_count.rb +0 -16
  1744. data/lib/ddtrace/sampler.rb +0 -292
  1745. data/lib/ddtrace/sampling/matcher.rb +0 -57
  1746. data/lib/ddtrace/sampling/rate_limiter.rb +0 -176
  1747. data/lib/ddtrace/sampling/rule.rb +0 -61
  1748. data/lib/ddtrace/sampling/rule_sampler.rb +0 -120
  1749. data/lib/ddtrace/sampling.rb +0 -2
  1750. data/lib/ddtrace/span.rb +0 -432
  1751. data/lib/ddtrace/sync_writer.rb +0 -67
  1752. data/lib/ddtrace/tasks/exec.rb +0 -48
  1753. data/lib/ddtrace/tasks/help.rb +0 -14
  1754. data/lib/ddtrace/tracer.rb +0 -453
  1755. data/lib/ddtrace/utils/compression.rb +0 -27
  1756. data/lib/ddtrace/utils/database.rb +0 -25
  1757. data/lib/ddtrace/utils/forking.rb +0 -52
  1758. data/lib/ddtrace/utils/object_set.rb +0 -41
  1759. data/lib/ddtrace/utils/only_once.rb +0 -40
  1760. data/lib/ddtrace/utils/sequence.rb +0 -17
  1761. data/lib/ddtrace/utils/string_table.rb +0 -45
  1762. data/lib/ddtrace/utils/time.rb +0 -45
  1763. data/lib/ddtrace/utils.rb +0 -68
  1764. data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -301
  1765. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -116
  1766. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -57
  1767. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -135
  1768. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -9
  1769. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -8
  1770. data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -12
  1771. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -32
  1772. data/lib/ddtrace/worker.rb +0 -20
  1773. data/lib/ddtrace/workers/async.rb +0 -173
  1774. data/lib/ddtrace/workers/loop.rb +0 -131
  1775. data/lib/ddtrace/workers/polling.rb +0 -49
  1776. data/lib/ddtrace/workers/queue.rb +0 -40
  1777. data/lib/ddtrace/workers/runtime_metrics.rb +0 -64
  1778. data/lib/ddtrace/workers/trace_writer.rb +0 -199
  1779. data/lib/ddtrace/workers.rb +0 -122
  1780. data/lib/ddtrace/writer.rb +0 -199
  1781. data/tasks/release_gem.rake +0 -28
  1782. /data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
  1783. /data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
  1784. /data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
  1785. /data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
@@ -1,2482 +0,0 @@
1
- # Datadog Ruby Trace Client
2
-
3
- `ddtrace` is Datadog’s tracing client for Ruby. It is used to trace requests as they flow across web servers,
4
- databases and microservices so that developers have high visibility into bottlenecks and troublesome requests.
5
-
6
- ## Getting started
7
-
8
- For the general APM documentation, see our [setup documentation][setup docs].
9
-
10
- For more information about what APM looks like once your application is sending information to Datadog, take a look at [Visualizing your APM data][visualization docs].
11
-
12
- To contribute, check out the [contribution guidelines][contribution docs] and [development guide][development docs].
13
-
14
- [setup docs]: https://docs.datadoghq.com/tracing/
15
- [development docs]: https://github.com/DataDog/dd-trace-rb/blob/master/README.md#development
16
- [visualization docs]: https://docs.datadoghq.com/tracing/visualization/
17
- [contribution docs]: https://github.com/DataDog/dd-trace-rb/blob/master/CONTRIBUTING.md
18
- [development docs]: https://github.com/DataDog/dd-trace-rb/blob/master/docs/DevelopmentGuide.md
19
-
20
- ## Table of Contents
21
-
22
- - [Compatibility](#compatibility)
23
- - [Installation](#installation)
24
- - [Quickstart for Rails applications](#quickstart-for-rails-applications)
25
- - [Quickstart for Ruby applications](#quickstart-for-ruby-applications)
26
- - [Quickstart for OpenTracing](#quickstart-for-opentracing)
27
- - [Manual instrumentation](#manual-instrumentation)
28
- - [Integration instrumentation](#integration-instrumentation)
29
- - [Action Cable](#action-cable)
30
- - [Action View](#action-view)
31
- - [Active Model Serializers](#active-model-serializers)
32
- - [Action Pack](#action-pack)
33
- - [Active Record](#active-record)
34
- - [Active Support](#active-support)
35
- - [AWS](#aws)
36
- - [Concurrent Ruby](#concurrent-ruby)
37
- - [Cucumber](#cucumber)
38
- - [Dalli](#dalli)
39
- - [DelayedJob](#delayedjob)
40
- - [Elasticsearch](#elasticsearch)
41
- - [Ethon & Typhoeus](#ethon)
42
- - [Excon](#excon)
43
- - [Faraday](#faraday)
44
- - [Grape](#grape)
45
- - [GraphQL](#graphql)
46
- - [gRPC](#grpc)
47
- - [http.rb](#http-rb)
48
- - [httpclient](#httpclient)
49
- - [httpx](#httpx)
50
- - [MongoDB](#mongodb)
51
- - [MySQL2](#mysql2)
52
- - [Net/HTTP](#net-http)
53
- - [Presto](#presto)
54
- - [Qless](#qless)
55
- - [Que](#que)
56
- - [Racecar](#racecar)
57
- - [Rack](#rack)
58
- - [Rails](#rails)
59
- - [Rake](#rake)
60
- - [Redis](#redis)
61
- - [Rest Client](#rest-client)
62
- - [Resque](#resque)
63
- - [RSpec](#rspec)
64
- - [Shoryuken](#shoryuken)
65
- - [Sequel](#sequel)
66
- - [Sidekiq](#sidekiq)
67
- - [Sinatra](#sinatra)
68
- - [Sneakers](#sneakers)
69
- - [Sucker Punch](#sucker-punch)
70
- - [Advanced configuration](#advanced-configuration)
71
- - [Tracer settings](#tracer-settings)
72
- - [Custom logging](#custom-logging)
73
- - [Environment and tags](#environment-and-tags)
74
- - [Environment variables](#environment-variables)
75
- - [Sampling](#sampling)
76
- - [Application-side sampling](#application-side-sampling)
77
- - [Priority sampling](#priority-sampling)
78
- - [Distributed tracing](#distributed-tracing)
79
- - [HTTP request queuing](#http-request-queuing)
80
- - [Processing pipeline](#processing-pipeline)
81
- - [Filtering](#filtering)
82
- - [Processing](#processing)
83
- - [Trace correlation](#trace-correlation)
84
- - [Configuring the transport layer](#configuring-the-transport-layer)
85
- - [Metrics](#metrics)
86
- - [For application runtime](#for-application-runtime)
87
- - [OpenTracing](#opentracing)
88
-
89
- ## Compatibility
90
-
91
- **Supported Ruby interpreters**:
92
-
93
- | Type | Documentation | Version | Support type | Gem version support |
94
- | ----- | -------------------------- | ----- | ------------------------------------ | ------------------- |
95
- | MRI | https://www.ruby-lang.org/ | 3.0 | Full | Latest |
96
- | | | 2.7 | Full | Latest |
97
- | | | 2.6 | Full | Latest |
98
- | | | 2.5 | Full | Latest |
99
- | | | 2.4 | Full | Latest |
100
- | | | 2.3 | Full | Latest |
101
- | | | 2.2 | Full | Latest |
102
- | | | 2.1 | Full | Latest |
103
- | | | 2.0 | Deprecated | < 0.50.0 |
104
- | | | 1.9.3 | EOL since August 6th, 2020 | < 0.27.0 |
105
- | | | 1.9.1 | EOL since August 6th, 2020 | < 0.27.0 |
106
- | JRuby | https://www.jruby.org | 9.2 | Full | Latest |
107
-
108
- **Supported web servers**:
109
-
110
- | Type | Documentation | Version | Support type |
111
- | --------- | --------------------------------- | ------------ | ------------ |
112
- | Puma | http://puma.io/ | 2.16+ / 3.6+ | Full |
113
- | Unicorn | https://bogomips.org/unicorn/ | 4.8+ / 5.1+ | Full |
114
- | Passenger | https://www.phusionpassenger.com/ | 5.0+ | Full |
115
-
116
- **Supported tracing frameworks**:
117
-
118
- | Type | Documentation | Version | Gem version support |
119
- | ----------- | ----------------------------------------------- | --------------------- | ------------------- |
120
- | OpenTracing | https://github.com/opentracing/opentracing-ruby | 0.4.1+ (w/ Ruby 2.1+) | >= 0.16.0 |
121
-
122
- *Full* support indicates all tracer features are available.
123
-
124
- *Deprecated* indicates support will transition to *Maintenance* in a future release.
125
-
126
- *Maintenance* indicates only critical bugfixes are backported until EOL.
127
-
128
- *EOL* indicates support is no longer provided.
129
-
130
- ## Installation
131
-
132
- The following steps will help you quickly start tracing your Ruby application.
133
-
134
- ### Configure the Datadog Agent for APM
135
-
136
- Before downloading tracing on your application, install the Datadog Agent. The Ruby APM tracer sends trace data through the Datadog Agent.
137
-
138
- Install and configure the Datadog Agent to receive traces from your now instrumented application. By default the Datadog Agent is enabled in your `datadog.yaml` file under `apm_enabled: true` and listens for trace traffic at `localhost:8126`. For containerized environments, follow the steps below to enable trace collection within the Datadog Agent.
139
-
140
- #### Containers
141
-
142
- 1. Set `apm_non_local_traffic: true` in your main [`datadog.yaml` configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/#agent-main-configuration-file).
143
-
144
- 2. See the specific setup instructions for [Docker](https://docs.datadoghq.com/agent/docker/apm/?tab=ruby), [Kubernetes](https://docs.datadoghq.com/agent/kubernetes/apm/?tab=helm), [Amazon ECS](https://docs.datadoghq.com/agent/amazon_ecs/apm/?tab=ruby) or [Fargate](https://docs.datadoghq.com/integrations/ecs_fargate/#trace-collection) to ensure that the Agent is configured to receive traces in a containerized environment:
145
-
146
- 3. After having instrumented your application, the tracing client sends traces to `localhost:8126` by default. If this is not the correct host and port change it by setting the env variables `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT`.
147
-
148
-
149
- ### Quickstart for Rails applications
150
-
151
- #### Automatic instrumentation
152
-
153
- 1. Add the `ddtrace` gem to your Gemfile:
154
-
155
- ```ruby
156
- source 'https://rubygems.org'
157
- gem 'ddtrace', require: 'ddtrace/auto_instrument'
158
- ```
159
-
160
- 2. Install the gem with `bundle install`
161
-
162
- 3. You can configure, override, or disable any specific integration settings by also adding a [Rails Manual Configuration](#rails-manual-configuration) file.
163
-
164
- #### Manual instrumentation
165
-
166
- 1. Add the `ddtrace` gem to your Gemfile:
167
-
168
- ```ruby
169
- source 'https://rubygems.org'
170
- gem 'ddtrace'
171
- ```
172
-
173
- 2. Install the gem with `bundle install`
174
- 3. Create a `config/initializers/datadog.rb` file containing:
175
-
176
- ```ruby
177
- Datadog.configure do |c|
178
- # This will activate auto-instrumentation for Rails
179
- c.use :rails
180
- end
181
- ```
182
-
183
- You can also activate additional integrations here (see [Integration instrumentation](#integration-instrumentation))
184
-
185
- ### Quickstart for Ruby applications
186
-
187
- #### Automatic instrumentation
188
-
189
- 1. Install the gem with `gem install ddtrace`
190
- 2. Requiring any [supported libraries or frameworks](#integration-instrumentation) that should be instrumented.
191
- 3. Add `require 'ddtrace/auto_instrument'` to your application. _Note:_ This must be done _after_ requiring any supported libraries or frameworks.
192
-
193
- ```ruby
194
- # Example frameworks and libraries
195
- require 'sinatra'
196
- require 'faraday'
197
- require 'redis'
198
-
199
- require 'ddtrace/auto_instrument'
200
- ```
201
-
202
- You can configure, override, or disable any specific integration settings by also adding a [Ruby Manual Configuration Block](#ruby-manual-configuration).
203
-
204
- #### Manual instrumentation
205
-
206
- 1. Install the gem with `gem install ddtrace`
207
- 2. Add a configuration block to your Ruby application:
208
-
209
- ```ruby
210
- require 'ddtrace'
211
- Datadog.configure do |c|
212
- # Configure the tracer here.
213
- # Activate integrations, change tracer settings, etc...
214
- # By default without additional configuration, nothing will be traced.
215
- end
216
- ```
217
-
218
- 3. Add or activate instrumentation by doing either of the following:
219
- - Activate integration instrumentation (see [Integration instrumentation](#integration-instrumentation))
220
- - Add manual instrumentation around your code (see [Manual instrumentation](#manual-instrumentation))
221
-
222
- ### Quickstart for OpenTracing
223
-
224
- 1. Install the gem with `gem install ddtrace`
225
- 2. To your OpenTracing configuration file, add the following:
226
-
227
- ```ruby
228
- require 'opentracing'
229
- require 'ddtrace'
230
- require 'ddtrace/opentracer'
231
-
232
- # Activate the Datadog tracer for OpenTracing
233
- OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new
234
- ```
235
-
236
- 3. (Optional) Add a configuration block to your Ruby application to configure Datadog with:
237
-
238
- ```ruby
239
- Datadog.configure do |c|
240
- # Configure the Datadog tracer here.
241
- # Activate integrations, change tracer settings, etc...
242
- # By default without additional configuration,
243
- # no additional integrations will be traced, only
244
- # what you have instrumented with OpenTracing.
245
- end
246
- ```
247
-
248
- 4. (Optional) Add or activate additional instrumentation by doing either of the following:
249
- - Activate Datadog integration instrumentation (see [Integration instrumentation](#integration-instrumentation))
250
- - Add Datadog manual instrumentation around your code (see [Manual instrumentation](#manual-instrumentation))
251
-
252
- ### Final steps for installation
253
-
254
- After setting up, your services will appear on the [APM services page](https://app.datadoghq.com/apm/services) within a few minutes. Learn more about [using the APM UI][visualization docs].
255
-
256
- ## Manual Instrumentation
257
-
258
- If you aren't using a supported framework instrumentation, you may want to manually instrument your code.
259
-
260
- To trace any Ruby code, you can use the `Datadog.tracer.trace` method:
261
-
262
- ```ruby
263
- Datadog.tracer.trace(name, options) do |span|
264
- # Wrap this block around the code you want to instrument
265
- # Additionally, you can modify the span here.
266
- # e.g. Change the resource name, set tags, etc...
267
- end
268
- ```
269
-
270
- Where `name` should be a `String` that describes the generic kind of operation being done (e.g. `'web.request'`, or `'request.parse'`)
271
-
272
- And `options` is an optional `Hash` that accepts the following parameters:
273
-
274
- | Key | Type | Description | Default |
275
- | --- | --- | --- | --- |
276
- | `service` | `String` | The service name which this span belongs (e.g. `'my-web-service'`) | Tracer `default-service`, `$PROGRAM_NAME` or `'ruby'` |
277
- | `resource` | `String` | Name of the resource or action being operated on. Traces with the same resource value will be grouped together for the purpose of metrics (but still independently viewable.) Usually domain specific, such as a URL, query, request, etc. (e.g. `'Article#submit'`, `http://example.com/articles/list`.) | `name` of Span. |
278
- | `span_type` | `String` | The type of the span (such as `'http'`, `'db'`, etc.) | `nil` |
279
- | `child_of` | `Datadog::Span` / `Datadog::Context` | Parent for this span. If not provided, will automatically become current active span. | `nil` |
280
- | `start_time` | `Time` | When the span actually starts. Useful when tracing events that have already happened. | `Time.now` |
281
- | `tags` | `Hash` | Extra tags which should be added to the span. | `{}` |
282
- | `on_error` | `Proc` | Handler invoked when a block is provided to trace, and it raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
283
-
284
- It's highly recommended you set both `service` and `resource` at a minimum. Spans without a `service` or `resource` as `nil` will be discarded by the Datadog agent.
285
-
286
- Example of manual instrumentation in action:
287
-
288
- ```ruby
289
- get '/posts' do
290
- Datadog.tracer.trace('web.request', service: 'my-blog', resource: 'GET /posts') do |span|
291
- # Trace the activerecord call
292
- Datadog.tracer.trace('posts.fetch') do
293
- @posts = Posts.order(created_at: :desc).limit(10)
294
- end
295
-
296
- # Add some APM tags
297
- span.set_tag('http.method', request.request_method)
298
- span.set_tag('posts.count', @posts.length)
299
-
300
- # Trace the template rendering
301
- Datadog.tracer.trace('template.render') do
302
- erb :index
303
- end
304
- end
305
- end
306
- ```
307
-
308
- ### Asynchronous tracing
309
-
310
- It might not always be possible to wrap `Datadog.tracer.trace` around a block of code. Some event or notification based instrumentation might only notify you when an event begins or ends.
311
-
312
- To trace these operations, you can trace code asynchronously by calling `Datadog.tracer.trace` without a block:
313
-
314
- ```ruby
315
- # Some instrumentation framework calls this after an event finishes...
316
- def db_query(start, finish, query)
317
- span = Datadog.tracer.trace('database.query')
318
- span.resource = query
319
- span.start_time = start
320
- span.finish(finish)
321
- end
322
- ```
323
-
324
- Calling `Datadog.tracer.trace` without a block will cause the function to return a `Datadog::Span` that is started, but not finished. You can then modify this span however you wish, then close it `finish`.
325
-
326
- *You must not leave any unfinished spans.* If any spans are left open when the trace completes, the trace will be discarded. You can [activate debug mode](#tracer-settings) to check for warnings if you suspect this might be happening.
327
-
328
- To avoid this scenario when handling start/finish events, you can use `Datadog.tracer.active_span` to get the current active span.
329
-
330
- ```ruby
331
- # e.g. ActiveSupport::Notifications calls this when an event starts
332
- def start(name, id, payload)
333
- # Start a span
334
- Datadog.tracer.trace(name)
335
- end
336
-
337
- # e.g. ActiveSupport::Notifications calls this when an event finishes
338
- def finish(name, id, payload)
339
- # Retrieve current active span (thread-safe)
340
- current_span = Datadog.tracer.active_span
341
- unless current_span.nil?
342
- current_span.resource = payload[:query]
343
- current_span.finish
344
- end
345
- end
346
- ```
347
- ### Enriching traces from nested methods
348
-
349
- You can tag additional information to the current active span from any method. Note however that if the method is called and there is no span currently active `active_span` will be nil.
350
-
351
- ```ruby
352
- # e.g. adding tag to active span
353
-
354
- current_span = Datadog.tracer.active_span
355
- current_span.set_tag('my_tag', 'my_value') unless current_span.nil?
356
- ```
357
-
358
- You can also get the root span of the current active trace using the `active_root_span` method. This method will return `nil` if there is no active trace.
359
-
360
- ```ruby
361
- # e.g. adding tag to active root span
362
-
363
- current_root_span = Datadog.tracer.active_root_span
364
- current_root_span.set_tag('my_tag', 'my_value') unless current_root_span.nil?
365
- ```
366
-
367
- ## Integration instrumentation
368
-
369
- Many popular libraries and frameworks are supported out-of-the-box, which can be auto-instrumented. Although they are not activated automatically, they can be easily activated and configured by using the `Datadog.configure` API:
370
-
371
- ```ruby
372
- Datadog.configure do |c|
373
- # Activates and configures an integration
374
- c.use :integration_name, options
375
- end
376
- ```
377
-
378
- `options` is a `Hash` of integration-specific configuration settings.
379
-
380
- For a list of available integrations, and their configuration options, please refer to the following:
381
-
382
- | Name | Key | Versions Supported: MRI | Versions Supported: JRuby | How to configure | Gem source |
383
- | ------------------------ | -------------------------- | ------------------------ | --------------------------| ----------------------------------- | ------------------------------------------------------------------------------ |
384
- | Action Cable | `action_cable` | `>= 5.0` | `>= 5.0` | *[Link](#action-cable)* | *[Link](https://github.com/rails/rails/tree/master/actioncable)* |
385
- | Action View | `action_view` | `>= 3.0` | `>= 3.0` | *[Link](#action-view)* | *[Link](https://github.com/rails/rails/tree/master/actionview)* |
386
- | Active Model Serializers | `active_model_serializers` | `>= 0.9` | `>= 0.9` | *[Link](#active-model-serializers)* | *[Link](https://github.com/rails-api/active_model_serializers)* |
387
- | Action Pack | `action_pack` | `>= 3.0` | `>= 3.0` | *[Link](#action-pack)* | *[Link](https://github.com/rails/rails/tree/master/actionpack)* |
388
- | Active Record | `active_record` | `>= 3.0` | `>= 3.0` | *[Link](#active-record)* | *[Link](https://github.com/rails/rails/tree/master/activerecord)* |
389
- | Active Support | `active_support` | `>= 3.0` | `>= 3.0` | *[Link](#active-support)* | *[Link](https://github.com/rails/rails/tree/master/activesupport)* |
390
- | AWS | `aws` | `>= 2.0` | `>= 2.0` | *[Link](#aws)* | *[Link](https://github.com/aws/aws-sdk-ruby)* |
391
- | Concurrent Ruby | `concurrent_ruby` | `>= 0.9` | `>= 0.9` | *[Link](#concurrent-ruby)* | *[Link](https://github.com/ruby-concurrency/concurrent-ruby)* |
392
- | Cucumber | `cucumber` | `>= 3.0` | `>= 1.7.16` | *[Link](#cucumber)* | *[Link](https://github.com/cucumber/cucumber-ruby)* |
393
- | Dalli | `dalli` | `>= 2.0` | `>= 2.0` | *[Link](#dalli)* | *[Link](https://github.com/petergoldstein/dalli)* |
394
- | DelayedJob | `delayed_job` | `>= 4.1` | `>= 4.1` | *[Link](#delayedjob)* | *[Link](https://github.com/collectiveidea/delayed_job)* |
395
- | Elasticsearch | `elasticsearch` | `>= 1.0` | `>= 1.0` | *[Link](#elasticsearch)* | *[Link](https://github.com/elastic/elasticsearch-ruby)* |
396
- | Ethon | `ethon` | `>= 0.11` | `>= 0.11` | *[Link](#ethon)* | *[Link](https://github.com/typhoeus/ethon)* |
397
- | Excon | `excon` | `>= 0.50` | `>= 0.50` | *[Link](#excon)* | *[Link](https://github.com/excon/excon)* |
398
- | Faraday | `faraday` | `>= 0.14` | `>= 0.14` | *[Link](#faraday)* | *[Link](https://github.com/lostisland/faraday)* |
399
- | Grape | `grape` | `>= 1.0` | `>= 1.0` | *[Link](#grape)* | *[Link](https://github.com/ruby-grape/grape)* |
400
- | GraphQL | `graphql` | `>= 1.7.9` | `>= 1.7.9` | *[Link](#graphql)* | *[Link](https://github.com/rmosolgo/graphql-ruby)* |
401
- | gRPC | `grpc` | `>= 1.7` | *gem not available* | *[Link](#grpc)* | *[Link](https://github.com/grpc/grpc/tree/master/src/rubyc)* |
402
- | http.rb | `httprb` | `>= 2.0` | `>= 2.0` | *[Link](#http-rb)* | *[Link](https://github.com/httprb/http)* |
403
- | httpclient | `httpclient` | `>= 2.2` | `>= 2.2` | *[Link](#httpclient)* | *[Link](https://github.com/nahi/httpclient)* |
404
- | httpx | `httpx` | `>= 0.11` | `>= 0.11` | *[Link](#httpx)* | *[Link](https://gitlab.com/honeyryderchuck/httpx)* |
405
- | Kafka | `ruby-kafka` | `>= 0.7.10` | `>= 0.7.10` | *[Link](#kafka)* | *[Link](https://github.com/zendesk/ruby-kafka)* |
406
- | Makara (through Active Record) | `makara` | `>= 0.3.5` | `>= 0.3.5` | *[Link](#active-record)* | *[Link](https://github.com/instacart/makara)* |
407
- | MongoDB | `mongo` | `>= 2.1` | `>= 2.1` | *[Link](#mongodb)* | *[Link](https://github.com/mongodb/mongo-ruby-driver)* |
408
- | MySQL2 | `mysql2` | `>= 0.3.21` | *gem not available* | *[Link](#mysql2)* | *[Link](https://github.com/brianmario/mysql2)* |
409
- | Net/HTTP | `http` | *(Any supported Ruby)* | *(Any supported Ruby)* | *[Link](#nethttp)* | *[Link](https://ruby-doc.org/stdlib-2.4.0/libdoc/net/http/rdoc/Net/HTTP.html)* |
410
- | Presto | `presto` | `>= 0.5.14` | `>= 0.5.14` | *[Link](#presto)* | *[Link](https://github.com/treasure-data/presto-client-ruby)* |
411
- | Qless | `qless` | `>= 0.10.0` | `>= 0.10.0` | *[Link](#qless)* | *[Link](https://github.com/seomoz/qless)* |
412
- | Que | `que` | `>= 1.0.0.beta2` | `>= 1.0.0.beta2` | *[Link](#que)* | *[Link](https://github.com/que-rb/que)* |
413
- | Racecar | `racecar` | `>= 0.3.5` | `>= 0.3.5` | *[Link](#racecar)* | *[Link](https://github.com/zendesk/racecar)* |
414
- | Rack | `rack` | `>= 1.1` | `>= 1.1` | *[Link](#rack)* | *[Link](https://github.com/rack/rack)* |
415
- | Rails | `rails` | `>= 3.0` | `>= 3.0` | *[Link](#rails)* | *[Link](https://github.com/rails/rails)* |
416
- | Rake | `rake` | `>= 12.0` | `>= 12.0` | *[Link](#rake)* | *[Link](https://github.com/ruby/rake)* |
417
- | Redis | `redis` | `>= 3.2` | `>= 3.2` | *[Link](#redis)* | *[Link](https://github.com/redis/redis-rb)* |
418
- | Resque | `resque` | `>= 1.0` | `>= 1.0` | *[Link](#resque)* | *[Link](https://github.com/resque/resque)* |
419
- | Rest Client | `rest-client` | `>= 1.8` | `>= 1.8` | *[Link](#rest-client)* | *[Link](https://github.com/rest-client/rest-client)* |
420
- | RSpec | `rspec`. | `>= 3.0.0` | `>= 3.0.0` | *[Link](#rspec)*. | *[Link](https://github.com/rspec/rspec)* |
421
- | Sequel | `sequel` | `>= 3.41` | `>= 3.41` | *[Link](#sequel)* | *[Link](https://github.com/jeremyevans/sequel)* |
422
- | Shoryuken | `shoryuken` | `>= 3.2` | `>= 3.2` | *[Link](#shoryuken)* | *[Link](https://github.com/phstc/shoryuken)* |
423
- | Sidekiq | `sidekiq` | `>= 3.5.4` | `>= 3.5.4` | *[Link](#sidekiq)* | *[Link](https://github.com/mperham/sidekiq)* |
424
- | Sinatra | `sinatra` | `>= 1.4` | `>= 1.4` | *[Link](#sinatra)* | *[Link](https://github.com/sinatra/sinatra)* |
425
- | Sneakers | `sneakers` | `>= 2.12.0` | `>= 2.12.0` | *[Link](#sneakers)* | *[Link](https://github.com/jondot/sneakers)* |
426
- | Sucker Punch | `sucker_punch` | `>= 2.0` | `>= 2.0` | *[Link](#sucker-punch)* | *[Link](https://github.com/brandonhilkert/sucker_punch)* |
427
-
428
- ### Action Cable
429
-
430
- The Action Cable integration traces broadcast messages and channel actions.
431
-
432
- You can enable it through `Datadog.configure`:
433
-
434
- ```ruby
435
- require 'ddtrace'
436
-
437
- Datadog.configure do |c|
438
- c.use :action_cable, options
439
- end
440
- ```
441
-
442
- Where `options` is an optional `Hash` that accepts the following parameters:
443
-
444
- | Key | Description | Default |
445
- | --- | ----------- | ------- |
446
- | `service_name` | Service name used for `action_cable` instrumentation | `'action_cable'` |
447
-
448
- ### Action View
449
-
450
- Most of the time, Active Support is set up as part of Rails, but it can be activated separately:
451
-
452
- ```ruby
453
- require 'actionview'
454
- require 'ddtrace'
455
-
456
- Datadog.configure do |c|
457
- c.use :action_view, options
458
- end
459
- ```
460
-
461
- Where `options` is an optional `Hash` that accepts the following parameters:
462
-
463
- | Key | Description | Default |
464
- | ---| --- | --- |
465
- | `service_name` | Service name used for rendering instrumentation. | `action_view` |
466
- | `template_base_path` | Used when the template name is parsed. If you don't store your templates in the `views/` folder, you may need to change this value | `'views/'` |
467
-
468
- ### Active Model Serializers
469
-
470
- The Active Model Serializers integration traces the `serialize` event for version 0.9+ and the `render` event for version 0.10+.
471
-
472
- ```ruby
473
- require 'active_model_serializers'
474
- require 'ddtrace'
475
-
476
- Datadog.configure do |c|
477
- c.use :active_model_serializers, options
478
- end
479
-
480
- my_object = MyModel.new(name: 'my object')
481
- ActiveModelSerializers::SerializableResource.new(test_obj).serializable_hash
482
- ```
483
-
484
- | Key | Description | Default |
485
- | --- | ----------- | ------- |
486
- | `service_name` | Service name used for `active_model_serializers` instrumentation. | `'active_model_serializers'` |
487
-
488
- ### Action Pack
489
-
490
- Most of the time, Action Pack is set up as part of Rails, but it can be activated separately:
491
-
492
- ```ruby
493
- require 'actionpack'
494
- require 'ddtrace'
495
-
496
- Datadog.configure do |c|
497
- c.use :action_pack, options
498
- end
499
- ```
500
-
501
- Where `options` is an optional `Hash` that accepts the following parameters:
502
-
503
- | Key | Description | Default |
504
- | ---| --- | --- |
505
- | `service_name` | Service name used for rendering instrumentation. | `action_pack` |
506
-
507
- ### Active Record
508
-
509
- Most of the time, Active Record is set up as part of a web framework (Rails, Sinatra...) however, it can be set up alone:
510
-
511
- ```ruby
512
- require 'tmpdir'
513
- require 'sqlite3'
514
- require 'active_record'
515
- require 'ddtrace'
516
-
517
- Datadog.configure do |c|
518
- c.use :active_record, options
519
- end
520
-
521
- Dir::Tmpname.create(['test', '.sqlite']) do |db|
522
- conn = ActiveRecord::Base.establish_connection(adapter: 'sqlite3',
523
- database: db)
524
- conn.connection.execute('SELECT 42') # traced!
525
- end
526
- ```
527
-
528
- Where `options` is an optional `Hash` that accepts the following parameters:
529
-
530
- | Key | Description | Default |
531
- | ---| --- | --- |
532
- | `orm_service_name` | Service name used for the mapping portion of query results to ActiveRecord objects. Inherits service name from parent by default. | _parent.service_name_ (e.g. `'mysql2'`) |
533
- | `service_name` | Service name used for database portion of `active_record` instrumentation. | Name of database adapter (e.g. `'mysql2'`) |
534
-
535
- **Configuring trace settings per database**
536
-
537
- You can configure trace settings per database connection by using the `describes` option:
538
-
539
- ```ruby
540
- # Provide a `:describes` option with a connection key.
541
- # Any of the following keys are acceptable and equivalent to one another.
542
- # If a block is provided, it yields a Settings object that
543
- # accepts any of the configuration options listed above.
544
-
545
- Datadog.configure do |c|
546
- # Symbol matching your database connection in config/database.yml
547
- # Only available if you are using Rails with ActiveRecord.
548
- c.use :active_record, describes: :secondary_database, service_name: 'secondary-db'
549
-
550
- # Block configuration pattern.
551
- c.use :active_record, describes: :secondary_database do |second_db|
552
- second_db.service_name = 'secondary-db'
553
- end
554
-
555
- # Connection string with the following connection settings:
556
- # adapter, username, host, port, database
557
- # Other fields are ignored.
558
- c.use :active_record, describes: 'mysql2://root@127.0.0.1:3306/mysql', service_name: 'secondary-db'
559
-
560
- # Hash with following connection settings:
561
- # adapter, username, host, port, database
562
- # Other fields are ignored.
563
- c.use :active_record, describes: {
564
- adapter: 'mysql2',
565
- host: '127.0.0.1',
566
- port: '3306',
567
- database: 'mysql',
568
- username: 'root'
569
- },
570
- service_name: 'secondary-db'
571
-
572
- # If using the `makara` gem, it's possible to match on connection `role`:
573
- c.use :active_record, describes: { makara_role: 'primary' }, service_name: 'primary-db'
574
- c.use :active_record, describes: { makara_role: 'replica' }, service_name: 'secondary-db'
575
- end
576
- ```
577
-
578
- You can also create configurations based on partial matching of database connection fields:
579
-
580
- ```ruby
581
- Datadog.configure do |c|
582
- # Matches any connection on host `127.0.0.1`.
583
- c.use :active_record, describes: { host: '127.0.0.1' }, service_name: 'local-db'
584
-
585
- # Matches any `mysql2` connection.
586
- c.use :active_record, describes: { adapter: 'mysql2'}, service_name: 'mysql-db'
587
-
588
- # Matches any `mysql2` connection to the `reports` database.
589
- #
590
- # In case of multiple matching `describe` configurations, the latest one applies.
591
- # In this case a connection with both adapter `mysql` and database `reports`
592
- # will be configured `service_name: 'reports-db'`, not `service_name: 'mysql-db'`.
593
- c.use :active_record, describes: { adapter: 'mysql2', database: 'reports'}, service_name: 'reports-db'
594
- end
595
- ```
596
-
597
- When multiple `describes` configurations match a connection, the latest configured rule that matches will be applied.
598
-
599
- If ActiveRecord traces an event that uses a connection that matches a key defined by `describes`, it will use the trace settings assigned to that connection. If the connection does not match any of the described connections, it will use default settings defined by `c.use :active_record` instead.
600
-
601
- ### Active Support
602
-
603
- Most of the time, Active Support is set up as part of Rails, but it can be activated separately:
604
-
605
- ```ruby
606
- require 'activesupport'
607
- require 'ddtrace'
608
-
609
- Datadog.configure do |c|
610
- c.use :active_support, options
611
- end
612
-
613
- cache = ActiveSupport::Cache::MemoryStore.new
614
- cache.read('city')
615
- ```
616
-
617
- Where `options` is an optional `Hash` that accepts the following parameters:
618
-
619
- | Key | Description | Default |
620
- | ---| --- | --- |
621
- | `cache_service` | Service name used for caching with `active_support` instrumentation. | `active_support-cache` |
622
-
623
- ### AWS
624
-
625
- The AWS integration will trace every interaction (e.g. API calls) with AWS services (S3, ElastiCache etc.).
626
-
627
- ```ruby
628
- require 'aws-sdk'
629
- require 'ddtrace'
630
-
631
- Datadog.configure do |c|
632
- c.use :aws, options
633
- end
634
-
635
- # Perform traced call
636
- Aws::S3::Client.new.list_buckets
637
- ```
638
-
639
- Where `options` is an optional `Hash` that accepts the following parameters:
640
-
641
- | Key | Description | Default |
642
- | --- | ----------- | ------- |
643
- | `service_name` | Service name used for `aws` instrumentation | `'aws'` |
644
-
645
- ### Concurrent Ruby
646
-
647
- The Concurrent Ruby integration adds support for context propagation when using `::Concurrent::Future`.
648
- Making sure that code traced within the `Future#execute` will have correct parent set.
649
-
650
- To activate your integration, use the `Datadog.configure` method:
651
-
652
- ```ruby
653
- # Inside Rails initializer or equivalent
654
- Datadog.configure do |c|
655
- # Patches ::Concurrent::Future to use ExecutorService that propagates context
656
- c.use :concurrent_ruby, options
657
- end
658
-
659
- # Pass context into code executed within Concurrent::Future
660
- Datadog.tracer.trace('outer') do
661
- Concurrent::Future.execute { Datadog.tracer.trace('inner') { } }.wait
662
- end
663
- ```
664
-
665
- Where `options` is an optional `Hash` that accepts the following parameters:
666
-
667
- | Key | Description | Default |
668
- | --- | ----------- | ------- |
669
- | `service_name` | Service name used for `concurrent-ruby` instrumentation | `'concurrent-ruby'` |
670
-
671
- ### Cucumber
672
-
673
- Cucumber integration will trace all executions of scenarios and steps when using `cucumber` framework.
674
-
675
- To activate your integration, use the `Datadog.configure` method:
676
-
677
- ```ruby
678
- require 'cucumber'
679
- require 'ddtrace'
680
-
681
- # Configure default Cucumber integration
682
- Datadog.configure do |c|
683
- c.use :cucumber, options
684
- end
685
-
686
- # Example of how to attach tags from scenario to active span
687
- Around do |scenario, block|
688
- active_span = Datadog.configuration[:cucumber][:tracer].active_span
689
- unless active_span.nil?
690
- scenario.tags.filter { |tag| tag.include? ':' }.each do |tag|
691
- active_span.set_tag(*tag.name.split(':', 2))
692
- end
693
- end
694
- block.call
695
- end
696
- ```
697
-
698
- Where `options` is an optional `Hash` that accepts the following parameters:
699
-
700
- | Key | Description | Default |
701
- | --- | ----------- | ------- |
702
- | `enabled` | Defines whether Cucumber tests should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
703
- | `service_name` | Service name used for `cucumber` instrumentation. | `'cucumber'` |
704
- | `operation_name` | Operation name used for `cucumber` instrumentation. Useful if you want rename automatic trace metrics e.g. `trace.#{operation_name}.errors`. | `'cucumber.test'` |
705
-
706
- ### Dalli
707
-
708
- Dalli integration will trace all calls to your `memcached` server:
709
-
710
- ```ruby
711
- require 'dalli'
712
- require 'ddtrace'
713
-
714
- # Configure default Dalli tracing behavior
715
- Datadog.configure do |c|
716
- c.use :dalli, options
717
- end
718
-
719
- # Configure Dalli tracing behavior for single client
720
- client = Dalli::Client.new('localhost:11211', options)
721
- client.set('abc', 123)
722
- ```
723
-
724
- Where `options` is an optional `Hash` that accepts the following parameters:
725
-
726
- | Key | Description | Default |
727
- | --- | ----------- | ------- |
728
- | `service_name` | Service name used for `dalli` instrumentation | `'memcached'` |
729
-
730
- ### DelayedJob
731
-
732
- The DelayedJob integration uses lifecycle hooks to trace the job executions and enqueues.
733
-
734
- You can enable it through `Datadog.configure`:
735
-
736
- ```ruby
737
- require 'ddtrace'
738
-
739
- Datadog.configure do |c|
740
- c.use :delayed_job, options
741
- end
742
- ```
743
-
744
- Where `options` is an optional `Hash` that accepts the following parameters:
745
-
746
- | Key | Description | Default |
747
- | --- | ----------- | ------- |
748
- | `service_name` | Service name used for `DelayedJob` instrumentation | `'delayed_job'` |
749
- | `client_service_name` | Service name used for client-side `DelayedJob` instrumentation | `'delayed_job-client'` |
750
- | `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
751
-
752
- ### Elasticsearch
753
-
754
- The Elasticsearch integration will trace any call to `perform_request` in the `Client` object:
755
-
756
- ```ruby
757
- require 'elasticsearch/transport'
758
- require 'ddtrace'
759
-
760
- Datadog.configure do |c|
761
- c.use :elasticsearch, options
762
- end
763
-
764
- # Perform a query to Elasticsearch
765
- client = Elasticsearch::Client.new url: 'http://127.0.0.1:9200'
766
- response = client.perform_request 'GET', '_cluster/health'
767
- ```
768
-
769
- Where `options` is an optional `Hash` that accepts the following parameters:
770
-
771
- | Key | Description | Default |
772
- | --- | ----------- | ------- |
773
- | `quantize` | Hash containing options for quantization. May include `:show` with an Array of keys to not quantize (or `:all` to skip quantization), or `:exclude` with Array of keys to exclude entirely. | `{}` |
774
- | `service_name` | Service name used for `elasticsearch` instrumentation | `'elasticsearch'` |
775
-
776
- ### Ethon
777
-
778
- The `ethon` integration will trace any HTTP request through `Easy` or `Multi` objects. Note that this integration also supports `Typhoeus` library which is based on `Ethon`.
779
-
780
- ```ruby
781
- require 'ddtrace'
782
-
783
- Datadog.configure do |c|
784
- c.use :ethon, options
785
-
786
- # optionally, specify a different service name for hostnames matching a regex
787
- c.use :ethon, describes: /user-[^.]+\.example\.com/ do |ethon|
788
- ethon.service_name = 'user.example.com'
789
- ethon.split_by_domain = false # Only necessary if split_by_domain is true by default
790
- end
791
- end
792
- ```
793
-
794
- Where `options` is an optional `Hash` that accepts the following parameters:
795
-
796
- | Key | Description | Default |
797
- | --- | ----------- | ------- |
798
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) | `true` |
799
- | `service_name` | Service name for `ethon` instrumentation. | `'ethon'` |
800
- | `split_by_domain` | Uses the request domain as the service name when set to `true`. | `false` |
801
-
802
- ### Excon
803
-
804
- The `excon` integration is available through the `ddtrace` middleware:
805
-
806
- ```ruby
807
- require 'excon'
808
- require 'ddtrace'
809
-
810
- # Configure default Excon tracing behavior
811
- Datadog.configure do |c|
812
- c.use :excon, options
813
-
814
- # optionally, specify a different service name for hostnames matching a regex
815
- c.use :excon, describes: /user-[^.]+\.example\.com/ do |excon|
816
- excon.service_name = 'user.example.com'
817
- excon.split_by_domain = false # Only necessary if split_by_domain is true by default
818
- end
819
- end
820
-
821
- connection = Excon.new('https://example.com')
822
- connection.get
823
- ```
824
-
825
- Where `options` is an optional `Hash` that accepts the following parameters:
826
-
827
- | Key | Description | Default |
828
- | --- | ----------- | ------- |
829
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) | `true` |
830
- | `error_handler` | A `Proc` that accepts a `response` parameter. If it evaluates to a *truthy* value, the trace span is marked as an error. By default only sets 5XX responses as errors. | `nil` |
831
- | `service_name` | Service name for Excon instrumentation. When provided to middleware for a specific connection, it applies only to that connection object. | `'excon'` |
832
- | `split_by_domain` | Uses the request domain as the service name when set to `true`. | `false` |
833
-
834
- **Configuring connections to use different settings**
835
-
836
- If you use multiple connections with Excon, you can give each of them different settings by configuring their constructors with middleware:
837
-
838
- ```ruby
839
- # Wrap the Datadog tracing middleware around the default middleware stack
840
- Excon.new(
841
- 'http://example.com',
842
- middlewares: Datadog::Contrib::Excon::Middleware.with(options).around_default_stack
843
- )
844
-
845
- # Insert the middleware into a custom middleware stack.
846
- # NOTE: Trace middleware must be inserted after ResponseParser!
847
- Excon.new(
848
- 'http://example.com',
849
- middlewares: [
850
- Excon::Middleware::ResponseParser,
851
- Datadog::Contrib::Excon::Middleware.with(options),
852
- Excon::Middleware::Idempotent
853
- ]
854
- )
855
- ```
856
-
857
- Where `options` is a Hash that contains any of the parameters listed in the table above.
858
-
859
- ### Faraday
860
-
861
- The `faraday` integration is available through the `ddtrace` middleware:
862
-
863
- ```ruby
864
- require 'faraday'
865
- require 'ddtrace'
866
-
867
- # Configure default Faraday tracing behavior
868
- Datadog.configure do |c|
869
- c.use :faraday, options
870
-
871
- # optionally, specify a different service name for hostnames matching a regex
872
- c.use :faraday, describes: /user-[^.]+\.example\.com/ do |faraday|
873
- faraday.service_name = 'user.example.com'
874
- faraday.split_by_domain = false # Only necessary if split_by_domain is true by default
875
- end
876
- end
877
-
878
- # In case you want to override the global configuration for a certain client instance
879
- connection = Faraday.new('https://example.com') do |builder|
880
- builder.use(:ddtrace, options)
881
- builder.adapter Faraday.default_adapter
882
- end
883
-
884
- connection.get('/foo')
885
- ```
886
-
887
- Where `options` is an optional `Hash` that accepts the following parameters:
888
-
889
- | Key | Description | Default |
890
- | --- | ----------- | ------- |
891
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) | `true` |
892
- | `error_handler` | A `Proc` that accepts a `response` parameter. If it evaluates to a *truthy* value, the trace span is marked as an error. By default only sets 5XX responses as errors. | `nil` |
893
- | `service_name` | Service name for Faraday instrumentation. When provided to middleware for a specific connection, it applies only to that connection object. | `'faraday'` |
894
- | `split_by_domain` | Uses the request domain as the service name when set to `true`. | `false` |
895
-
896
- ### Grape
897
-
898
- The Grape integration adds the instrumentation to Grape endpoints and filters. This integration can work side by side with other integrations like Rack and Rails.
899
-
900
- To activate your integration, use the `Datadog.configure` method before defining your Grape application:
901
-
902
- ```ruby
903
- # api.rb
904
- require 'grape'
905
- require 'ddtrace'
906
-
907
- Datadog.configure do |c|
908
- c.use :grape, options
909
- end
910
-
911
- # Then define your application
912
- class RackTestingAPI < Grape::API
913
- desc 'main endpoint'
914
- get :success do
915
- 'Hello world!'
916
- end
917
- end
918
- ```
919
-
920
- Where `options` is an optional `Hash` that accepts the following parameters:
921
-
922
- | Key | Description | Default |
923
- | --- | ----------- | ------- |
924
- | `enabled` | Defines whether Grape should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
925
- | `service_name` | Service name used for `grape` instrumentation | `'grape'` |
926
- | `error_statuses`| Defines a status code or range of status codes which should be marked as errors. `'404,405,500-599'` or `[404,405,'500-599']` | `nil` |
927
-
928
- ### GraphQL
929
-
930
- The GraphQL integration activates instrumentation for GraphQL queries.
931
-
932
- To activate your integration, use the `Datadog.configure` method:
933
-
934
- ```ruby
935
- # Inside Rails initializer or equivalent
936
- Datadog.configure do |c|
937
- c.use :graphql, schemas: [YourSchema], options
938
- end
939
-
940
- # Then run a GraphQL query
941
- YourSchema.execute(query, variables: {}, context: {}, operation_name: nil)
942
- ```
943
-
944
- The `use :graphql` method accepts the following parameters. Additional options can be substituted in for `options`:
945
-
946
- | Key | Description | Default |
947
- | --- | ----------- | ------- |
948
- | `service_name` | Service name used for `graphql` instrumentation | `'ruby-graphql'` |
949
- | `schemas` | Required. Array of `GraphQL::Schema` objects which to trace. Tracing will be added to all the schemas listed, using the options provided to this configuration. If you do not provide any, then tracing will not be activated. | `[]` |
950
-
951
- **Manually configuring GraphQL schemas**
952
-
953
- If you prefer to individually configure the tracer settings for a schema (e.g. you have multiple schemas with different service names), in the schema definition, you can add the following [using the GraphQL API](http://graphql-ruby.org/queries/tracing.html):
954
-
955
- ```ruby
956
- # Class-based schema
957
- class YourSchema < GraphQL::Schema
958
- use(
959
- GraphQL::Tracing::DataDogTracing,
960
- service: 'graphql'
961
- )
962
- end
963
- ```
964
-
965
- ```ruby
966
- # .define-style schema
967
- YourSchema = GraphQL::Schema.define do
968
- use(
969
- GraphQL::Tracing::DataDogTracing,
970
- service: 'graphql'
971
- )
972
- end
973
- ```
974
-
975
- Or you can modify an already defined schema:
976
-
977
- ```ruby
978
- # Class-based schema
979
- YourSchema.use(
980
- GraphQL::Tracing::DataDogTracing,
981
- service: 'graphql'
982
- )
983
- ```
984
-
985
- ```ruby
986
- # .define-style schema
987
- YourSchema.define do
988
- use(
989
- GraphQL::Tracing::DataDogTracing,
990
- service: 'graphql'
991
- )
992
- end
993
- ```
994
-
995
- Do *NOT* `use :graphql` in `Datadog.configure` if you choose to configure manually, as to avoid double tracing. These two means of configuring GraphQL tracing are considered mutually exclusive.
996
-
997
- ### gRPC
998
-
999
- The `grpc` integration adds both client and server interceptors, which run as middleware before executing the service's remote procedure call. As gRPC applications are often distributed, the integration shares trace information between client and server.
1000
-
1001
- To setup your integration, use the `Datadog.configure` method like so:
1002
-
1003
- ```ruby
1004
- require 'grpc'
1005
- require 'ddtrace'
1006
-
1007
- Datadog.configure do |c|
1008
- c.use :grpc, options
1009
- end
1010
-
1011
- # Server side
1012
- server = GRPC::RpcServer.new
1013
- server.add_http2_port('localhost:50051', :this_port_is_insecure)
1014
- server.handle(Demo)
1015
- server.run_till_terminated
1016
-
1017
- # Client side
1018
- client = Demo.rpc_stub_class.new('localhost:50051', :this_channel_is_insecure)
1019
- client.my_endpoint(DemoMessage.new(contents: 'hello!'))
1020
- ```
1021
-
1022
- Where `options` is an optional `Hash` that accepts the following parameters:
1023
-
1024
- | Key | Description | Default |
1025
- | --- | ----------- | ------- |
1026
- | `service_name` | Service name used for `grpc` instrumentation | `'grpc'` |
1027
-
1028
- **Configuring clients to use different settings**
1029
-
1030
- In situations where you have multiple clients calling multiple distinct services, you may pass the Datadog interceptor directly, like so
1031
-
1032
- ```ruby
1033
- configured_interceptor = Datadog::Contrib::GRPC::DatadogInterceptor::Client.new do |c|
1034
- c.service_name = "Alternate"
1035
- end
1036
-
1037
- alternate_client = Demo::Echo::Service.rpc_stub_class.new(
1038
- 'localhost:50052',
1039
- :this_channel_is_insecure,
1040
- :interceptors => [configured_interceptor]
1041
- )
1042
- ```
1043
-
1044
- The integration will ensure that the `configured_interceptor` establishes a unique tracing setup for that client instance.
1045
-
1046
- ### http.rb
1047
-
1048
- The http.rb integration will trace any HTTP call using the Http.rb gem.
1049
-
1050
- ```ruby
1051
- require 'http'
1052
- require 'ddtrace'
1053
- Datadog.configure do |c|
1054
- c.use :httprb, options
1055
- # optionally, specify a different service name for hostnames matching a regex
1056
- c.use :httprb, describes: /user-[^.]+\.example\.com/ do |httprb|
1057
- httprb.service_name = 'user.example.com'
1058
- httprb.split_by_domain = false # Only necessary if split_by_domain is true by default
1059
- end
1060
- end
1061
- ```
1062
-
1063
- Where `options` is an optional `Hash` that accepts the following parameters:
1064
-
1065
- | Key | Description | Default |
1066
- | --- | ----------- | ------- |
1067
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) | `true` |
1068
- | `service_name` | Service name for `httprb` instrumentation. | `'httprb'` |
1069
- | `split_by_domain` | Uses the request domain as the service name when set to `true`. | `false` |
1070
-
1071
- ### httpclient
1072
-
1073
- The httpclient integration will trace any HTTP call using the httpclient gem.
1074
-
1075
- ```ruby
1076
- require 'httpclient'
1077
- require 'ddtrace'
1078
- Datadog.configure do |c|
1079
- c.use :httpclient, options
1080
- # optionally, specify a different service name for hostnames matching a regex
1081
- c.use :httpclient, describes: /user-[^.]+\.example\.com/ do |httpclient|
1082
- httpclient.service_name = 'user.example.com'
1083
- httpclient.split_by_domain = false # Only necessary if split_by_domain is true by default
1084
- end
1085
- end
1086
- ```
1087
-
1088
- Where `options` is an optional `Hash` that accepts the following parameters:
1089
-
1090
- | Key | Description | Default |
1091
- | --- | ----------- | ------- |
1092
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) | `true` |
1093
- | `service_name` | Service name for `httpclient` instrumentation. | `'httpclient'` |
1094
- | `split_by_domain` | Uses the request domain as the service name when set to `true`. | `false` |
1095
-
1096
- ### httpx
1097
-
1098
- `httpx` maintains its [own integration with `ddtrace`](https://honeyryderchuck.gitlab.io/httpx/wiki/Datadog-Adapter):
1099
-
1100
- ```ruby
1101
- require "ddtrace"
1102
- require "httpx/adapters/datadog"
1103
-
1104
- Datadog.configure do |c|
1105
- c.use :httpx
1106
-
1107
- # optionally, specify a different service name for hostnames matching a regex
1108
- c.use :httpx, describes: /user-[^.]+\.example\.com/ do |http|
1109
- http.service_name = 'user.example.com'
1110
- http.split_by_domain = false # Only necessary if split_by_domain is true by default
1111
- end
1112
- end
1113
- ```
1114
-
1115
- ### Kafka
1116
-
1117
- The Kafka integration provides tracing of the `ruby-kafka` gem:
1118
-
1119
- You can enable it through `Datadog.configure`:
1120
-
1121
- ```ruby
1122
- require 'active_support/notifications' # required to enable 'ruby-kafka' instrumentation
1123
- require 'kafka'
1124
- require 'ddtrace'
1125
-
1126
- Datadog.configure do |c|
1127
- c.use :kafka, options
1128
- end
1129
- ```
1130
-
1131
- Where `options` is an optional `Hash` that accepts the following parameters:
1132
-
1133
- | Key | Description | Default |
1134
- | --- | ----------- | ------- |
1135
- | `service_name` | Service name used for `kafka` instrumentation | `'kafka'` |
1136
- | `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
1137
-
1138
- ### MongoDB
1139
-
1140
- The integration traces any `Command` that is sent from the [MongoDB Ruby Driver](https://github.com/mongodb/mongo-ruby-driver) to a MongoDB cluster. By extension, Object Document Mappers (ODM) such as Mongoid are automatically instrumented if they use the official Ruby driver. To activate the integration, simply:
1141
-
1142
- ```ruby
1143
- require 'mongo'
1144
- require 'ddtrace'
1145
-
1146
- Datadog.configure do |c|
1147
- c.use :mongo, options
1148
- end
1149
-
1150
- # Create a MongoDB client and use it as usual
1151
- client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'artists')
1152
- collection = client[:people]
1153
- collection.insert_one({ name: 'Steve' })
1154
-
1155
- # In case you want to override the global configuration for a certain client instance
1156
- Datadog.configure(client, options)
1157
- ```
1158
-
1159
- Where `options` is an optional `Hash` that accepts the following parameters:
1160
-
1161
- | Key | Description | Default |
1162
- | --- | ----------- | ------- |
1163
- | `quantize` | Hash containing options for quantization. May include `:show` with an Array of keys to not quantize (or `:all` to skip quantization), or `:exclude` with Array of keys to exclude entirely. | `{ show: [:collection, :database, :operation] }` |
1164
- | `service_name` | Service name used for `mongo` instrumentation | `'mongodb'` |
1165
-
1166
- ### MySQL2
1167
-
1168
- The MySQL2 integration traces any SQL command sent through `mysql2` gem.
1169
-
1170
- ```ruby
1171
- require 'mysql2'
1172
- require 'ddtrace'
1173
-
1174
- Datadog.configure do |c|
1175
- c.use :mysql2, options
1176
- end
1177
-
1178
- client = Mysql2::Client.new(:host => "localhost", :username => "root")
1179
- client.query("SELECT * FROM users WHERE group='x'")
1180
- ```
1181
-
1182
- Where `options` is an optional `Hash` that accepts the following parameters:
1183
-
1184
- | Key | Description | Default |
1185
- | --- | ----------- | ------- |
1186
- | `service_name` | Service name used for `mysql2` instrumentation | `'mysql2'` |
1187
-
1188
- ### Net/HTTP
1189
-
1190
- The Net/HTTP integration will trace any HTTP call using the standard lib Net::HTTP module.
1191
-
1192
- ```ruby
1193
- require 'net/http'
1194
- require 'ddtrace'
1195
-
1196
- Datadog.configure do |c|
1197
- c.use :http, options
1198
-
1199
- # optionally, specify a different service name for hostnames matching a regex
1200
- c.use :http, describes: /user-[^.]+\.example\.com/ do |http|
1201
- http.service_name = 'user.example.com'
1202
- http.split_by_domain = false # Only necessary if split_by_domain is true by default
1203
- end
1204
- end
1205
-
1206
- Net::HTTP.start('127.0.0.1', 8080) do |http|
1207
- request = Net::HTTP::Get.new '/index'
1208
- response = http.request(request)
1209
- end
1210
-
1211
- content = Net::HTTP.get(URI('http://127.0.0.1/index.html'))
1212
- ```
1213
-
1214
- Where `options` is an optional `Hash` that accepts the following parameters:
1215
-
1216
- | Key | Description | Default |
1217
- | --- | ----------- | ------- |
1218
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) | `true` |
1219
- | `service_name` | Service name used for `http` instrumentation | `'net/http'` |
1220
- | `split_by_domain` | Uses the request domain as the service name when set to `true`. | `false` |
1221
-
1222
- If you wish to configure each connection object individually, you may use the `Datadog.configure` as it follows:
1223
-
1224
- ```ruby
1225
- client = Net::HTTP.new(host, port)
1226
- Datadog.configure(client, options)
1227
- ```
1228
-
1229
- ### Presto
1230
-
1231
- The Presto integration traces any SQL command sent through `presto-client` gem.
1232
-
1233
- ```ruby
1234
- require 'presto-client'
1235
- require 'ddtrace'
1236
-
1237
- Datadog.configure do |c|
1238
- c.use :presto, options
1239
- end
1240
-
1241
- client = Presto::Client.new(
1242
- server: "localhost:8880",
1243
- ssl: {verify: false},
1244
- catalog: "native",
1245
- schema: "default",
1246
- time_zone: "US/Pacific",
1247
- language: "English",
1248
- http_debug: true,
1249
- )
1250
-
1251
- client.run("select * from system.nodes")
1252
- ```
1253
-
1254
- Where `options` is an optional `Hash` that accepts the following parameters:
1255
-
1256
- | Key | Description | Default |
1257
- | --- | ----------- | ------- |
1258
- | `service_name` | Service name used for `presto` instrumentation | `'presto'` |
1259
-
1260
- ### Qless
1261
-
1262
- The Qless integration uses lifecycle hooks to trace job executions.
1263
-
1264
- To add tracing to a Qless job:
1265
-
1266
- ```ruby
1267
- require 'ddtrace'
1268
-
1269
- Datadog.configure do |c|
1270
- c.use :qless, options
1271
- end
1272
- ```
1273
-
1274
- Where `options` is an optional `Hash` that accepts the following parameters:
1275
-
1276
- | Key | Description | Default |
1277
- | --- | ----------- | ------- |
1278
- | `service_name` | Service name used for `qless` instrumentation | `'qless'` |
1279
- | `tag_job_data` | Enable tagging with job arguments. true for on, false for off. | `false` |
1280
- | `tag_job_tags` | Enable tagging with job tags. true for on, false for off. | `false` |
1281
-
1282
- ### Que
1283
-
1284
- The Que integration is a middleware which will trace job executions.
1285
-
1286
- You can enable it through `Datadog.configure`:
1287
-
1288
- ```ruby
1289
- require 'ddtrace'
1290
-
1291
- Datadog.configure do |c|
1292
- c.use :que, options
1293
- end
1294
- ```
1295
-
1296
- Where `options` is an optional `Hash` that accepts the following parameters:
1297
-
1298
- | Key | Description | Default |
1299
- | --- | ----------- | ------- |
1300
- | `enabled` | Defines whether Que should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
1301
- | `service_name` | Service name used for `que` instrumentation | `'que'` |
1302
- | `tag_args` | Enable tagging of a job's args field. `true` for on, `false` for off. | `false` |
1303
- | `tag_data` | Enable tagging of a job's data field. `true` for on, `false` for off. | `false` |
1304
- | `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
1305
-
1306
- ### Racecar
1307
-
1308
- The Racecar integration provides tracing for Racecar jobs.
1309
-
1310
- You can enable it through `Datadog.configure`:
1311
-
1312
- ```ruby
1313
- require 'ddtrace'
1314
-
1315
- Datadog.configure do |c|
1316
- c.use :racecar, options
1317
- end
1318
- ```
1319
-
1320
- Where `options` is an optional `Hash` that accepts the following parameters:
1321
-
1322
- | Key | Description | Default |
1323
- | --- | ----------- | ------- |
1324
- | `service_name` | Service name used for `racecar` instrumentation | `'racecar'` |
1325
-
1326
- ### Rack
1327
-
1328
- The Rack integration provides a middleware that traces all requests before they reach the underlying framework or application. It responds to the Rack minimal interface, providing reasonable values that can be retrieved at the Rack level.
1329
-
1330
- This integration is automatically activated with web frameworks like Rails. If you're using a plain Rack application, enable the integration it to your `config.ru`:
1331
-
1332
- ```ruby
1333
- # config.ru example
1334
- require 'ddtrace'
1335
-
1336
- Datadog.configure do |c|
1337
- c.use :rack, options
1338
- end
1339
-
1340
- use Datadog::Contrib::Rack::TraceMiddleware
1341
-
1342
- app = proc do |env|
1343
- [ 200, {'Content-Type' => 'text/plain'}, ['OK'] ]
1344
- end
1345
-
1346
- run app
1347
- ```
1348
-
1349
- Where `options` is an optional `Hash` that accepts the following parameters:
1350
-
1351
- | Key | Description | Default |
1352
- | --- | ----------- | ------- |
1353
- | `application` | Your Rack application. Required for `middleware_names`. | `nil` |
1354
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) so that this service trace is connected with a trace of another service if tracing headers are received | `true` |
1355
- | `headers` | Hash of HTTP request or response headers to add as tags to the `rack.request`. Accepts `request` and `response` keys with Array values e.g. `['Last-Modified']`. Adds `http.request.headers.*` and `http.response.headers.*` tags respectively. | `{ response: ['Content-Type', 'X-Request-ID'] }` |
1356
- | `middleware_names` | Enable this if you want to use the last executed middleware class as the resource name for the `rack` span. If enabled alongside the `rails` instrumention, `rails` takes precedence by setting the `rack` resource name to the active `rails` controller when applicable. Requires `application` option to use. | `false` |
1357
- | `quantize` | Hash containing options for quantization. May include `:query` or `:fragment`. | `{}` |
1358
- | `quantize.query` | Hash containing options for query portion of URL quantization. May include `:show` or `:exclude`. See options below. Option must be nested inside the `quantize` option. | `{}` |
1359
- | `quantize.query.show` | Defines which values should always be shown. Shows no values by default. May be an Array of strings, or `:all` to show all values. Option must be nested inside the `query` option. | `nil` |
1360
- | `quantize.query.exclude` | Defines which values should be removed entirely. Excludes nothing by default. May be an Array of strings, or `:all` to remove the query string entirely. Option must be nested inside the `query` option. | `nil` |
1361
- | `quantize.fragment` | Defines behavior for URL fragments. Removes fragments by default. May be `:show` to show URL fragments. Option must be nested inside the `quantize` option. | `nil` |
1362
- | `request_queuing` | Track HTTP request time spent in the queue of the frontend server. See [HTTP request queuing](#http-request-queuing) for setup details. Set to `true` to enable. | `false` |
1363
- | `service_name` | Service name used for `rack` instrumentation | `'rack'` |
1364
- | `web_service_name` | Service name for frontend server request queuing spans. (e.g. `'nginx'`) | `'web-server'` |
1365
-
1366
- **Configuring URL quantization behavior**
1367
-
1368
- ```ruby
1369
- Datadog.configure do |c|
1370
- # Default behavior: all values are quantized, fragment is removed.
1371
- # http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id&sort_by
1372
- # http://example.com/path?categories[]=1&categories[]=2 --> http://example.com/path?categories[]
1373
-
1374
- # Show values for any query string parameter matching 'category_id' exactly
1375
- # http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id=1&sort_by
1376
- c.use :rack, quantize: { query: { show: ['category_id'] } }
1377
-
1378
- # Show all values for all query string parameters
1379
- # http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id=1&sort_by=asc
1380
- c.use :rack, quantize: { query: { show: :all } }
1381
-
1382
- # Totally exclude any query string parameter matching 'sort_by' exactly
1383
- # http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id
1384
- c.use :rack, quantize: { query: { exclude: ['sort_by'] } }
1385
-
1386
- # Remove the query string entirely
1387
- # http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path
1388
- c.use :rack, quantize: { query: { exclude: :all } }
1389
-
1390
- # Show URL fragments
1391
- # http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id&sort_by#featured
1392
- c.use :rack, quantize: { fragment: :show }
1393
- end
1394
- ```
1395
-
1396
- ### Rails
1397
-
1398
- The Rails integration will trace requests, database calls, templates rendering, and cache read/write/delete operations. The integration makes use of the Active Support Instrumentation, listening to the Notification API so that any operation instrumented by the API is traced.
1399
-
1400
- To enable the Rails instrumentation, create an initializer file in your `config/initializers` folder:
1401
-
1402
- ```ruby
1403
- # config/initializers/datadog.rb
1404
- require 'ddtrace'
1405
-
1406
- Datadog.configure do |c|
1407
- c.use :rails, options
1408
- end
1409
- ```
1410
-
1411
- Where `options` is an optional `Hash` that accepts the following parameters:
1412
-
1413
- | Key | Description | Default |
1414
- | --- | ----------- | ------- |
1415
- | `cache_service` | Cache service name used when tracing cache activity | `'<app_name>-cache'` |
1416
- | `controller_service` | Service name used when tracing a Rails action controller | `'<app_name>'` |
1417
- | `database_service` | Database service name used when tracing database activity | `'<app_name>-<adapter_name>'` |
1418
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) so that this service trace is connected with a trace of another service if tracing headers are received | `true` |
1419
- | `exception_controller` | Class or Module which identifies a custom exception controller class. Tracer provides improved error behavior when it can identify custom exception controllers. By default, without this option, it 'guesses' what a custom exception controller looks like. Providing this option aids this identification. | `nil` |
1420
- | `middleware` | Add the trace middleware to the Rails application. Set to `false` if you don't want the middleware to load. | `true` |
1421
- | `middleware_names` | Enables any short-circuited middleware requests to display the middleware name as a resource for the trace. | `false` |
1422
- | `service_name` | Service name used when tracing application requests (on the `rack` level) | `'<app_name>'` (inferred from your Rails application namespace) |
1423
- | `template_base_path` | Used when the template name is parsed. If you don't store your templates in the `views/` folder, you may need to change this value | `'views/'` |
1424
- | `log_injection` | Automatically enables injection [Trace Correlation](#trace-correlation) information, such as `dd.trace_id`, into Rails logs. Supports the default logger (`ActiveSupport::TaggedLogging`) and `Lograge`. Details on the format of Trace Correlation information can be found in the [Trace Correlation](#trace-correlation) section. | `false` |
1425
-
1426
- **Supported versions**
1427
-
1428
- | MRI Versions | JRuby Versions | Rails Versions |
1429
- | ------------- | -------------- | -------------- |
1430
- | 2.0 | | 3.0 - 3.2 |
1431
- | 2.1 | | 3.0 - 4.2 |
1432
- | 2.2 - 2.3 | | 3.0 - 5.2 |
1433
- | 2.4 | | 4.2.8 - 5.2 |
1434
- | 2.5 | | 4.2.8 - 6.1 |
1435
- | 2.6 - 2.7 | 9.2 | 5.0 - 6.1 |
1436
- | 3.0 | | 6.1 |
1437
-
1438
- ### Rake
1439
-
1440
- You can add instrumentation around your Rake tasks by activating the `rake` integration. Each task and its subsequent subtasks will be traced.
1441
-
1442
- To activate Rake task tracing, add the following to your `Rakefile`:
1443
-
1444
- ```ruby
1445
- # At the top of your Rakefile:
1446
- require 'rake'
1447
- require 'ddtrace'
1448
-
1449
- Datadog.configure do |c|
1450
- c.use :rake, options
1451
- end
1452
-
1453
- task :my_task do
1454
- # Do something task work here...
1455
- end
1456
-
1457
- Rake::Task['my_task'].invoke
1458
- ```
1459
-
1460
- Where `options` is an optional `Hash` that accepts the following parameters:
1461
-
1462
- | Key | Description | Default |
1463
- | --- | ----------- | ------- |
1464
- | `enabled` | Defines whether Rake tasks should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
1465
- | `quantize` | Hash containing options for quantization of task arguments. See below for more details and examples. | `{}` |
1466
- | `service_name` | Service name used for `rake` instrumentation | `'rake'` |
1467
-
1468
- **Configuring task quantization behavior**
1469
-
1470
- ```ruby
1471
- Datadog.configure do |c|
1472
- # Given a task that accepts :one, :two, :three...
1473
- # Invoked with 'foo', 'bar', 'baz'.
1474
-
1475
- # Default behavior: all arguments are quantized.
1476
- # `rake.invoke.args` tag --> ['?']
1477
- # `rake.execute.args` tag --> { one: '?', two: '?', three: '?' }
1478
- c.use :rake
1479
-
1480
- # Show values for any argument matching :two exactly
1481
- # `rake.invoke.args` tag --> ['?']
1482
- # `rake.execute.args` tag --> { one: '?', two: 'bar', three: '?' }
1483
- c.use :rake, quantize: { args: { show: [:two] } }
1484
-
1485
- # Show all values for all arguments.
1486
- # `rake.invoke.args` tag --> ['foo', 'bar', 'baz']
1487
- # `rake.execute.args` tag --> { one: 'foo', two: 'bar', three: 'baz' }
1488
- c.use :rake, quantize: { args: { show: :all } }
1489
-
1490
- # Totally exclude any argument matching :three exactly
1491
- # `rake.invoke.args` tag --> ['?']
1492
- # `rake.execute.args` tag --> { one: '?', two: '?' }
1493
- c.use :rake, quantize: { args: { exclude: [:three] } }
1494
-
1495
- # Remove the arguments entirely
1496
- # `rake.invoke.args` tag --> ['?']
1497
- # `rake.execute.args` tag --> {}
1498
- c.use :rake, quantize: { args: { exclude: :all } }
1499
- end
1500
- ```
1501
-
1502
- ### Redis
1503
-
1504
- The Redis integration will trace simple calls as well as pipelines.
1505
-
1506
- ```ruby
1507
- require 'redis'
1508
- require 'ddtrace'
1509
-
1510
- Datadog.configure do |c|
1511
- c.use :redis, options
1512
- end
1513
-
1514
- # Perform Redis commands
1515
- redis = Redis.new
1516
- redis.set 'foo', 'bar'
1517
- ```
1518
-
1519
- Where `options` is an optional `Hash` that accepts the following parameters:
1520
-
1521
- | Key | Description | Default |
1522
- | --- | ----------- | ------- |
1523
- | `service_name` | Service name used for `redis` instrumentation | `'redis'` |
1524
- | `command_args` | Show the command arguments (e.g. `key` in `GET key`) as resource name and tag | true |
1525
-
1526
- You can also set *per-instance* configuration as it follows:
1527
-
1528
- ```ruby
1529
- require 'redis'
1530
- require 'ddtrace'
1531
-
1532
- Datadog.configure do |c|
1533
- c.use :redis # Enabling integration instrumentation is still required
1534
- end
1535
-
1536
- customer_cache = Redis.new
1537
- invoice_cache = Redis.new
1538
-
1539
- Datadog.configure(customer_cache, service_name: 'customer-cache')
1540
- Datadog.configure(invoice_cache, service_name: 'invoice-cache')
1541
-
1542
- # Traced call will belong to `customer-cache` service
1543
- customer_cache.get(...)
1544
- # Traced call will belong to `invoice-cache` service
1545
- invoice_cache.get(...)
1546
- ```
1547
-
1548
- **Configuring trace settings per connection**
1549
-
1550
- You can configure trace settings per connection by using the `describes` option:
1551
-
1552
- ```ruby
1553
- # Provide a `:describes` option with a connection key.
1554
- # Any of the following keys are acceptable and equivalent to one another.
1555
- # If a block is provided, it yields a Settings object that
1556
- # accepts any of the configuration options listed above.
1557
-
1558
- Datadog.configure do |c|
1559
- # The default configuration for any redis client
1560
- c.use :redis, service_name: 'redis-default'
1561
-
1562
- # The configuration matching a given unix socket.
1563
- c.use :redis, describes: { url: 'unix://path/to/file' }, service_name: 'redis-unix'
1564
-
1565
- # For network connections, only these fields are considered during matching:
1566
- # scheme, host, port, db
1567
- # Other fields are ignored.
1568
-
1569
- # Network connection string
1570
- c.use :redis, describes: 'redis://127.0.0.1:6379/0', service_name: 'redis-connection-string'
1571
- c.use :redis, describes: { url: 'redis://127.0.0.1:6379/1' }, service_name: 'redis-connection-url'
1572
- # Network client hash
1573
- c.use :redis, describes: { host: 'my-host.com', port: 6379, db: 1, scheme: 'redis' }, service_name: 'redis-connection-hash'
1574
- # Only a subset of the connection hash
1575
- c.use :redis, describes: { host: ENV['APP_CACHE_HOST'], port: ENV['APP_CACHE_PORT'] }, service_name: 'redis-cache'
1576
- c.use :redis, describes: { host: ENV['SIDEKIQ_CACHE_HOST'] }, service_name: 'redis-sidekiq'
1577
- end
1578
- ```
1579
-
1580
- When multiple `describes` configurations match a connection, the latest configured rule that matches will be applied.
1581
-
1582
- ### Resque
1583
-
1584
- The Resque integration uses Resque hooks that wraps the `perform` method.
1585
-
1586
- To add tracing to a Resque job:
1587
-
1588
- ```ruby
1589
- require 'resque'
1590
- require 'ddtrace'
1591
-
1592
- Datadog.configure do |c|
1593
- c.use :resque, **options
1594
- end
1595
- ```
1596
-
1597
- Where `options` is an optional `Hash` that accepts the following parameters:
1598
-
1599
- | Key | Description | Default |
1600
- | --- | ----------- | ------- |
1601
- | `service_name` | Service name used for `resque` instrumentation | `'resque'` |
1602
- | `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
1603
- | `workers` | **[DEPRECATED]** Limits instrumented worker classes to only the ones specified in an array (e.g. `[MyJob]`). If not provided, instruments all workers. | `nil` |
1604
-
1605
- ### Rest Client
1606
-
1607
- The `rest-client` integration is available through the `ddtrace` middleware:
1608
-
1609
- ```ruby
1610
- require 'rest_client'
1611
- require 'ddtrace'
1612
-
1613
- Datadog.configure do |c|
1614
- c.use :rest_client, options
1615
- end
1616
- ```
1617
-
1618
- Where `options` is an optional `Hash` that accepts the following parameters:
1619
-
1620
- | Key | Description | Default |
1621
- | --- | ----------- | ------- |
1622
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) | `true` |
1623
- | `service_name` | Service name for `rest_client` instrumentation. | `'rest_client'` |
1624
-
1625
- ### RSpec
1626
-
1627
- RSpec integration will trace all executions of example groups and examples when using `rspec` test framework.
1628
-
1629
- To activate your integration, use the `Datadog.configure` method:
1630
-
1631
- ```ruby
1632
- require 'rspec'
1633
- require 'ddtrace'
1634
-
1635
- # Configure default RSpec integration
1636
- Datadog.configure do |c|
1637
- c.use :rspec, options
1638
- end
1639
- ```
1640
-
1641
- Where `options` is an optional `Hash` that accepts the following parameters:
1642
-
1643
- | Key | Description | Default |
1644
- | --- | ----------- | ------- |
1645
- | `enabled` | Defines whether RSpec tests should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
1646
- | `service_name` | Service name used for `rspec` instrumentation. | `'rspec'` |
1647
- | `operation_name` | Operation name used for `rspec` instrumentation. Useful if you want rename automatic trace metrics e.g. `trace.#{operation_name}.errors`. | `'rspec.example'` |
1648
-
1649
- ### Sequel
1650
-
1651
- The Sequel integration traces queries made to your database.
1652
-
1653
- ```ruby
1654
- require 'sequel'
1655
- require 'ddtrace'
1656
-
1657
- # Connect to database
1658
- database = Sequel.sqlite
1659
-
1660
- # Create a table
1661
- database.create_table :articles do
1662
- primary_key :id
1663
- String :name
1664
- end
1665
-
1666
- Datadog.configure do |c|
1667
- c.use :sequel, options
1668
- end
1669
-
1670
- # Perform a query
1671
- articles = database[:articles]
1672
- articles.all
1673
- ```
1674
-
1675
- Where `options` is an optional `Hash` that accepts the following parameters:
1676
-
1677
- | Key | Description | Default |
1678
- | --- | ----------- | ------- |
1679
- | `service_name` | Service name for `sequel` instrumentation | Name of database adapter (e.g. `'mysql2'`) |
1680
-
1681
- Only Ruby 2.0+ is supported.
1682
-
1683
- **Configuring databases to use different settings**
1684
-
1685
- If you use multiple databases with Sequel, you can give each of them different settings by configuring their respective `Sequel::Database` objects:
1686
-
1687
- ```ruby
1688
- sqlite_database = Sequel.sqlite
1689
- postgres_database = Sequel.connect('postgres://user:password@host:port/database_name')
1690
-
1691
- # Configure each database with different service names
1692
- Datadog.configure(sqlite_database, service_name: 'my-sqlite-db')
1693
- Datadog.configure(postgres_database, service_name: 'my-postgres-db')
1694
- ```
1695
-
1696
- ### Shoryuken
1697
-
1698
- The Shoryuken integration is a server-side middleware which will trace job executions.
1699
-
1700
- You can enable it through `Datadog.configure`:
1701
-
1702
- ```ruby
1703
- require 'ddtrace'
1704
-
1705
- Datadog.configure do |c|
1706
- c.use :shoryuken, options
1707
- end
1708
- ```
1709
-
1710
- Where `options` is an optional `Hash` that accepts the following parameters:
1711
-
1712
- | Key | Description | Default |
1713
- | --- | ----------- | ------- |
1714
- | `service_name` | Service name used for `shoryuken` instrumentation | `'shoryuken'` |
1715
- | `tag_body` | Tag spans with the SQS message body `true` or `false` | `false` |
1716
- | `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
1717
-
1718
- ### Sidekiq
1719
-
1720
- The Sidekiq integration is a client-side & server-side middleware which will trace job queuing and executions respectively.
1721
-
1722
- You can enable it through `Datadog.configure`:
1723
-
1724
- ```ruby
1725
- require 'ddtrace'
1726
-
1727
- Datadog.configure do |c|
1728
- c.use :sidekiq, options
1729
- end
1730
- ```
1731
-
1732
- Where `options` is an optional `Hash` that accepts the following parameters:
1733
-
1734
- | Key | Description | Default |
1735
- | --- | ----------- | ------- |
1736
- | `client_service_name` | Service name used for client-side `sidekiq` instrumentation | `'sidekiq-client'` |
1737
- | `service_name` | Service name used for server-side `sidekiq` instrumentation | `'sidekiq'` |
1738
- | `tag_args` | Enable tagging of job arguments. `true` for on, `false` for off. | `false` |
1739
- | `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
1740
-
1741
- ### Sinatra
1742
-
1743
- The Sinatra integration traces requests and template rendering.
1744
-
1745
- To start using the tracing client, make sure you import `ddtrace` and `use :sinatra` after either `sinatra` or `sinatra/base`, and before you define your application/routes:
1746
-
1747
- #### Classic application
1748
-
1749
- ```ruby
1750
- require 'sinatra'
1751
- require 'ddtrace'
1752
-
1753
- Datadog.configure do |c|
1754
- c.use :sinatra, options
1755
- end
1756
-
1757
- get '/' do
1758
- 'Hello world!'
1759
- end
1760
- ```
1761
-
1762
- #### Modular application
1763
-
1764
- ```ruby
1765
- require 'sinatra/base'
1766
- require 'ddtrace'
1767
-
1768
- Datadog.configure do |c|
1769
- c.use :sinatra, options
1770
- end
1771
-
1772
- class NestedApp < Sinatra::Base
1773
- register Datadog::Contrib::Sinatra::Tracer
1774
-
1775
- get '/nested' do
1776
- 'Hello from nested app!'
1777
- end
1778
- end
1779
-
1780
- class App < Sinatra::Base
1781
- register Datadog::Contrib::Sinatra::Tracer
1782
-
1783
- use NestedApp
1784
-
1785
- get '/' do
1786
- 'Hello world!'
1787
- end
1788
- end
1789
- ```
1790
-
1791
- Ensure you register `Datadog::Contrib::Sinatra::Tracer` as a middleware before you mount your nested applications.
1792
-
1793
- #### Instrumentation options
1794
-
1795
- `options` is an optional `Hash` that accepts the following parameters:
1796
-
1797
- | Key | Description | Default |
1798
- | --- | ----------- | ------- |
1799
- | `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) so that this service trace is connected with a trace of another service if tracing headers are received | `true` |
1800
- | `headers` | Hash of HTTP request or response headers to add as tags to the `sinatra.request`. Accepts `request` and `response` keys with Array values e.g. `['Last-Modified']`. Adds `http.request.headers.*` and `http.response.headers.*` tags respectively. | `{ response: ['Content-Type', 'X-Request-ID'] }` |
1801
- | `resource_script_names` | Prepend resource names with script name | `false` |
1802
- | `service_name` | Service name used for `sinatra` instrumentation | `'sinatra'` |
1803
-
1804
- ### Sneakers
1805
-
1806
- The Sneakers integration is a server-side middleware which will trace job executions.
1807
-
1808
- You can enable it through `Datadog.configure`:
1809
-
1810
- ```ruby
1811
- require 'ddtrace'
1812
-
1813
- Datadog.configure do |c|
1814
- c.use :sneakers, options
1815
- end
1816
- ```
1817
-
1818
- Where `options` is an optional `Hash` that accepts the following parameters:
1819
-
1820
- | Key | Description | Default |
1821
- | --- | ----------- | ------- |
1822
- | `enabled` | Defines whether Sneakers should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
1823
- | `service_name` | Service name used for `sneakers` instrumentation | `'sneakers'` |
1824
- | `tag_body` | Enable tagging of job message. `true` for on, `false` for off. | `false` |
1825
- | `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
1826
-
1827
- ### Sucker Punch
1828
-
1829
- The `sucker_punch` integration traces all scheduled jobs:
1830
-
1831
- ```ruby
1832
- require 'ddtrace'
1833
-
1834
- Datadog.configure do |c|
1835
- c.use :sucker_punch, options
1836
- end
1837
-
1838
- # Execution of this job is traced
1839
- LogJob.perform_async('login')
1840
- ```
1841
-
1842
- Where `options` is an optional `Hash` that accepts the following parameters:
1843
-
1844
- | Key | Description | Default |
1845
- | --- | ----------- | ------- |
1846
- | `service_name` | Service name used for `sucker_punch` instrumentation | `'sucker_punch'` |
1847
-
1848
- ## Advanced configuration
1849
-
1850
- ### Tracer settings
1851
-
1852
- To change the default behavior of the Datadog tracer, you can provide custom options inside the `Datadog.configure` block as in:
1853
-
1854
- ```ruby
1855
- # config/initializers/datadog-tracer.rb
1856
-
1857
- Datadog.configure do |c|
1858
- c.tracer.enabled = true
1859
- c.tracer.hostname = 'my-agent'
1860
- c.tracer.port = 8126
1861
-
1862
- # Ensure all traces are ingested by Datadog
1863
- c.sampling.default_rate = 1.0 # Recommended
1864
- c.sampling.rate_limit = 200
1865
- # or provide a custom implementation (overrides c.sampling settings)
1866
- c.tracer.sampler = Datadog::AllSampler.new
1867
-
1868
- # Breaks down very large traces into smaller batches
1869
- c.tracer.partial_flush.enabled = false
1870
-
1871
- # You can specify your own tracer
1872
- c.tracer.instance = Datadog::Tracer.new
1873
-
1874
- # To enable debug mode
1875
- c.diagnostics.debug = true
1876
- end
1877
- ```
1878
-
1879
- Available options are:
1880
-
1881
- - `enabled`: defines if the `tracer` is enabled or not. If set to `false` instrumentation will still run, but no spans are sent to the trace agent. Can be configured through the `DD_TRACE_ENABLED` environment variable. Defaults to `true`.
1882
- - `hostname`: set the hostname of the trace agent.
1883
- - `instance`: set to a custom `Datadog::Tracer` instance. If provided, other trace settings are ignored (you must configure it manually.)
1884
- - `partial_flush.enabled`: set to `true` to enable partial trace flushing (for long running traces.) Disabled by default. *Experimental.*
1885
- - `port`: set the port the trace agent is listening on.
1886
- - `sampling.default_rate`: default tracer sampling rate, between `0.0` (0%) and `1.0` (100%, recommended). `1.0` or Tracing without Limits™, allows you to send all of your traffic and retention can be [configured within the Datadog app](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/). When this configuration is not set, the Datadog agent will keep an intelligent assortment of diverse traces.
1887
- - `sampling.rate_limit`: maximum number of traces per second to sample. Defaults to 100 per second.
1888
- - `sampler`: set to a custom `Datadog::Sampler` instance. If provided, the tracer will use this sampler to determine sampling behavior.
1889
- - `diagnostics.startup_logs.enabled`: Startup configuration and diagnostic log. Defaults to `true`. Can be configured through the `DD_TRACE_STARTUP_LOGS` environment variable.
1890
- - `diagnostics.debug`: set to true to enable debug logging. Can be configured through the `DD_TRACE_DEBUG` environment variable. Defaults to `false`.
1891
- - `time_now_provider`: when testing, it might be helpful to use a different time provider. For Timecop, for example, `->{ Time.now_without_mock_time }` allows the tracer to use the real wall time. Span duration calculation will still use the system monotonic clock when available, thus not being affected by this setting. Defaults to `->{ Time.now }`.
1892
-
1893
- #### Custom logging
1894
-
1895
- By default, all logs are processed by the default Ruby logger. When using Rails, you should see the messages in your application log file.
1896
-
1897
- Datadog client log messages are marked with `[ddtrace]` so you should be able to isolate them from other messages.
1898
-
1899
- Additionally, it is possible to override the default logger and replace it by a custom one. This is done using the `log` setting.
1900
-
1901
- ```ruby
1902
- f = File.new("my-custom.log", "w+") # Log messages should go there
1903
- Datadog.configure do |c|
1904
- c.logger = Logger.new(f) # Overriding the default logger
1905
- c.logger.level = ::Logger::INFO
1906
- end
1907
-
1908
- Datadog.logger.info { "this is typically called by tracing code" }
1909
- ```
1910
-
1911
- ### Environment and tags
1912
-
1913
- By default, the trace agent (not this library, but the program running in the background collecting data from various clients) uses the tags set in the agent config file, see our [environments tutorial](https://app.datadoghq.com/apm/docs/tutorials/environments) for details.
1914
-
1915
- You can configure the application to automatically tag your traces and metrics, using the following environment variables:
1916
-
1917
- - `DD_ENV`: Your application environment (e.g. `production`, `staging`, etc.)
1918
- - `DD_SERVICE`: Your application's default service name (e.g. `billing-api`)
1919
- - `DD_VERSION`: Your application version (e.g. `2.5`, `202003181415`, `1.3-alpha`, etc.)
1920
- - `DD_TAGS`: Custom tags in value pairs separated by `,` (e.g. `layer:api,team:intake`)
1921
- - If `DD_ENV`, `DD_SERVICE` or `DD_VERSION` are set, it will override any respective `env`/`service`/`version` tag defined in `DD_TAGS`.
1922
- - If `DD_ENV`, `DD_SERVICE` or `DD_VERSION` are NOT set, tags defined in `DD_TAGS` will be used to populate `env`/`service`/`version` respectively.
1923
-
1924
- These values can also be overridden at the tracer level:
1925
-
1926
- ```ruby
1927
- Datadog.configure do |c|
1928
- c.service = 'billing-api'
1929
- c.env = 'test'
1930
- c.tags = { 'team' => 'qa' }
1931
- c.version = '1.3-alpha'
1932
- end
1933
- ```
1934
-
1935
- This enables you to set this value on a per application basis, so you can have for example several applications reporting for different environments on the same host.
1936
-
1937
- Tags can also be set directly on individual spans, which will supersede any conflicting tags defined at the application level.
1938
-
1939
- ### Environment variables
1940
-
1941
- Other Environment Variables:
1942
-
1943
- - `DD_TRACE_AGENT_URL`: Sets the URL endpoint where traces are sent. Has priority over `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT` if set. e.g. `DD_TRACE_AGENT_URL=http://localhost:8126`.
1944
- - `DD_TRACE_<INTEGRATION>_ENABLED`: Enables or disables an **activated** integration. Defaults to `true`.. e.g. `DD_TRACE_RAILS_ENABLED=false`. This option has no effects on integrations that have not been explicitly activated (e.g. `Datadog.configure{ |c| c.use :integration }`).on code. This environment variable can only be used to disable an integration.
1945
- - `DD_TRACE_SAMPLE_RATE`: Sets the trace sampling rate between `0.0` (0%) and `1.0` (100%, recommended). `1.0` or Tracing without Limits™, allows you to send all of your traffic and retention can be [configured within the Datadog app](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/). When this configuration is not set, the Datadog agent will keep an intelligent assortment of diverse traces.
1946
- - `DD_LOGS_INJECTION`: Automatically enables injection [Trace Correlation](#trace-correlation) information, such as `dd.trace_id`, into Rails logs. Supports the default logger (`ActiveSupport::TaggedLogging`) and `Lograge`. Details on the format of Trace Correlation information can be found in the [Trace Correlation](#trace-correlation) section. Valid values are: `true` or `false`(default). e.g. `DD_LOGS_INJECTION=true`.
1947
-
1948
- ### Sampling
1949
-
1950
- Datadog's Tracing without Limits™ allows you to send all of your traffic and [configure retention within the Datadog app](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/).
1951
-
1952
- We recommend setting the environment variable `DD_TRACE_SAMPLE_RATE=1.0` in all new applications using `ddtrace`.
1953
-
1954
- App Analytics, previously configured with the `analytics_enabled` setting, is deprecated in favor of Tracing without Limits™. Documentation for this [deprecated configuration is still available](https://docs.datadoghq.com/tracing/legacy_app_analytics/).
1955
-
1956
- #### Application-side sampling
1957
-
1958
- While the trace agent can sample traces to reduce bandwidth usage, application-side sampling reduces the performance overhead.
1959
-
1960
- This will **reduce visibility and is not recommended**. See [DD_TRACE_SAMPLE_RATE](#environment-variables) for the recommended sampling approach.
1961
-
1962
- `Datadog::RateSampler` samples a ratio of the traces. For example:
1963
-
1964
- ```ruby
1965
- # Sample rate is between 0 (nothing sampled) to 1 (everything sampled).
1966
- sampler = Datadog::RateSampler.new(0.5) # sample 50% of the traces
1967
-
1968
- Datadog.configure do |c|
1969
- c.tracer.sampler = sampler
1970
- end
1971
- ```
1972
-
1973
- #### Priority sampling
1974
-
1975
- Priority sampling decides whether to keep a trace by using a priority attribute propagated for distributed traces. Its value indicates to the Agent and the backend about how important the trace is.
1976
-
1977
- The sampler can set the priority to the following values:
1978
-
1979
- - `Datadog::Ext::Priority::AUTO_REJECT`: the sampler automatically decided to reject the trace.
1980
- - `Datadog::Ext::Priority::AUTO_KEEP`: the sampler automatically decided to keep the trace.
1981
-
1982
- Priority sampling is enabled by default. Enabling it ensures that your sampled distributed traces will be complete. Once enabled, the sampler will automatically assign a priority of 0 or 1 to traces, depending on their service and volume.
1983
-
1984
- You can also set this priority manually to either drop a non-interesting trace or to keep an important one. For that, set the `context#sampling_priority` to:
1985
-
1986
- - `Datadog::Ext::Priority::USER_REJECT`: the user asked to reject the trace.
1987
- - `Datadog::Ext::Priority::USER_KEEP`: the user asked to keep the trace.
1988
-
1989
- When not using [distributed tracing](#distributed-tracing), you may change the priority at any time, as long as the trace incomplete. But it has to be done before any context propagation (fork, RPC calls) to be useful in a distributed context. Changing the priority after the context has been propagated causes different parts of a distributed trace to use different priorities. Some parts might be kept, some parts might be rejected, and this can cause the trace to be partially stored and remain incomplete.
1990
-
1991
- If you change the priority, we recommend you do it as soon as possible - when the root span has just been created.
1992
-
1993
- ```ruby
1994
- # First, grab the active span
1995
- span = Datadog.tracer.active_span
1996
-
1997
- # Indicate to reject the trace
1998
- span.context.sampling_priority = Datadog::Ext::Priority::USER_REJECT
1999
-
2000
- # Indicate to keep the trace
2001
- span.context.sampling_priority = Datadog::Ext::Priority::USER_KEEP
2002
- ```
2003
-
2004
- ### Distributed Tracing
2005
-
2006
- Distributed tracing allows traces to be propagated across multiple instrumented applications so that a request can be presented as a single trace, rather than a separate trace per service.
2007
-
2008
- To trace requests across application boundaries, the following must be propagated between each application:
2009
-
2010
- | Property | Type | Description |
2011
- | --------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- |
2012
- | **Trace ID** | Integer | ID of the trace. This value should be the same across all requests that belong to the same trace. |
2013
- | **Parent Span ID** | Integer | ID of the span in the service originating the request. This value will always be different for each request within a trace. |
2014
- | **Sampling Priority** | Integer | Sampling priority level for the trace. This value should be the same across all requests that belong to the same trace. |
2015
-
2016
- Such propagation can be visualized as:
2017
-
2018
- ```
2019
- Service A:
2020
- Trace ID: 100000000000000001
2021
- Parent ID: 0
2022
- Span ID: 100000000000000123
2023
- Priority: 1
2024
-
2025
- |
2026
- | Service B Request:
2027
- | Metadata:
2028
- | Trace ID: 100000000000000001
2029
- | Parent ID: 100000000000000123
2030
- | Priority: 1
2031
- |
2032
- V
2033
-
2034
- Service B:
2035
- Trace ID: 100000000000000001
2036
- Parent ID: 100000000000000123
2037
- Span ID: 100000000000000456
2038
- Priority: 1
2039
-
2040
- |
2041
- | Service C Request:
2042
- | Metadata:
2043
- | Trace ID: 100000000000000001
2044
- | Parent ID: 100000000000000456
2045
- | Priority: 1
2046
- |
2047
- V
2048
-
2049
- Service C:
2050
- Trace ID: 100000000000000001
2051
- Parent ID: 100000000000000456
2052
- Span ID: 100000000000000789
2053
- Priority: 1
2054
- ```
2055
-
2056
- **Via HTTP**
2057
-
2058
- For HTTP requests between instrumented applications, this trace metadata is propagated by use of HTTP Request headers:
2059
-
2060
- | Property | Type | HTTP Header name |
2061
- | --------------------- | ------- | ----------------------------- |
2062
- | **Trace ID** | Integer | `x-datadog-trace-id` |
2063
- | **Parent Span ID** | Integer | `x-datadog-parent-id` |
2064
- | **Sampling Priority** | Integer | `x-datadog-sampling-priority` |
2065
-
2066
- Such that:
2067
-
2068
- ```
2069
- Service A:
2070
- Trace ID: 100000000000000001
2071
- Parent ID: 0
2072
- Span ID: 100000000000000123
2073
- Priority: 1
2074
-
2075
- |
2076
- | Service B HTTP Request:
2077
- | Headers:
2078
- | x-datadog-trace-id: 100000000000000001
2079
- | x-datadog-parent-id: 100000000000000123
2080
- | x-datadog-sampling-priority: 1
2081
- |
2082
- V
2083
-
2084
- Service B:
2085
- Trace ID: 100000000000000001
2086
- Parent ID: 100000000000000123
2087
- Span ID: 100000000000000456
2088
- Priority: 1
2089
-
2090
- |
2091
- | Service C HTTP Request:
2092
- | Headers:
2093
- | x-datadog-trace-id: 100000000000000001
2094
- | x-datadog-parent-id: 100000000000000456
2095
- | x-datadog-sampling-priority: 1
2096
- |
2097
- V
2098
-
2099
- Service C:
2100
- Trace ID: 100000000000000001
2101
- Parent ID: 100000000000000456
2102
- Span ID: 100000000000000789
2103
- Priority: 1
2104
- ```
2105
-
2106
- **Activating distributed tracing for integrations**
2107
-
2108
- Many integrations included in `ddtrace` support distributed tracing. Distributed tracing is enabled by default in Agent v7 and most versions of Agent v6. If needed, you can activate distributed tracing with configuration settings.
2109
-
2110
- - If your application receives requests from services with distributed tracing activated, you must activate distributed tracing on the integrations that handle these requests (e.g. Rails)
2111
- - If your application send requests to services with distributed tracing activated, you must activate distributed tracing on the integrations that send these requests (e.g. Faraday)
2112
- - If your application both sends and receives requests implementing distributed tracing, it must activate all integrations that handle these requests.
2113
-
2114
- For more details on how to activate distributed tracing for integrations, see their documentation:
2115
-
2116
- - [Excon](#excon)
2117
- - [Faraday](#faraday)
2118
- - [Rest Client](#rest-client)
2119
- - [Net/HTTP](#nethttp)
2120
- - [Rack](#rack)
2121
- - [Rails](#rails)
2122
- - [Sinatra](#sinatra)
2123
- - [http.rb](#http-rb)
2124
- - [httpclient](#httpclient)
2125
- - [httpx](#httpx)
2126
-
2127
- **Using the HTTP propagator**
2128
-
2129
- To make the process of propagating this metadata easier, you can use the `Datadog::HTTPPropagator` module.
2130
-
2131
- On the client:
2132
-
2133
- ```ruby
2134
- Datadog.tracer.trace('web.call') do |span|
2135
- # Inject span context into headers (`env` must be a Hash)
2136
- Datadog::HTTPPropagator.inject!(span.context, env)
2137
- end
2138
- ```
2139
-
2140
- On the server:
2141
-
2142
- ```ruby
2143
- Datadog.tracer.trace('web.work') do |span|
2144
- # Build a context from headers (`env` must be a Hash)
2145
- context = HTTPPropagator.extract(request.env)
2146
- Datadog.tracer.provider.context = context if context.trace_id
2147
- end
2148
- ```
2149
-
2150
- ### HTTP request queuing
2151
-
2152
- Traces that originate from HTTP requests can be configured to include the time spent in a frontend web server or load balancer queue before the request reaches the Ruby application.
2153
-
2154
- This feature is disabled by default. To activate it, you must add an `X-Request-Start` or `X-Queue-Start` header from your web server (i.e., Nginx). The following is an Nginx configuration example:
2155
-
2156
- ```
2157
- # /etc/nginx/conf.d/ruby_service.conf
2158
- server {
2159
- listen 8080;
2160
-
2161
- location / {
2162
- proxy_set_header X-Request-Start "t=${msec}";
2163
- proxy_pass http://web:3000;
2164
- }
2165
- }
2166
- ```
2167
-
2168
- Then you must enable the request queuing feature, by setting `request_queuing: true`, in the integration handling the request. For Rack-based applications, see the [documentation](#rack) for details.
2169
-
2170
- ### Processing Pipeline
2171
-
2172
- Some applications might require that traces be altered or filtered out before they are sent upstream. The processing pipeline allows users to create *processors* to define such behavior.
2173
-
2174
- Processors can be any object that responds to `#call` accepting `trace` as an argument (which is an `Array` of `Datadog::Span`s.)
2175
-
2176
- For example:
2177
-
2178
- ```ruby
2179
- lambda_processor = ->(trace) do
2180
- # Processing logic...
2181
- trace
2182
- end
2183
-
2184
- class MyCustomProcessor
2185
- def call(trace)
2186
- # Processing logic...
2187
- trace
2188
- end
2189
- end
2190
- custom_processor = MyFancyProcessor.new
2191
- ```
2192
-
2193
- `#call` blocks of processors *must* return the `trace` object; this return value will be passed to the next processor in the pipeline.
2194
-
2195
- These processors must then be added to the pipeline via `Datadog::Pipeline.before_flush`:
2196
-
2197
- ```ruby
2198
- Datadog::Pipeline.before_flush(lambda_processor, custom_processor)
2199
- ```
2200
-
2201
- You can also define processors using the short-hand block syntax for `Datadog::Pipeline.before_flush`:
2202
-
2203
- ```ruby
2204
- Datadog::Pipeline.before_flush do |trace|
2205
- trace.delete_if { |span| span.name =~ /forbidden/ }
2206
- end
2207
- ```
2208
-
2209
- #### Filtering
2210
-
2211
- You can use the `Datadog::Pipeline::SpanFilter` processor to remove spans, when the block evaluates as truthy:
2212
-
2213
- ```ruby
2214
- Datadog::Pipeline.before_flush(
2215
- # Remove spans that match a particular resource
2216
- Datadog::Pipeline::SpanFilter.new { |span| span.resource =~ /PingController/ },
2217
- # Remove spans that are trafficked to localhost
2218
- Datadog::Pipeline::SpanFilter.new { |span| span.get_tag('host') == 'localhost' }
2219
- )
2220
- ```
2221
-
2222
- #### Processing
2223
-
2224
- You can use the `Datadog::Pipeline::SpanProcessor` processor to modify spans:
2225
-
2226
- ```ruby
2227
- Datadog::Pipeline.before_flush(
2228
- # Strip matching text from the resource field
2229
- Datadog::Pipeline::SpanProcessor.new { |span| span.resource.gsub!(/password=.*/, '') }
2230
- )
2231
- ```
2232
-
2233
- ### Trace correlation
2234
-
2235
- In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross-referencing.
2236
-
2237
- #### For logging in Rails applications
2238
-
2239
- ##### Automatic
2240
-
2241
- For Rails applications using the default logger (`ActiveSupport::TaggedLogging`) or `lograge`, you can automatically enable trace correlation injection by setting the `rails` instrumentation configuration option `log_injection` to `true` or by setting environment variable `DD_LOGS_INJECTION=true`:
2242
-
2243
- ```ruby
2244
- # config/initializers/datadog.rb
2245
- require 'ddtrace'
2246
-
2247
- Datadog.configure do |c|
2248
- c.use :rails, log_injection: true
2249
- end
2250
- ```
2251
-
2252
- _Note:_ For `lograge` users who have also defined `lograge.custom_options` in an `initializers/lograge.rb` configuration file, due to the order that Rails loads initializers (alphabetical), automatic trace correlation may not take effect, since `initializers/datadog.rb` would be overwritten by the `initializers/lograge.rb` initializer. To support automatic trace correlation with _existing_ `lograge.custom_options`, use the [Manual (Lograge)](#manual-lograge) configuration below.
2253
-
2254
- ##### Manual (Lograge)
2255
-
2256
- After [setting up Lograge in a Rails application](https://docs.datadoghq.com/logs/log_collection/ruby/), manually modify the `custom_options` block in your environment configuration file (e.g. `config/environments/production.rb`) to add the trace IDs.
2257
-
2258
- ```ruby
2259
- config.lograge.custom_options = lambda do |event|
2260
- # Retrieves trace information for current thread
2261
- correlation = Datadog.tracer.active_correlation
2262
-
2263
- {
2264
- # Adds IDs as tags to log output
2265
- :dd => {
2266
- # To preserve precision during JSON serialization, use strings for large numbers
2267
- :trace_id => correlation.trace_id.to_s,
2268
- :span_id => correlation.span_id.to_s,
2269
- :env => correlation.env.to_s,
2270
- :service => correlation.service.to_s,
2271
- :version => correlation.version.to_s
2272
- },
2273
- :ddsource => ["ruby"],
2274
- :params => event.payload[:params].reject { |k| %w(controller action).include? k }
2275
- }
2276
- end
2277
- ```
2278
-
2279
- ##### Manual (ActiveSupport::TaggedLogging)
2280
-
2281
- Rails applications which are configured with the default `ActiveSupport::TaggedLogging` logger can append correlation IDs as tags to log output. To enable Trace Correlation with `ActiveSupport::TaggedLogging`, in your Rails environment configuration file, add the following:
2282
-
2283
- ```ruby
2284
- Rails.application.configure do
2285
- config.log_tags = [proc { Datadog.tracer.active_correlation.to_s }]
2286
- end
2287
-
2288
- # Given:
2289
- # DD_ENV = 'production' (The name of the environment your application is running in.)
2290
- # DD_SERVICE = 'billing-api' (Default service name of your application.)
2291
- # DD_VERSION = '2.5.17' (The version of your application.)
2292
-
2293
- # Web requests will produce:
2294
- # [dd.env=production dd.service=billing-api dd.version=2.5.17 dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Started GET "/articles" for 172.22.0.1 at 2019-01-16 18:50:57 +0000
2295
- # [dd.env=production dd.service=billing-api dd.version=2.5.17 dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Processing by ArticlesController#index as */*
2296
- # [dd.env=production dd.service=billing-api dd.version=2.5.17 dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Article Load (0.5ms) SELECT "articles".* FROM "articles"
2297
- # [dd.env=production dd.service=billing-api dd.version=2.5.17 dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Completed 200 OK in 7ms (Views: 5.5ms | ActiveRecord: 0.5ms)
2298
- ```
2299
-
2300
- #### For logging in Ruby applications
2301
-
2302
- To add correlation IDs to your logger, add a log formatter which retrieves the correlation IDs with `Datadog.tracer.active_correlation`, then add them to the message.
2303
-
2304
- To properly correlate with Datadog logging, be sure the following is present in the log message, in order as they appear:
2305
-
2306
- - `dd.env=<ENV>`: Where `<ENV>` is equal to `Datadog.tracer.active_correlation.env`. Omit if no environment is configured.
2307
- - `dd.service=<SERVICE>`: Where `<SERVICE>` is equal to `Datadog.tracer.active_correlation.service`. Omit if no default service name is configured.
2308
- - `dd.version=<VERSION>`: Where `<VERSION>` is equal to `Datadog.tracer.active_correlation.version`. Omit if no application version is configured.
2309
- - `dd.trace_id=<TRACE_ID>`: Where `<TRACE_ID>` is equal to `Datadog.tracer.active_correlation.trace_id` or `0` if no trace is active during logging.
2310
- - `dd.span_id=<SPAN_ID>`: Where `<SPAN_ID>` is equal to `Datadog.tracer.active_correlation.span_id` or `0` if no trace is active during logging.
2311
-
2312
- By default, `Datadog::Correlation::Identifier#to_s` will return `dd.env=<ENV> dd.service=<SERVICE> dd.version=<VERSION> dd.trace_id=<TRACE_ID> dd.span_id=<SPAN_ID>`.
2313
-
2314
- If a trace is not active and the application environment & version is not configured, it will return `dd.trace_id=0 dd.span_id=0 dd.env= dd.version=`.
2315
-
2316
- An example of this in practice:
2317
-
2318
- ```ruby
2319
- require 'ddtrace'
2320
- require 'logger'
2321
-
2322
- ENV['DD_ENV'] = 'production'
2323
- ENV['DD_SERVICE'] = 'billing-api'
2324
- ENV['DD_VERSION'] = '2.5.17'
2325
-
2326
- logger = Logger.new(STDOUT)
2327
- logger.progname = 'my_app'
2328
- logger.formatter = proc do |severity, datetime, progname, msg|
2329
- "[#{datetime}][#{progname}][#{severity}][#{Datadog.tracer.active_correlation}] #{msg}\n"
2330
- end
2331
-
2332
- # When no trace is active
2333
- logger.warn('This is an untraced operation.')
2334
- # [2019-01-16 18:38:41 +0000][my_app][WARN][dd.env=production dd.service=billing-api dd.version=2.5.17 dd.trace_id=0 dd.span_id=0] This is an untraced operation.
2335
-
2336
- # When a trace is active
2337
- Datadog.tracer.trace('my.operation') { logger.warn('This is a traced operation.') }
2338
- # [2019-01-16 18:38:41 +0000][my_app][WARN][dd.env=production dd.service=billing-api dd.version=2.5.17 dd.trace_id=8545847825299552251 dd.span_id=3711755234730770098] This is a traced operation.
2339
- ```
2340
-
2341
- ### Configuring the transport layer
2342
-
2343
- By default, the tracer submits trace data using `Net::HTTP` to `127.0.0.1:8126`, the default location for the Datadog trace agent process. However, the tracer can be configured to send its trace data to alternative destinations, or by alternative protocols.
2344
-
2345
- Some basic settings, such as hostname and port, can be configured using [tracer settings](#tracer-settings).
2346
-
2347
- #### Using the Net::HTTP adapter
2348
-
2349
- The `Net` adapter submits traces using `Net::HTTP` over TCP. It is the default transport adapter.
2350
-
2351
- ```ruby
2352
- Datadog.configure do |c|
2353
- c.tracer.transport_options = proc { |t|
2354
- # Hostname, port, and additional options. :timeout is in seconds.
2355
- t.adapter :net_http, '127.0.0.1', 8126, { timeout: 1 }
2356
- }
2357
- end
2358
- ```
2359
-
2360
- #### Using the Unix socket adapter
2361
-
2362
- The `UnixSocket` adapter submits traces using `Net::HTTP` over Unix socket.
2363
-
2364
- To use, first configure your trace agent to listen by Unix socket, then configure the tracer with:
2365
-
2366
- ```ruby
2367
- Datadog.configure do |c|
2368
- c.tracer.transport_options = proc { |t|
2369
- # Provide filepath to trace agent Unix socket
2370
- t.adapter :unix, '/tmp/ddagent/trace.sock'
2371
- }
2372
- end
2373
- ```
2374
-
2375
- #### Using the transport test adapter
2376
-
2377
- The `Test` adapter is a no-op transport that can optionally buffer requests. For use in test suites or other non-production environments.
2378
-
2379
- ```ruby
2380
- Datadog.configure do |c|
2381
- c.tracer.transport_options = proc { |t|
2382
- # Set transport to no-op mode. Does not retain traces.
2383
- t.adapter :test
2384
-
2385
- # Alternatively, you can provide a buffer to examine trace output.
2386
- # The buffer must respond to '<<'.
2387
- t.adapter :test, []
2388
- }
2389
- end
2390
- ```
2391
-
2392
- #### Using a custom transport adapter
2393
-
2394
- Custom adapters can be configured with:
2395
-
2396
- ```ruby
2397
- Datadog.configure do |c|
2398
- c.tracer.transport_options = proc { |t|
2399
- # Initialize and pass an instance of the adapter
2400
- custom_adapter = CustomAdapter.new
2401
- t.adapter custom_adapter
2402
- }
2403
- end
2404
- ```
2405
-
2406
- ### Metrics
2407
-
2408
- The tracer and its integrations can produce some additional metrics that can provide useful insight into the performance of your application. These metrics are collected with `dogstatsd-ruby`, and can be sent to the same Datadog agent to which you send your traces.
2409
-
2410
- To configure your application for metrics collection:
2411
-
2412
- 1. [Configure your Datadog agent for StatsD](https://docs.datadoghq.com/developers/dogstatsd/#setup)
2413
- 2. Add `gem 'dogstatsd-ruby'` to your Gemfile
2414
-
2415
- #### For application runtime
2416
-
2417
- If runtime metrics are configured, the trace library will automatically collect and send metrics about the health of your application.
2418
-
2419
- To configure runtime metrics, add the following configuration:
2420
-
2421
- ```ruby
2422
- # config/initializers/datadog.rb
2423
- require 'datadog/statsd'
2424
- require 'ddtrace'
2425
-
2426
- Datadog.configure do |c|
2427
- # To enable runtime metrics collection, set `true`. Defaults to `false`
2428
- # You can also set DD_RUNTIME_METRICS_ENABLED=true to configure this.
2429
- c.runtime_metrics.enabled = true
2430
-
2431
- # Optionally, you can configure the Statsd instance used for sending runtime metrics.
2432
- # Statsd is automatically configured with default settings if `dogstatsd-ruby` is available.
2433
- # You can configure with host and port of Datadog agent; defaults to 'localhost:8125'.
2434
- c.runtime_metrics.statsd = Datadog::Statsd.new
2435
- end
2436
- ```
2437
-
2438
- See the [Dogstatsd documentation](https://www.rubydoc.info/github/DataDog/dogstatsd-ruby/master/frames) for more details about configuring `Datadog::Statsd`.
2439
-
2440
- The stats are VM specific and will include:
2441
-
2442
- | Name | Type | Description |
2443
- | -------------------------- | ------- | -------------------------------------------------------- |
2444
- | `runtime.ruby.class_count` | `gauge` | Number of classes in memory space. |
2445
- | `runtime.ruby.thread_count` | `gauge` | Number of threads. |
2446
- | `runtime.ruby.gc.*`. | `gauge` | Garbage collection statistics: collected from `GC.stat`. |
2447
-
2448
- In addition, all metrics include the following tags:
2449
-
2450
- | Name | Description |
2451
- | ------------ | ------------------------------------------------------- |
2452
- | `language` | Programming language traced. (e.g. `ruby`) |
2453
- | `service` | List of services this associated with this metric. |
2454
-
2455
- ### OpenTracing
2456
-
2457
- For setting up Datadog with OpenTracing, see out [Quickstart for OpenTracing](#quickstart-for-opentracing) section for details.
2458
-
2459
- **Configuring Datadog tracer settings**
2460
-
2461
- The underlying Datadog tracer can be configured by passing options (which match `Datadog::Tracer`) when configuring the global tracer:
2462
-
2463
- ```ruby
2464
- # Where `options` is a Hash of options provided to Datadog::Tracer
2465
- OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new(options)
2466
- ```
2467
-
2468
- It can also be configured by using `Datadog.configure` described in the [Tracer settings](#tracer-settings) section.
2469
-
2470
- **Activating and configuring integrations**
2471
-
2472
- By default, configuring OpenTracing with Datadog will not automatically activate any additional instrumentation provided by Datadog. You will only receive spans and traces from OpenTracing instrumentation you have in your application.
2473
-
2474
- However, additional instrumentation provided by Datadog can be activated alongside OpenTracing using `Datadog.configure`, which can be used to enhance your tracing further. To activate this, see [Integration instrumentation](#integration-instrumentation) for more details.
2475
-
2476
- **Supported serialization formats**
2477
-
2478
- | Type | Supported? | Additional information |
2479
- | ------------------------------ | ---------- | ---------------------- |
2480
- | `OpenTracing::FORMAT_TEXT_MAP` | Yes | |
2481
- | `OpenTracing::FORMAT_RACK` | Yes | Because of the loss of resolution in the Rack format, please note that baggage items with names containing either upper case characters or `-` will be converted to lower case and `_` in a round-trip respectively. We recommend avoiding these characters or accommodating accordingly on the receiving end. |
2482
- | `OpenTracing::FORMAT_BINARY` | No | |