ddtrace 1.0.0.beta1 → 1.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (592) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +85 -1
  3. data/ddtrace.gemspec +2 -2
  4. data/docs/GettingStarted.md +211 -144
  5. data/docs/UpgradeGuide.md +383 -205
  6. data/ext/ddtrace_profiling_native_extension/extconf.rb +9 -0
  7. data/ext/ddtrace_profiling_native_extension/profiling.c +3 -1
  8. data/lib/datadog/appsec/assets/waf_rules/recommended.json +248 -318
  9. data/lib/datadog/appsec/assets/waf_rules/risky.json +78 -18
  10. data/lib/datadog/appsec/assets/waf_rules/strict.json +4 -67
  11. data/lib/datadog/appsec/assets.rb +2 -0
  12. data/lib/datadog/appsec/configuration/settings.rb +3 -1
  13. data/lib/datadog/appsec/configuration.rb +2 -0
  14. data/lib/datadog/appsec/contrib/auto_instrument.rb +2 -0
  15. data/lib/datadog/appsec/contrib/configuration/settings.rb +2 -0
  16. data/lib/datadog/appsec/contrib/integration.rb +2 -0
  17. data/lib/datadog/appsec/contrib/patcher.rb +2 -0
  18. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +2 -0
  19. data/lib/datadog/appsec/contrib/rack/ext.rb +2 -0
  20. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +2 -4
  21. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +4 -2
  22. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +4 -2
  23. data/lib/datadog/appsec/contrib/rack/request.rb +2 -0
  24. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +4 -45
  25. data/lib/datadog/appsec/contrib/rack/response.rb +2 -0
  26. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +2 -0
  27. data/lib/datadog/appsec/contrib/rails/ext.rb +2 -0
  28. data/lib/datadog/appsec/contrib/rails/framework.rb +2 -0
  29. data/lib/datadog/appsec/contrib/rails/patcher.rb +1 -1
  30. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +2 -0
  31. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +2 -0
  32. data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -0
  33. data/lib/datadog/appsec/contrib/sinatra/framework.rb +2 -0
  34. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +2 -0
  35. data/lib/datadog/appsec/event.rb +12 -17
  36. data/lib/datadog/appsec/extensions.rb +2 -1
  37. data/lib/datadog/appsec/instrumentation/gateway.rb +2 -0
  38. data/lib/datadog/appsec/processor.rb +121 -0
  39. data/lib/datadog/appsec/rate_limiter.rb +2 -0
  40. data/lib/datadog/appsec/reactive/address_hash.rb +2 -0
  41. data/lib/datadog/appsec/reactive/engine.rb +2 -0
  42. data/lib/datadog/appsec/reactive/operation.rb +2 -0
  43. data/lib/datadog/appsec/reactive/subscriber.rb +2 -0
  44. data/lib/datadog/appsec.rb +2 -0
  45. data/lib/datadog/ci/configuration/components.rb +1 -0
  46. data/lib/datadog/ci/configuration/settings.rb +9 -2
  47. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +1 -0
  48. data/lib/datadog/ci/contrib/cucumber/ext.rb +1 -0
  49. data/lib/datadog/ci/contrib/cucumber/formatter.rb +2 -1
  50. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -0
  51. data/lib/datadog/ci/contrib/cucumber/integration.rb +1 -0
  52. data/lib/datadog/ci/contrib/cucumber/patcher.rb +1 -0
  53. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +1 -0
  54. data/lib/datadog/ci/contrib/rspec/example.rb +3 -2
  55. data/lib/datadog/ci/contrib/rspec/ext.rb +1 -0
  56. data/lib/datadog/ci/contrib/rspec/integration.rb +1 -0
  57. data/lib/datadog/ci/contrib/rspec/patcher.rb +1 -0
  58. data/lib/datadog/ci/ext/app_types.rb +1 -0
  59. data/lib/datadog/ci/ext/environment.rb +2 -1
  60. data/lib/datadog/ci/ext/settings.rb +1 -0
  61. data/lib/datadog/ci/ext/test.rb +1 -0
  62. data/lib/datadog/ci/extensions.rb +1 -0
  63. data/lib/datadog/ci/flush.rb +1 -0
  64. data/lib/datadog/ci/test.rb +2 -1
  65. data/lib/datadog/ci.rb +3 -1
  66. data/lib/datadog/core/buffer/cruby.rb +1 -0
  67. data/lib/datadog/core/buffer/thread_safe.rb +1 -0
  68. data/lib/datadog/core/configuration/agent_settings_resolver.rb +109 -40
  69. data/lib/datadog/core/configuration/base.rb +1 -0
  70. data/lib/datadog/core/configuration/components.rb +1 -0
  71. data/lib/datadog/core/configuration/dependency_resolver.rb +1 -0
  72. data/lib/datadog/core/configuration/option.rb +1 -0
  73. data/lib/datadog/core/configuration/option_definition.rb +1 -0
  74. data/lib/datadog/core/configuration/option_definition_set.rb +1 -0
  75. data/lib/datadog/core/configuration/option_set.rb +1 -0
  76. data/lib/datadog/core/configuration/options.rb +1 -0
  77. data/lib/datadog/core/configuration/settings.rb +1 -9
  78. data/lib/datadog/core/configuration.rb +1 -0
  79. data/lib/datadog/core/diagnostics/environment_logger.rb +2 -1
  80. data/lib/datadog/core/diagnostics/ext.rb +1 -0
  81. data/lib/datadog/core/diagnostics/health.rb +2 -1
  82. data/lib/datadog/core/encoding.rb +1 -0
  83. data/lib/datadog/core/environment/cgroup.rb +1 -0
  84. data/lib/datadog/core/environment/class_count.rb +1 -0
  85. data/lib/datadog/core/environment/container.rb +1 -0
  86. data/lib/datadog/core/environment/ext.rb +1 -0
  87. data/lib/datadog/core/environment/gc.rb +1 -0
  88. data/lib/datadog/core/environment/identity.rb +1 -0
  89. data/lib/datadog/core/environment/socket.rb +1 -0
  90. data/lib/datadog/core/environment/thread_count.rb +1 -0
  91. data/lib/datadog/core/environment/variable_helpers.rb +1 -0
  92. data/lib/datadog/core/environment/vm_cache.rb +1 -0
  93. data/lib/datadog/core/error.rb +2 -1
  94. data/lib/datadog/core/extensions.rb +2 -1
  95. data/lib/datadog/core/git/ext.rb +1 -0
  96. data/lib/datadog/core/logger.rb +1 -0
  97. data/lib/datadog/core/metrics/client.rb +1 -0
  98. data/lib/datadog/core/metrics/ext.rb +1 -0
  99. data/lib/datadog/core/metrics/helpers.rb +2 -0
  100. data/lib/datadog/core/metrics/logging.rb +2 -0
  101. data/lib/datadog/core/metrics/metric.rb +2 -0
  102. data/lib/datadog/core/metrics/options.rb +2 -0
  103. data/lib/datadog/core/pin.rb +1 -1
  104. data/lib/datadog/core/runtime/metrics.rb +1 -0
  105. data/lib/datadog/core/utils/compression.rb +1 -0
  106. data/lib/datadog/core/utils/forking.rb +1 -0
  107. data/lib/datadog/core/utils/object_set.rb +1 -0
  108. data/lib/datadog/core/utils/only_once.rb +2 -1
  109. data/lib/datadog/core/utils/safe_dup.rb +27 -0
  110. data/lib/datadog/core/utils/sequence.rb +1 -0
  111. data/lib/datadog/core/utils/string_table.rb +1 -0
  112. data/lib/datadog/core/utils/time.rb +1 -0
  113. data/lib/datadog/core/utils.rb +1 -0
  114. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -0
  115. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +1 -0
  116. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +1 -0
  117. data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +1 -0
  118. data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +1 -0
  119. data/lib/datadog/core/vendor/multipart-post/multipart.rb +1 -0
  120. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +1 -0
  121. data/lib/datadog/core/worker.rb +1 -0
  122. data/lib/datadog/core/workers/async.rb +1 -0
  123. data/lib/datadog/core/workers/interval_loop.rb +1 -0
  124. data/lib/datadog/core/workers/polling.rb +1 -0
  125. data/lib/datadog/core/workers/queue.rb +1 -0
  126. data/lib/datadog/core/workers/runtime_metrics.rb +1 -0
  127. data/lib/datadog/core.rb +1 -0
  128. data/lib/datadog/opentracer/binary_propagator.rb +1 -0
  129. data/lib/datadog/opentracer/carrier.rb +1 -0
  130. data/lib/datadog/opentracer/distributed_headers.rb +1 -0
  131. data/lib/datadog/opentracer/global_tracer.rb +1 -0
  132. data/lib/datadog/opentracer/propagator.rb +1 -0
  133. data/lib/datadog/opentracer/rack_propagator.rb +1 -0
  134. data/lib/datadog/opentracer/scope.rb +1 -0
  135. data/lib/datadog/opentracer/scope_manager.rb +1 -0
  136. data/lib/datadog/opentracer/span.rb +1 -0
  137. data/lib/datadog/opentracer/span_context.rb +1 -0
  138. data/lib/datadog/opentracer/span_context_factory.rb +1 -0
  139. data/lib/datadog/opentracer/text_map_propagator.rb +1 -0
  140. data/lib/datadog/opentracer/thread_local_scope.rb +1 -0
  141. data/lib/datadog/opentracer/thread_local_scope_manager.rb +1 -0
  142. data/lib/datadog/opentracer/tracer.rb +1 -0
  143. data/lib/datadog/opentracer.rb +1 -0
  144. data/lib/datadog/profiling/backtrace_location.rb +1 -0
  145. data/lib/datadog/profiling/buffer.rb +1 -0
  146. data/lib/datadog/profiling/collectors/code_provenance.rb +2 -1
  147. data/lib/datadog/profiling/collectors/stack.rb +1 -1
  148. data/lib/datadog/profiling/encoding/profile.rb +1 -0
  149. data/lib/datadog/profiling/event.rb +1 -0
  150. data/lib/datadog/profiling/events/stack.rb +1 -0
  151. data/lib/datadog/profiling/exporter.rb +1 -0
  152. data/lib/datadog/profiling/ext/forking.rb +1 -0
  153. data/lib/datadog/profiling/ext.rb +3 -2
  154. data/lib/datadog/profiling/flush.rb +1 -0
  155. data/lib/datadog/profiling/native_extension.rb +1 -0
  156. data/lib/datadog/profiling/pprof/builder.rb +2 -1
  157. data/lib/datadog/profiling/pprof/converter.rb +1 -0
  158. data/lib/datadog/profiling/pprof/message_set.rb +1 -0
  159. data/lib/datadog/profiling/pprof/payload.rb +1 -0
  160. data/lib/datadog/profiling/pprof/pprof_pb.rb +1 -0
  161. data/lib/datadog/profiling/pprof/stack_sample.rb +1 -0
  162. data/lib/datadog/profiling/pprof/string_table.rb +1 -0
  163. data/lib/datadog/profiling/pprof/template.rb +1 -0
  164. data/lib/datadog/profiling/preload.rb +1 -0
  165. data/lib/datadog/profiling/profiler.rb +1 -0
  166. data/lib/datadog/profiling/recorder.rb +1 -0
  167. data/lib/datadog/profiling/scheduler.rb +2 -1
  168. data/lib/datadog/profiling/tasks/exec.rb +1 -0
  169. data/lib/datadog/profiling/tasks/help.rb +1 -0
  170. data/lib/datadog/profiling/tasks/setup.rb +1 -0
  171. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +2 -1
  172. data/lib/datadog/profiling/trace_identifiers/helper.rb +2 -1
  173. data/lib/datadog/profiling/transport/client.rb +1 -0
  174. data/lib/datadog/profiling/transport/http/api/endpoint.rb +1 -0
  175. data/lib/datadog/profiling/transport/http/api/instance.rb +1 -0
  176. data/lib/datadog/profiling/transport/http/api/spec.rb +1 -0
  177. data/lib/datadog/profiling/transport/http/api.rb +1 -0
  178. data/lib/datadog/profiling/transport/http/builder.rb +1 -0
  179. data/lib/datadog/profiling/transport/http/client.rb +1 -0
  180. data/lib/datadog/profiling/transport/http/response.rb +1 -0
  181. data/lib/datadog/profiling/transport/http.rb +1 -0
  182. data/lib/datadog/profiling/transport/io/client.rb +1 -0
  183. data/lib/datadog/profiling/transport/io/response.rb +1 -0
  184. data/lib/datadog/profiling/transport/io.rb +1 -0
  185. data/lib/datadog/profiling/transport/parcel.rb +1 -0
  186. data/lib/datadog/profiling/transport/request.rb +1 -0
  187. data/lib/datadog/profiling/transport/response.rb +1 -0
  188. data/lib/datadog/profiling.rb +1 -0
  189. data/lib/datadog/tracing/analytics.rb +1 -0
  190. data/lib/datadog/tracing/buffer.rb +1 -0
  191. data/lib/datadog/tracing/configuration/ext.rb +1 -0
  192. data/lib/datadog/tracing/context.rb +1 -0
  193. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +1 -0
  194. data/lib/datadog/tracing/contrib/action_cable/event.rb +2 -1
  195. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +1 -0
  196. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +1 -0
  197. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +1 -0
  198. data/lib/datadog/tracing/contrib/action_cable/events.rb +1 -0
  199. data/lib/datadog/tracing/contrib/action_cable/ext.rb +1 -0
  200. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +1 -1
  201. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -0
  202. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +1 -0
  203. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +1 -0
  204. data/lib/datadog/tracing/contrib/action_mailer/event.rb +2 -1
  205. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +1 -0
  206. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +1 -0
  207. data/lib/datadog/tracing/contrib/action_mailer/events.rb +1 -0
  208. data/lib/datadog/tracing/contrib/action_mailer/ext.rb +1 -0
  209. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -0
  210. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +1 -0
  211. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +3 -2
  212. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +1 -0
  213. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +1 -0
  214. data/lib/datadog/tracing/contrib/action_pack/ext.rb +1 -0
  215. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -0
  216. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +1 -0
  217. data/lib/datadog/tracing/contrib/action_pack/utils.rb +2 -1
  218. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +1 -0
  219. data/lib/datadog/tracing/contrib/action_view/event.rb +2 -1
  220. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +1 -0
  221. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -0
  222. data/lib/datadog/tracing/contrib/action_view/events.rb +1 -0
  223. data/lib/datadog/tracing/contrib/action_view/ext.rb +1 -0
  224. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +1 -0
  225. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +1 -0
  226. data/lib/datadog/tracing/contrib/action_view/integration.rb +1 -0
  227. data/lib/datadog/tracing/contrib/action_view/patcher.rb +1 -0
  228. data/lib/datadog/tracing/contrib/action_view/utils.rb +2 -1
  229. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +1 -0
  230. data/lib/datadog/tracing/contrib/active_job/event.rb +2 -1
  231. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -0
  232. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -0
  233. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -0
  234. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -0
  235. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -0
  236. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -0
  237. data/lib/datadog/tracing/contrib/active_job/events.rb +1 -0
  238. data/lib/datadog/tracing/contrib/active_job/ext.rb +1 -0
  239. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -0
  240. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +1 -0
  241. data/lib/datadog/tracing/contrib/active_job/patcher.rb +1 -0
  242. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +1 -0
  243. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +2 -1
  244. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -0
  245. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +1 -0
  246. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +1 -0
  247. data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +1 -0
  248. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -0
  249. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +2 -1
  250. data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +1 -0
  251. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -0
  252. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +1 -0
  253. data/lib/datadog/tracing/contrib/active_record/event.rb +2 -1
  254. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -0
  255. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +2 -1
  256. data/lib/datadog/tracing/contrib/active_record/events.rb +1 -0
  257. data/lib/datadog/tracing/contrib/active_record/ext.rb +1 -0
  258. data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -0
  259. data/lib/datadog/tracing/contrib/active_record/patcher.rb +1 -0
  260. data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -0
  261. data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +1 -0
  262. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +2 -1
  263. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +1 -0
  264. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -0
  265. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +1 -0
  266. data/lib/datadog/tracing/contrib/active_support/ext.rb +1 -0
  267. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -0
  268. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -0
  269. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -0
  270. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +1 -0
  271. data/lib/datadog/tracing/contrib/active_support/patcher.rb +1 -0
  272. data/lib/datadog/tracing/contrib/analytics.rb +1 -0
  273. data/lib/datadog/tracing/contrib/auto_instrument.rb +23 -20
  274. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +1 -0
  275. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -0
  276. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +3 -1
  277. data/lib/datadog/tracing/contrib/aws/integration.rb +1 -0
  278. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +1 -0
  279. data/lib/datadog/tracing/contrib/aws/patcher.rb +2 -1
  280. data/lib/datadog/tracing/contrib/aws/services.rb +1 -0
  281. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +1 -0
  282. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +2 -1
  283. data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +1 -0
  284. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -0
  285. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -0
  286. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +1 -0
  287. data/lib/datadog/tracing/contrib/configurable.rb +1 -0
  288. data/lib/datadog/tracing/contrib/configuration/resolver.rb +1 -0
  289. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -0
  290. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -0
  291. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +1 -0
  292. data/lib/datadog/tracing/contrib/dalli/ext.rb +1 -0
  293. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +2 -1
  294. data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -0
  295. data/lib/datadog/tracing/contrib/dalli/patcher.rb +1 -0
  296. data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -0
  297. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +1 -0
  298. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +1 -0
  299. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -0
  300. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +1 -0
  301. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -1
  302. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +1 -0
  303. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +1 -0
  304. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +1 -0
  305. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +2 -1
  306. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -0
  307. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +1 -0
  308. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +2 -1
  309. data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -0
  310. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -0
  311. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +2 -1
  312. data/lib/datadog/tracing/contrib/ethon/patcher.rb +1 -0
  313. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +1 -0
  314. data/lib/datadog/tracing/contrib/excon/ext.rb +1 -0
  315. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -0
  316. data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -1
  317. data/lib/datadog/tracing/contrib/excon/patcher.rb +1 -0
  318. data/lib/datadog/tracing/contrib/extensions.rb +57 -42
  319. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +1 -0
  320. data/lib/datadog/tracing/contrib/faraday/connection.rb +1 -0
  321. data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -0
  322. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -0
  323. data/lib/datadog/tracing/contrib/faraday/middleware.rb +2 -1
  324. data/lib/datadog/tracing/contrib/faraday/patcher.rb +1 -0
  325. data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +1 -0
  326. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +1 -0
  327. data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -2
  328. data/lib/datadog/tracing/contrib/grape/ext.rb +1 -0
  329. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +1 -0
  330. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -0
  331. data/lib/datadog/tracing/contrib/grape/patcher.rb +1 -0
  332. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +1 -0
  333. data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
  334. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -0
  335. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -1
  336. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +1 -0
  337. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +1 -0
  338. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -0
  339. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +3 -2
  340. data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
  341. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -0
  342. data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -0
  343. data/lib/datadog/tracing/contrib/grpc/patcher.rb +1 -0
  344. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +2 -1
  345. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +1 -0
  346. data/lib/datadog/tracing/contrib/http/ext.rb +1 -0
  347. data/lib/datadog/tracing/contrib/http/instrumentation.rb +2 -1
  348. data/lib/datadog/tracing/contrib/http/integration.rb +1 -0
  349. data/lib/datadog/tracing/contrib/http/patcher.rb +1 -0
  350. data/lib/datadog/tracing/contrib/http_annotation_helper.rb +1 -0
  351. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +1 -0
  352. data/lib/datadog/tracing/contrib/httpclient/ext.rb +1 -0
  353. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -2
  354. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -0
  355. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +1 -0
  356. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +1 -0
  357. data/lib/datadog/tracing/contrib/httprb/ext.rb +1 -0
  358. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +3 -2
  359. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -0
  360. data/lib/datadog/tracing/contrib/httprb/patcher.rb +1 -0
  361. data/lib/datadog/tracing/contrib/integration.rb +2 -1
  362. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +1 -0
  363. data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +1 -0
  364. data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +1 -0
  365. data/lib/datadog/tracing/contrib/kafka/event.rb +2 -1
  366. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -0
  367. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -0
  368. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -0
  369. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -0
  370. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -0
  371. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -0
  372. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -0
  373. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -0
  374. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -0
  375. data/lib/datadog/tracing/contrib/kafka/events.rb +1 -0
  376. data/lib/datadog/tracing/contrib/kafka/ext.rb +1 -0
  377. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -0
  378. data/lib/datadog/tracing/contrib/kafka/patcher.rb +1 -0
  379. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +1 -0
  380. data/lib/datadog/tracing/contrib/lograge/ext.rb +1 -0
  381. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +2 -1
  382. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -0
  383. data/lib/datadog/tracing/contrib/lograge/patcher.rb +1 -0
  384. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -0
  385. data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
  386. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +1 -0
  387. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -0
  388. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +2 -1
  389. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +1 -0
  390. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +3 -2
  391. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +1 -0
  392. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -0
  393. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +2 -1
  394. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -0
  395. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +1 -0
  396. data/lib/datadog/tracing/contrib/patchable.rb +1 -0
  397. data/lib/datadog/tracing/contrib/patcher.rb +1 -0
  398. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +1 -0
  399. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -0
  400. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -1
  401. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -0
  402. data/lib/datadog/tracing/contrib/presto/patcher.rb +1 -0
  403. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +1 -0
  404. data/lib/datadog/tracing/contrib/qless/ext.rb +1 -0
  405. data/lib/datadog/tracing/contrib/qless/integration.rb +1 -0
  406. data/lib/datadog/tracing/contrib/qless/patcher.rb +2 -1
  407. data/lib/datadog/tracing/contrib/qless/qless_job.rb +3 -2
  408. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +2 -1
  409. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +2 -1
  410. data/lib/datadog/tracing/contrib/que/ext.rb +2 -1
  411. data/lib/datadog/tracing/contrib/que/integration.rb +2 -1
  412. data/lib/datadog/tracing/contrib/que/patcher.rb +2 -1
  413. data/lib/datadog/tracing/contrib/que/tracer.rb +3 -2
  414. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +1 -0
  415. data/lib/datadog/tracing/contrib/racecar/event.rb +2 -1
  416. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +1 -0
  417. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -0
  418. data/lib/datadog/tracing/contrib/racecar/events/message.rb +1 -0
  419. data/lib/datadog/tracing/contrib/racecar/events.rb +1 -0
  420. data/lib/datadog/tracing/contrib/racecar/ext.rb +1 -0
  421. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -0
  422. data/lib/datadog/tracing/contrib/racecar/patcher.rb +1 -0
  423. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +1 -0
  424. data/lib/datadog/tracing/contrib/rack/ext.rb +1 -0
  425. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -0
  426. data/lib/datadog/tracing/contrib/rack/middlewares.rb +2 -1
  427. data/lib/datadog/tracing/contrib/rack/patcher.rb +3 -2
  428. data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -0
  429. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +3 -1
  430. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +5 -4
  431. data/lib/datadog/tracing/contrib/rails/ext.rb +1 -0
  432. data/lib/datadog/tracing/contrib/rails/framework.rb +37 -36
  433. data/lib/datadog/tracing/contrib/rails/integration.rb +1 -0
  434. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -0
  435. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -0
  436. data/lib/datadog/tracing/contrib/rails/patcher.rb +2 -1
  437. data/lib/datadog/tracing/contrib/rails/railtie.rb +1 -0
  438. data/lib/datadog/tracing/contrib/rails/utils.rb +1 -0
  439. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +1 -0
  440. data/lib/datadog/tracing/contrib/rake/ext.rb +1 -0
  441. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -2
  442. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -0
  443. data/lib/datadog/tracing/contrib/rake/patcher.rb +2 -1
  444. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -0
  445. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -0
  446. data/lib/datadog/tracing/contrib/redis/ext.rb +1 -0
  447. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +2 -1
  448. data/lib/datadog/tracing/contrib/redis/integration.rb +1 -0
  449. data/lib/datadog/tracing/contrib/redis/patcher.rb +1 -0
  450. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -0
  451. data/lib/datadog/tracing/contrib/redis/tags.rb +2 -1
  452. data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +1 -0
  453. data/lib/datadog/tracing/contrib/registry.rb +1 -0
  454. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +1 -0
  455. data/lib/datadog/tracing/contrib/resque/ext.rb +1 -0
  456. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -0
  457. data/lib/datadog/tracing/contrib/resque/patcher.rb +1 -0
  458. data/lib/datadog/tracing/contrib/resque/resque_job.rb +3 -2
  459. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +1 -0
  460. data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -0
  461. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -0
  462. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +1 -0
  463. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +2 -1
  464. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +1 -0
  465. data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +1 -0
  466. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +2 -1
  467. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -0
  468. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +1 -0
  469. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +1 -0
  470. data/lib/datadog/tracing/contrib/sequel/database.rb +2 -1
  471. data/lib/datadog/tracing/contrib/sequel/dataset.rb +2 -1
  472. data/lib/datadog/tracing/contrib/sequel/ext.rb +1 -0
  473. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -0
  474. data/lib/datadog/tracing/contrib/sequel/patcher.rb +1 -0
  475. data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -1
  476. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +1 -0
  477. data/lib/datadog/tracing/contrib/shoryuken/ext.rb +1 -0
  478. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -0
  479. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -0
  480. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +2 -1
  481. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +2 -1
  482. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +1 -0
  483. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
  484. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -0
  485. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +1 -0
  486. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +1 -1
  487. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +1 -1
  488. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +1 -1
  489. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +2 -1
  490. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +1 -0
  491. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +1 -0
  492. data/lib/datadog/tracing/contrib/sinatra/env.rb +1 -0
  493. data/lib/datadog/tracing/contrib/sinatra/ext.rb +1 -0
  494. data/lib/datadog/tracing/contrib/sinatra/framework.rb +3 -1
  495. data/lib/datadog/tracing/contrib/sinatra/headers.rb +1 -0
  496. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -0
  497. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +1 -0
  498. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +3 -2
  499. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +2 -1
  500. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +2 -1
  501. data/lib/datadog/tracing/contrib/sneakers/ext.rb +2 -1
  502. data/lib/datadog/tracing/contrib/sneakers/integration.rb +2 -1
  503. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -1
  504. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +3 -2
  505. data/lib/datadog/tracing/contrib/status_code_matcher.rb +1 -0
  506. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +1 -0
  507. data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -0
  508. data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +1 -0
  509. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +2 -1
  510. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -0
  511. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +2 -1
  512. data/lib/datadog/tracing/contrib/utils/database.rb +1 -0
  513. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +1 -0
  514. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +1 -0
  515. data/lib/datadog/tracing/contrib.rb +3 -0
  516. data/lib/datadog/tracing/correlation.rb +2 -1
  517. data/lib/datadog/tracing/distributed/headers/b3.rb +1 -0
  518. data/lib/datadog/tracing/distributed/headers/b3_single.rb +1 -0
  519. data/lib/datadog/tracing/distributed/headers/datadog.rb +1 -0
  520. data/lib/datadog/tracing/distributed/headers/ext.rb +1 -0
  521. data/lib/datadog/tracing/distributed/helpers.rb +1 -0
  522. data/lib/datadog/tracing/distributed/parser.rb +1 -0
  523. data/lib/datadog/tracing/event.rb +1 -0
  524. data/lib/datadog/tracing/flush.rb +1 -0
  525. data/lib/datadog/tracing/metadata/analytics.rb +2 -0
  526. data/lib/datadog/tracing/metadata/errors.rb +24 -0
  527. data/lib/datadog/tracing/metadata/ext.rb +2 -1
  528. data/lib/datadog/tracing/metadata/tagging.rb +2 -10
  529. data/lib/datadog/tracing/metadata.rb +4 -0
  530. data/lib/datadog/tracing/pipeline/span_processor.rb +1 -0
  531. data/lib/datadog/tracing/propagation/grpc.rb +1 -0
  532. data/lib/datadog/tracing/propagation/http.rb +1 -0
  533. data/lib/datadog/tracing/runtime/metrics.rb +1 -0
  534. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -0
  535. data/lib/datadog/tracing/sampling/ext.rb +1 -0
  536. data/lib/datadog/tracing/sampling/matcher.rb +1 -0
  537. data/lib/datadog/tracing/sampling/priority_sampler.rb +1 -0
  538. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +1 -0
  539. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +1 -0
  540. data/lib/datadog/tracing/sampling/rate_limiter.rb +1 -0
  541. data/lib/datadog/tracing/sampling/rate_sampler.rb +1 -0
  542. data/lib/datadog/tracing/sampling/rule.rb +1 -0
  543. data/lib/datadog/tracing/sampling/rule_sampler.rb +1 -0
  544. data/lib/datadog/tracing/sampling/sampler.rb +1 -0
  545. data/lib/datadog/tracing/span.rb +2 -1
  546. data/lib/datadog/tracing/span_operation.rb +2 -0
  547. data/lib/datadog/tracing/sync_writer.rb +1 -0
  548. data/lib/datadog/tracing/trace_digest.rb +2 -0
  549. data/lib/datadog/tracing/trace_operation.rb +18 -3
  550. data/lib/datadog/tracing/trace_segment.rb +109 -194
  551. data/lib/datadog/tracing/tracer.rb +2 -1
  552. data/lib/datadog/tracing/workers/trace_writer.rb +1 -0
  553. data/lib/datadog/tracing/workers.rb +1 -0
  554. data/lib/datadog/tracing/writer.rb +1 -0
  555. data/lib/datadog/tracing.rb +2 -0
  556. data/lib/ddtrace/auto_instrument.rb +2 -1
  557. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  558. data/lib/ddtrace/profiling/preload.rb +2 -0
  559. data/lib/ddtrace/transport/ext.rb +1 -0
  560. data/lib/ddtrace/transport/http/adapters/net.rb +1 -0
  561. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  562. data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
  563. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +1 -0
  564. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  565. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  566. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  567. data/lib/ddtrace/transport/http/api/map.rb +1 -0
  568. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  569. data/lib/ddtrace/transport/http/api.rb +1 -0
  570. data/lib/ddtrace/transport/http/builder.rb +1 -0
  571. data/lib/ddtrace/transport/http/client.rb +1 -0
  572. data/lib/ddtrace/transport/http/env.rb +1 -0
  573. data/lib/ddtrace/transport/http/response.rb +1 -0
  574. data/lib/ddtrace/transport/http/statistics.rb +1 -0
  575. data/lib/ddtrace/transport/http/traces.rb +1 -0
  576. data/lib/ddtrace/transport/http.rb +14 -3
  577. data/lib/ddtrace/transport/io/client.rb +1 -0
  578. data/lib/ddtrace/transport/io/response.rb +1 -0
  579. data/lib/ddtrace/transport/io/traces.rb +1 -0
  580. data/lib/ddtrace/transport/io.rb +1 -0
  581. data/lib/ddtrace/transport/parcel.rb +1 -0
  582. data/lib/ddtrace/transport/request.rb +1 -0
  583. data/lib/ddtrace/transport/response.rb +1 -0
  584. data/lib/ddtrace/transport/serializable_trace.rb +2 -0
  585. data/lib/ddtrace/transport/statistics.rb +1 -0
  586. data/lib/ddtrace/transport/trace_formatter.rb +24 -1
  587. data/lib/ddtrace/transport/traces.rb +1 -0
  588. data/lib/ddtrace/version.rb +12 -10
  589. data/lib/ddtrace.rb +2 -21
  590. metadata +11 -10
  591. data/lib/datadog/opentelemetry/extensions.rb +0 -14
  592. data/lib/datadog/opentelemetry/span.rb +0 -34
@@ -26,9 +26,13 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
26
26
 
27
27
  - [Compatibility](#compatibility)
28
28
  - [Installation](#installation)
29
- - [Quickstart for Rails applications](#quickstart-for-rails-applications)
30
- - [Quickstart for Ruby applications](#quickstart-for-ruby-applications)
31
- - [Quickstart for OpenTracing](#quickstart-for-opentracing)
29
+ - [Setup the Datadog Agent for tracing](#setup-the-datadog-agent-for-tracing)
30
+ - [Instrument your application](#instrument-your-application)
31
+ - [Rails applications](#rails-applications)
32
+ - [Ruby applications](#ruby-applications)
33
+ - [Configuring OpenTracing](#configuring-opentracing)
34
+ - [Configuring OpenTelemetry](#configuring-opentelemetry)
35
+ - [Connect your application to the Datadog Agent](#connect-your-application-to-the-datadog-agent)
32
36
  - [Manual instrumentation](#manual-instrumentation)
33
37
  - [Integration instrumentation](#integration-instrumentation)
34
38
  - [Action Cable](#action-cable)
@@ -75,11 +79,10 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
75
79
  - [Sinatra](#sinatra)
76
80
  - [Sneakers](#sneakers)
77
81
  - [Sucker Punch](#sucker-punch)
78
- - [Advanced configuration](#advanced-configuration)
79
- - [Tracer settings](#tracer-settings)
82
+ - [Additional configuration](#additional-configuration)
80
83
  - [Custom logging](#custom-logging)
81
84
  - [Environment and tags](#environment-and-tags)
82
- - [Environment variables](#environment-variables)
85
+ - [Debugging and diagnostics](#debugging-and-diagnostics)
83
86
  - [Sampling](#sampling)
84
87
  - [Application-side sampling](#application-side-sampling)
85
88
  - [Priority sampling](#priority-sampling)
@@ -106,7 +109,8 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
106
109
 
107
110
  | Type | Documentation | Version | Support type | Gem version support |
108
111
  | ----- | -------------------------- | ----- | ------------------------------------ | ------------------- |
109
- | MRI | https://www.ruby-lang.org/ | 3.0 | Full | Latest |
112
+ | MRI | https://www.ruby-lang.org/ | 3.1 | Full | Latest |
113
+ | | | 3.0 | Full | Latest |
110
114
  | | | 2.7 | Full | Latest |
111
115
  | | | 2.6 | Full | Latest |
112
116
  | | | 2.5 | Full | Latest |
@@ -152,66 +156,95 @@ but will consider them as having low priority.
152
156
 
153
157
  ## Installation
154
158
 
155
- The following steps will help you quickly start tracing your Ruby application.
159
+ Adding tracing to your Ruby application only takes a few quick steps:
156
160
 
157
- ### Configure the Datadog Agent for APM
161
+ 1. Setup the Datadog Agent for tracing
162
+ 2. Instrument your application
163
+ 3. Connect your application to the Datadog Agent
158
164
 
159
- Before downloading tracing on your application, [install the Datadog Agent on the host](https://docs.datadoghq.com/agent/). The Ruby APM tracer sends trace data through the Datadog Agent.
165
+ ### Setup the Datadog Agent for tracing
160
166
 
161
- 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.
167
+ Before installing `ddtrace`, [install the Datadog Agent](https://docs.datadoghq.com/agent/), to which `ddtrace` will send trace data.
162
168
 
163
- #### Containers
169
+ Then configure the Datadog Agent to accept traces. To do this, either:
164
170
 
165
- 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).
171
+ - Set `DD_APM_ENABLED=true` in the agent's environment
166
172
 
167
- 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:
173
+ OR
168
174
 
169
- 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`.
175
+ - Add `apm_enabled: true` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file)
170
176
 
177
+ *Additionally, in containerized environments...*
171
178
 
172
- ### Quickstart for Rails applications
179
+ - Set `DD_APM_NON_LOCAL_TRAFFIC=true` in the agent's environment
173
180
 
174
- #### Automatic instrumentation
181
+ OR
175
182
 
176
- 1. Add the `ddtrace` gem to your Gemfile:
183
+ - Add `apm_non_local_traffic: true` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file).
177
184
 
178
- ```ruby
179
- source 'https://rubygems.org'
180
- gem 'ddtrace', require: 'ddtrace/auto_instrument'
181
- ```
185
+ 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.
182
186
 
183
- 2. Install the gem with `bundle install`
187
+ #### Configuring trace data ingestion
188
+
189
+ The Datadog agent will listen for traces via HTTP on port `8126` by default.
190
+
191
+ You may change the protocol or port the agent listens for trace data using the following:
192
+
193
+ **For HTTP over TCP**:
194
+
195
+ - Set `DD_APM_RECEIVER_PORT=<port>` in the agent's environment
196
+
197
+ OR
198
+
199
+ - Add `apm_config: receiver_port: <port>` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file)
184
200
 
185
- 3. You can configure, override, or disable any specific integration settings by also adding a Rails manual instrumentation configuration file (next).
201
+ **For Unix Domain Socket (UDS)**:
186
202
 
187
- #### Manual instrumentation
203
+ - Set `DD_APM_RECEIVER_SOCKET=<path-to-socket-file>`
204
+
205
+ OR
206
+
207
+ - Add `apm_config: receiver_socket: <path-to-socket-file>` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file)
208
+
209
+ ### Instrument your application
210
+
211
+ #### Rails applications
188
212
 
189
213
  1. Add the `ddtrace` gem to your Gemfile:
190
214
 
191
215
  ```ruby
192
216
  source 'https://rubygems.org'
193
- gem 'ddtrace'
217
+ gem 'ddtrace', require: 'ddtrace/auto_instrument'
194
218
  ```
195
219
 
196
220
  2. Install the gem with `bundle install`
221
+
197
222
  3. Create a `config/initializers/datadog.rb` file containing:
198
223
 
199
224
  ```ruby
200
225
  Datadog.configure do |c|
201
- # This will activate auto-instrumentation for Rails
202
- c.tracing.instrument :rails
226
+ # Add additional configuration here.
227
+ # Activate integrations, change tracer settings, etc...
203
228
  end
204
229
  ```
205
230
 
206
- You can also activate additional integrations here (see [Integration instrumentation](#integration-instrumentation))
231
+ Using this block you can:
207
232
 
208
- ### Quickstart for Ruby applications
233
+ - [Add additional configuration settings](#additional-configuration)
234
+ - [Activate or reconfigure instrumentation](#integration-instrumentation)
209
235
 
210
- #### Automatic instrumentation
236
+ #### Ruby applications
211
237
 
212
- 1. Install the gem with `gem install ddtrace`
213
- 2. Requiring any [supported libraries or frameworks](#integration-instrumentation) that should be instrumented.
214
- 3. Add `require 'ddtrace/auto_instrument'` to your application. _Note:_ This must be done _after_ requiring any supported libraries or frameworks.
238
+ 1. Add the `ddtrace` gem to your Gemfile:
239
+
240
+ ```ruby
241
+ source 'https://rubygems.org'
242
+ gem 'ddtrace'
243
+ ```
244
+
245
+ 2. Install the gem with `bundle install`
246
+ 3. `require` any [supported libraries or frameworks](#integration-instrumentation) that should be instrumented.
247
+ 4. Add `require 'ddtrace/auto_instrument'` to your application. _Note:_ This must be done _after_ requiring any supported libraries or frameworks.
215
248
 
216
249
  ```ruby
217
250
  # Example frameworks and libraries
@@ -222,30 +255,31 @@ Install and configure the Datadog Agent to receive traces from your now instrume
222
255
  require 'ddtrace/auto_instrument'
223
256
  ```
224
257
 
225
- You can configure, override, or disable any specific integration settings by also adding a Ruby manual configuration block (next).
226
-
227
- #### Manual instrumentation
228
-
229
- 1. Install the gem with `gem install ddtrace`
230
- 2. Add a configuration block to your Ruby application:
258
+ 5. Add a configuration block to your application:
231
259
 
232
260
  ```ruby
233
- require 'ddtrace'
234
261
  Datadog.configure do |c|
235
- # Configure the tracer here.
262
+ # Add additional configuration here.
236
263
  # Activate integrations, change tracer settings, etc...
237
- # By default without additional configuration, nothing will be traced.
238
264
  end
239
265
  ```
240
266
 
241
- 3. Add or activate instrumentation by doing either of the following:
242
- - Activate integration instrumentation (see [Integration instrumentation](#integration-instrumentation))
243
- - Add manual instrumentation around your code (see [Manual instrumentation](#manual-instrumentation))
267
+ Using this block you can:
244
268
 
245
- ### Quickstart for OpenTracing
269
+ - [Add additional configuration settings](#additional-configuration)
270
+ - [Activate or reconfigure instrumentation](#integration-instrumentation)
246
271
 
247
- 1. Install the gem with `gem install ddtrace`
248
- 2. To your OpenTracing configuration file, add the following:
272
+ #### Configuring OpenTracing
273
+
274
+ 1. Add the `ddtrace` gem to your Gemfile:
275
+
276
+ ```ruby
277
+ source 'https://rubygems.org'
278
+ gem 'ddtrace'
279
+ ```
280
+
281
+ 2. Install the gem with `bundle install`
282
+ 3. To your OpenTracing configuration file, add the following:
249
283
 
250
284
  ```ruby
251
285
  require 'opentracing'
@@ -256,7 +290,7 @@ Install and configure the Datadog Agent to receive traces from your now instrume
256
290
  OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new
257
291
  ```
258
292
 
259
- 3. (Optional) Add a configuration block to your Ruby application to configure Datadog with:
293
+ 4. Add a configuration block to your application:
260
294
 
261
295
  ```ruby
262
296
  Datadog.configure do |c|
@@ -268,9 +302,29 @@ Install and configure the Datadog Agent to receive traces from your now instrume
268
302
  end
269
303
  ```
270
304
 
271
- 4. (Optional) Add or activate additional instrumentation by doing either of the following:
272
- - Activate Datadog integration instrumentation (see [Integration instrumentation](#integration-instrumentation))
273
- - Add Datadog manual instrumentation around your code (see [Manual instrumentation](#manual-instrumentation))
305
+ Using this block you can:
306
+
307
+ - [Add additional Datadog configuration settings](#additional-configuration)
308
+ - [Activate or reconfigure Datadog instrumentation](#integration-instrumentation)
309
+
310
+ #### Configuring OpenTelemetry
311
+
312
+ You can send OpenTelemetry traces directly to the Datadog agent (without `ddtrace`) by using OTLP. Check out our documentation on [OTLP ingest in the Datadog Agent](https://docs.datadoghq.com/tracing/setup_overview/open_standards/#otlp-ingest-in-datadog-agent) for details.
313
+
314
+ ### Connect your application to the Datadog Agent
315
+
316
+ By default, `ddtrace` will connect to the agent using the first available settings in the listed priority:
317
+
318
+ 1. Via any explicitly provided configuration settings (hostname/port/transport)
319
+ 2. Via Unix Domain Socket (UDS) located at `/var/run/datadog/apm.socket`
320
+ 3. Via HTTP over TCP to `127.0.0.1:8126`
321
+
322
+ If your Datadog Agent is listening at any of these locations, no further configuration should be required.
323
+
324
+ If your agent runs on a different host or container than your application, or you would like to send traces via a different protocol, you will need to configure your application accordingly.
325
+
326
+ - [How to send trace data via HTTP over TCP to agent](#changing-default-agent-hostname-and-port)
327
+ - [How to send trace data via Unix Domain Socket (UDS) to agent](#using-the-unix-domain-socket-uds-adapter)
274
328
 
275
329
  ### Final steps for installation
276
330
 
@@ -1897,41 +1951,50 @@ end
1897
1951
  LogJob.perform_async('login')
1898
1952
  ```
1899
1953
 
1900
- ## Advanced configuration
1901
-
1902
- ### Environment variables
1903
-
1904
- - `DD_AGENT_HOST`: Hostname of agent to where traces will be sent. See [Tracer settings](#tracer-settings) for more details.
1905
- - `DD_ENV`: Your application environment. See [Environment and tags](#environment-and-tags) for more details.
1906
- - `DD_LOGS_INJECTION`: Injects [Trace Correlation](#trace-correlation) information into Rails logs, if present. Supports the default logger (`ActiveSupport::TaggedLogging`), `lograge`, and `semantic_logger`. Valid values are: `true` (default) or `false`. e.g. `DD_LOGS_INJECTION=false`.
1907
- - `DD_PROPAGATION_STYLE_EXTRACT`: Distributed tracing header formats to extract. See [Distributed Tracing](#distributed-tracing) for more details.
1908
- - `DD_PROPAGATION_STYLE_INJECT`: Distributed tracing header formats to inject. See [Distributed Tracing](#distributed-tracing) for more details.
1909
- - `DD_SERVICE`: Your application's default service name. See [Environment and tags](#environment-and-tags) for more details.
1910
- - `DD_TAGS`: Custom tags for telemetry produced by your application. See [Environment and tags](#environment-and-tags) for more details.
1911
- - `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.tracing.instrument :integration }`).on code. This environment variable can only be used to disable an integration.
1912
- - `DD_TRACE_AGENT_PORT`: Port to where traces will be sent. See [Tracer settings](#tracer-settings) for more details.
1913
- - `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`.
1914
- - `DD_TRACE_ANALYTICS_ENABLED`: Enables or disables trace analytics. See [Sampling](#sampling) for more details.
1915
- - `DD_TRACE_RATE_LIMIT`: Sets a rate limit for sampling. See [Sampling](#sampling) for more details.
1916
- - `DD_TRACE_REPORT_HOSTNAME`: Enables ot disables hostname tags on traces.
1917
- - `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.
1918
- - `DD_TRACE_TEST_MODE_ENABLED`: Enables or disables test mode, for use of tracing in test suites.
1919
- - `DD_VERSION`: Your application version. See [Environment and tags](#environment-and-tags) for more details.
1954
+ ## Additional configuration
1920
1955
 
1921
- ### Global settings
1956
+ To change the default behavior of Datadog tracing, you can set environment variables, or provide custom options inside a `Datadog.configure` block, e.g.:
1922
1957
 
1923
1958
  ```ruby
1924
- # config/initializers/datadog-tracer.rb
1925
1959
  Datadog.configure do |c|
1926
- c.agent.host = 'custom-agent-host'
1927
- c.agent.port = 8126
1928
- end
1929
- ```
1930
-
1931
- Available options are:
1932
-
1933
- - `agent.host`: set the hostname of the trace agent. Defaults to `127.0.0.1`.
1934
- - `agent.port`: set the APM TCP port the Datadog Agent listening on. Defaults to `8126`.
1960
+ c.service = 'billing-api'
1961
+ c.env = ENV['RACK_ENV']
1962
+
1963
+ c.tracing.report_hostname = true
1964
+ c.tracing.test_mode.enabled = (ENV['RACK_ENV'] == 'test')
1965
+ end
1966
+ ```
1967
+
1968
+ **Available configuration options:**
1969
+
1970
+ | Setting | Env Var | Default | Description |
1971
+ |---------------------------------------------------------|--------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1972
+ | **Global** | | | |
1973
+ | `agent.host` | `DD_AGENT_HOST` | `127.0.0.1` | Hostname of agent to where trace data will be sent. |
1974
+ | `agent.port` | `DD_TRACE_AGENT_PORT` | `8126` | Port of agent host to where trace data will be sent. |
1975
+ | | `DD_TRACE_AGENT_URL` | `nil` | Sets the URL endpoint where traces are sent. Has priority over `agent.host` and `agent.port`. |
1976
+ | `diagnostics.debug` | `DD_TRACE_DEBUG` | `false` | Enables or disables debug mode. Prints verbose logs. **NOT recommended for production or other sensitive environments.** See [Debugging and diagnostics](#debugging-and-diagnostics) for more details. |
1977
+ | `diagnostics.startup_logs.enabled` | `DD_TRACE_STARTUP_LOGS` | `nil` | Prints startup configuration and diagnostics to log. For assessing state of tracing at application startup. See [Debugging and diagnostics](#debugging-and-diagnostics) for more details. |
1978
+ | `env` | `DD_ENV` | `nil` | Your application environment. (e.g. `production`, `staging`, etc.) This value is set as a tag on all traces. |
1979
+ | `service` | `DD_SERVICE` | *Ruby filename* | Your application's default service name. (e.g. `billing-api`) This value is set as a tag on all traces. |
1980
+ | `tags` | `DD_TAGS` | `nil` | Custom tags in value pairs separated by `,` (e.g. `layer:api,team:intake`) These tags are set on all traces. See [Environment and tags](#environment-and-tags) for more details. |
1981
+ | `time_now_provider` | | `->{ Time.now }` | Changes how time is retrieved. See [Setting the time provider](#Setting the time provider) for more details. |
1982
+ | `version` | `DD_VERSION` | `nil` | Your application version (e.g. `2.5`, `202003181415`, `1.3-alpha`, etc.) This value is set as a tag on all traces. |
1983
+ | **Tracing** | | | |
1984
+ | `tracing.analytics.enabled` | `DD_TRACE_ANALYTICS_ENABLED` | `nil` | Enables or disables trace analytics. See [Sampling](#sampling) for more details. |
1985
+ | `tracing.distributed_tracing.propagation_extract_style` | `DD_PROPAGATION_STYLE_EXTRACT` | `['Datadog','B3','B3 single header']` | Distributed tracing header formats to extract. See [Distributed Tracing](#distributed-tracing) for more details. |
1986
+ | `tracing.distributed_tracing.propagation_inject_style` | `DD_PROPAGATION_STYLE_INJECT` | `['Datadog']` | Distributed tracing header formats to inject. See [Distributed Tracing](#distributed-tracing) for more details. |
1987
+ | `tracing.enabled` | `DD_TRACE_ENABLED` | `true` | Enables or disables tracing. If set to `false` instrumentation will still run, but no traces are sent to the trace agent. |
1988
+ | `tracing.instrument(<integration-name>, <options...>)` | | | Activates instrumentation for a specific library. See [Integration instrumentation](#integration-instrumentation) for more details. |
1989
+ | `tracing.log_injection` | `DD_LOGS_INJECTION` | `true` | Injects [Trace Correlation](#trace-correlation) information into Rails logs if present. Supports the default logger (`ActiveSupport::TaggedLogging`), `lograge`, and `semantic_logger`. |
1990
+ | `tracing.partial_flush.enabled` | | `false` | Enables or disables partial flushing. Partial flushing submits completed portions of a trace to the agent. Used when tracing instruments long running tasks (e.g. jobs) with many spans. |
1991
+ | `tracing.partial_flush.min_spans_threshold` | | `500` | The number of spans that must be completed in a trace before partial flushing submits those completed spans. |
1992
+ | `tracing.sampler` | | `nil` | Advanced usage only. Sets a custom `Datadog::Tracing::Sampling::Sampler` instance. If provided, the tracer will use this sampler to determine sampling behavior. See [Application-side sampling](#application-side-sampling) for details. |
1993
+ | `tracing.sampling.default_rate` | `DD_TRACE_SAMPLE_RATE` | `nil` | Sets the trace sampling rate between `0.0` (0%) and `1.0` (100%). See [Application-side sampling](#application-side-sampling) for details. |
1994
+ | `tracing.sampling.rate_limit` | `DD_TRACE_RATE_LIMIT` | `100` (per second) | Sets a maximum number of traces per second to sample. Set a rate limit to avoid the ingestion volume overages in the case of traffic spikes. |
1995
+ | `tracing.report_hostname` | `DD_TRACE_REPORT_HOSTNAME` | `false` | Adds hostname tag to traces. |
1996
+ | `tracing.test_mode.enabled` | `DD_TRACE_TEST_MODE_ENABLED` | `false` | Enables or disables test mode, for use of tracing in test suites. |
1997
+ | `tracing.test_mode.trace_flush` | | `nil` | Object that determines trace flushing behavior. |
1935
1998
 
1936
1999
  #### Custom logging
1937
2000
 
@@ -1953,9 +2016,7 @@ Datadog.logger.info { "this is typically called by tracing code" }
1953
2016
 
1954
2017
  #### Environment and tags
1955
2018
 
1956
- 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.
1957
-
1958
- You can configure the application to automatically tag your traces and metrics, using the following environment variables:
2019
+ 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. You can configure the application to automatically tag your traces and metrics, using the following environment variables:
1959
2020
 
1960
2021
  - `DD_ENV`: Your application environment (e.g. `production`, `staging`, etc.)
1961
2022
  - `DD_SERVICE`: Your application's default service name (e.g. `billing-api`)
@@ -1981,73 +2042,43 @@ Tags can also be set directly on individual spans, which will supersede any conf
1981
2042
 
1982
2043
  #### Debugging and diagnostics
1983
2044
 
1984
- You can activate debugging features by using `Datadog.configure`:
1985
-
1986
- ```ruby
1987
- # config/initializers/datadog-tracer.rb
2045
+ There are two different suggested means of producing diagnostics for tracing:
1988
2046
 
1989
- # Global settings are set here:
1990
- Datadog.configure do |c|
1991
- # To enable debug mode
1992
- c.diagnostics.debug = true
1993
- end
1994
- ```
2047
+ ##### Enabling debug mode
1995
2048
 
1996
- Available options are:
2049
+ Switching the library into debug mode will produce verbose, detailed logs about tracing activity, including any suppressed errors. This output can be helpful in identifying errors, or confirming trace output to the agent.
1997
2050
 
1998
- - `diagnostics.debug`: set to true to enable debug logging. Can be configured through the `DD_TRACE_DEBUG` environment variable. Defaults to `false`.
1999
- - `diagnostics.startup_logs.enabled`: Startup configuration and diagnostic log. Defaults to `true`. Can be configured through the `DD_TRACE_STARTUP_LOGS` environment variable.
2000
- - `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 }`.
2051
+ You can enable this via `diagnostics.debug = true` or `DD_TRACE_DEBUG`.
2001
2052
 
2002
- ### Tracer settings
2053
+ ```ruby
2054
+ Datadog.configure { |c| c.diagnostics.debug = true }
2055
+ ```
2003
2056
 
2004
- To change the default behavior of the Datadog tracer, you can provide custom options inside the `Datadog.configure` block as in:
2057
+ **We do NOT recommend use of this feature in production or other sensitive environments**, as it can be very verbose under load. It's best to use this in a controlled environment where you can control application load.
2005
2058
 
2006
- ```ruby
2007
- # config/initializers/datadog-tracer.rb
2008
- # Tracer settings are set here:
2009
- Datadog.configure do |c|
2010
- c.tracing.enabled = true
2059
+ ##### Enabling startup logs
2011
2060
 
2012
- # Ensure all traces are ingested by Datadog
2013
- c.tracing.sampling.default_rate = 1.0 # Recommended
2014
- c.tracing.sampling.rate_limit = 200
2015
- # or provide a custom implementation (overrides c.tracing.sampling settings)
2016
- c.tracing.sampler = Datadog::Tracing::Sampling::AllSampler.new
2061
+ Startup logs produce a report of tracing state when the application is initially configured. This can be helpful for confirming that configuration and instrumentation is activated correctly.
2017
2062
 
2018
- # Breaks down very large traces into smaller batches
2019
- c.tracing.partial_flush.enabled = false
2063
+ You can enable this via `diagnostics.startup_logs.enabled = true` or `DD_TRACE_STARTUP_LOGS`.
2020
2064
 
2021
- # You can specify your own tracer
2022
- c.tracing.instance = Datadog::Tracing::Tracer.new
2023
- end
2065
+ ```ruby
2066
+ Datadog.configure { |c| c.diagnostics.startup_logs.enabled = true }
2024
2067
  ```
2025
2068
 
2026
- Available options are:
2027
-
2028
- - `tracing.log_injection`: Injects [Trace Correlation](#trace-correlation) information into Rails logs, if present. Defaults to `true`.
2029
- - `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.
2030
- - `sampling.rate_limit`: maximum number of traces per second to sample. Defaults to 100 per second.
2031
- - `tracing.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`.
2032
- - `tracing.instance`: set to a custom `Datadog::Tracer` instance. If provided, other trace settings are ignored (you must configure it manually.)
2033
- - `tracing.partial_flush.enabled`: set to `true` to enable partial trace flushing (for long running traces.) Disabled by default. *Experimental.*
2034
- - `tracing.sampler`: set to a custom `Datadog::Sampler` instance. If provided, the tracer will use this sampler to determine sampling behavior.
2069
+ By default, this will be activated whenever `ddtrace` detects the application is running in a non-development environment.
2035
2070
 
2036
2071
  ### Sampling
2037
2072
 
2038
- 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/).
2039
-
2040
- We recommend setting the environment variable `DD_TRACE_SAMPLE_RATE=1.0` in all new applications using `ddtrace`.
2041
-
2042
- App Analytics, previously configured with the `tracing.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/).
2043
-
2044
2073
  #### Application-side sampling
2045
2074
 
2046
2075
  While the trace agent can sample traces to reduce bandwidth usage, application-side sampling reduces the performance overhead.
2047
2076
 
2048
- This will **reduce visibility and is not recommended**. See [DD_TRACE_SAMPLE_RATE](#environment-variables) for the recommended sampling approach.
2077
+ The default sampling rate can be set between `0.0` (0%) and `1.0` (100%). Configure the rate in order to control the volume of traces sent to Datadog. When this configuration is not set, the Datadog agent will distribute a default sampling rate of 10 traces per second.
2078
+
2079
+ Set this value via `DD_TRACE_SAMPLE_RATE` or `Datadog.configure { |c| c.tracing.sampling.default_rate = <value> }`.
2049
2080
 
2050
- `Datadog::Tracing::Sampling::RateSampler` samples a ratio of the traces. For example:
2081
+ Alternatively, you may provide your own sampler. The `Datadog::Tracing::Sampling::RateSampler` samples a ratio of the traces. For example:
2051
2082
 
2052
2083
  ```ruby
2053
2084
  # Sample rate is between 0 (nothing sampled) to 1 (everything sampled).
@@ -2058,6 +2089,8 @@ Datadog.configure do |c|
2058
2089
  end
2059
2090
  ```
2060
2091
 
2092
+ See [Additional Configuration](#additional-configuration) for more details about these settings.
2093
+
2061
2094
  #### Priority sampling
2062
2095
 
2063
2096
  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.
@@ -2407,11 +2440,28 @@ Datadog::Tracing.trace('my.operation') { logger.warn('This is a traced operation
2407
2440
 
2408
2441
  ### Configuring the transport layer
2409
2442
 
2410
- By default, the tracer submits trace data using the Unix socket `/var/run/datadog/apm.socket`, if one is created by the Agent. Otherwise, it connects via HTTP to `127.0.0.1:8126`, the default TCP location the Agent listens on.
2443
+ By default, `ddtrace` will connect to the agent using the first available settings in the listed priority:
2444
+
2445
+ 1. Via any explicitly provided configuration settings (hostname/port/transport)
2446
+ 2. Via Unix Domain Socket (UDS) located at `/var/run/datadog/apm.socket`
2447
+ 3. Via HTTP over TCP to `127.0.0.1:8126`
2411
2448
 
2412
2449
  However, the tracer can be configured to send its trace data to alternative destinations, or by alternative protocols.
2413
2450
 
2414
- Some basic settings, such as hostname and port, can be configured using [tracer settings](#tracer-settings).
2451
+ #### Changing default agent hostname and port
2452
+
2453
+ To change the agent host or port, provide `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT`.
2454
+
2455
+ OR within a `Datadog.configure` block, provide the following settings:
2456
+
2457
+ ```ruby
2458
+ Datadog.configure do |c|
2459
+ c.agent.host = '127.0.0.1'
2460
+ c.agent.port = 8126
2461
+ end
2462
+ ```
2463
+
2464
+ See [Additional Configuration](#additional-configuration) for more details.
2415
2465
 
2416
2466
  #### Using the Net::HTTP adapter
2417
2467
 
@@ -2426,7 +2476,7 @@ Datadog.configure do |c|
2426
2476
  end
2427
2477
  ```
2428
2478
 
2429
- #### Using the Unix socket adapter
2479
+ #### Using the Unix Domain Socket (UDS) adapter
2430
2480
 
2431
2481
  The `UnixSocket` adapter submits traces using `Net::HTTP` over Unix socket.
2432
2482
 
@@ -2472,6 +2522,23 @@ Datadog.configure do |c|
2472
2522
  end
2473
2523
  ```
2474
2524
 
2525
+ ### Setting the time provider
2526
+
2527
+ By default, tracing uses a monotonic clock to measure the duration of spans, and timestamps (`->{ Time.now }`) for the start and end time.
2528
+
2529
+ When testing, it might be helpful to use a different time provider.
2530
+
2531
+ To change the function that provides timestamps, configure the following:
2532
+
2533
+ ```ruby
2534
+ Datadog.configure do |c|
2535
+ # For Timecop, for example, `->{ Time.now_without_mock_time }` allows the tracer to use the real wall time.
2536
+ c.time_now_provider = -> { Time.now_without_mock_time }
2537
+ end
2538
+ ```
2539
+
2540
+ Span duration calculation will still use the system monotonic clock when available, thus not being affected by this setting.
2541
+
2475
2542
  ### Metrics
2476
2543
 
2477
2544
  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.
@@ -2525,7 +2592,7 @@ In addition, all metrics include the following tags:
2525
2592
 
2526
2593
  ### OpenTracing
2527
2594
 
2528
- For setting up Datadog with OpenTracing, see out [Quickstart for OpenTracing](#quickstart-for-opentracing) section for details.
2595
+ For setting up Datadog with OpenTracing, see our [Configuring OpenTracing](#configuring-opentracing) section for details.
2529
2596
 
2530
2597
  **Configuring Datadog tracer settings**
2531
2598
 
@@ -2536,7 +2603,7 @@ The underlying Datadog tracer can be configured by passing options (which match
2536
2603
  OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new(**options)
2537
2604
  ```
2538
2605
 
2539
- It can also be configured by using `Datadog.configure` described in the [Tracer settings](#tracer-settings) section.
2606
+ It can also be configured by using `Datadog.configure` described in the [Additional Configuration](#additional-configuration) section.
2540
2607
 
2541
2608
  **Activating and configuring integrations**
2542
2609
 
@@ -2578,11 +2645,11 @@ Without this flag, profiles for short-lived Resque jobs will not be available as
2578
2645
 
2579
2646
  By default, Datadog limits the size of trace payloads to prevent memory overhead within instrumented applications. As a result, traces containing thousands of operations may not be sent to Datadog.
2580
2647
 
2581
- If traces are missing, enable [debug mode](#tracer-settings) to check if messages containing `"Dropping trace. Payload too large"` are logged.
2648
+ If traces are missing, enable [debug mode](#debugging-and-diagnostics) to check if messages containing `"Dropping trace. Payload too large"` are logged.
2582
2649
 
2583
- Since debug mode is verbose, Datadog does not recommend leaving this enabled or enabling this in production. Disable it after confirming. You can inspect the [Datadog Agent logs](https://docs.datadoghq.com/agent/guide/agent-log-files/) for similar messages.
2650
+ Since debug mode is verbose, **Datadog does not recommend leaving this enabled or enabling this in production.** Disable it after confirming. You can inspect the [Datadog Agent logs](https://docs.datadoghq.com/agent/guide/agent-log-files/) for similar messages.
2584
2651
 
2585
- If you have confirmed that traces are dropped due to large payloads, then enable the [partial_flush](#tracer-settings) setting to break down large traces into smaller chunks.
2652
+ If you have confirmed that traces are dropped due to large payloads, then enable the [partial_flush](#additional-configuration) setting to break down large traces into smaller chunks.
2586
2653
 
2587
2654
  ### Stack level too deep
2588
2655
 
@@ -2592,7 +2659,7 @@ In Ruby version 1.9.3 and earlier, "monkey-patching" often involved the use of [
2592
2659
 
2593
2660
  In Ruby 2.0, the [`Module#prepend`](https://ruby-doc.org/core-3.0.0/Module.html#method-i-prepend) feature was introduced. This feature avoids destructive method rewriting and allows multiple "monkey patches" on the same method. Consequently, it has become the safest, preferred means to "monkey patch" code.
2594
2661
 
2595
- Datadog instrumentation almost exclusively uses the `Module#prepend` feature to add instrumentation non-destructively. However, some libraries (typically those supporting Ruby < 2.0) still use `alias_method` which can create conflicts with Datadog instrumentation, often resulting in `SystemStackError` or `stack level too deep` errors.
2662
+ Datadog instrumentation almost exclusively uses the `Module#prepend` feature to add instrumentation non-destructively. However, some other libraries (typically those supporting Ruby < 2.0) still use `alias_method` which can create conflicts with Datadog instrumentation, often resulting in `SystemStackError` or `stack level too deep` errors.
2596
2663
 
2597
2664
  As the implementation of `alias_method` exists within those libraries, Datadog generally cannot fix them. However, some libraries have known workarounds:
2598
2665