ddtrace 0.50.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.editorconfig +22 -0
- data/.gitignore +10 -0
- data/CHANGELOG.md +430 -11
- data/CONTRIBUTING.md +1 -5
- data/LICENSE-3rdparty.csv +2 -1
- data/README.md +4 -0
- data/bin/ddtracerb +5 -5
- data/ddtrace.gemspec +20 -5
- data/docs/0.x-trace.png +0 -0
- data/docs/1.0-trace.png +0 -0
- data/docs/AutoInstrumentation.md +36 -0
- data/docs/Deprecation.md +8 -0
- data/docs/DevelopmentGuide.md +17 -7
- data/docs/GettingStarted.md +660 -486
- data/docs/ProfilingDevelopment.md +45 -23
- data/docs/PublicApi.md +14 -0
- data/docs/UpgradeGuide.md +736 -0
- data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +86 -0
- data/ext/ddtrace_profiling_native_extension/clock_id.h +4 -0
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +52 -0
- data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +14 -0
- data/ext/ddtrace_profiling_native_extension/extconf.rb +206 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +35 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +3 -0
- data/ext/ddtrace_profiling_native_extension/profiling.c +24 -0
- data/lib/datadog/appsec/assets/blocked.html +4 -0
- data/lib/datadog/appsec/assets/waf_rules/README.md +7 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +5638 -0
- data/lib/datadog/appsec/assets/waf_rules/risky.json +1499 -0
- data/lib/datadog/appsec/assets/waf_rules/strict.json +1298 -0
- data/lib/datadog/appsec/assets.rb +38 -0
- data/lib/datadog/appsec/autoload.rb +16 -0
- data/lib/datadog/appsec/configuration/settings.rb +175 -0
- data/lib/datadog/appsec/configuration.rb +72 -0
- data/lib/datadog/appsec/contrib/auto_instrument.rb +29 -0
- data/lib/datadog/appsec/contrib/configuration/settings.rb +20 -0
- data/lib/datadog/appsec/contrib/integration.rb +37 -0
- data/lib/datadog/appsec/contrib/patcher.rb +12 -0
- data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +22 -0
- data/lib/datadog/appsec/contrib/rack/ext.rb +15 -0
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +126 -0
- data/lib/datadog/appsec/contrib/rack/integration.rb +48 -0
- data/lib/datadog/appsec/contrib/rack/patcher.rb +33 -0
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +87 -0
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +64 -0
- data/lib/datadog/appsec/contrib/rack/request.rb +52 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +57 -0
- data/lib/datadog/appsec/contrib/rack/response.rb +24 -0
- data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +22 -0
- data/lib/datadog/appsec/contrib/rails/ext.rb +15 -0
- data/lib/datadog/appsec/contrib/rails/framework.rb +30 -0
- data/lib/datadog/appsec/contrib/rails/integration.rb +48 -0
- data/lib/datadog/appsec/contrib/rails/patcher.rb +125 -0
- data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
- data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +22 -0
- data/lib/datadog/appsec/contrib/sinatra/ext.rb +15 -0
- data/lib/datadog/appsec/contrib/sinatra/framework.rb +34 -0
- data/lib/datadog/appsec/contrib/sinatra/integration.rb +48 -0
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +77 -0
- data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
- data/lib/datadog/appsec/event.rb +106 -0
- data/lib/datadog/appsec/extensions.rb +121 -0
- data/lib/datadog/appsec/instrumentation/gateway.rb +44 -0
- data/lib/datadog/appsec/processor.rb +121 -0
- data/lib/datadog/appsec/rate_limiter.rb +55 -0
- data/lib/datadog/appsec/reactive/address_hash.rb +18 -0
- data/lib/datadog/appsec/reactive/engine.rb +44 -0
- data/lib/datadog/appsec/reactive/operation.rb +52 -0
- data/lib/datadog/appsec/reactive/subscriber.rb +18 -0
- data/lib/datadog/appsec.rb +23 -0
- data/lib/datadog/ci/configuration/components.rb +10 -8
- data/lib/datadog/ci/configuration/settings.rb +20 -3
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +6 -3
- data/lib/datadog/ci/contrib/cucumber/ext.rb +3 -0
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +5 -8
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +3 -1
- data/lib/datadog/ci/contrib/cucumber/integration.rb +4 -2
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +4 -2
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +6 -3
- data/lib/datadog/ci/contrib/rspec/example.rb +5 -8
- data/lib/datadog/ci/contrib/rspec/ext.rb +3 -0
- data/lib/datadog/ci/contrib/rspec/integration.rb +6 -4
- data/lib/datadog/ci/contrib/rspec/patcher.rb +4 -2
- data/lib/datadog/ci/ext/app_types.rb +3 -1
- data/lib/datadog/ci/ext/environment.rb +312 -126
- data/lib/datadog/ci/ext/settings.rb +3 -1
- data/lib/datadog/ci/ext/test.rb +10 -1
- data/lib/datadog/ci/extensions.rb +6 -4
- data/lib/datadog/ci/flush.rb +38 -0
- data/lib/datadog/ci/test.rb +33 -13
- data/lib/datadog/ci.rb +5 -1
- data/lib/datadog/core/buffer/cruby.rb +55 -0
- data/lib/datadog/core/buffer/random.rb +134 -0
- data/lib/datadog/core/buffer/thread_safe.rb +58 -0
- data/lib/datadog/core/chunker.rb +35 -0
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +365 -0
- data/lib/datadog/core/configuration/base.rb +89 -0
- data/lib/datadog/core/configuration/components.rb +393 -0
- data/lib/datadog/core/configuration/dependency_resolver.rb +28 -0
- data/lib/datadog/core/configuration/option.rb +69 -0
- data/lib/datadog/core/configuration/option_definition.rb +126 -0
- data/lib/datadog/core/configuration/option_definition_set.rb +22 -0
- data/lib/datadog/core/configuration/option_set.rb +10 -0
- data/lib/datadog/core/configuration/options.rb +118 -0
- data/lib/datadog/core/configuration/settings.rb +618 -0
- data/lib/datadog/core/configuration.rb +284 -0
- data/lib/datadog/core/diagnostics/environment_logger.rb +283 -0
- data/lib/datadog/core/diagnostics/ext.rb +41 -0
- data/lib/datadog/core/diagnostics/health.rb +37 -0
- data/lib/datadog/core/encoding.rb +76 -0
- data/lib/datadog/core/environment/cgroup.rb +53 -0
- data/lib/datadog/core/environment/class_count.rb +21 -0
- data/lib/datadog/core/environment/container.rb +92 -0
- data/lib/datadog/core/environment/ext.rb +46 -0
- data/lib/datadog/core/environment/gc.rb +20 -0
- data/lib/datadog/core/environment/identity.rb +58 -0
- data/lib/datadog/core/environment/socket.rb +24 -0
- data/lib/datadog/core/environment/thread_count.rb +20 -0
- data/lib/datadog/core/environment/variable_helpers.rb +44 -0
- data/lib/datadog/core/environment/vm_cache.rb +47 -0
- data/lib/datadog/core/error.rb +101 -0
- data/lib/datadog/core/extensions.rb +16 -0
- data/lib/datadog/core/git/ext.rb +35 -0
- data/lib/datadog/core/logger.rb +46 -0
- data/lib/datadog/core/metrics/client.rb +188 -0
- data/lib/datadog/core/metrics/ext.rb +20 -0
- data/lib/datadog/core/metrics/helpers.rb +25 -0
- data/lib/datadog/core/metrics/logging.rb +44 -0
- data/lib/datadog/core/metrics/metric.rb +14 -0
- data/lib/datadog/core/metrics/options.rb +50 -0
- data/lib/datadog/core/pin.rb +75 -0
- data/lib/datadog/core/runtime/ext.rb +28 -0
- data/lib/datadog/core/runtime/metrics.rb +126 -0
- data/lib/datadog/core/utils/compression.rb +32 -0
- data/lib/datadog/core/utils/forking.rb +63 -0
- data/lib/datadog/core/utils/object_set.rb +43 -0
- data/lib/datadog/core/utils/only_once.rb +44 -0
- data/lib/datadog/core/utils/safe_dup.rb +27 -0
- data/lib/datadog/core/utils/sequence.rb +21 -0
- data/lib/datadog/core/utils/string_table.rb +49 -0
- data/lib/datadog/core/utils/time.rb +54 -0
- data/lib/datadog/core/utils.rb +115 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +120 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +61 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +139 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +13 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +12 -0
- data/lib/datadog/core/vendor/multipart-post/multipart.rb +16 -0
- data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +36 -0
- data/lib/datadog/core/worker.rb +24 -0
- data/lib/datadog/core/workers/async.rb +180 -0
- data/lib/datadog/core/workers/interval_loop.rb +119 -0
- data/lib/datadog/core/workers/polling.rb +59 -0
- data/lib/datadog/core/workers/queue.rb +44 -0
- data/lib/datadog/core/workers/runtime_metrics.rb +65 -0
- data/lib/datadog/core.rb +74 -0
- data/lib/datadog/opentracer/binary_propagator.rb +26 -0
- data/lib/datadog/opentracer/carrier.rb +9 -0
- data/lib/datadog/opentracer/distributed_headers.rb +58 -0
- data/lib/datadog/opentracer/global_tracer.rb +17 -0
- data/lib/datadog/opentracer/propagator.rb +26 -0
- data/lib/datadog/opentracer/rack_propagator.rb +72 -0
- data/lib/datadog/opentracer/scope.rb +18 -0
- data/lib/datadog/opentracer/scope_manager.rb +9 -0
- data/lib/datadog/opentracer/span.rb +101 -0
- data/lib/datadog/opentracer/span_context.rb +19 -0
- data/lib/datadog/opentracer/span_context_factory.rb +27 -0
- data/lib/datadog/opentracer/text_map_propagator.rb +87 -0
- data/lib/datadog/opentracer/thread_local_scope.rb +34 -0
- data/lib/datadog/opentracer/thread_local_scope_manager.rb +43 -0
- data/lib/datadog/opentracer/tracer.rb +214 -0
- data/lib/datadog/opentracer.rb +24 -0
- data/lib/datadog/profiling/backtrace_location.rb +34 -0
- data/lib/datadog/profiling/buffer.rb +43 -0
- data/lib/datadog/profiling/collectors/code_provenance.rb +114 -0
- data/lib/datadog/profiling/collectors/stack.rb +297 -0
- data/lib/datadog/profiling/encoding/profile.rb +48 -0
- data/lib/datadog/profiling/event.rb +15 -0
- data/lib/datadog/profiling/events/stack.rb +82 -0
- data/lib/datadog/profiling/exporter.rb +25 -0
- data/lib/datadog/profiling/ext/forking.rb +99 -0
- data/lib/datadog/profiling/ext.rb +57 -0
- data/lib/datadog/profiling/flush.rb +69 -0
- data/lib/datadog/profiling/native_extension.rb +41 -0
- data/lib/datadog/profiling/pprof/builder.rb +127 -0
- data/lib/datadog/profiling/pprof/converter.rb +104 -0
- data/lib/datadog/profiling/pprof/message_set.rb +16 -0
- data/lib/datadog/profiling/pprof/payload.rb +20 -0
- data/lib/datadog/profiling/pprof/pprof_pb.rb +83 -0
- data/lib/datadog/profiling/pprof/stack_sample.rb +141 -0
- data/lib/datadog/profiling/pprof/string_table.rb +12 -0
- data/lib/datadog/profiling/pprof/template.rb +120 -0
- data/lib/datadog/profiling/preload.rb +5 -0
- data/lib/datadog/profiling/profiler.rb +34 -0
- data/lib/datadog/profiling/recorder.rb +117 -0
- data/lib/datadog/profiling/scheduler.rb +151 -0
- data/lib/datadog/profiling/tasks/exec.rb +50 -0
- data/lib/datadog/profiling/tasks/help.rb +18 -0
- data/lib/datadog/profiling/tasks/setup.rb +91 -0
- data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +45 -0
- data/lib/datadog/profiling/trace_identifiers/helper.rb +47 -0
- data/lib/datadog/profiling/transport/client.rb +16 -0
- data/lib/datadog/profiling/transport/http/api/endpoint.rb +107 -0
- data/lib/datadog/profiling/transport/http/api/instance.rb +38 -0
- data/lib/datadog/profiling/transport/http/api/spec.rb +42 -0
- data/lib/datadog/profiling/transport/http/api.rb +45 -0
- data/lib/datadog/profiling/transport/http/builder.rb +30 -0
- data/lib/datadog/profiling/transport/http/client.rb +35 -0
- data/lib/datadog/profiling/transport/http/response.rb +23 -0
- data/lib/datadog/profiling/transport/http.rb +112 -0
- data/lib/datadog/profiling/transport/io/client.rb +29 -0
- data/lib/datadog/profiling/transport/io/response.rb +18 -0
- data/lib/datadog/profiling/transport/io.rb +32 -0
- data/lib/datadog/profiling/transport/parcel.rb +19 -0
- data/lib/datadog/profiling/transport/request.rb +17 -0
- data/lib/datadog/profiling/transport/response.rb +10 -0
- data/lib/datadog/profiling.rb +168 -0
- data/lib/datadog/tracing/analytics.rb +25 -0
- data/lib/datadog/tracing/buffer.rb +126 -0
- data/lib/datadog/tracing/configuration/ext.rb +51 -0
- data/lib/datadog/tracing/context.rb +68 -0
- data/lib/datadog/tracing/context_provider.rb +66 -0
- data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/action_cable/event.rb +72 -0
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +58 -0
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +63 -0
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +59 -0
- data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
- data/lib/datadog/tracing/contrib/action_cable/ext.rb +32 -0
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +91 -0
- data/lib/datadog/tracing/contrib/action_cable/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
- data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +36 -0
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +52 -0
- data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +60 -0
- data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +47 -0
- data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
- data/lib/datadog/tracing/contrib/action_mailer/ext.rb +33 -0
- data/lib/datadog/tracing/contrib/action_mailer/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +156 -0
- data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +36 -0
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +22 -0
- data/lib/datadog/tracing/contrib/action_pack/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/action_pack/patcher.rb +27 -0
- data/lib/datadog/tracing/contrib/action_pack/utils.rb +40 -0
- data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +36 -0
- data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +54 -0
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +57 -0
- data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
- data/lib/datadog/tracing/contrib/action_view/ext.rb +24 -0
- data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +78 -0
- data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +91 -0
- data/lib/datadog/tracing/contrib/action_view/integration.rb +57 -0
- data/lib/datadog/tracing/contrib/action_view/patcher.rb +48 -0
- data/lib/datadog/tracing/contrib/action_view/utils.rb +36 -0
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +50 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +49 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +49 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +51 -0
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +49 -0
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +50 -0
- data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
- data/lib/datadog/tracing/contrib/active_job/ext.rb +39 -0
- data/lib/datadog/tracing/contrib/active_job/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/active_job/log_injection.rb +26 -0
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +36 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +33 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +69 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +45 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +47 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +24 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +45 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +33 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +36 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +138 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +39 -0
- data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +58 -0
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +78 -0
- data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
- data/lib/datadog/tracing/contrib/active_record/ext.rb +29 -0
- data/lib/datadog/tracing/contrib/active_record/integration.rb +56 -0
- data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
- data/lib/datadog/tracing/contrib/active_record/utils.rb +128 -0
- data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +307 -0
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +270 -0
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +73 -0
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +47 -0
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/active_support/ext.rb +31 -0
- data/lib/datadog/tracing/contrib/active_support/integration.rb +51 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +71 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +71 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +162 -0
- data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
- data/lib/datadog/tracing/contrib/analytics.rb +29 -0
- data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/aws/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +95 -0
- data/lib/datadog/tracing/contrib/aws/integration.rb +47 -0
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +60 -0
- data/lib/datadog/tracing/contrib/aws/patcher.rb +57 -0
- data/lib/datadog/tracing/contrib/aws/services.rb +123 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +23 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +46 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +27 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +33 -0
- data/lib/datadog/tracing/contrib/configurable.rb +102 -0
- data/lib/datadog/tracing/contrib/configuration/resolver.rb +85 -0
- data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
- data/lib/datadog/tracing/contrib/configuration/settings.rb +43 -0
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/dalli/ext.rb +24 -0
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +58 -0
- data/lib/datadog/tracing/contrib/dalli/integration.rb +52 -0
- data/lib/datadog/tracing/contrib/dalli/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/dalli/quantize.rb +26 -0
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +38 -0
- data/lib/datadog/tracing/contrib/delayed_job/ext.rb +26 -0
- data/lib/datadog/tracing/contrib/delayed_job/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +32 -0
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +101 -0
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +36 -0
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +26 -0
- data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +115 -0
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +89 -0
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +177 -0
- data/lib/datadog/tracing/contrib/ethon/ext.rb +24 -0
- data/lib/datadog/tracing/contrib/ethon/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +96 -0
- data/lib/datadog/tracing/contrib/ethon/patcher.rb +32 -0
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +38 -0
- data/lib/datadog/tracing/contrib/excon/ext.rb +21 -0
- data/lib/datadog/tracing/contrib/excon/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/excon/middleware.rb +170 -0
- data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
- data/lib/datadog/tracing/contrib/extensions.rb +199 -0
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +42 -0
- data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
- data/lib/datadog/tracing/contrib/faraday/ext.rb +21 -0
- data/lib/datadog/tracing/contrib/faraday/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +93 -0
- data/lib/datadog/tracing/contrib/faraday/patcher.rb +57 -0
- data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +42 -0
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +253 -0
- data/lib/datadog/tracing/contrib/grape/ext.rb +28 -0
- data/lib/datadog/tracing/contrib/grape/instrumentation.rb +37 -0
- data/lib/datadog/tracing/contrib/grape/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/grape/patcher.rb +34 -0
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +36 -0
- data/lib/datadog/tracing/contrib/graphql/ext.rb +19 -0
- data/lib/datadog/tracing/contrib/graphql/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +92 -0
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +84 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +90 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +104 -0
- data/lib/datadog/tracing/contrib/grpc/ext.rb +23 -0
- data/lib/datadog/tracing/contrib/grpc/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
- data/lib/datadog/tracing/contrib/grpc/patcher.rb +38 -0
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +44 -0
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/http/ext.rb +21 -0
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +139 -0
- data/lib/datadog/tracing/contrib/http/integration.rb +49 -0
- data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
- data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +21 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +117 -0
- data/lib/datadog/tracing/contrib/httpclient/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/httpclient/patcher.rb +42 -0
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/httprb/ext.rb +21 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +128 -0
- data/lib/datadog/tracing/contrib/httprb/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/httprb/patcher.rb +42 -0
- data/lib/datadog/tracing/contrib/integration.rb +78 -0
- data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +18 -0
- data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
- data/lib/datadog/tracing/contrib/kafka/event.rb +52 -0
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +42 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +49 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +47 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +47 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +37 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +37 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +37 -0
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +40 -0
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +43 -0
- data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
- data/lib/datadog/tracing/contrib/kafka/ext.rb +52 -0
- data/lib/datadog/tracing/contrib/kafka/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/kafka/patcher.rb +30 -0
- data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +23 -0
- data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +46 -0
- data/lib/datadog/tracing/contrib/lograge/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +38 -0
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
- data/lib/datadog/tracing/contrib/mongodb/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +49 -0
- data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +121 -0
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +22 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +62 -0
- data/lib/datadog/tracing/contrib/mysql2/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
- data/lib/datadog/tracing/contrib/patchable.rb +109 -0
- data/lib/datadog/tracing/contrib/patcher.rb +74 -0
- data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/presto/ext.rb +32 -0
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +125 -0
- data/lib/datadog/tracing/contrib/presto/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/presto/patcher.rb +37 -0
- data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +40 -0
- data/lib/datadog/tracing/contrib/qless/ext.rb +26 -0
- data/lib/datadog/tracing/contrib/qless/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/qless/patcher.rb +39 -0
- data/lib/datadog/tracing/contrib/qless/qless_job.rb +75 -0
- data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +32 -0
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +49 -0
- data/lib/datadog/tracing/contrib/que/ext.rb +34 -0
- data/lib/datadog/tracing/contrib/que/integration.rb +46 -0
- data/lib/datadog/tracing/contrib/que/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/que/tracer.rb +61 -0
- data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/racecar/event.rb +79 -0
- data/lib/datadog/tracing/contrib/racecar/events/batch.rb +35 -0
- data/lib/datadog/tracing/contrib/racecar/events/consume.rb +35 -0
- data/lib/datadog/tracing/contrib/racecar/events/message.rb +35 -0
- data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
- data/lib/datadog/tracing/contrib/racecar/ext.rb +31 -0
- data/lib/datadog/tracing/contrib/racecar/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/racecar/patcher.rb +30 -0
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +51 -0
- data/lib/datadog/tracing/contrib/rack/ext.rb +25 -0
- data/lib/datadog/tracing/contrib/rack/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +255 -0
- data/lib/datadog/tracing/contrib/rack/patcher.rb +109 -0
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +48 -0
- data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +12 -0
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +71 -0
- data/lib/datadog/tracing/contrib/rails/ext.rb +19 -0
- data/lib/datadog/tracing/contrib/rails/framework.rb +152 -0
- data/lib/datadog/tracing/contrib/rails/integration.rb +49 -0
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +47 -0
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +47 -0
- data/lib/datadog/tracing/contrib/rails/patcher.rb +121 -0
- data/lib/datadog/tracing/contrib/rails/railtie.rb +19 -0
- data/lib/datadog/tracing/contrib/rails/utils.rb +28 -0
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +36 -0
- data/lib/datadog/tracing/contrib/rake/ext.rb +26 -0
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +98 -0
- data/lib/datadog/tracing/contrib/rake/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/rake/patcher.rb +35 -0
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +49 -0
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +40 -0
- data/lib/datadog/tracing/contrib/redis/ext.rb +26 -0
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +78 -0
- data/lib/datadog/tracing/contrib/redis/integration.rb +47 -0
- data/lib/datadog/tracing/contrib/redis/patcher.rb +36 -0
- data/lib/datadog/tracing/contrib/redis/quantize.rb +79 -0
- data/lib/datadog/tracing/contrib/redis/tags.rb +54 -0
- data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +162 -0
- data/lib/datadog/tracing/contrib/registerable.rb +50 -0
- data/lib/datadog/tracing/contrib/registry.rb +52 -0
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/resque/ext.rb +21 -0
- data/lib/datadog/tracing/contrib/resque/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/resque/patcher.rb +30 -0
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +103 -0
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +36 -0
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +21 -0
- data/lib/datadog/tracing/contrib/rest_client/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/rest_client/patcher.rb +30 -0
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +105 -0
- data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +23 -0
- data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +50 -0
- data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +52 -0
- data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +33 -0
- data/lib/datadog/tracing/contrib/sequel/database.rb +60 -0
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +65 -0
- data/lib/datadog/tracing/contrib/sequel/ext.rb +22 -0
- data/lib/datadog/tracing/contrib/sequel/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
- data/lib/datadog/tracing/contrib/sequel/utils.rb +87 -0
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +38 -0
- data/lib/datadog/tracing/contrib/shoryuken/ext.rb +25 -0
- data/lib/datadog/tracing/contrib/shoryuken/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +61 -0
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +53 -0
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +43 -0
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +38 -0
- data/lib/datadog/tracing/contrib/sidekiq/integration.rb +53 -0
- data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +71 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +34 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +34 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +33 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +79 -0
- data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +44 -0
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +43 -0
- data/lib/datadog/tracing/contrib/sinatra/env.rb +66 -0
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +32 -0
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +107 -0
- data/lib/datadog/tracing/contrib/sinatra/headers.rb +35 -0
- data/lib/datadog/tracing/contrib/sinatra/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/sinatra/patcher.rb +77 -0
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +159 -0
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +123 -0
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +38 -0
- data/lib/datadog/tracing/contrib/sneakers/ext.rb +26 -0
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +46 -0
- data/lib/datadog/tracing/contrib/sneakers/patcher.rb +30 -0
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +58 -0
- data/lib/datadog/tracing/contrib/status_code_matcher.rb +75 -0
- data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
- data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +105 -0
- data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +38 -0
- data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
- data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +111 -0
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +99 -0
- data/lib/datadog/tracing/contrib.rb +76 -0
- data/lib/datadog/tracing/correlation.rb +100 -0
- data/lib/datadog/tracing/distributed/headers/b3.rb +55 -0
- data/lib/datadog/tracing/distributed/headers/b3_single.rb +67 -0
- data/lib/datadog/tracing/distributed/headers/datadog.rb +52 -0
- data/lib/datadog/tracing/distributed/headers/ext.rb +31 -0
- data/lib/datadog/tracing/distributed/helpers.rb +44 -0
- data/lib/datadog/tracing/distributed/parser.rb +70 -0
- data/lib/datadog/tracing/event.rb +77 -0
- data/lib/datadog/tracing/flush.rb +74 -0
- data/lib/datadog/tracing/metadata/analytics.rb +26 -0
- data/lib/datadog/tracing/metadata/errors.rb +24 -0
- data/lib/datadog/tracing/metadata/ext.rb +151 -0
- data/lib/datadog/tracing/metadata/tagging.rb +110 -0
- data/lib/datadog/tracing/metadata.rb +20 -0
- data/lib/datadog/tracing/pipeline/span_filter.rb +42 -0
- data/lib/datadog/tracing/pipeline/span_processor.rb +39 -0
- data/lib/datadog/tracing/pipeline.rb +65 -0
- data/lib/datadog/tracing/propagation/grpc.rb +88 -0
- data/lib/datadog/tracing/propagation/http.rb +109 -0
- data/lib/datadog/tracing/runtime/metrics.rb +19 -0
- data/lib/datadog/tracing/sampling/all_sampler.rb +25 -0
- data/lib/datadog/tracing/sampling/ext.rb +27 -0
- data/lib/datadog/tracing/sampling/matcher.rb +68 -0
- data/lib/datadog/tracing/sampling/priority_sampler.rb +113 -0
- data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +97 -0
- data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +41 -0
- data/lib/datadog/tracing/sampling/rate_limiter.rb +185 -0
- data/lib/datadog/tracing/sampling/rate_sampler.rb +55 -0
- data/lib/datadog/tracing/sampling/rule.rb +70 -0
- data/lib/datadog/tracing/sampling/rule_sampler.rb +133 -0
- data/lib/datadog/tracing/sampling/sampler.rb +44 -0
- data/lib/datadog/tracing/span.rb +212 -0
- data/lib/datadog/tracing/span_operation.rb +521 -0
- data/lib/datadog/tracing/sync_writer.rb +69 -0
- data/lib/datadog/tracing/trace_digest.rb +60 -0
- data/lib/datadog/tracing/trace_operation.rb +432 -0
- data/lib/datadog/tracing/trace_segment.rb +207 -0
- data/lib/datadog/tracing/tracer.rb +505 -0
- data/lib/datadog/tracing/workers/trace_writer.rb +195 -0
- data/lib/datadog/tracing/workers.rb +125 -0
- data/lib/datadog/tracing/writer.rb +180 -0
- data/lib/datadog/tracing.rb +142 -0
- data/lib/ddtrace/auto_instrument.rb +7 -1
- data/lib/ddtrace/auto_instrument_base.rb +2 -0
- data/lib/ddtrace/profiling/preload.rb +3 -2
- data/lib/ddtrace/transport/ext.rb +35 -0
- data/lib/ddtrace/transport/http/adapters/net.rb +17 -5
- data/lib/ddtrace/transport/http/adapters/registry.rb +2 -0
- data/lib/ddtrace/transport/http/adapters/test.rb +6 -2
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +25 -12
- data/lib/ddtrace/transport/http/api/endpoint.rb +2 -0
- data/lib/ddtrace/transport/http/api/fallbacks.rb +2 -0
- data/lib/ddtrace/transport/http/api/instance.rb +2 -0
- data/lib/ddtrace/transport/http/api/map.rb +2 -0
- data/lib/ddtrace/transport/http/api/spec.rb +2 -0
- data/lib/ddtrace/transport/http/api.rb +6 -11
- data/lib/ddtrace/transport/http/builder.rb +15 -6
- data/lib/ddtrace/transport/http/client.rb +4 -1
- data/lib/ddtrace/transport/http/env.rb +2 -0
- data/lib/ddtrace/transport/http/response.rb +2 -0
- data/lib/ddtrace/transport/http/statistics.rb +2 -0
- data/lib/ddtrace/transport/http/traces.rb +4 -0
- data/lib/ddtrace/transport/http.rb +38 -36
- data/lib/ddtrace/transport/io/client.rb +3 -1
- data/lib/ddtrace/transport/io/response.rb +2 -0
- data/lib/ddtrace/transport/io/traces.rb +5 -1
- data/lib/ddtrace/transport/io.rb +4 -2
- data/lib/ddtrace/transport/parcel.rb +5 -0
- data/lib/ddtrace/transport/request.rb +2 -0
- data/lib/ddtrace/transport/response.rb +2 -0
- data/lib/ddtrace/transport/serializable_trace.rb +118 -0
- data/lib/ddtrace/transport/statistics.rb +7 -4
- data/lib/ddtrace/transport/trace_formatter.rb +187 -0
- data/lib/ddtrace/transport/traces.rb +18 -7
- data/lib/ddtrace/version.rb +15 -12
- data/lib/ddtrace.rb +9 -79
- metadata +591 -1012
- data/.circleci/config.yml +0 -870
- data/.circleci/images/primary/Dockerfile-2.1.10 +0 -83
- data/.circleci/images/primary/Dockerfile-2.2.10 +0 -83
- data/.circleci/images/primary/Dockerfile-2.3.8 +0 -85
- data/.circleci/images/primary/Dockerfile-2.4.6 +0 -83
- data/.circleci/images/primary/Dockerfile-2.5.6 +0 -83
- data/.circleci/images/primary/Dockerfile-2.6.4 +0 -83
- data/.circleci/images/primary/Dockerfile-2.7.0 +0 -83
- data/.circleci/images/primary/Dockerfile-3.0.0 +0 -73
- data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +0 -88
- data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +0 -73
- data/.circleci/images/primary/Dockerfile-truffleruby-21.1.0 +0 -73
- data/.dockerignore +0 -0
- data/.env +0 -26
- data/.github/CODEOWNERS +0 -1
- data/.github/workflows/add-milestone-to-pull-requests.yml +0 -42
- data/.github/workflows/create-next-milestone.yml +0 -20
- data/.gitlab-ci.yml +0 -27
- data/.rspec +0 -1
- data/.rubocop.yml +0 -351
- data/.rubocop_todo.yml +0 -438
- data/.simplecov +0 -47
- data/.yardopts +0 -5
- data/Appraisals +0 -1323
- data/Gemfile +0 -69
- data/Rakefile +0 -939
- data/benchmarks/data/profiler-submission-marshal.gz +0 -0
- data/benchmarks/postgres_database.yml +0 -9
- data/benchmarks/profiler_sample_loop.rb +0 -69
- data/benchmarks/profiler_submission.rb +0 -93
- data/benchmarks/sidekiq_test.rb +0 -154
- data/docker-compose.yml +0 -414
- data/gemfiles/jruby_9.2.0.0_contrib.gemfile +0 -79
- data/gemfiles/jruby_9.2.0.0_contrib.gemfile.lock +0 -1518
- data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile +0 -35
- data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile.lock +0 -157
- data/gemfiles/jruby_9.2.0.0_core_old.gemfile +0 -34
- data/gemfiles/jruby_9.2.0.0_core_old.gemfile.lock +0 -153
- data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile +0 -35
- data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile.lock +0 -174
- data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile +0 -35
- data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile.lock +0 -206
- data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile +0 -35
- data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile.lock +0 -206
- data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile +0 -40
- data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile.lock +0 -271
- data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile +0 -40
- data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile.lock +0 -271
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile +0 -41
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile.lock +0 -273
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile +0 -41
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile.lock +0 -273
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile +0 -42
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile.lock +0 -279
- data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile +0 -40
- data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile.lock +0 -290
- data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile +0 -40
- data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile.lock +0 -290
- data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile +0 -41
- data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile.lock +0 -292
- data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile +0 -41
- data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile.lock +0 -297
- data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile +0 -40
- data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile.lock +0 -287
- data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile +0 -40
- data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile.lock +0 -287
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile +0 -41
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile.lock +0 -289
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile +0 -41
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile.lock +0 -289
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile +0 -42
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile.lock +0 -295
- data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile +0 -36
- data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile.lock +0 -180
- data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile +0 -36
- data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile.lock +0 -180
- data/gemfiles/jruby_9.2.11.1_contrib.gemfile +0 -79
- data/gemfiles/jruby_9.2.11.1_contrib.gemfile.lock +0 -1518
- data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile +0 -35
- data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile.lock +0 -157
- data/gemfiles/jruby_9.2.11.1_core_old.gemfile +0 -34
- data/gemfiles/jruby_9.2.11.1_core_old.gemfile.lock +0 -153
- data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile +0 -35
- data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile.lock +0 -174
- data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile +0 -35
- data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile.lock +0 -206
- data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile +0 -35
- data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile.lock +0 -206
- data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile +0 -40
- data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile.lock +0 -271
- data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile +0 -40
- data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile.lock +0 -271
- data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile +0 -41
- data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile.lock +0 -273
- data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile +0 -41
- data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile.lock +0 -273
- data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile +0 -42
- data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile.lock +0 -279
- data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile +0 -40
- data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile.lock +0 -290
- data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile +0 -40
- data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile.lock +0 -290
- data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile +0 -41
- data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile.lock +0 -292
- data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile +0 -41
- data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile.lock +0 -297
- data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile +0 -40
- data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile.lock +0 -287
- data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile +0 -40
- data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile.lock +0 -287
- data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile +0 -41
- data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile.lock +0 -289
- data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile +0 -41
- data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile.lock +0 -289
- data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile +0 -42
- data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile.lock +0 -295
- data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile +0 -36
- data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile.lock +0 -180
- data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile +0 -36
- data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile.lock +0 -180
- data/gemfiles/ruby_2.1.10_contrib_old.gemfile +0 -66
- data/gemfiles/ruby_2.1.10_contrib_old.gemfile.lock +0 -305
- data/gemfiles/ruby_2.1.10_core_old.gemfile +0 -33
- data/gemfiles/ruby_2.1.10_core_old.gemfile.lock +0 -118
- data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile +0 -39
- data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile.lock +0 -196
- data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile +0 -40
- data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile.lock +0 -205
- data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile +0 -42
- data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile.lock +0 -215
- data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile +0 -39
- data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile.lock +0 -204
- data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile +0 -41
- data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile.lock +0 -223
- data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile +0 -40
- data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile.lock +0 -213
- data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile +0 -38
- data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile.lock +0 -218
- data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile +0 -38
- data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile.lock +0 -218
- data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile +0 -40
- data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile.lock +0 -237
- data/gemfiles/ruby_2.2.10_contrib.gemfile +0 -73
- data/gemfiles/ruby_2.2.10_contrib.gemfile.lock +0 -1450
- data/gemfiles/ruby_2.2.10_core_old.gemfile +0 -33
- data/gemfiles/ruby_2.2.10_core_old.gemfile.lock +0 -118
- data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile +0 -39
- data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile.lock +0 -196
- data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile +0 -40
- data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile.lock +0 -205
- data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile +0 -41
- data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile.lock +0 -212
- data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile +0 -39
- data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile.lock +0 -204
- data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile +0 -41
- data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile.lock +0 -223
- data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile +0 -40
- data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile.lock +0 -213
- data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile +0 -38
- data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile.lock +0 -218
- data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile +0 -38
- data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile.lock +0 -218
- data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile +0 -40
- data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile.lock +0 -237
- data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile +0 -40
- data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile.lock +0 -229
- data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile +0 -38
- data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile.lock +0 -234
- data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile +0 -38
- data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile.lock +0 -234
- data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile +0 -39
- data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile.lock +0 -236
- data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile +0 -39
- data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile.lock +0 -236
- data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile +0 -40
- data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile.lock +0 -245
- data/gemfiles/ruby_2.3.8_contrib.gemfile +0 -73
- data/gemfiles/ruby_2.3.8_contrib.gemfile.lock +0 -1459
- data/gemfiles/ruby_2.3.8_contrib_old.gemfile +0 -34
- data/gemfiles/ruby_2.3.8_contrib_old.gemfile.lock +0 -127
- data/gemfiles/ruby_2.3.8_core_old.gemfile +0 -33
- data/gemfiles/ruby_2.3.8_core_old.gemfile.lock +0 -123
- data/gemfiles/ruby_2.3.8_cucumber3.gemfile +0 -34
- data/gemfiles/ruby_2.3.8_cucumber3.gemfile.lock +0 -144
- data/gemfiles/ruby_2.3.8_cucumber4.gemfile +0 -34
- data/gemfiles/ruby_2.3.8_cucumber4.gemfile.lock +0 -174
- data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile +0 -39
- data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile.lock +0 -201
- data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile +0 -40
- data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile.lock +0 -210
- data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile +0 -41
- data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile.lock +0 -217
- data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile +0 -39
- data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile.lock +0 -209
- data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile +0 -41
- data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile.lock +0 -228
- data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile +0 -40
- data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile.lock +0 -218
- data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile +0 -38
- data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile.lock +0 -223
- data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile +0 -38
- data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile.lock +0 -223
- data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile +0 -40
- data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile.lock +0 -242
- data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile +0 -40
- data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile.lock +0 -234
- data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile +0 -37
- data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile.lock +0 -234
- data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile +0 -37
- data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile.lock +0 -234
- data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile +0 -38
- data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile.lock +0 -236
- data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile +0 -38
- data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile.lock +0 -236
- data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile +0 -39
- data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile.lock +0 -245
- data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile +0 -35
- data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile.lock +0 -150
- data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile +0 -35
- data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile.lock +0 -150
- data/gemfiles/ruby_2.4.6_contrib.gemfile +0 -78
- data/gemfiles/ruby_2.4.6_contrib.gemfile.lock +0 -1513
- data/gemfiles/ruby_2.4.6_contrib_old.gemfile +0 -38
- data/gemfiles/ruby_2.4.6_contrib_old.gemfile.lock +0 -155
- data/gemfiles/ruby_2.4.6_core_old.gemfile +0 -37
- data/gemfiles/ruby_2.4.6_core_old.gemfile.lock +0 -151
- data/gemfiles/ruby_2.4.6_cucumber3.gemfile +0 -38
- data/gemfiles/ruby_2.4.6_cucumber3.gemfile.lock +0 -172
- data/gemfiles/ruby_2.4.6_cucumber4.gemfile +0 -38
- data/gemfiles/ruby_2.4.6_cucumber4.gemfile.lock +0 -202
- data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile +0 -41
- data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile.lock +0 -262
- data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile +0 -41
- data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile.lock +0 -262
- data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile +0 -42
- data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile.lock +0 -264
- data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile +0 -42
- data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile.lock +0 -264
- data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile +0 -43
- data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile.lock +0 -273
- data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile +0 -39
- data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile.lock +0 -178
- data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile +0 -39
- data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile.lock +0 -178
- data/gemfiles/ruby_2.5.6_contrib.gemfile +0 -83
- data/gemfiles/ruby_2.5.6_contrib.gemfile.lock +0 -1526
- data/gemfiles/ruby_2.5.6_contrib_old.gemfile +0 -39
- data/gemfiles/ruby_2.5.6_contrib_old.gemfile.lock +0 -165
- data/gemfiles/ruby_2.5.6_core_old.gemfile +0 -38
- data/gemfiles/ruby_2.5.6_core_old.gemfile.lock +0 -161
- data/gemfiles/ruby_2.5.6_cucumber3.gemfile +0 -39
- data/gemfiles/ruby_2.5.6_cucumber3.gemfile.lock +0 -182
- data/gemfiles/ruby_2.5.6_cucumber4.gemfile +0 -39
- data/gemfiles/ruby_2.5.6_cucumber4.gemfile.lock +0 -214
- data/gemfiles/ruby_2.5.6_cucumber5.gemfile +0 -39
- data/gemfiles/ruby_2.5.6_cucumber5.gemfile.lock +0 -214
- data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile +0 -44
- data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile.lock +0 -276
- data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile +0 -44
- data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile.lock +0 -276
- data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile +0 -45
- data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile.lock +0 -278
- data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile +0 -45
- data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile.lock +0 -278
- data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile +0 -46
- data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile.lock +0 -284
- data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile +0 -44
- data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile.lock +0 -295
- data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile +0 -44
- data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile.lock +0 -295
- data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile +0 -45
- data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile.lock +0 -297
- data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile +0 -45
- data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile.lock +0 -302
- data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile +0 -44
- data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile.lock +0 -292
- data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile +0 -44
- data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile.lock +0 -292
- data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile +0 -45
- data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile.lock +0 -294
- data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile +0 -45
- data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile.lock +0 -294
- data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile +0 -46
- data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile.lock +0 -300
- data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile +0 -40
- data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile.lock +0 -188
- data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile +0 -40
- data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile.lock +0 -188
- data/gemfiles/ruby_2.6.4_contrib.gemfile +0 -79
- data/gemfiles/ruby_2.6.4_contrib.gemfile.lock +0 -1524
- data/gemfiles/ruby_2.6.4_contrib_old.gemfile +0 -39
- data/gemfiles/ruby_2.6.4_contrib_old.gemfile.lock +0 -167
- data/gemfiles/ruby_2.6.4_core_old.gemfile +0 -38
- data/gemfiles/ruby_2.6.4_core_old.gemfile.lock +0 -163
- data/gemfiles/ruby_2.6.4_cucumber3.gemfile +0 -39
- data/gemfiles/ruby_2.6.4_cucumber3.gemfile.lock +0 -184
- data/gemfiles/ruby_2.6.4_cucumber4.gemfile +0 -39
- data/gemfiles/ruby_2.6.4_cucumber4.gemfile.lock +0 -216
- data/gemfiles/ruby_2.6.4_cucumber5.gemfile +0 -39
- data/gemfiles/ruby_2.6.4_cucumber5.gemfile.lock +0 -216
- data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile +0 -42
- data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile.lock +0 -276
- data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile +0 -42
- data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile.lock +0 -276
- data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile +0 -43
- data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile.lock +0 -278
- data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile +0 -43
- data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile.lock +0 -278
- data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile +0 -44
- data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile.lock +0 -284
- data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile +0 -42
- data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile.lock +0 -295
- data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile +0 -42
- data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile.lock +0 -295
- data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile +0 -43
- data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile.lock +0 -297
- data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile +0 -43
- data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile.lock +0 -302
- data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile +0 -42
- data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile.lock +0 -292
- data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile +0 -42
- data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile.lock +0 -292
- data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile +0 -43
- data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile.lock +0 -294
- data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile +0 -43
- data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile.lock +0 -294
- data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile +0 -44
- data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile.lock +0 -300
- data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile +0 -40
- data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile.lock +0 -190
- data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile +0 -40
- data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile.lock +0 -190
- data/gemfiles/ruby_2.7.0_contrib.gemfile +0 -78
- data/gemfiles/ruby_2.7.0_contrib.gemfile.lock +0 -1523
- data/gemfiles/ruby_2.7.0_contrib_old.gemfile +0 -39
- data/gemfiles/ruby_2.7.0_contrib_old.gemfile.lock +0 -167
- data/gemfiles/ruby_2.7.0_core_old.gemfile +0 -38
- data/gemfiles/ruby_2.7.0_core_old.gemfile.lock +0 -163
- data/gemfiles/ruby_2.7.0_cucumber3.gemfile +0 -39
- data/gemfiles/ruby_2.7.0_cucumber3.gemfile.lock +0 -184
- data/gemfiles/ruby_2.7.0_cucumber4.gemfile +0 -39
- data/gemfiles/ruby_2.7.0_cucumber4.gemfile.lock +0 -216
- data/gemfiles/ruby_2.7.0_cucumber5.gemfile +0 -39
- data/gemfiles/ruby_2.7.0_cucumber5.gemfile.lock +0 -216
- data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile +0 -42
- data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile.lock +0 -276
- data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile +0 -42
- data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile.lock +0 -276
- data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile +0 -44
- data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile.lock +0 -295
- data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile +0 -44
- data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile.lock +0 -295
- data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile +0 -44
- data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile.lock +0 -284
- data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile +0 -42
- data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile.lock +0 -295
- data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile +0 -42
- data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile.lock +0 -295
- data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile +0 -43
- data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile.lock +0 -297
- data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile +0 -43
- data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile.lock +0 -302
- data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile +0 -42
- data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile.lock +0 -292
- data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile +0 -42
- data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile.lock +0 -292
- data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile +0 -44
- data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile.lock +0 -311
- data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile +0 -44
- data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile.lock +0 -311
- data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile +0 -44
- data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile.lock +0 -300
- data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile +0 -40
- data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile.lock +0 -190
- data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile +0 -40
- data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile.lock +0 -190
- data/gemfiles/ruby_3.0.0_contrib.gemfile +0 -78
- data/gemfiles/ruby_3.0.0_contrib.gemfile.lock +0 -1540
- data/gemfiles/ruby_3.0.0_core_old.gemfile +0 -39
- data/gemfiles/ruby_3.0.0_core_old.gemfile.lock +0 -165
- data/gemfiles/ruby_3.0.0_cucumber3.gemfile +0 -40
- data/gemfiles/ruby_3.0.0_cucumber3.gemfile.lock +0 -186
- data/gemfiles/ruby_3.0.0_cucumber4.gemfile +0 -40
- data/gemfiles/ruby_3.0.0_cucumber4.gemfile.lock +0 -218
- data/gemfiles/ruby_3.0.0_cucumber5.gemfile +0 -40
- data/gemfiles/ruby_3.0.0_cucumber5.gemfile.lock +0 -218
- data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile +0 -43
- data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile.lock +0 -295
- data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile +0 -43
- data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile.lock +0 -295
- data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile +0 -44
- data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile.lock +0 -297
- data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile +0 -44
- data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile.lock +0 -302
- data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile +0 -41
- data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile.lock +0 -192
- data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile +0 -41
- data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile.lock +0 -192
- data/integration/README.md +0 -67
- data/integration/apps/rack/.dockerignore +0 -1
- data/integration/apps/rack/.envrc.sample +0 -1
- data/integration/apps/rack/.gitignore +0 -4
- data/integration/apps/rack/.rspec +0 -1
- data/integration/apps/rack/Dockerfile +0 -28
- data/integration/apps/rack/Dockerfile-ci +0 -11
- data/integration/apps/rack/Gemfile +0 -24
- data/integration/apps/rack/README.md +0 -93
- data/integration/apps/rack/app/acme.rb +0 -80
- data/integration/apps/rack/app/datadog.rb +0 -17
- data/integration/apps/rack/bin/run +0 -22
- data/integration/apps/rack/bin/setup +0 -17
- data/integration/apps/rack/bin/test +0 -24
- data/integration/apps/rack/config/puma.rb +0 -14
- data/integration/apps/rack/config/unicorn.rb +0 -23
- data/integration/apps/rack/config.ru +0 -6
- data/integration/apps/rack/docker-compose.ci.yml +0 -62
- data/integration/apps/rack/docker-compose.yml +0 -78
- data/integration/apps/rack/script/build-images +0 -38
- data/integration/apps/rack/script/ci +0 -51
- data/integration/apps/rack/spec/integration/basic_spec.rb +0 -10
- data/integration/apps/rack/spec/spec_helper.rb +0 -16
- data/integration/apps/rack/spec/support/integration_helper.rb +0 -22
- data/integration/apps/rails-five/.dockerignore +0 -1
- data/integration/apps/rails-five/.env +0 -3
- data/integration/apps/rails-five/.envrc.sample +0 -1
- data/integration/apps/rails-five/.gitignore +0 -30
- data/integration/apps/rails-five/Dockerfile +0 -25
- data/integration/apps/rails-five/Dockerfile-ci +0 -11
- data/integration/apps/rails-five/Gemfile +0 -104
- data/integration/apps/rails-five/README.md +0 -94
- data/integration/apps/rails-five/Rakefile +0 -6
- data/integration/apps/rails-five/app/channels/application_cable/channel.rb +0 -4
- data/integration/apps/rails-five/app/channels/application_cable/connection.rb +0 -4
- data/integration/apps/rails-five/app/controllers/application_controller.rb +0 -2
- data/integration/apps/rails-five/app/controllers/basic_controller.rb +0 -36
- data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/controllers/health_controller.rb +0 -9
- data/integration/apps/rails-five/app/controllers/jobs_controller.rb +0 -12
- data/integration/apps/rails-five/app/jobs/application_job.rb +0 -2
- data/integration/apps/rails-five/app/jobs/test_job.rb +0 -12
- data/integration/apps/rails-five/app/mailers/application_mailer.rb +0 -4
- data/integration/apps/rails-five/app/models/application_record.rb +0 -3
- data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/models/test.rb +0 -2
- data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +0 -13
- data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +0 -1
- data/integration/apps/rails-five/bin/bundle +0 -3
- data/integration/apps/rails-five/bin/rails +0 -9
- data/integration/apps/rails-five/bin/rake +0 -9
- data/integration/apps/rails-five/bin/run +0 -24
- data/integration/apps/rails-five/bin/setup +0 -27
- data/integration/apps/rails-five/bin/spring +0 -17
- data/integration/apps/rails-five/bin/test +0 -21
- data/integration/apps/rails-five/bin/update +0 -28
- data/integration/apps/rails-five/config/application.rb +0 -97
- data/integration/apps/rails-five/config/boot.rb +0 -4
- data/integration/apps/rails-five/config/cable.yml +0 -10
- data/integration/apps/rails-five/config/credentials.yml.enc +0 -1
- data/integration/apps/rails-five/config/database.yml +0 -28
- data/integration/apps/rails-five/config/environment.rb +0 -5
- data/integration/apps/rails-five/config/environments/development.rb +0 -51
- data/integration/apps/rails-five/config/environments/production.rb +0 -82
- data/integration/apps/rails-five/config/environments/test.rb +0 -43
- data/integration/apps/rails-five/config/initializers/datadog.rb +0 -18
- data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +0 -4
- data/integration/apps/rails-five/config/initializers/resque.rb +0 -4
- data/integration/apps/rails-five/config/initializers/rollbar.rb +0 -5
- data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +0 -14
- data/integration/apps/rails-five/config/locales/en.yml +0 -33
- data/integration/apps/rails-five/config/puma.rb +0 -24
- data/integration/apps/rails-five/config/routes.rb +0 -11
- data/integration/apps/rails-five/config/spring.rb +0 -6
- data/integration/apps/rails-five/config/unicorn.rb +0 -29
- data/integration/apps/rails-five/config.ru +0 -5
- data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +0 -11
- data/integration/apps/rails-five/db/schema.rb +0 -23
- data/integration/apps/rails-five/db/seeds.rb +0 -7
- data/integration/apps/rails-five/docker-compose.ci.yml +0 -98
- data/integration/apps/rails-five/docker-compose.yml +0 -100
- data/integration/apps/rails-five/lib/tasks/.keep +0 -0
- data/integration/apps/rails-five/log/.keep +0 -0
- data/integration/apps/rails-five/public/robots.txt +0 -1
- data/integration/apps/rails-five/script/build-images +0 -35
- data/integration/apps/rails-five/script/ci +0 -51
- data/integration/apps/rails-five/spec/integration/basic_spec.rb +0 -10
- data/integration/apps/rails-five/spec/spec_helper.rb +0 -16
- data/integration/apps/rails-five/spec/support/integration_helper.rb +0 -22
- data/integration/apps/rails-five/storage/.keep +0 -0
- data/integration/apps/rails-five/tmp/.keep +0 -0
- data/integration/apps/rails-five/vendor/.keep +0 -0
- data/integration/apps/rspec/.dockerignore +0 -1
- data/integration/apps/rspec/.envrc.sample +0 -1
- data/integration/apps/rspec/.gitignore +0 -2
- data/integration/apps/rspec/.rspec +0 -1
- data/integration/apps/rspec/Dockerfile +0 -25
- data/integration/apps/rspec/Dockerfile-ci +0 -11
- data/integration/apps/rspec/Gemfile +0 -14
- data/integration/apps/rspec/README.md +0 -70
- data/integration/apps/rspec/agent.yaml +0 -3
- data/integration/apps/rspec/app/datadog.rb +0 -13
- data/integration/apps/rspec/app/fibonacci.rb +0 -30
- data/integration/apps/rspec/bin/run +0 -20
- data/integration/apps/rspec/bin/setup +0 -17
- data/integration/apps/rspec/bin/test +0 -21
- data/integration/apps/rspec/docker-compose.ci.yml +0 -51
- data/integration/apps/rspec/docker-compose.yml +0 -63
- data/integration/apps/rspec/script/build-images +0 -37
- data/integration/apps/rspec/script/ci +0 -53
- data/integration/apps/rspec/spec/fibonacci_spec.rb +0 -16
- data/integration/apps/rspec/spec/rspec_spec.rb +0 -58
- data/integration/apps/rspec/spec/spec_helper.rb +0 -24
- data/integration/apps/ruby/.dockerignore +0 -1
- data/integration/apps/ruby/.envrc.sample +0 -1
- data/integration/apps/ruby/.gitignore +0 -2
- data/integration/apps/ruby/Dockerfile +0 -25
- data/integration/apps/ruby/Dockerfile-ci +0 -11
- data/integration/apps/ruby/Gemfile +0 -11
- data/integration/apps/ruby/README.md +0 -70
- data/integration/apps/ruby/agent.yaml +0 -3
- data/integration/apps/ruby/app/datadog.rb +0 -13
- data/integration/apps/ruby/app/fibonacci.rb +0 -58
- data/integration/apps/ruby/bin/run +0 -20
- data/integration/apps/ruby/bin/setup +0 -17
- data/integration/apps/ruby/bin/test +0 -21
- data/integration/apps/ruby/docker-compose.ci.yml +0 -51
- data/integration/apps/ruby/docker-compose.yml +0 -63
- data/integration/apps/ruby/script/build-images +0 -38
- data/integration/apps/ruby/script/ci +0 -51
- data/integration/images/agent/Dockerfile +0 -2
- data/integration/images/agent/agent.yaml +0 -3
- data/integration/images/include/datadog/analyzer.rb +0 -71
- data/integration/images/include/datadog/demo_env.rb +0 -101
- data/integration/images/include/http-health-check +0 -33
- data/integration/images/ruby/2.1/Dockerfile +0 -54
- data/integration/images/ruby/2.2/Dockerfile +0 -54
- data/integration/images/ruby/2.3/Dockerfile +0 -70
- data/integration/images/ruby/2.4/Dockerfile +0 -54
- data/integration/images/ruby/2.5/Dockerfile +0 -54
- data/integration/images/ruby/2.6/Dockerfile +0 -54
- data/integration/images/ruby/2.7/Dockerfile +0 -54
- data/integration/images/ruby/3.0/Dockerfile +0 -54
- data/integration/images/wrk/Dockerfile +0 -33
- data/integration/images/wrk/scripts/entrypoint.sh +0 -17
- data/integration/images/wrk/scripts/scenarios/basic/default.lua +0 -1
- data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +0 -1
- data/integration/script/build-images +0 -43
- data/lib/datadog/ci/context_flush.rb +0 -28
- data/lib/ddtrace/analytics.rb +0 -38
- data/lib/ddtrace/buffer.rb +0 -326
- data/lib/ddtrace/chunker.rb +0 -34
- data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -230
- data/lib/ddtrace/configuration/base.rb +0 -81
- data/lib/ddtrace/configuration/components.rb +0 -249
- data/lib/ddtrace/configuration/dependency_resolver.rb +0 -24
- data/lib/ddtrace/configuration/option.rb +0 -64
- data/lib/ddtrace/configuration/option_definition.rb +0 -121
- data/lib/ddtrace/configuration/option_definition_set.rb +0 -18
- data/lib/ddtrace/configuration/option_set.rb +0 -6
- data/lib/ddtrace/configuration/options.rb +0 -111
- data/lib/ddtrace/configuration/pin_setup.rb +0 -31
- data/lib/ddtrace/configuration/settings.rb +0 -388
- data/lib/ddtrace/configuration.rb +0 -176
- data/lib/ddtrace/context.rb +0 -325
- data/lib/ddtrace/context_flush.rb +0 -81
- data/lib/ddtrace/context_provider.rb +0 -61
- data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/action_cable/event.rb +0 -66
- data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -49
- data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -55
- data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -50
- data/lib/ddtrace/contrib/action_cable/events.rb +0 -33
- data/lib/ddtrace/contrib/action_cable/ext.rb +0 -26
- data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -31
- data/lib/ddtrace/contrib/action_cable/integration.rb +0 -45
- data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -27
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -146
- data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -25
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/action_pack/ext.rb +0 -19
- data/lib/ddtrace/contrib/action_pack/integration.rb +0 -45
- data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -23
- data/lib/ddtrace/contrib/action_pack/utils.rb +0 -36
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/action_view/event.rb +0 -35
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -46
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -49
- data/lib/ddtrace/contrib/action_view/events.rb +0 -30
- data/lib/ddtrace/contrib/action_view/ext.rb +0 -20
- data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -74
- data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -167
- data/lib/ddtrace/contrib/action_view/integration.rb +0 -52
- data/lib/ddtrace/contrib/action_view/patcher.rb +0 -47
- data/lib/ddtrace/contrib/action_view/utils.rb +0 -32
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -68
- data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -32
- data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -35
- data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -30
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -20
- data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -40
- data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -29
- data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -30
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -134
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -35
- data/lib/ddtrace/contrib/active_record/event.rb +0 -30
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -60
- data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -68
- data/lib/ddtrace/contrib/active_record/events.rb +0 -30
- data/lib/ddtrace/contrib/active_record/ext.rb +0 -24
- data/lib/ddtrace/contrib/active_record/integration.rb +0 -53
- data/lib/ddtrace/contrib/active_record/patcher.rb +0 -23
- data/lib/ddtrace/contrib/active_record/utils.rb +0 -123
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -258
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -69
- data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -43
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/active_support/ext.rb +0 -27
- data/lib/ddtrace/contrib/active_support/integration.rb +0 -46
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -75
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -67
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -163
- data/lib/ddtrace/contrib/active_support/patcher.rb +0 -23
- data/lib/ddtrace/contrib/analytics.rb +0 -24
- data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/aws/ext.rb +0 -23
- data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -90
- data/lib/ddtrace/contrib/aws/integration.rb +0 -42
- data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -56
- data/lib/ddtrace/contrib/aws/patcher.rb +0 -53
- data/lib/ddtrace/contrib/aws/services.rb +0 -118
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -20
- data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -41
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -12
- data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -23
- data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -38
- data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -28
- data/lib/ddtrace/contrib/configurable.rb +0 -102
- data/lib/ddtrace/contrib/configuration/resolver.rb +0 -81
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -39
- data/lib/ddtrace/contrib/configuration/settings.rb +0 -55
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/dalli/ext.rb +0 -20
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -54
- data/lib/ddtrace/contrib/dalli/integration.rb +0 -38
- data/lib/ddtrace/contrib/dalli/patcher.rb +0 -25
- data/lib/ddtrace/contrib/dalli/quantize.rb +0 -22
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -23
- data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -38
- data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -28
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -84
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -22
- data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -39
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -122
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -81
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -151
- data/lib/ddtrace/contrib/ethon/ext.rb +0 -19
- data/lib/ddtrace/contrib/ethon/integration.rb +0 -43
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -84
- data/lib/ddtrace/contrib/ethon/patcher.rb +0 -25
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/excon/ext.rb +0 -17
- data/lib/ddtrace/contrib/excon/integration.rb +0 -43
- data/lib/ddtrace/contrib/excon/middleware.rb +0 -163
- data/lib/ddtrace/contrib/excon/patcher.rb +0 -27
- data/lib/ddtrace/contrib/extensions.rb +0 -143
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -38
- data/lib/ddtrace/contrib/faraday/connection.rb +0 -18
- data/lib/ddtrace/contrib/faraday/ext.rb +0 -17
- data/lib/ddtrace/contrib/faraday/integration.rb +0 -43
- data/lib/ddtrace/contrib/faraday/middleware.rb +0 -85
- data/lib/ddtrace/contrib/faraday/patcher.rb +0 -53
- data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -18
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -38
- data/lib/ddtrace/contrib/grape/endpoint.rb +0 -236
- data/lib/ddtrace/contrib/grape/ext.rb +0 -23
- data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -33
- data/lib/ddtrace/contrib/grape/integration.rb +0 -39
- data/lib/ddtrace/contrib/grape/patcher.rb +0 -31
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/graphql/ext.rb +0 -16
- data/lib/ddtrace/contrib/graphql/integration.rb +0 -39
- data/lib/ddtrace/contrib/graphql/patcher.rb +0 -60
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -58
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -81
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -74
- data/lib/ddtrace/contrib/grpc/ext.rb +0 -18
- data/lib/ddtrace/contrib/grpc/integration.rb +0 -38
- data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -49
- data/lib/ddtrace/contrib/grpc/patcher.rb +0 -32
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -37
- data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/http/ext.rb +0 -17
- data/lib/ddtrace/contrib/http/instrumentation.rb +0 -179
- data/lib/ddtrace/contrib/http/integration.rb +0 -45
- data/lib/ddtrace/contrib/http/patcher.rb +0 -26
- data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -10
- data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/httpclient/ext.rb +0 -17
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -147
- data/lib/ddtrace/contrib/httpclient/integration.rb +0 -43
- data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -38
- data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/httprb/ext.rb +0 -17
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -157
- data/lib/ddtrace/contrib/httprb/integration.rb +0 -43
- data/lib/ddtrace/contrib/httprb/patcher.rb +0 -38
- data/lib/ddtrace/contrib/integration.rb +0 -16
- data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -14
- data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -14
- data/lib/ddtrace/contrib/kafka/event.rb +0 -51
- data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -34
- data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -41
- data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -39
- data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -39
- data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -29
- data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -29
- data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -29
- data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -32
- data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -35
- data/lib/ddtrace/contrib/kafka/events.rb +0 -44
- data/lib/ddtrace/contrib/kafka/ext.rb +0 -41
- data/lib/ddtrace/contrib/kafka/integration.rb +0 -39
- data/lib/ddtrace/contrib/kafka/patcher.rb +0 -26
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/mongodb/ext.rb +0 -23
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -69
- data/lib/ddtrace/contrib/mongodb/integration.rb +0 -38
- data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -68
- data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -31
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -111
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/mysql2/ext.rb +0 -18
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -64
- data/lib/ddtrace/contrib/mysql2/integration.rb +0 -38
- data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -27
- data/lib/ddtrace/contrib/patchable.rb +0 -70
- data/lib/ddtrace/contrib/patcher.rb +0 -65
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/presto/ext.rb +0 -28
- data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -110
- data/lib/ddtrace/contrib/presto/integration.rb +0 -38
- data/lib/ddtrace/contrib/presto/patcher.rb +0 -33
- data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -35
- data/lib/ddtrace/contrib/qless/ext.rb +0 -20
- data/lib/ddtrace/contrib/qless/integration.rb +0 -38
- data/lib/ddtrace/contrib/qless/patcher.rb +0 -33
- data/lib/ddtrace/contrib/qless/qless_job.rb +0 -73
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -33
- data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -43
- data/lib/ddtrace/contrib/que/ext.rb +0 -30
- data/lib/ddtrace/contrib/que/integration.rb +0 -42
- data/lib/ddtrace/contrib/que/patcher.rb +0 -24
- data/lib/ddtrace/contrib/que/tracer.rb +0 -57
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/racecar/event.rb +0 -76
- data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -27
- data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -27
- data/lib/ddtrace/contrib/racecar/events/message.rb +0 -27
- data/lib/ddtrace/contrib/racecar/events.rb +0 -32
- data/lib/ddtrace/contrib/racecar/ext.rb +0 -25
- data/lib/ddtrace/contrib/racecar/integration.rb +0 -39
- data/lib/ddtrace/contrib/racecar/patcher.rb +0 -26
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -46
- data/lib/ddtrace/contrib/rack/ext.rb +0 -21
- data/lib/ddtrace/contrib/rack/integration.rb +0 -45
- data/lib/ddtrace/contrib/rack/middlewares.rb +0 -287
- data/lib/ddtrace/contrib/rack/patcher.rb +0 -105
- data/lib/ddtrace/contrib/rack/request_queue.rb +0 -44
- data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -93
- data/lib/ddtrace/contrib/rails/ext.rb +0 -17
- data/lib/ddtrace/contrib/rails/framework.rb +0 -124
- data/lib/ddtrace/contrib/rails/integration.rb +0 -44
- data/lib/ddtrace/contrib/rails/log_injection.rb +0 -81
- data/lib/ddtrace/contrib/rails/middlewares.rb +0 -43
- data/lib/ddtrace/contrib/rails/patcher.rb +0 -107
- data/lib/ddtrace/contrib/rails/railtie.rb +0 -17
- data/lib/ddtrace/contrib/rails/utils.rb +0 -24
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/rake/ext.rb +0 -21
- data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -90
- data/lib/ddtrace/contrib/rake/integration.rb +0 -38
- data/lib/ddtrace/contrib/rake/patcher.rb +0 -30
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -45
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -35
- data/lib/ddtrace/contrib/redis/ext.rb +0 -22
- data/lib/ddtrace/contrib/redis/integration.rb +0 -42
- data/lib/ddtrace/contrib/redis/patcher.rb +0 -114
- data/lib/ddtrace/contrib/redis/quantize.rb +0 -75
- data/lib/ddtrace/contrib/redis/tags.rb +0 -46
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -158
- data/lib/ddtrace/contrib/registerable.rb +0 -33
- data/lib/ddtrace/contrib/registry.rb +0 -42
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -48
- data/lib/ddtrace/contrib/resque/ext.rb +0 -17
- data/lib/ddtrace/contrib/resque/integration.rb +0 -47
- data/lib/ddtrace/contrib/resque/patcher.rb +0 -29
- data/lib/ddtrace/contrib/resque/resque_job.rb +0 -103
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/rest_client/ext.rb +0 -17
- data/lib/ddtrace/contrib/rest_client/integration.rb +0 -38
- data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -23
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -91
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -28
- data/lib/ddtrace/contrib/sequel/database.rb +0 -63
- data/lib/ddtrace/contrib/sequel/dataset.rb +0 -63
- data/lib/ddtrace/contrib/sequel/ext.rb +0 -19
- data/lib/ddtrace/contrib/sequel/integration.rb +0 -38
- data/lib/ddtrace/contrib/sequel/patcher.rb +0 -33
- data/lib/ddtrace/contrib/sequel/utils.rb +0 -74
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -21
- data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -39
- data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -24
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -55
- data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -43
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -37
- data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -27
- data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -38
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -41
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -65
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -44
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -39
- data/lib/ddtrace/contrib/sinatra/env.rb +0 -57
- data/lib/ddtrace/contrib/sinatra/ext.rb +0 -27
- data/lib/ddtrace/contrib/sinatra/headers.rb +0 -29
- data/lib/ddtrace/contrib/sinatra/integration.rb +0 -38
- data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -28
- data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -127
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -105
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/sneakers/ext.rb +0 -22
- data/lib/ddtrace/contrib/sneakers/integration.rb +0 -41
- data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -24
- data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -53
- data/lib/ddtrace/contrib/status_code_matcher.rb +0 -69
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -30
- data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -24
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -21
- data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -88
- data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -38
- data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -42
- data/lib/ddtrace/correlation.rb +0 -39
- data/lib/ddtrace/diagnostics/environment_logger.rb +0 -279
- data/lib/ddtrace/diagnostics/health.rb +0 -33
- data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -44
- data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -56
- data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -42
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -71
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -43
- data/lib/ddtrace/encoding.rb +0 -69
- data/lib/ddtrace/environment.rb +0 -41
- data/lib/ddtrace/error.rb +0 -96
- data/lib/ddtrace/event.rb +0 -52
- data/lib/ddtrace/ext/analytics.rb +0 -12
- data/lib/ddtrace/ext/app_types.rb +0 -11
- data/lib/ddtrace/ext/correlation.rb +0 -11
- data/lib/ddtrace/ext/diagnostics.rb +0 -36
- data/lib/ddtrace/ext/distributed.rb +0 -39
- data/lib/ddtrace/ext/environment.rb +0 -16
- data/lib/ddtrace/ext/errors.rb +0 -10
- data/lib/ddtrace/ext/forced_tracing.rb +0 -25
- data/lib/ddtrace/ext/git.rb +0 -11
- data/lib/ddtrace/ext/http.rb +0 -46
- data/lib/ddtrace/ext/integration.rb +0 -8
- data/lib/ddtrace/ext/manual_tracing.rb +0 -9
- data/lib/ddtrace/ext/metrics.rb +0 -15
- data/lib/ddtrace/ext/net.rb +0 -10
- data/lib/ddtrace/ext/priority.rb +0 -16
- data/lib/ddtrace/ext/profiling.rb +0 -53
- data/lib/ddtrace/ext/runtime.rb +0 -30
- data/lib/ddtrace/ext/sampling.rb +0 -16
- data/lib/ddtrace/ext/sql.rb +0 -8
- data/lib/ddtrace/ext/test.rb +0 -8
- data/lib/ddtrace/ext/transport.rb +0 -20
- data/lib/ddtrace/forced_tracing.rb +0 -38
- data/lib/ddtrace/logger.rb +0 -40
- data/lib/ddtrace/metrics.rb +0 -255
- data/lib/ddtrace/opentelemetry/extensions.rb +0 -13
- data/lib/ddtrace/opentelemetry/span.rb +0 -33
- data/lib/ddtrace/opentracer/binary_propagator.rb +0 -24
- data/lib/ddtrace/opentracer/carrier.rb +0 -6
- data/lib/ddtrace/opentracer/distributed_headers.rb +0 -55
- data/lib/ddtrace/opentracer/global_tracer.rb +0 -15
- data/lib/ddtrace/opentracer/propagator.rb +0 -22
- data/lib/ddtrace/opentracer/rack_propagator.rb +0 -60
- data/lib/ddtrace/opentracer/scope.rb +0 -15
- data/lib/ddtrace/opentracer/scope_manager.rb +0 -6
- data/lib/ddtrace/opentracer/span.rb +0 -94
- data/lib/ddtrace/opentracer/span_context.rb +0 -14
- data/lib/ddtrace/opentracer/span_context_factory.rb +0 -23
- data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -75
- data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -31
- data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -40
- data/lib/ddtrace/opentracer/tracer.rb +0 -208
- data/lib/ddtrace/opentracer.rb +0 -21
- data/lib/ddtrace/patcher.rb +0 -68
- data/lib/ddtrace/pin.rb +0 -85
- data/lib/ddtrace/pipeline/span_filter.rb +0 -38
- data/lib/ddtrace/pipeline/span_processor.rb +0 -20
- data/lib/ddtrace/pipeline.rb +0 -46
- data/lib/ddtrace/profiling/backtrace_location.rb +0 -32
- data/lib/ddtrace/profiling/buffer.rb +0 -41
- data/lib/ddtrace/profiling/collectors/stack.rb +0 -262
- data/lib/ddtrace/profiling/encoding/profile.rb +0 -37
- data/lib/ddtrace/profiling/event.rb +0 -13
- data/lib/ddtrace/profiling/events/stack.rb +0 -102
- data/lib/ddtrace/profiling/exporter.rb +0 -23
- data/lib/ddtrace/profiling/ext/cpu.rb +0 -52
- data/lib/ddtrace/profiling/ext/cthread.rb +0 -155
- data/lib/ddtrace/profiling/ext/forking.rb +0 -97
- data/lib/ddtrace/profiling/flush.rb +0 -43
- data/lib/ddtrace/profiling/pprof/builder.rb +0 -119
- data/lib/ddtrace/profiling/pprof/converter.rb +0 -89
- data/lib/ddtrace/profiling/pprof/message_set.rb +0 -12
- data/lib/ddtrace/profiling/pprof/payload.rb +0 -18
- data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -81
- data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -106
- data/lib/ddtrace/profiling/pprof/string_table.rb +0 -10
- data/lib/ddtrace/profiling/pprof/template.rb +0 -118
- data/lib/ddtrace/profiling/profiler.rb +0 -30
- data/lib/ddtrace/profiling/recorder.rb +0 -95
- data/lib/ddtrace/profiling/scheduler.rb +0 -116
- data/lib/ddtrace/profiling/tasks/setup.rb +0 -77
- data/lib/ddtrace/profiling/transport/client.rb +0 -12
- data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -100
- data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -36
- data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -40
- data/lib/ddtrace/profiling/transport/http/api.rb +0 -43
- data/lib/ddtrace/profiling/transport/http/builder.rb +0 -28
- data/lib/ddtrace/profiling/transport/http/client.rb +0 -33
- data/lib/ddtrace/profiling/transport/http/response.rb +0 -21
- data/lib/ddtrace/profiling/transport/http.rb +0 -118
- data/lib/ddtrace/profiling/transport/io/client.rb +0 -27
- data/lib/ddtrace/profiling/transport/io/response.rb +0 -16
- data/lib/ddtrace/profiling/transport/io.rb +0 -30
- data/lib/ddtrace/profiling/transport/parcel.rb +0 -17
- data/lib/ddtrace/profiling/transport/request.rb +0 -15
- data/lib/ddtrace/profiling/transport/response.rb +0 -8
- data/lib/ddtrace/profiling.rb +0 -107
- data/lib/ddtrace/propagation/grpc_propagator.rb +0 -74
- data/lib/ddtrace/propagation/http_propagator.rb +0 -90
- data/lib/ddtrace/quantization/hash.rb +0 -103
- data/lib/ddtrace/quantization/http.rb +0 -87
- data/lib/ddtrace/runtime/cgroup.rb +0 -44
- data/lib/ddtrace/runtime/class_count.rb +0 -17
- data/lib/ddtrace/runtime/container.rb +0 -87
- data/lib/ddtrace/runtime/gc.rb +0 -16
- data/lib/ddtrace/runtime/identity.rb +0 -48
- data/lib/ddtrace/runtime/metrics.rb +0 -112
- data/lib/ddtrace/runtime/object_space.rb +0 -19
- data/lib/ddtrace/runtime/socket.rb +0 -14
- data/lib/ddtrace/runtime/thread_count.rb +0 -16
- data/lib/ddtrace/sampler.rb +0 -292
- data/lib/ddtrace/sampling/matcher.rb +0 -57
- data/lib/ddtrace/sampling/rate_limiter.rb +0 -176
- data/lib/ddtrace/sampling/rule.rb +0 -61
- data/lib/ddtrace/sampling/rule_sampler.rb +0 -120
- data/lib/ddtrace/sampling.rb +0 -2
- data/lib/ddtrace/span.rb +0 -432
- data/lib/ddtrace/sync_writer.rb +0 -68
- data/lib/ddtrace/tasks/exec.rb +0 -48
- data/lib/ddtrace/tasks/help.rb +0 -14
- data/lib/ddtrace/tracer.rb +0 -457
- data/lib/ddtrace/utils/compression.rb +0 -27
- data/lib/ddtrace/utils/database.rb +0 -25
- data/lib/ddtrace/utils/forking.rb +0 -52
- data/lib/ddtrace/utils/object_set.rb +0 -39
- data/lib/ddtrace/utils/only_once.rb +0 -40
- data/lib/ddtrace/utils/sequence.rb +0 -17
- data/lib/ddtrace/utils/string_table.rb +0 -45
- data/lib/ddtrace/utils/time.rb +0 -43
- data/lib/ddtrace/utils.rb +0 -68
- data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -301
- data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -116
- data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -57
- data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -135
- data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -9
- data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -8
- data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -12
- data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -32
- data/lib/ddtrace/worker.rb +0 -20
- data/lib/ddtrace/workers/async.rb +0 -174
- data/lib/ddtrace/workers/loop.rb +0 -131
- data/lib/ddtrace/workers/polling.rb +0 -55
- data/lib/ddtrace/workers/queue.rb +0 -40
- data/lib/ddtrace/workers/runtime_metrics.rb +0 -64
- data/lib/ddtrace/workers/trace_writer.rb +0 -199
- data/lib/ddtrace/workers.rb +0 -122
- data/lib/ddtrace/writer.rb +0 -199
- data/tasks/release_gem.rake +0 -28
- /data/lib/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -0
- /data/lib/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -0
- /data/lib/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -0
- /data/lib/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -0
data/docs/GettingStarted.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
***Version 1.0.0 is in beta! Check out our [upgrade guide](https://github.com/DataDog/dd-trace-rb/blob/master/docs/UpgradeGuide.md#from-0x-to-10) for more details.***
|
|
2
|
+
|
|
1
3
|
# Datadog Ruby Trace Client
|
|
2
4
|
|
|
3
5
|
`ddtrace` is Datadog’s tracing client for Ruby. It is used to trace requests as they flow across web servers,
|
|
@@ -9,6 +11,8 @@ For the general APM documentation, see our [setup documentation][setup docs].
|
|
|
9
11
|
|
|
10
12
|
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
13
|
|
|
14
|
+
For the library API documentation, see our [YARD documentation][yard docs].
|
|
15
|
+
|
|
12
16
|
To contribute, check out the [contribution guidelines][contribution docs] and [development guide][development docs].
|
|
13
17
|
|
|
14
18
|
[setup docs]: https://docs.datadoghq.com/tracing/
|
|
@@ -16,20 +20,27 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
|
16
20
|
[visualization docs]: https://docs.datadoghq.com/tracing/visualization/
|
|
17
21
|
[contribution docs]: https://github.com/DataDog/dd-trace-rb/blob/master/CONTRIBUTING.md
|
|
18
22
|
[development docs]: https://github.com/DataDog/dd-trace-rb/blob/master/docs/DevelopmentGuide.md
|
|
23
|
+
[yard docs]: https://www.rubydoc.info/gems/ddtrace/
|
|
19
24
|
|
|
20
25
|
## Table of Contents
|
|
21
26
|
|
|
22
27
|
- [Compatibility](#compatibility)
|
|
23
28
|
- [Installation](#installation)
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
26
|
-
|
|
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)
|
|
27
36
|
- [Manual instrumentation](#manual-instrumentation)
|
|
28
37
|
- [Integration instrumentation](#integration-instrumentation)
|
|
29
38
|
- [Action Cable](#action-cable)
|
|
39
|
+
- [Action Mailer](#action-mailer)
|
|
40
|
+
- [Action Pack](#action-pack)
|
|
30
41
|
- [Action View](#action-view)
|
|
42
|
+
- [Active Job](#active-job)
|
|
31
43
|
- [Active Model Serializers](#active-model-serializers)
|
|
32
|
-
- [Action Pack](#action-pack)
|
|
33
44
|
- [Active Record](#active-record)
|
|
34
45
|
- [Active Support](#active-support)
|
|
35
46
|
- [AWS](#aws)
|
|
@@ -44,12 +55,13 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
|
44
55
|
- [Grape](#grape)
|
|
45
56
|
- [GraphQL](#graphql)
|
|
46
57
|
- [gRPC](#grpc)
|
|
47
|
-
- [http.rb](#
|
|
58
|
+
- [http.rb](#httprb)
|
|
48
59
|
- [httpclient](#httpclient)
|
|
49
60
|
- [httpx](#httpx)
|
|
61
|
+
- [Kafka](#kafka)
|
|
50
62
|
- [MongoDB](#mongodb)
|
|
51
63
|
- [MySQL2](#mysql2)
|
|
52
|
-
- [Net/HTTP](#
|
|
64
|
+
- [Net/HTTP](#nethttp)
|
|
53
65
|
- [Presto](#presto)
|
|
54
66
|
- [Qless](#qless)
|
|
55
67
|
- [Que](#que)
|
|
@@ -58,20 +70,19 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
|
58
70
|
- [Rails](#rails)
|
|
59
71
|
- [Rake](#rake)
|
|
60
72
|
- [Redis](#redis)
|
|
61
|
-
- [Rest Client](#rest-client)
|
|
62
73
|
- [Resque](#resque)
|
|
74
|
+
- [Rest Client](#rest-client)
|
|
63
75
|
- [RSpec](#rspec)
|
|
64
|
-
- [Shoryuken](#shoryuken)
|
|
65
76
|
- [Sequel](#sequel)
|
|
77
|
+
- [Shoryuken](#shoryuken)
|
|
66
78
|
- [Sidekiq](#sidekiq)
|
|
67
79
|
- [Sinatra](#sinatra)
|
|
68
80
|
- [Sneakers](#sneakers)
|
|
69
81
|
- [Sucker Punch](#sucker-punch)
|
|
70
|
-
- [
|
|
71
|
-
- [Tracer settings](#tracer-settings)
|
|
82
|
+
- [Additional configuration](#additional-configuration)
|
|
72
83
|
- [Custom logging](#custom-logging)
|
|
73
84
|
- [Environment and tags](#environment-and-tags)
|
|
74
|
-
- [
|
|
85
|
+
- [Debugging and diagnostics](#debugging-and-diagnostics)
|
|
75
86
|
- [Sampling](#sampling)
|
|
76
87
|
- [Application-side sampling](#application-side-sampling)
|
|
77
88
|
- [Priority sampling](#priority-sampling)
|
|
@@ -86,6 +97,11 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
|
86
97
|
- [For application runtime](#for-application-runtime)
|
|
87
98
|
- [OpenTracing](#opentracing)
|
|
88
99
|
- [Profiling](#profiling)
|
|
100
|
+
- [Troubleshooting](#troubleshooting)
|
|
101
|
+
- [Profiling Resque jobs](#profiling-resque-jobs)
|
|
102
|
+
- [Known issues and suggested configurations](#known-issues-and-suggested-configurations)
|
|
103
|
+
- [Payload too large](#payload-too-large)
|
|
104
|
+
- [Stack level too deep](#stack-level-too-deep)
|
|
89
105
|
|
|
90
106
|
## Compatibility
|
|
91
107
|
|
|
@@ -93,7 +109,8 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
|
93
109
|
|
|
94
110
|
| Type | Documentation | Version | Support type | Gem version support |
|
|
95
111
|
| ----- | -------------------------- | ----- | ------------------------------------ | ------------------- |
|
|
96
|
-
| MRI | https://www.ruby-lang.org/ | 3.
|
|
112
|
+
| MRI | https://www.ruby-lang.org/ | 3.1 | Full | Latest |
|
|
113
|
+
| | | 3.0 | Full | Latest |
|
|
97
114
|
| | | 2.7 | Full | Latest |
|
|
98
115
|
| | | 2.6 | Full | Latest |
|
|
99
116
|
| | | 2.5 | Full | Latest |
|
|
@@ -128,68 +145,106 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
|
128
145
|
|
|
129
146
|
*EOL* indicates support is no longer provided.
|
|
130
147
|
|
|
148
|
+
### Apple macOS support
|
|
149
|
+
|
|
150
|
+
Use of `ddtrace` on macOS is supported for development, but not for production deployments.
|
|
151
|
+
|
|
152
|
+
### Microsoft Windows support
|
|
153
|
+
|
|
154
|
+
Using `ddtrace` on Microsoft Windows is currently unsupported. We'll still accept community contributions and issues,
|
|
155
|
+
but will consider them as having low priority.
|
|
156
|
+
|
|
131
157
|
## Installation
|
|
132
158
|
|
|
133
|
-
|
|
159
|
+
Adding tracing to your Ruby application only takes a few quick steps:
|
|
134
160
|
|
|
135
|
-
|
|
161
|
+
1. Setup the Datadog Agent for tracing
|
|
162
|
+
2. Instrument your application
|
|
163
|
+
3. Connect your application to the Datadog Agent
|
|
136
164
|
|
|
137
|
-
|
|
165
|
+
### Setup the Datadog Agent for tracing
|
|
138
166
|
|
|
139
|
-
|
|
167
|
+
Before installing `ddtrace`, [install the Datadog Agent](https://docs.datadoghq.com/agent/), to which `ddtrace` will send trace data.
|
|
140
168
|
|
|
141
|
-
|
|
169
|
+
Then configure the Datadog Agent to accept traces. To do this, either:
|
|
142
170
|
|
|
143
|
-
|
|
171
|
+
- Set `DD_APM_ENABLED=true` in the agent's environment
|
|
144
172
|
|
|
145
|
-
|
|
173
|
+
OR
|
|
146
174
|
|
|
147
|
-
|
|
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)
|
|
148
176
|
|
|
177
|
+
*Additionally, in containerized environments...*
|
|
149
178
|
|
|
150
|
-
|
|
179
|
+
- Set `DD_APM_NON_LOCAL_TRAFFIC=true` in the agent's environment
|
|
151
180
|
|
|
152
|
-
|
|
181
|
+
OR
|
|
153
182
|
|
|
154
|
-
|
|
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).
|
|
155
184
|
|
|
156
|
-
|
|
157
|
-
source 'https://rubygems.org'
|
|
158
|
-
gem 'ddtrace', require: 'ddtrace/auto_instrument'
|
|
159
|
-
```
|
|
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.
|
|
160
186
|
|
|
161
|
-
|
|
187
|
+
#### Configuring trace data ingestion
|
|
188
|
+
|
|
189
|
+
The Datadog agent will listen for traces via HTTP on port `8126` by default.
|
|
162
190
|
|
|
163
|
-
|
|
191
|
+
You may change the protocol or port the agent listens for trace data using the following:
|
|
164
192
|
|
|
165
|
-
|
|
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)
|
|
200
|
+
|
|
201
|
+
**For Unix Domain Socket (UDS)**:
|
|
202
|
+
|
|
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
|
|
166
212
|
|
|
167
213
|
1. Add the `ddtrace` gem to your Gemfile:
|
|
168
214
|
|
|
169
215
|
```ruby
|
|
170
216
|
source 'https://rubygems.org'
|
|
171
|
-
gem 'ddtrace'
|
|
217
|
+
gem 'ddtrace', require: 'ddtrace/auto_instrument'
|
|
172
218
|
```
|
|
173
219
|
|
|
174
220
|
2. Install the gem with `bundle install`
|
|
221
|
+
|
|
175
222
|
3. Create a `config/initializers/datadog.rb` file containing:
|
|
176
223
|
|
|
177
224
|
```ruby
|
|
178
225
|
Datadog.configure do |c|
|
|
179
|
-
#
|
|
180
|
-
|
|
226
|
+
# Add additional configuration here.
|
|
227
|
+
# Activate integrations, change tracer settings, etc...
|
|
181
228
|
end
|
|
182
229
|
```
|
|
183
230
|
|
|
184
|
-
|
|
231
|
+
Using this block you can:
|
|
232
|
+
|
|
233
|
+
- [Add additional configuration settings](#additional-configuration)
|
|
234
|
+
- [Activate or reconfigure instrumentation](#integration-instrumentation)
|
|
185
235
|
|
|
186
|
-
|
|
236
|
+
#### Ruby applications
|
|
187
237
|
|
|
188
|
-
|
|
238
|
+
1. Add the `ddtrace` gem to your Gemfile:
|
|
239
|
+
|
|
240
|
+
```ruby
|
|
241
|
+
source 'https://rubygems.org'
|
|
242
|
+
gem 'ddtrace'
|
|
243
|
+
```
|
|
189
244
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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.
|
|
193
248
|
|
|
194
249
|
```ruby
|
|
195
250
|
# Example frameworks and libraries
|
|
@@ -200,41 +255,42 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
|
200
255
|
require 'ddtrace/auto_instrument'
|
|
201
256
|
```
|
|
202
257
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
#### Manual instrumentation
|
|
206
|
-
|
|
207
|
-
1. Install the gem with `gem install ddtrace`
|
|
208
|
-
2. Add a configuration block to your Ruby application:
|
|
258
|
+
5. Add a configuration block to your application:
|
|
209
259
|
|
|
210
260
|
```ruby
|
|
211
|
-
require 'ddtrace'
|
|
212
261
|
Datadog.configure do |c|
|
|
213
|
-
#
|
|
262
|
+
# Add additional configuration here.
|
|
214
263
|
# Activate integrations, change tracer settings, etc...
|
|
215
|
-
# By default without additional configuration, nothing will be traced.
|
|
216
264
|
end
|
|
217
265
|
```
|
|
218
266
|
|
|
219
|
-
|
|
220
|
-
- Activate integration instrumentation (see [Integration instrumentation](#integration-instrumentation))
|
|
221
|
-
- Add manual instrumentation around your code (see [Manual instrumentation](#manual-instrumentation))
|
|
267
|
+
Using this block you can:
|
|
222
268
|
|
|
223
|
-
|
|
269
|
+
- [Add additional configuration settings](#additional-configuration)
|
|
270
|
+
- [Activate or reconfigure instrumentation](#integration-instrumentation)
|
|
224
271
|
|
|
225
|
-
|
|
226
|
-
|
|
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:
|
|
227
283
|
|
|
228
284
|
```ruby
|
|
229
285
|
require 'opentracing'
|
|
230
|
-
require '
|
|
231
|
-
require '
|
|
286
|
+
require 'datadog/tracing'
|
|
287
|
+
require 'datadog/opentracer'
|
|
232
288
|
|
|
233
289
|
# Activate the Datadog tracer for OpenTracing
|
|
234
290
|
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new
|
|
235
291
|
```
|
|
236
292
|
|
|
237
|
-
|
|
293
|
+
4. Add a configuration block to your application:
|
|
238
294
|
|
|
239
295
|
```ruby
|
|
240
296
|
Datadog.configure do |c|
|
|
@@ -246,9 +302,29 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
|
246
302
|
end
|
|
247
303
|
```
|
|
248
304
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
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)
|
|
252
328
|
|
|
253
329
|
### Final steps for installation
|
|
254
330
|
|
|
@@ -258,10 +334,10 @@ After setting up, your services will appear on the [APM services page](https://a
|
|
|
258
334
|
|
|
259
335
|
If you aren't using a supported framework instrumentation, you may want to manually instrument your code.
|
|
260
336
|
|
|
261
|
-
To trace any Ruby code, you can use the `Datadog.
|
|
337
|
+
To trace any Ruby code, you can use the `Datadog::Tracing.trace` method:
|
|
262
338
|
|
|
263
339
|
```ruby
|
|
264
|
-
Datadog.
|
|
340
|
+
Datadog::Tracing.trace(name, options) do |span, trace|
|
|
265
341
|
# Wrap this block around the code you want to instrument
|
|
266
342
|
# Additionally, you can modify the span here.
|
|
267
343
|
# e.g. Change the resource name, set tags, etc...
|
|
@@ -273,14 +349,15 @@ Where `name` should be a `String` that describes the generic kind of operation b
|
|
|
273
349
|
And `options` is an optional `Hash` that accepts the following parameters:
|
|
274
350
|
|
|
275
351
|
| Key | Type | Description | Default |
|
|
276
|
-
|
|
|
277
|
-
| `
|
|
278
|
-
| `
|
|
279
|
-
| `
|
|
280
|
-
| `
|
|
281
|
-
| `
|
|
282
|
-
| `
|
|
283
|
-
| `
|
|
352
|
+
| --------------- | ----------------------- | --- | --- |
|
|
353
|
+
| `autostart` | `Bool` | Whether the time measurement should be started automatically. If `false`, user must call `span.start`. | `true` |
|
|
354
|
+
| `continue_from` | `Datadog::TraceDigest` | Continues a trace that originated from another execution context. TraceDigest describes the continuation point. | `nil` |
|
|
355
|
+
| `on_error` | `Proc` | Overrides error handling behavior, when a span 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? }` |
|
|
356
|
+
| `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. |
|
|
357
|
+
| `service` | `String` | The service name which this span belongs (e.g. `'my-web-service'`) | Tracer `default-service`, `$PROGRAM_NAME` or `'ruby'` |
|
|
358
|
+
| `start_time` | `Time` | When the span actually starts. Useful when tracing events that have already happened. | `Time.now` |
|
|
359
|
+
| `tags` | `Hash` | Extra tags which should be added to the span. | `{}` |
|
|
360
|
+
| `type` | `String` | The type of the span (such as `'http'`, `'db'`, etc.) | `nil` |
|
|
284
361
|
|
|
285
362
|
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.
|
|
286
363
|
|
|
@@ -288,9 +365,9 @@ Example of manual instrumentation in action:
|
|
|
288
365
|
|
|
289
366
|
```ruby
|
|
290
367
|
get '/posts' do
|
|
291
|
-
Datadog.
|
|
368
|
+
Datadog::Tracing.trace('web.request', service: 'my-blog', resource: 'GET /posts') do |span|
|
|
292
369
|
# Trace the activerecord call
|
|
293
|
-
Datadog.
|
|
370
|
+
Datadog::Tracing.trace('posts.fetch') do
|
|
294
371
|
@posts = Posts.order(created_at: :desc).limit(10)
|
|
295
372
|
end
|
|
296
373
|
|
|
@@ -299,7 +376,7 @@ get '/posts' do
|
|
|
299
376
|
span.set_tag('posts.count', @posts.length)
|
|
300
377
|
|
|
301
378
|
# Trace the template rendering
|
|
302
|
-
Datadog.
|
|
379
|
+
Datadog::Tracing.trace('template.render') do
|
|
303
380
|
erb :index
|
|
304
381
|
end
|
|
305
382
|
end
|
|
@@ -308,37 +385,36 @@ end
|
|
|
308
385
|
|
|
309
386
|
### Asynchronous tracing
|
|
310
387
|
|
|
311
|
-
It might not always be possible to wrap `Datadog.
|
|
388
|
+
It might not always be possible to wrap `Datadog::Tracing.trace` around a block of code. Some event or notification based instrumentation might only notify you when an event begins or ends.
|
|
312
389
|
|
|
313
|
-
To trace these operations, you can trace code asynchronously by calling `Datadog.
|
|
390
|
+
To trace these operations, you can trace code asynchronously by calling `Datadog::Tracing.trace` without a block:
|
|
314
391
|
|
|
315
392
|
```ruby
|
|
316
393
|
# Some instrumentation framework calls this after an event finishes...
|
|
317
394
|
def db_query(start, finish, query)
|
|
318
|
-
span = Datadog.
|
|
395
|
+
span = Datadog::Tracing.trace('database.query', start_time: start)
|
|
319
396
|
span.resource = query
|
|
320
|
-
span.start_time = start
|
|
321
397
|
span.finish(finish)
|
|
322
398
|
end
|
|
323
399
|
```
|
|
324
400
|
|
|
325
|
-
Calling `Datadog.
|
|
401
|
+
Calling `Datadog::Tracing.trace` without a block will cause the function to return a `Datadog::SpanOperation` that is started, but not finished. You can then modify this span however you wish, then close it `finish`.
|
|
326
402
|
|
|
327
403
|
*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.
|
|
328
404
|
|
|
329
|
-
To avoid this scenario when handling start/finish events, you can use `Datadog.
|
|
405
|
+
To avoid this scenario when handling start/finish events, you can use `Datadog::Tracing.active_span` to get the current active span.
|
|
330
406
|
|
|
331
407
|
```ruby
|
|
332
408
|
# e.g. ActiveSupport::Notifications calls this when an event starts
|
|
333
409
|
def start(name, id, payload)
|
|
334
410
|
# Start a span
|
|
335
|
-
Datadog.
|
|
411
|
+
Datadog::Tracing.trace(name)
|
|
336
412
|
end
|
|
337
413
|
|
|
338
414
|
# e.g. ActiveSupport::Notifications calls this when an event finishes
|
|
339
415
|
def finish(name, id, payload)
|
|
340
416
|
# Retrieve current active span (thread-safe)
|
|
341
|
-
current_span = Datadog.
|
|
417
|
+
current_span = Datadog::Tracing.active_span
|
|
342
418
|
unless current_span.nil?
|
|
343
419
|
current_span.resource = payload[:query]
|
|
344
420
|
current_span.finish
|
|
@@ -352,17 +428,16 @@ You can tag additional information to the current active span from any method. N
|
|
|
352
428
|
```ruby
|
|
353
429
|
# e.g. adding tag to active span
|
|
354
430
|
|
|
355
|
-
current_span = Datadog.
|
|
431
|
+
current_span = Datadog::Tracing.active_span
|
|
356
432
|
current_span.set_tag('my_tag', 'my_value') unless current_span.nil?
|
|
357
433
|
```
|
|
358
434
|
|
|
359
|
-
You can also get the
|
|
435
|
+
You can also get the current active trace using the `active_trace` method. This method will return `nil` if there is no active trace.
|
|
360
436
|
|
|
361
437
|
```ruby
|
|
362
|
-
# e.g.
|
|
438
|
+
# e.g. accessing active trace
|
|
363
439
|
|
|
364
|
-
|
|
365
|
-
current_root_span.set_tag('my_tag', 'my_value') unless current_root_span.nil?
|
|
440
|
+
current_trace = Datadog::Tracing.active_trace
|
|
366
441
|
```
|
|
367
442
|
|
|
368
443
|
## Integration instrumentation
|
|
@@ -372,7 +447,7 @@ Many popular libraries and frameworks are supported out-of-the-box, which can be
|
|
|
372
447
|
```ruby
|
|
373
448
|
Datadog.configure do |c|
|
|
374
449
|
# Activates and configures an integration
|
|
375
|
-
c.
|
|
450
|
+
c.tracing.instrument :integration_name, options
|
|
376
451
|
end
|
|
377
452
|
```
|
|
378
453
|
|
|
@@ -380,51 +455,71 @@ end
|
|
|
380
455
|
|
|
381
456
|
For a list of available integrations, and their configuration options, please refer to the following:
|
|
382
457
|
|
|
383
|
-
| Name
|
|
384
|
-
|
|
|
385
|
-
| Action Cable
|
|
386
|
-
| Action
|
|
387
|
-
|
|
|
388
|
-
| Action
|
|
389
|
-
| Active
|
|
390
|
-
| Active
|
|
391
|
-
|
|
|
392
|
-
|
|
|
393
|
-
|
|
|
394
|
-
|
|
|
395
|
-
|
|
|
396
|
-
|
|
|
397
|
-
|
|
|
398
|
-
|
|
|
399
|
-
|
|
|
400
|
-
|
|
|
401
|
-
|
|
|
402
|
-
|
|
|
403
|
-
|
|
|
404
|
-
|
|
|
405
|
-
|
|
|
406
|
-
|
|
|
407
|
-
|
|
|
408
|
-
|
|
|
409
|
-
|
|
|
410
|
-
|
|
|
411
|
-
|
|
|
412
|
-
|
|
|
413
|
-
|
|
|
414
|
-
|
|
|
415
|
-
|
|
|
416
|
-
|
|
|
417
|
-
|
|
|
418
|
-
|
|
|
419
|
-
|
|
|
420
|
-
|
|
|
421
|
-
|
|
|
422
|
-
| Sequel
|
|
423
|
-
| Shoryuken
|
|
424
|
-
| Sidekiq
|
|
425
|
-
| Sinatra
|
|
426
|
-
| Sneakers
|
|
427
|
-
| Sucker Punch
|
|
458
|
+
| Name | Key | Versions Supported: MRI | Versions Supported: JRuby | How to configure | Gem source |
|
|
459
|
+
| -------------------------- | -------------------------- | ------------------------ | --------------------------| ----------------------------------- | ------------------------------------------------------------------------------ |
|
|
460
|
+
| Action Cable | `action_cable` | `>= 5.0` | `>= 5.0` | *[Link](#action-cable)* | *[Link](https://github.com/rails/rails/tree/master/actioncable)* |
|
|
461
|
+
| Action Mailer | `action_mailer` | `>= 5.0` | `>= 5.0` | *[Link](#action-mailer)* | *[Link](https://github.com/rails/rails/tree/master/actionmailer)* |
|
|
462
|
+
| Action Pack | `action_pack` | `>= 3.2` | `>= 3.2` | *[Link](#action-pack)* | *[Link](https://github.com/rails/rails/tree/master/actionpack)* |
|
|
463
|
+
| Action View | `action_view` | `>= 3.2` | `>= 3.2` | *[Link](#action-view)* | *[Link](https://github.com/rails/rails/tree/master/actionview)* |
|
|
464
|
+
| Active Job | `active_job` | `>= 4.2` | `>= 4.2` | *[Link](#active-job)* | *[Link](https://github.com/rails/rails/tree/master/activejob)* |
|
|
465
|
+
| Active Model Serializers | `active_model_serializers` | `>= 0.9` | `>= 0.9` | *[Link](#active-model-serializers)* | *[Link](https://github.com/rails-api/active_model_serializers)* |
|
|
466
|
+
| Active Record | `active_record` | `>= 3.2` | `>= 3.2` | *[Link](#active-record)* | *[Link](https://github.com/rails/rails/tree/master/activerecord)* |
|
|
467
|
+
| Active Support | `active_support` | `>= 3.2` | `>= 3.2` | *[Link](#active-support)* | *[Link](https://github.com/rails/rails/tree/master/activesupport)* |
|
|
468
|
+
| AWS | `aws` | `>= 2.0` | `>= 2.0` | *[Link](#aws)* | *[Link](https://github.com/aws/aws-sdk-ruby)* |
|
|
469
|
+
| Concurrent Ruby | `concurrent_ruby` | `>= 0.9` | `>= 0.9` | *[Link](#concurrent-ruby)* | *[Link](https://github.com/ruby-concurrency/concurrent-ruby)* |
|
|
470
|
+
| Dalli | `dalli` | `>= 2.0` | `>= 2.0` | *[Link](#dalli)* | *[Link](https://github.com/petergoldstein/dalli)* |
|
|
471
|
+
| DelayedJob | `delayed_job` | `>= 4.1` | `>= 4.1` | *[Link](#delayedjob)* | *[Link](https://github.com/collectiveidea/delayed_job)* |
|
|
472
|
+
| Elasticsearch | `elasticsearch` | `>= 1.0` | `>= 1.0` | *[Link](#elasticsearch)* | *[Link](https://github.com/elastic/elasticsearch-ruby)* |
|
|
473
|
+
| Ethon | `ethon` | `>= 0.11` | `>= 0.11` | *[Link](#ethon)* | *[Link](https://github.com/typhoeus/ethon)* |
|
|
474
|
+
| Excon | `excon` | `>= 0.50` | `>= 0.50` | *[Link](#excon)* | *[Link](https://github.com/excon/excon)* |
|
|
475
|
+
| Faraday | `faraday` | `>= 0.14` | `>= 0.14` | *[Link](#faraday)* | *[Link](https://github.com/lostisland/faraday)* |
|
|
476
|
+
| Grape | `grape` | `>= 1.0` | `>= 1.0` | *[Link](#grape)* | *[Link](https://github.com/ruby-grape/grape)* |
|
|
477
|
+
| GraphQL | `graphql` | `>= 1.7.9` | `>= 1.7.9` | *[Link](#graphql)* | *[Link](https://github.com/rmosolgo/graphql-ruby)* |
|
|
478
|
+
| gRPC | `grpc` | `>= 1.7` | *gem not available* | *[Link](#grpc)* | *[Link](https://github.com/grpc/grpc/tree/master/src/rubyc)* |
|
|
479
|
+
| http.rb | `httprb` | `>= 2.0` | `>= 2.0` | *[Link](#httprb)* | *[Link](https://github.com/httprb/http)* |
|
|
480
|
+
| httpclient | `httpclient` | `>= 2.2` | `>= 2.2` | *[Link](#httpclient)* | *[Link](https://github.com/nahi/httpclient)* |
|
|
481
|
+
| httpx | `httpx` | `>= 0.11` | `>= 0.11` | *[Link](#httpx)* | *[Link](https://gitlab.com/honeyryderchuck/httpx)* |
|
|
482
|
+
| Kafka | `ruby-kafka` | `>= 0.7.10` | `>= 0.7.10` | *[Link](#kafka)* | *[Link](https://github.com/zendesk/ruby-kafka)* |
|
|
483
|
+
| Makara (via Active Record) | `makara` | `>= 0.3.5` | `>= 0.3.5` | *[Link](#active-record)* | *[Link](https://github.com/instacart/makara)* |
|
|
484
|
+
| MongoDB | `mongo` | `>= 2.1` | `>= 2.1` | *[Link](#mongodb)* | *[Link](https://github.com/mongodb/mongo-ruby-driver)* |
|
|
485
|
+
| MySQL2 | `mysql2` | `>= 0.3.21` | *gem not available* | *[Link](#mysql2)* | *[Link](https://github.com/brianmario/mysql2)* |
|
|
486
|
+
| 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)* |
|
|
487
|
+
| Presto | `presto` | `>= 0.5.14` | `>= 0.5.14` | *[Link](#presto)* | *[Link](https://github.com/treasure-data/presto-client-ruby)* |
|
|
488
|
+
| Qless | `qless` | `>= 0.10.0` | `>= 0.10.0` | *[Link](#qless)* | *[Link](https://github.com/seomoz/qless)* |
|
|
489
|
+
| Que | `que` | `>= 1.0.0.beta2` | `>= 1.0.0.beta2` | *[Link](#que)* | *[Link](https://github.com/que-rb/que)* |
|
|
490
|
+
| Racecar | `racecar` | `>= 0.3.5` | `>= 0.3.5` | *[Link](#racecar)* | *[Link](https://github.com/zendesk/racecar)* |
|
|
491
|
+
| Rack | `rack` | `>= 1.1` | `>= 1.1` | *[Link](#rack)* | *[Link](https://github.com/rack/rack)* |
|
|
492
|
+
| Rails | `rails` | `>= 3.2` | `>= 3.2` | *[Link](#rails)* | *[Link](https://github.com/rails/rails)* |
|
|
493
|
+
| Rake | `rake` | `>= 12.0` | `>= 12.0` | *[Link](#rake)* | *[Link](https://github.com/ruby/rake)* |
|
|
494
|
+
| Redis | `redis` | `>= 3.2` | `>= 3.2` | *[Link](#redis)* | *[Link](https://github.com/redis/redis-rb)* |
|
|
495
|
+
| Resque | `resque` | `>= 1.0` | `>= 1.0` | *[Link](#resque)* | *[Link](https://github.com/resque/resque)* |
|
|
496
|
+
| Rest Client | `rest-client` | `>= 1.8` | `>= 1.8` | *[Link](#rest-client)* | *[Link](https://github.com/rest-client/rest-client)* |
|
|
497
|
+
| Sequel | `sequel` | `>= 3.41` | `>= 3.41` | *[Link](#sequel)* | *[Link](https://github.com/jeremyevans/sequel)* |
|
|
498
|
+
| Shoryuken | `shoryuken` | `>= 3.2` | `>= 3.2` | *[Link](#shoryuken)* | *[Link](https://github.com/phstc/shoryuken)* |
|
|
499
|
+
| Sidekiq | `sidekiq` | `>= 3.5.4` | `>= 3.5.4` | *[Link](#sidekiq)* | *[Link](https://github.com/mperham/sidekiq)* |
|
|
500
|
+
| Sinatra | `sinatra` | `>= 1.4` | `>= 1.4` | *[Link](#sinatra)* | *[Link](https://github.com/sinatra/sinatra)* |
|
|
501
|
+
| Sneakers | `sneakers` | `>= 2.12.0` | `>= 2.12.0` | *[Link](#sneakers)* | *[Link](https://github.com/jondot/sneakers)* |
|
|
502
|
+
| Sucker Punch | `sucker_punch` | `>= 2.0` | `>= 2.0` | *[Link](#sucker-punch)* | *[Link](https://github.com/brandonhilkert/sucker_punch)* |
|
|
503
|
+
|
|
504
|
+
#### CI Visibility
|
|
505
|
+
|
|
506
|
+
For Datadog CI Visibility, library instrumentation can be activated and configured by using the following `Datadog.configure` API:
|
|
507
|
+
|
|
508
|
+
```ruby
|
|
509
|
+
Datadog.configure do |c|
|
|
510
|
+
# Activates and configures an integration
|
|
511
|
+
c.ci.instrument :integration_name, options
|
|
512
|
+
end
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
`options` is a `Hash` of integration-specific configuration settings.
|
|
516
|
+
|
|
517
|
+
These are the available CI Visibility integrations:
|
|
518
|
+
|
|
519
|
+
| Name | Key | Versions Supported: MRI | Versions Supported: JRuby | How to configure | Gem source |
|
|
520
|
+
|-----------|------------|-------------------------|---------------------------|---------------------|-----------------------------------------------------|
|
|
521
|
+
| Cucumber | `cucumber` | `>= 3.0` | `>= 1.7.16` | *[Link](#cucumber)* | *[Link](https://github.com/cucumber/cucumber-ruby)* |
|
|
522
|
+
| RSpec | `rspec` | `>= 3.0.0` | `>= 3.0.0` | *[Link](#rspec)* | *[Link](https://github.com/rspec/rspec)* |
|
|
428
523
|
|
|
429
524
|
### Action Cable
|
|
430
525
|
|
|
@@ -436,7 +531,20 @@ You can enable it through `Datadog.configure`:
|
|
|
436
531
|
require 'ddtrace'
|
|
437
532
|
|
|
438
533
|
Datadog.configure do |c|
|
|
439
|
-
c.
|
|
534
|
+
c.tracing.instrument :action_cable
|
|
535
|
+
end
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
### Action Mailer
|
|
539
|
+
|
|
540
|
+
The Action Mailer integration provides tracing for Rails 5 ActionMailer actions.
|
|
541
|
+
|
|
542
|
+
You can enable it through `Datadog.configure`:
|
|
543
|
+
|
|
544
|
+
```ruby
|
|
545
|
+
require 'ddtrace'
|
|
546
|
+
Datadog.configure do |c|
|
|
547
|
+
c.tracing.instrument :action_mailer, options
|
|
440
548
|
end
|
|
441
549
|
```
|
|
442
550
|
|
|
@@ -444,18 +552,32 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
444
552
|
|
|
445
553
|
| Key | Description | Default |
|
|
446
554
|
| --- | ----------- | ------- |
|
|
447
|
-
| `
|
|
555
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
|
556
|
+
| `email_data` | Whether or not to append additional email payload metadata to `action_mailer.deliver` spans. Fields include `['subject', 'to', 'from', 'bcc', 'cc', 'date', 'perform_deliveries']`. | `false` |
|
|
557
|
+
|
|
558
|
+
### Action Pack
|
|
559
|
+
|
|
560
|
+
Most of the time, Action Pack is set up as part of Rails, but it can be activated separately:
|
|
561
|
+
|
|
562
|
+
```ruby
|
|
563
|
+
require 'actionpack'
|
|
564
|
+
require 'ddtrace'
|
|
565
|
+
|
|
566
|
+
Datadog.configure do |c|
|
|
567
|
+
c.tracing.instrument :action_pack
|
|
568
|
+
end
|
|
569
|
+
```
|
|
448
570
|
|
|
449
571
|
### Action View
|
|
450
572
|
|
|
451
|
-
Most of the time,
|
|
573
|
+
Most of the time, Action View is set up as part of Rails, but it can be activated separately:
|
|
452
574
|
|
|
453
575
|
```ruby
|
|
454
576
|
require 'actionview'
|
|
455
577
|
require 'ddtrace'
|
|
456
578
|
|
|
457
579
|
Datadog.configure do |c|
|
|
458
|
-
c.
|
|
580
|
+
c.tracing.instrument :action_view, options
|
|
459
581
|
end
|
|
460
582
|
```
|
|
461
583
|
|
|
@@ -463,47 +585,38 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
463
585
|
|
|
464
586
|
| Key | Description | Default |
|
|
465
587
|
| ---| --- | --- |
|
|
466
|
-
| `service_name` | Service name used for rendering instrumentation. | `action_view` |
|
|
467
588
|
| `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/'` |
|
|
468
589
|
|
|
469
|
-
### Active
|
|
590
|
+
### Active Job
|
|
470
591
|
|
|
471
|
-
|
|
592
|
+
Most of the time, Active Job is set up as part of Rails, but it can be activated separately:
|
|
472
593
|
|
|
473
594
|
```ruby
|
|
474
|
-
require '
|
|
595
|
+
require 'active_job'
|
|
475
596
|
require 'ddtrace'
|
|
476
597
|
|
|
477
598
|
Datadog.configure do |c|
|
|
478
|
-
c.
|
|
599
|
+
c.tracing.instrument :active_job
|
|
479
600
|
end
|
|
480
601
|
|
|
481
|
-
|
|
482
|
-
ActiveModelSerializers::SerializableResource.new(test_obj).serializable_hash
|
|
602
|
+
ExampleJob.perform_later
|
|
483
603
|
```
|
|
484
604
|
|
|
485
|
-
|
|
486
|
-
| --- | ----------- | ------- |
|
|
487
|
-
| `service_name` | Service name used for `active_model_serializers` instrumentation. | `'active_model_serializers'` |
|
|
488
|
-
|
|
489
|
-
### Action Pack
|
|
605
|
+
### Active Model Serializers
|
|
490
606
|
|
|
491
|
-
|
|
607
|
+
The Active Model Serializers integration traces the `serialize` event for version 0.9+ and the `render` event for version 0.10+.
|
|
492
608
|
|
|
493
609
|
```ruby
|
|
494
|
-
require '
|
|
610
|
+
require 'active_model_serializers'
|
|
495
611
|
require 'ddtrace'
|
|
496
612
|
|
|
497
613
|
Datadog.configure do |c|
|
|
498
|
-
c.
|
|
614
|
+
c.tracing.instrument :active_model_serializers
|
|
499
615
|
end
|
|
500
|
-
```
|
|
501
|
-
|
|
502
|
-
Where `options` is an optional `Hash` that accepts the following parameters:
|
|
503
616
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
617
|
+
my_object = MyModel.new(name: 'my object')
|
|
618
|
+
ActiveModelSerializers::SerializableResource.new(test_obj).serializable_hash
|
|
619
|
+
```
|
|
507
620
|
|
|
508
621
|
### Active Record
|
|
509
622
|
|
|
@@ -516,7 +629,7 @@ require 'active_record'
|
|
|
516
629
|
require 'ddtrace'
|
|
517
630
|
|
|
518
631
|
Datadog.configure do |c|
|
|
519
|
-
c.
|
|
632
|
+
c.tracing.instrument :active_record, options
|
|
520
633
|
end
|
|
521
634
|
|
|
522
635
|
Dir::Tmpname.create(['test', '.sqlite']) do |db|
|
|
@@ -530,7 +643,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
530
643
|
|
|
531
644
|
| Key | Description | Default |
|
|
532
645
|
| ---| --- | --- |
|
|
533
|
-
| `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'`) |
|
|
534
646
|
| `service_name` | Service name used for database portion of `active_record` instrumentation. | Name of database adapter (e.g. `'mysql2'`) |
|
|
535
647
|
|
|
536
648
|
**Configuring trace settings per database**
|
|
@@ -546,22 +658,22 @@ You can configure trace settings per database connection by using the `describes
|
|
|
546
658
|
Datadog.configure do |c|
|
|
547
659
|
# Symbol matching your database connection in config/database.yml
|
|
548
660
|
# Only available if you are using Rails with ActiveRecord.
|
|
549
|
-
c.
|
|
661
|
+
c.tracing.instrument :active_record, describes: :secondary_database, service_name: 'secondary-db'
|
|
550
662
|
|
|
551
663
|
# Block configuration pattern.
|
|
552
|
-
c.
|
|
664
|
+
c.tracing.instrument :active_record, describes: :secondary_database do |second_db|
|
|
553
665
|
second_db.service_name = 'secondary-db'
|
|
554
666
|
end
|
|
555
667
|
|
|
556
668
|
# Connection string with the following connection settings:
|
|
557
669
|
# adapter, username, host, port, database
|
|
558
670
|
# Other fields are ignored.
|
|
559
|
-
c.
|
|
671
|
+
c.tracing.instrument :active_record, describes: 'mysql2://root@127.0.0.1:3306/mysql', service_name: 'secondary-db'
|
|
560
672
|
|
|
561
673
|
# Hash with following connection settings:
|
|
562
674
|
# adapter, username, host, port, database
|
|
563
675
|
# Other fields are ignored.
|
|
564
|
-
c.
|
|
676
|
+
c.tracing.instrument :active_record, describes: {
|
|
565
677
|
adapter: 'mysql2',
|
|
566
678
|
host: '127.0.0.1',
|
|
567
679
|
port: '3306',
|
|
@@ -571,8 +683,8 @@ Datadog.configure do |c|
|
|
|
571
683
|
service_name: 'secondary-db'
|
|
572
684
|
|
|
573
685
|
# If using the `makara` gem, it's possible to match on connection `role`:
|
|
574
|
-
c.
|
|
575
|
-
c.
|
|
686
|
+
c.tracing.instrument :active_record, describes: { makara_role: 'primary' }, service_name: 'primary-db'
|
|
687
|
+
c.tracing.instrument :active_record, describes: { makara_role: 'replica' }, service_name: 'secondary-db'
|
|
576
688
|
end
|
|
577
689
|
```
|
|
578
690
|
|
|
@@ -581,23 +693,23 @@ You can also create configurations based on partial matching of database connect
|
|
|
581
693
|
```ruby
|
|
582
694
|
Datadog.configure do |c|
|
|
583
695
|
# Matches any connection on host `127.0.0.1`.
|
|
584
|
-
c.
|
|
696
|
+
c.tracing.instrument :active_record, describes: { host: '127.0.0.1' }, service_name: 'local-db'
|
|
585
697
|
|
|
586
698
|
# Matches any `mysql2` connection.
|
|
587
|
-
c.
|
|
699
|
+
c.tracing.instrument :active_record, describes: { adapter: 'mysql2'}, service_name: 'mysql-db'
|
|
588
700
|
|
|
589
701
|
# Matches any `mysql2` connection to the `reports` database.
|
|
590
702
|
#
|
|
591
703
|
# In case of multiple matching `describe` configurations, the latest one applies.
|
|
592
704
|
# In this case a connection with both adapter `mysql` and database `reports`
|
|
593
705
|
# will be configured `service_name: 'reports-db'`, not `service_name: 'mysql-db'`.
|
|
594
|
-
c.
|
|
706
|
+
c.tracing.instrument :active_record, describes: { adapter: 'mysql2', database: 'reports'}, service_name: 'reports-db'
|
|
595
707
|
end
|
|
596
708
|
```
|
|
597
709
|
|
|
598
710
|
When multiple `describes` configurations match a connection, the latest configured rule that matches will be applied.
|
|
599
711
|
|
|
600
|
-
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.
|
|
712
|
+
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.tracing.instrument :active_record` instead.
|
|
601
713
|
|
|
602
714
|
### Active Support
|
|
603
715
|
|
|
@@ -608,7 +720,7 @@ require 'activesupport'
|
|
|
608
720
|
require 'ddtrace'
|
|
609
721
|
|
|
610
722
|
Datadog.configure do |c|
|
|
611
|
-
c.
|
|
723
|
+
c.tracing.instrument :active_support, options
|
|
612
724
|
end
|
|
613
725
|
|
|
614
726
|
cache = ActiveSupport::Cache::MemoryStore.new
|
|
@@ -630,7 +742,7 @@ require 'aws-sdk'
|
|
|
630
742
|
require 'ddtrace'
|
|
631
743
|
|
|
632
744
|
Datadog.configure do |c|
|
|
633
|
-
c.
|
|
745
|
+
c.tracing.instrument :aws, options
|
|
634
746
|
end
|
|
635
747
|
|
|
636
748
|
# Perform traced call
|
|
@@ -654,21 +766,15 @@ To activate your integration, use the `Datadog.configure` method:
|
|
|
654
766
|
# Inside Rails initializer or equivalent
|
|
655
767
|
Datadog.configure do |c|
|
|
656
768
|
# Patches ::Concurrent::Future to use ExecutorService that propagates context
|
|
657
|
-
c.
|
|
769
|
+
c.tracing.instrument :concurrent_ruby
|
|
658
770
|
end
|
|
659
771
|
|
|
660
772
|
# Pass context into code executed within Concurrent::Future
|
|
661
|
-
Datadog.
|
|
662
|
-
Concurrent::Future.execute { Datadog.
|
|
773
|
+
Datadog::Tracing.trace('outer') do
|
|
774
|
+
Concurrent::Future.execute { Datadog::Tracing.trace('inner') { } }.wait
|
|
663
775
|
end
|
|
664
776
|
```
|
|
665
777
|
|
|
666
|
-
Where `options` is an optional `Hash` that accepts the following parameters:
|
|
667
|
-
|
|
668
|
-
| Key | Description | Default |
|
|
669
|
-
| --- | ----------- | ------- |
|
|
670
|
-
| `service_name` | Service name used for `concurrent-ruby` instrumentation | `'concurrent-ruby'` |
|
|
671
|
-
|
|
672
778
|
### Cucumber
|
|
673
779
|
|
|
674
780
|
Cucumber integration will trace all executions of scenarios and steps when using `cucumber` framework.
|
|
@@ -681,7 +787,7 @@ require 'ddtrace'
|
|
|
681
787
|
|
|
682
788
|
# Configure default Cucumber integration
|
|
683
789
|
Datadog.configure do |c|
|
|
684
|
-
c.
|
|
790
|
+
c.ci.instrument :cucumber, options
|
|
685
791
|
end
|
|
686
792
|
|
|
687
793
|
# Example of how to attach tags from scenario to active span
|
|
@@ -714,7 +820,7 @@ require 'ddtrace'
|
|
|
714
820
|
|
|
715
821
|
# Configure default Dalli tracing behavior
|
|
716
822
|
Datadog.configure do |c|
|
|
717
|
-
c.
|
|
823
|
+
c.tracing.instrument :dalli, options
|
|
718
824
|
end
|
|
719
825
|
|
|
720
826
|
# Configure Dalli tracing behavior for single client
|
|
@@ -738,7 +844,7 @@ You can enable it through `Datadog.configure`:
|
|
|
738
844
|
require 'ddtrace'
|
|
739
845
|
|
|
740
846
|
Datadog.configure do |c|
|
|
741
|
-
c.
|
|
847
|
+
c.tracing.instrument :delayed_job, options
|
|
742
848
|
end
|
|
743
849
|
```
|
|
744
850
|
|
|
@@ -746,8 +852,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
746
852
|
|
|
747
853
|
| Key | Description | Default |
|
|
748
854
|
| --- | ----------- | ------- |
|
|
749
|
-
| `service_name` | Service name used for `DelayedJob` instrumentation | `'delayed_job'` |
|
|
750
|
-
| `client_service_name` | Service name used for client-side `DelayedJob` instrumentation | `'delayed_job-client'` |
|
|
751
855
|
| `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? }` |
|
|
752
856
|
|
|
753
857
|
### Elasticsearch
|
|
@@ -759,7 +863,7 @@ require 'elasticsearch/transport'
|
|
|
759
863
|
require 'ddtrace'
|
|
760
864
|
|
|
761
865
|
Datadog.configure do |c|
|
|
762
|
-
c.
|
|
866
|
+
c.tracing.instrument :elasticsearch, options
|
|
763
867
|
end
|
|
764
868
|
|
|
765
869
|
# Perform a query to Elasticsearch
|
|
@@ -782,10 +886,10 @@ The `ethon` integration will trace any HTTP request through `Easy` or `Multi` ob
|
|
|
782
886
|
require 'ddtrace'
|
|
783
887
|
|
|
784
888
|
Datadog.configure do |c|
|
|
785
|
-
c.
|
|
889
|
+
c.tracing.instrument :ethon, options
|
|
786
890
|
|
|
787
891
|
# optionally, specify a different service name for hostnames matching a regex
|
|
788
|
-
c.
|
|
892
|
+
c.tracing.instrument :ethon, describes: /user-[^.]+\.example\.com/ do |ethon|
|
|
789
893
|
ethon.service_name = 'user.example.com'
|
|
790
894
|
ethon.split_by_domain = false # Only necessary if split_by_domain is true by default
|
|
791
895
|
end
|
|
@@ -810,10 +914,10 @@ require 'ddtrace'
|
|
|
810
914
|
|
|
811
915
|
# Configure default Excon tracing behavior
|
|
812
916
|
Datadog.configure do |c|
|
|
813
|
-
c.
|
|
917
|
+
c.tracing.instrument :excon, options
|
|
814
918
|
|
|
815
919
|
# optionally, specify a different service name for hostnames matching a regex
|
|
816
|
-
c.
|
|
920
|
+
c.tracing.instrument :excon, describes: /user-[^.]+\.example\.com/ do |excon|
|
|
817
921
|
excon.service_name = 'user.example.com'
|
|
818
922
|
excon.split_by_domain = false # Only necessary if split_by_domain is true by default
|
|
819
923
|
end
|
|
@@ -840,7 +944,7 @@ If you use multiple connections with Excon, you can give each of them different
|
|
|
840
944
|
# Wrap the Datadog tracing middleware around the default middleware stack
|
|
841
945
|
Excon.new(
|
|
842
946
|
'http://example.com',
|
|
843
|
-
middlewares: Datadog::Contrib::Excon::Middleware.with(options).around_default_stack
|
|
947
|
+
middlewares: Datadog::Tracing::Contrib::Excon::Middleware.with(options).around_default_stack
|
|
844
948
|
)
|
|
845
949
|
|
|
846
950
|
# Insert the middleware into a custom middleware stack.
|
|
@@ -849,7 +953,7 @@ Excon.new(
|
|
|
849
953
|
'http://example.com',
|
|
850
954
|
middlewares: [
|
|
851
955
|
Excon::Middleware::ResponseParser,
|
|
852
|
-
Datadog::Contrib::Excon::Middleware.with(options),
|
|
956
|
+
Datadog::Tracing::Contrib::Excon::Middleware.with(options),
|
|
853
957
|
Excon::Middleware::Idempotent
|
|
854
958
|
]
|
|
855
959
|
)
|
|
@@ -867,10 +971,10 @@ require 'ddtrace'
|
|
|
867
971
|
|
|
868
972
|
# Configure default Faraday tracing behavior
|
|
869
973
|
Datadog.configure do |c|
|
|
870
|
-
c.
|
|
974
|
+
c.tracing.instrument :faraday, options
|
|
871
975
|
|
|
872
976
|
# optionally, specify a different service name for hostnames matching a regex
|
|
873
|
-
c.
|
|
977
|
+
c.tracing.instrument :faraday, describes: /user-[^.]+\.example\.com/ do |faraday|
|
|
874
978
|
faraday.service_name = 'user.example.com'
|
|
875
979
|
faraday.split_by_domain = false # Only necessary if split_by_domain is true by default
|
|
876
980
|
end
|
|
@@ -906,7 +1010,7 @@ require 'grape'
|
|
|
906
1010
|
require 'ddtrace'
|
|
907
1011
|
|
|
908
1012
|
Datadog.configure do |c|
|
|
909
|
-
c.
|
|
1013
|
+
c.tracing.instrument :grape, options
|
|
910
1014
|
end
|
|
911
1015
|
|
|
912
1016
|
# Then define your application
|
|
@@ -923,7 +1027,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
923
1027
|
| Key | Description | Default |
|
|
924
1028
|
| --- | ----------- | ------- |
|
|
925
1029
|
| `enabled` | Defines whether Grape should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
|
926
|
-
| `service_name` | Service name used for `grape` instrumentation | `'grape'` |
|
|
927
1030
|
| `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` |
|
|
928
1031
|
|
|
929
1032
|
### GraphQL
|
|
@@ -935,7 +1038,7 @@ To activate your integration, use the `Datadog.configure` method:
|
|
|
935
1038
|
```ruby
|
|
936
1039
|
# Inside Rails initializer or equivalent
|
|
937
1040
|
Datadog.configure do |c|
|
|
938
|
-
c.
|
|
1041
|
+
c.tracing.instrument :graphql, schemas: [YourSchema], options
|
|
939
1042
|
end
|
|
940
1043
|
|
|
941
1044
|
# Then run a GraphQL query
|
|
@@ -946,7 +1049,6 @@ The `use :graphql` method accepts the following parameters. Additional options c
|
|
|
946
1049
|
|
|
947
1050
|
| Key | Description | Default |
|
|
948
1051
|
| --- | ----------- | ------- |
|
|
949
|
-
| `service_name` | Service name used for `graphql` instrumentation | `'ruby-graphql'` |
|
|
950
1052
|
| `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. | `[]` |
|
|
951
1053
|
|
|
952
1054
|
**Manually configuring GraphQL schemas**
|
|
@@ -1006,7 +1108,7 @@ require 'grpc'
|
|
|
1006
1108
|
require 'ddtrace'
|
|
1007
1109
|
|
|
1008
1110
|
Datadog.configure do |c|
|
|
1009
|
-
c.
|
|
1111
|
+
c.tracing.instrument :grpc, options
|
|
1010
1112
|
end
|
|
1011
1113
|
|
|
1012
1114
|
# Server side
|
|
@@ -1025,13 +1127,14 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1025
1127
|
| Key | Description | Default |
|
|
1026
1128
|
| --- | ----------- | ------- |
|
|
1027
1129
|
| `service_name` | Service name used for `grpc` instrumentation | `'grpc'` |
|
|
1130
|
+
| `error_handler` | Custom error handler invoked when a request is an error. A `Proc` that accepts `span` and `error` parameters. Sets error on the span by default. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
|
|
1028
1131
|
|
|
1029
1132
|
**Configuring clients to use different settings**
|
|
1030
1133
|
|
|
1031
1134
|
In situations where you have multiple clients calling multiple distinct services, you may pass the Datadog interceptor directly, like so
|
|
1032
1135
|
|
|
1033
1136
|
```ruby
|
|
1034
|
-
configured_interceptor = Datadog::Contrib::GRPC::DatadogInterceptor::Client.new do |c|
|
|
1137
|
+
configured_interceptor = Datadog::Tracing::Contrib::GRPC::DatadogInterceptor::Client.new do |c|
|
|
1035
1138
|
c.service_name = "Alternate"
|
|
1036
1139
|
end
|
|
1037
1140
|
|
|
@@ -1052,9 +1155,9 @@ The http.rb integration will trace any HTTP call using the Http.rb gem.
|
|
|
1052
1155
|
require 'http'
|
|
1053
1156
|
require 'ddtrace'
|
|
1054
1157
|
Datadog.configure do |c|
|
|
1055
|
-
c.
|
|
1158
|
+
c.tracing.instrument :httprb, options
|
|
1056
1159
|
# optionally, specify a different service name for hostnames matching a regex
|
|
1057
|
-
c.
|
|
1160
|
+
c.tracing.instrument :httprb, describes: /user-[^.]+\.example\.com/ do |httprb|
|
|
1058
1161
|
httprb.service_name = 'user.example.com'
|
|
1059
1162
|
httprb.split_by_domain = false # Only necessary if split_by_domain is true by default
|
|
1060
1163
|
end
|
|
@@ -1077,9 +1180,9 @@ The httpclient integration will trace any HTTP call using the httpclient gem.
|
|
|
1077
1180
|
require 'httpclient'
|
|
1078
1181
|
require 'ddtrace'
|
|
1079
1182
|
Datadog.configure do |c|
|
|
1080
|
-
c.
|
|
1183
|
+
c.tracing.instrument :httpclient, options
|
|
1081
1184
|
# optionally, specify a different service name for hostnames matching a regex
|
|
1082
|
-
c.
|
|
1185
|
+
c.tracing.instrument :httpclient, describes: /user-[^.]+\.example\.com/ do |httpclient|
|
|
1083
1186
|
httpclient.service_name = 'user.example.com'
|
|
1084
1187
|
httpclient.split_by_domain = false # Only necessary if split_by_domain is true by default
|
|
1085
1188
|
end
|
|
@@ -1103,10 +1206,10 @@ require "ddtrace"
|
|
|
1103
1206
|
require "httpx/adapters/datadog"
|
|
1104
1207
|
|
|
1105
1208
|
Datadog.configure do |c|
|
|
1106
|
-
c.
|
|
1209
|
+
c.tracing.instrument :httpx
|
|
1107
1210
|
|
|
1108
1211
|
# optionally, specify a different service name for hostnames matching a regex
|
|
1109
|
-
c.
|
|
1212
|
+
c.tracing.instrument :httpx, describes: /user-[^.]+\.example\.com/ do |http|
|
|
1110
1213
|
http.service_name = 'user.example.com'
|
|
1111
1214
|
http.split_by_domain = false # Only necessary if split_by_domain is true by default
|
|
1112
1215
|
end
|
|
@@ -1125,17 +1228,10 @@ require 'kafka'
|
|
|
1125
1228
|
require 'ddtrace'
|
|
1126
1229
|
|
|
1127
1230
|
Datadog.configure do |c|
|
|
1128
|
-
c.
|
|
1231
|
+
c.tracing.instrument :kafka
|
|
1129
1232
|
end
|
|
1130
1233
|
```
|
|
1131
1234
|
|
|
1132
|
-
Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1133
|
-
|
|
1134
|
-
| Key | Description | Default |
|
|
1135
|
-
| --- | ----------- | ------- |
|
|
1136
|
-
| `service_name` | Service name used for `kafka` instrumentation | `'kafka'` |
|
|
1137
|
-
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
|
1138
|
-
|
|
1139
1235
|
### MongoDB
|
|
1140
1236
|
|
|
1141
1237
|
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:
|
|
@@ -1145,7 +1241,7 @@ require 'mongo'
|
|
|
1145
1241
|
require 'ddtrace'
|
|
1146
1242
|
|
|
1147
1243
|
Datadog.configure do |c|
|
|
1148
|
-
c.
|
|
1244
|
+
c.tracing.instrument :mongo, options
|
|
1149
1245
|
end
|
|
1150
1246
|
|
|
1151
1247
|
# Create a MongoDB client and use it as usual
|
|
@@ -1154,7 +1250,7 @@ collection = client[:people]
|
|
|
1154
1250
|
collection.insert_one({ name: 'Steve' })
|
|
1155
1251
|
|
|
1156
1252
|
# In case you want to override the global configuration for a certain client instance
|
|
1157
|
-
Datadog.
|
|
1253
|
+
Datadog.configure_onto(client, **options)
|
|
1158
1254
|
```
|
|
1159
1255
|
|
|
1160
1256
|
Where `options` is an optional `Hash` that accepts the following parameters:
|
|
@@ -1164,6 +1260,37 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1164
1260
|
| `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] }` |
|
|
1165
1261
|
| `service_name` | Service name used for `mongo` instrumentation | `'mongodb'` |
|
|
1166
1262
|
|
|
1263
|
+
**Configuring trace settings per connection**
|
|
1264
|
+
|
|
1265
|
+
You can configure trace settings per connection by using the `describes` option:
|
|
1266
|
+
|
|
1267
|
+
```ruby
|
|
1268
|
+
# Provide a `:describes` option with a connection key.
|
|
1269
|
+
# Any of the following keys are acceptable and equivalent to one another.
|
|
1270
|
+
# If a block is provided, it yields a Settings object that
|
|
1271
|
+
# accepts any of the configuration options listed above.
|
|
1272
|
+
|
|
1273
|
+
Datadog.configure do |c|
|
|
1274
|
+
# Network connection string
|
|
1275
|
+
c.tracing.instrument :mongo, describes: '127.0.0.1:27017', service_name: 'mongo-primary'
|
|
1276
|
+
|
|
1277
|
+
# Network connection regular expression
|
|
1278
|
+
c.tracing.instrument :mongo, describes: /localhost.*/, service_name: 'mongo-secondary'
|
|
1279
|
+
end
|
|
1280
|
+
|
|
1281
|
+
client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'artists')
|
|
1282
|
+
collection = client[:people]
|
|
1283
|
+
collection.insert_one({ name: 'Steve' })
|
|
1284
|
+
# Traced call will belong to `mongo-primary` service
|
|
1285
|
+
|
|
1286
|
+
client = Mongo::Client.new([ 'localhost:27017' ], :database => 'artists')
|
|
1287
|
+
collection = client[:people]
|
|
1288
|
+
collection.insert_one({ name: 'Steve' })
|
|
1289
|
+
# Traced call will belong to `mongo-secondary` service
|
|
1290
|
+
```
|
|
1291
|
+
|
|
1292
|
+
When multiple `describes` configurations match a connection, the latest configured rule that matches will be applied.
|
|
1293
|
+
|
|
1167
1294
|
### MySQL2
|
|
1168
1295
|
|
|
1169
1296
|
The MySQL2 integration traces any SQL command sent through `mysql2` gem.
|
|
@@ -1173,7 +1300,7 @@ require 'mysql2'
|
|
|
1173
1300
|
require 'ddtrace'
|
|
1174
1301
|
|
|
1175
1302
|
Datadog.configure do |c|
|
|
1176
|
-
c.
|
|
1303
|
+
c.tracing.instrument :mysql2, options
|
|
1177
1304
|
end
|
|
1178
1305
|
|
|
1179
1306
|
client = Mysql2::Client.new(:host => "localhost", :username => "root")
|
|
@@ -1195,10 +1322,10 @@ require 'net/http'
|
|
|
1195
1322
|
require 'ddtrace'
|
|
1196
1323
|
|
|
1197
1324
|
Datadog.configure do |c|
|
|
1198
|
-
c.
|
|
1325
|
+
c.tracing.instrument :http, options
|
|
1199
1326
|
|
|
1200
1327
|
# optionally, specify a different service name for hostnames matching a regex
|
|
1201
|
-
c.
|
|
1328
|
+
c.tracing.instrument :http, describes: /user-[^.]+\.example\.com/ do |http|
|
|
1202
1329
|
http.service_name = 'user.example.com'
|
|
1203
1330
|
http.split_by_domain = false # Only necessary if split_by_domain is true by default
|
|
1204
1331
|
end
|
|
@@ -1220,11 +1347,11 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1220
1347
|
| `service_name` | Service name used for `http` instrumentation | `'net/http'` |
|
|
1221
1348
|
| `split_by_domain` | Uses the request domain as the service name when set to `true`. | `false` |
|
|
1222
1349
|
|
|
1223
|
-
If you wish to configure each connection object individually, you may use the `Datadog.
|
|
1350
|
+
If you wish to configure each connection object individually, you may use the `Datadog.configure_onto` as it follows:
|
|
1224
1351
|
|
|
1225
1352
|
```ruby
|
|
1226
1353
|
client = Net::HTTP.new(host, port)
|
|
1227
|
-
Datadog.
|
|
1354
|
+
Datadog.configure_onto(client, **options)
|
|
1228
1355
|
```
|
|
1229
1356
|
|
|
1230
1357
|
### Presto
|
|
@@ -1236,7 +1363,7 @@ require 'presto-client'
|
|
|
1236
1363
|
require 'ddtrace'
|
|
1237
1364
|
|
|
1238
1365
|
Datadog.configure do |c|
|
|
1239
|
-
c.
|
|
1366
|
+
c.tracing.instrument :presto, options
|
|
1240
1367
|
end
|
|
1241
1368
|
|
|
1242
1369
|
client = Presto::Client.new(
|
|
@@ -1268,7 +1395,7 @@ To add tracing to a Qless job:
|
|
|
1268
1395
|
require 'ddtrace'
|
|
1269
1396
|
|
|
1270
1397
|
Datadog.configure do |c|
|
|
1271
|
-
c.
|
|
1398
|
+
c.tracing.instrument :qless, options
|
|
1272
1399
|
end
|
|
1273
1400
|
```
|
|
1274
1401
|
|
|
@@ -1276,7 +1403,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1276
1403
|
|
|
1277
1404
|
| Key | Description | Default |
|
|
1278
1405
|
| --- | ----------- | ------- |
|
|
1279
|
-
| `service_name` | Service name used for `qless` instrumentation | `'qless'` |
|
|
1280
1406
|
| `tag_job_data` | Enable tagging with job arguments. true for on, false for off. | `false` |
|
|
1281
1407
|
| `tag_job_tags` | Enable tagging with job tags. true for on, false for off. | `false` |
|
|
1282
1408
|
|
|
@@ -1290,7 +1416,7 @@ You can enable it through `Datadog.configure`:
|
|
|
1290
1416
|
require 'ddtrace'
|
|
1291
1417
|
|
|
1292
1418
|
Datadog.configure do |c|
|
|
1293
|
-
c.
|
|
1419
|
+
c.tracing.instrument :que, options
|
|
1294
1420
|
end
|
|
1295
1421
|
```
|
|
1296
1422
|
|
|
@@ -1299,7 +1425,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1299
1425
|
| Key | Description | Default |
|
|
1300
1426
|
| --- | ----------- | ------- |
|
|
1301
1427
|
| `enabled` | Defines whether Que should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
|
1302
|
-
| `service_name` | Service name used for `que` instrumentation | `'que'` |
|
|
1303
1428
|
| `tag_args` | Enable tagging of a job's args field. `true` for on, `false` for off. | `false` |
|
|
1304
1429
|
| `tag_data` | Enable tagging of a job's data field. `true` for on, `false` for off. | `false` |
|
|
1305
1430
|
| `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? }` |
|
|
@@ -1314,7 +1439,7 @@ You can enable it through `Datadog.configure`:
|
|
|
1314
1439
|
require 'ddtrace'
|
|
1315
1440
|
|
|
1316
1441
|
Datadog.configure do |c|
|
|
1317
|
-
c.
|
|
1442
|
+
c.tracing.instrument :racecar, options
|
|
1318
1443
|
end
|
|
1319
1444
|
```
|
|
1320
1445
|
|
|
@@ -1335,10 +1460,10 @@ This integration is automatically activated with web frameworks like Rails. If y
|
|
|
1335
1460
|
require 'ddtrace'
|
|
1336
1461
|
|
|
1337
1462
|
Datadog.configure do |c|
|
|
1338
|
-
c.
|
|
1463
|
+
c.tracing.instrument :rack, options
|
|
1339
1464
|
end
|
|
1340
1465
|
|
|
1341
|
-
use Datadog::Contrib::Rack::TraceMiddleware
|
|
1466
|
+
use Datadog::Tracing::Contrib::Rack::TraceMiddleware
|
|
1342
1467
|
|
|
1343
1468
|
app = proc do |env|
|
|
1344
1469
|
[ 200, {'Content-Type' => 'text/plain'}, ['OK'] ]
|
|
@@ -1361,7 +1486,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1361
1486
|
| `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` |
|
|
1362
1487
|
| `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` |
|
|
1363
1488
|
| `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` |
|
|
1364
|
-
| `service_name` | Service name used for `rack` instrumentation | `'rack'` |
|
|
1365
1489
|
| `web_service_name` | Service name for frontend server request queuing spans. (e.g. `'nginx'`) | `'web-server'` |
|
|
1366
1490
|
|
|
1367
1491
|
**Configuring URL quantization behavior**
|
|
@@ -1374,23 +1498,23 @@ Datadog.configure do |c|
|
|
|
1374
1498
|
|
|
1375
1499
|
# Show values for any query string parameter matching 'category_id' exactly
|
|
1376
1500
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id=1&sort_by
|
|
1377
|
-
c.
|
|
1501
|
+
c.tracing.instrument :rack, quantize: { query: { show: ['category_id'] } }
|
|
1378
1502
|
|
|
1379
1503
|
# Show all values for all query string parameters
|
|
1380
1504
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id=1&sort_by=asc
|
|
1381
|
-
c.
|
|
1505
|
+
c.tracing.instrument :rack, quantize: { query: { show: :all } }
|
|
1382
1506
|
|
|
1383
1507
|
# Totally exclude any query string parameter matching 'sort_by' exactly
|
|
1384
1508
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id
|
|
1385
|
-
c.
|
|
1509
|
+
c.tracing.instrument :rack, quantize: { query: { exclude: ['sort_by'] } }
|
|
1386
1510
|
|
|
1387
1511
|
# Remove the query string entirely
|
|
1388
1512
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path
|
|
1389
|
-
c.
|
|
1513
|
+
c.tracing.instrument :rack, quantize: { query: { exclude: :all } }
|
|
1390
1514
|
|
|
1391
1515
|
# Show URL fragments
|
|
1392
1516
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id&sort_by#featured
|
|
1393
|
-
c.
|
|
1517
|
+
c.tracing.instrument :rack, quantize: { fragment: :show }
|
|
1394
1518
|
end
|
|
1395
1519
|
```
|
|
1396
1520
|
|
|
@@ -1405,7 +1529,7 @@ To enable the Rails instrumentation, create an initializer file in your `config/
|
|
|
1405
1529
|
require 'ddtrace'
|
|
1406
1530
|
|
|
1407
1531
|
Datadog.configure do |c|
|
|
1408
|
-
c.
|
|
1532
|
+
c.tracing.instrument :rails, options
|
|
1409
1533
|
end
|
|
1410
1534
|
```
|
|
1411
1535
|
|
|
@@ -1414,7 +1538,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1414
1538
|
| Key | Description | Default |
|
|
1415
1539
|
| --- | ----------- | ------- |
|
|
1416
1540
|
| `cache_service` | Cache service name used when tracing cache activity | `'<app_name>-cache'` |
|
|
1417
|
-
| `controller_service` | Service name used when tracing a Rails action controller | `'<app_name>'` |
|
|
1418
1541
|
| `database_service` | Database service name used when tracing database activity | `'<app_name>-<adapter_name>'` |
|
|
1419
1542
|
| `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` |
|
|
1420
1543
|
| `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` |
|
|
@@ -1422,15 +1545,13 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1422
1545
|
| `middleware_names` | Enables any short-circuited middleware requests to display the middleware name as a resource for the trace. | `false` |
|
|
1423
1546
|
| `service_name` | Service name used when tracing application requests (on the `rack` level) | `'<app_name>'` (inferred from your Rails application namespace) |
|
|
1424
1547
|
| `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/'` |
|
|
1425
|
-
| `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` |
|
|
1426
1548
|
|
|
1427
1549
|
**Supported versions**
|
|
1428
1550
|
|
|
1429
1551
|
| MRI Versions | JRuby Versions | Rails Versions |
|
|
1430
1552
|
| ------------- | -------------- | -------------- |
|
|
1431
|
-
| 2.
|
|
1432
|
-
| 2.
|
|
1433
|
-
| 2.2 - 2.3 | | 3.0 - 5.2 |
|
|
1553
|
+
| 2.1 | | 3.2 - 4.2 |
|
|
1554
|
+
| 2.2 - 2.3 | | 3.2 - 5.2 |
|
|
1434
1555
|
| 2.4 | | 4.2.8 - 5.2 |
|
|
1435
1556
|
| 2.5 | | 4.2.8 - 6.1 |
|
|
1436
1557
|
| 2.6 - 2.7 | 9.2 | 5.0 - 6.1 |
|
|
@@ -1448,7 +1569,7 @@ require 'rake'
|
|
|
1448
1569
|
require 'ddtrace'
|
|
1449
1570
|
|
|
1450
1571
|
Datadog.configure do |c|
|
|
1451
|
-
c.
|
|
1572
|
+
c.tracing.instrument :rake, options
|
|
1452
1573
|
end
|
|
1453
1574
|
|
|
1454
1575
|
task :my_task do
|
|
@@ -1476,27 +1597,27 @@ Datadog.configure do |c|
|
|
|
1476
1597
|
# Default behavior: all arguments are quantized.
|
|
1477
1598
|
# `rake.invoke.args` tag --> ['?']
|
|
1478
1599
|
# `rake.execute.args` tag --> { one: '?', two: '?', three: '?' }
|
|
1479
|
-
c.
|
|
1600
|
+
c.tracing.instrument :rake
|
|
1480
1601
|
|
|
1481
1602
|
# Show values for any argument matching :two exactly
|
|
1482
1603
|
# `rake.invoke.args` tag --> ['?']
|
|
1483
1604
|
# `rake.execute.args` tag --> { one: '?', two: 'bar', three: '?' }
|
|
1484
|
-
c.
|
|
1605
|
+
c.tracing.instrument :rake, quantize: { args: { show: [:two] } }
|
|
1485
1606
|
|
|
1486
1607
|
# Show all values for all arguments.
|
|
1487
1608
|
# `rake.invoke.args` tag --> ['foo', 'bar', 'baz']
|
|
1488
1609
|
# `rake.execute.args` tag --> { one: 'foo', two: 'bar', three: 'baz' }
|
|
1489
|
-
c.
|
|
1610
|
+
c.tracing.instrument :rake, quantize: { args: { show: :all } }
|
|
1490
1611
|
|
|
1491
1612
|
# Totally exclude any argument matching :three exactly
|
|
1492
1613
|
# `rake.invoke.args` tag --> ['?']
|
|
1493
1614
|
# `rake.execute.args` tag --> { one: '?', two: '?' }
|
|
1494
|
-
c.
|
|
1615
|
+
c.tracing.instrument :rake, quantize: { args: { exclude: [:three] } }
|
|
1495
1616
|
|
|
1496
1617
|
# Remove the arguments entirely
|
|
1497
1618
|
# `rake.invoke.args` tag --> ['?']
|
|
1498
1619
|
# `rake.execute.args` tag --> {}
|
|
1499
|
-
c.
|
|
1620
|
+
c.tracing.instrument :rake, quantize: { args: { exclude: :all } }
|
|
1500
1621
|
end
|
|
1501
1622
|
```
|
|
1502
1623
|
|
|
@@ -1509,7 +1630,7 @@ require 'redis'
|
|
|
1509
1630
|
require 'ddtrace'
|
|
1510
1631
|
|
|
1511
1632
|
Datadog.configure do |c|
|
|
1512
|
-
c.
|
|
1633
|
+
c.tracing.instrument :redis, options
|
|
1513
1634
|
end
|
|
1514
1635
|
|
|
1515
1636
|
# Perform Redis commands
|
|
@@ -1531,14 +1652,14 @@ require 'redis'
|
|
|
1531
1652
|
require 'ddtrace'
|
|
1532
1653
|
|
|
1533
1654
|
Datadog.configure do |c|
|
|
1534
|
-
c.
|
|
1655
|
+
c.tracing.instrument :redis # Enabling integration instrumentation is still required
|
|
1535
1656
|
end
|
|
1536
1657
|
|
|
1537
1658
|
customer_cache = Redis.new
|
|
1538
1659
|
invoice_cache = Redis.new
|
|
1539
1660
|
|
|
1540
|
-
Datadog.
|
|
1541
|
-
Datadog.
|
|
1661
|
+
Datadog.configure_onto(customer_cache, service_name: 'customer-cache')
|
|
1662
|
+
Datadog.configure_onto(invoice_cache, service_name: 'invoice-cache')
|
|
1542
1663
|
|
|
1543
1664
|
# Traced call will belong to `customer-cache` service
|
|
1544
1665
|
customer_cache.get(...)
|
|
@@ -1558,23 +1679,23 @@ You can configure trace settings per connection by using the `describes` option:
|
|
|
1558
1679
|
|
|
1559
1680
|
Datadog.configure do |c|
|
|
1560
1681
|
# The default configuration for any redis client
|
|
1561
|
-
c.
|
|
1682
|
+
c.tracing.instrument :redis, service_name: 'redis-default'
|
|
1562
1683
|
|
|
1563
1684
|
# The configuration matching a given unix socket.
|
|
1564
|
-
c.
|
|
1685
|
+
c.tracing.instrument :redis, describes: { url: 'unix://path/to/file' }, service_name: 'redis-unix'
|
|
1565
1686
|
|
|
1566
1687
|
# For network connections, only these fields are considered during matching:
|
|
1567
1688
|
# scheme, host, port, db
|
|
1568
1689
|
# Other fields are ignored.
|
|
1569
1690
|
|
|
1570
1691
|
# Network connection string
|
|
1571
|
-
c.
|
|
1572
|
-
c.
|
|
1692
|
+
c.tracing.instrument :redis, describes: 'redis://127.0.0.1:6379/0', service_name: 'redis-connection-string'
|
|
1693
|
+
c.tracing.instrument :redis, describes: { url: 'redis://127.0.0.1:6379/1' }, service_name: 'redis-connection-url'
|
|
1573
1694
|
# Network client hash
|
|
1574
|
-
c.
|
|
1695
|
+
c.tracing.instrument :redis, describes: { host: 'my-host.com', port: 6379, db: 1, scheme: 'redis' }, service_name: 'redis-connection-hash'
|
|
1575
1696
|
# Only a subset of the connection hash
|
|
1576
|
-
c.
|
|
1577
|
-
c.
|
|
1697
|
+
c.tracing.instrument :redis, describes: { host: ENV['APP_CACHE_HOST'], port: ENV['APP_CACHE_PORT'] }, service_name: 'redis-cache'
|
|
1698
|
+
c.tracing.instrument :redis, describes: { host: ENV['SIDEKIQ_CACHE_HOST'] }, service_name: 'redis-sidekiq'
|
|
1578
1699
|
end
|
|
1579
1700
|
```
|
|
1580
1701
|
|
|
@@ -1591,7 +1712,7 @@ require 'resque'
|
|
|
1591
1712
|
require 'ddtrace'
|
|
1592
1713
|
|
|
1593
1714
|
Datadog.configure do |c|
|
|
1594
|
-
c.
|
|
1715
|
+
c.tracing.instrument :resque, **options
|
|
1595
1716
|
end
|
|
1596
1717
|
```
|
|
1597
1718
|
|
|
@@ -1599,9 +1720,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1599
1720
|
|
|
1600
1721
|
| Key | Description | Default |
|
|
1601
1722
|
| --- | ----------- | ------- |
|
|
1602
|
-
| `service_name` | Service name used for `resque` instrumentation | `'resque'` |
|
|
1603
1723
|
| `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? }` |
|
|
1604
|
-
| `workers` | **[DEPRECATED]** Limits instrumented worker classes to only the ones specified in an array (e.g. `[MyJob]`). If not provided, instruments all workers. | `nil` |
|
|
1605
1724
|
|
|
1606
1725
|
### Rest Client
|
|
1607
1726
|
|
|
@@ -1612,7 +1731,7 @@ require 'rest_client'
|
|
|
1612
1731
|
require 'ddtrace'
|
|
1613
1732
|
|
|
1614
1733
|
Datadog.configure do |c|
|
|
1615
|
-
c.
|
|
1734
|
+
c.tracing.instrument :rest_client, options
|
|
1616
1735
|
end
|
|
1617
1736
|
```
|
|
1618
1737
|
|
|
@@ -1635,7 +1754,7 @@ require 'ddtrace'
|
|
|
1635
1754
|
|
|
1636
1755
|
# Configure default RSpec integration
|
|
1637
1756
|
Datadog.configure do |c|
|
|
1638
|
-
c.
|
|
1757
|
+
c.ci.instrument :rspec, options
|
|
1639
1758
|
end
|
|
1640
1759
|
```
|
|
1641
1760
|
|
|
@@ -1665,7 +1784,7 @@ database.create_table :articles do
|
|
|
1665
1784
|
end
|
|
1666
1785
|
|
|
1667
1786
|
Datadog.configure do |c|
|
|
1668
|
-
c.
|
|
1787
|
+
c.tracing.instrument :sequel, options
|
|
1669
1788
|
end
|
|
1670
1789
|
|
|
1671
1790
|
# Perform a query
|
|
@@ -1688,8 +1807,8 @@ sqlite_database = Sequel.sqlite
|
|
|
1688
1807
|
postgres_database = Sequel.connect('postgres://user:password@host:port/database_name')
|
|
1689
1808
|
|
|
1690
1809
|
# Configure each database with different service names
|
|
1691
|
-
Datadog.
|
|
1692
|
-
Datadog.
|
|
1810
|
+
Datadog.configure_onto(sqlite_database, service_name: 'my-sqlite-db')
|
|
1811
|
+
Datadog.configure_onto(postgres_database, service_name: 'my-postgres-db')
|
|
1693
1812
|
```
|
|
1694
1813
|
|
|
1695
1814
|
### Shoryuken
|
|
@@ -1702,7 +1821,7 @@ You can enable it through `Datadog.configure`:
|
|
|
1702
1821
|
require 'ddtrace'
|
|
1703
1822
|
|
|
1704
1823
|
Datadog.configure do |c|
|
|
1705
|
-
c.
|
|
1824
|
+
c.tracing.instrument :shoryuken, options
|
|
1706
1825
|
end
|
|
1707
1826
|
```
|
|
1708
1827
|
|
|
@@ -1710,7 +1829,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1710
1829
|
|
|
1711
1830
|
| Key | Description | Default |
|
|
1712
1831
|
| --- | ----------- | ------- |
|
|
1713
|
-
| `service_name` | Service name used for `shoryuken` instrumentation | `'shoryuken'` |
|
|
1714
1832
|
| `tag_body` | Tag spans with the SQS message body `true` or `false` | `false` |
|
|
1715
1833
|
| `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? }` |
|
|
1716
1834
|
|
|
@@ -1724,7 +1842,7 @@ You can enable it through `Datadog.configure`:
|
|
|
1724
1842
|
require 'ddtrace'
|
|
1725
1843
|
|
|
1726
1844
|
Datadog.configure do |c|
|
|
1727
|
-
c.
|
|
1845
|
+
c.tracing.instrument :sidekiq, options
|
|
1728
1846
|
end
|
|
1729
1847
|
```
|
|
1730
1848
|
|
|
@@ -1732,8 +1850,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1732
1850
|
|
|
1733
1851
|
| Key | Description | Default |
|
|
1734
1852
|
| --- | ----------- | ------- |
|
|
1735
|
-
| `client_service_name` | Service name used for client-side `sidekiq` instrumentation | `'sidekiq-client'` |
|
|
1736
|
-
| `service_name` | Service name used for server-side `sidekiq` instrumentation | `'sidekiq'` |
|
|
1737
1853
|
| `tag_args` | Enable tagging of job arguments. `true` for on, `false` for off. | `false` |
|
|
1738
1854
|
| `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? }` |
|
|
1739
1855
|
|
|
@@ -1750,7 +1866,7 @@ require 'sinatra'
|
|
|
1750
1866
|
require 'ddtrace'
|
|
1751
1867
|
|
|
1752
1868
|
Datadog.configure do |c|
|
|
1753
|
-
c.
|
|
1869
|
+
c.tracing.instrument :sinatra, options
|
|
1754
1870
|
end
|
|
1755
1871
|
|
|
1756
1872
|
get '/' do
|
|
@@ -1765,11 +1881,11 @@ require 'sinatra/base'
|
|
|
1765
1881
|
require 'ddtrace'
|
|
1766
1882
|
|
|
1767
1883
|
Datadog.configure do |c|
|
|
1768
|
-
c.
|
|
1884
|
+
c.tracing.instrument :sinatra, options
|
|
1769
1885
|
end
|
|
1770
1886
|
|
|
1771
1887
|
class NestedApp < Sinatra::Base
|
|
1772
|
-
register Datadog::Contrib::Sinatra::Tracer
|
|
1888
|
+
register Datadog::Tracing::Contrib::Sinatra::Tracer
|
|
1773
1889
|
|
|
1774
1890
|
get '/nested' do
|
|
1775
1891
|
'Hello from nested app!'
|
|
@@ -1777,7 +1893,7 @@ class NestedApp < Sinatra::Base
|
|
|
1777
1893
|
end
|
|
1778
1894
|
|
|
1779
1895
|
class App < Sinatra::Base
|
|
1780
|
-
register Datadog::Contrib::Sinatra::Tracer
|
|
1896
|
+
register Datadog::Tracing::Contrib::Sinatra::Tracer
|
|
1781
1897
|
|
|
1782
1898
|
use NestedApp
|
|
1783
1899
|
|
|
@@ -1787,7 +1903,7 @@ class App < Sinatra::Base
|
|
|
1787
1903
|
end
|
|
1788
1904
|
```
|
|
1789
1905
|
|
|
1790
|
-
Ensure you register `Datadog::Contrib::Sinatra::Tracer` as a middleware before you mount your nested applications.
|
|
1906
|
+
Ensure you register `Datadog::Tracing::Contrib::Sinatra::Tracer` as a middleware before you mount your nested applications.
|
|
1791
1907
|
|
|
1792
1908
|
#### Instrumentation options
|
|
1793
1909
|
|
|
@@ -1798,7 +1914,6 @@ Ensure you register `Datadog::Contrib::Sinatra::Tracer` as a middleware before y
|
|
|
1798
1914
|
| `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` |
|
|
1799
1915
|
| `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'] }` |
|
|
1800
1916
|
| `resource_script_names` | Prepend resource names with script name | `false` |
|
|
1801
|
-
| `service_name` | Service name used for `sinatra` instrumentation | `'sinatra'` |
|
|
1802
1917
|
|
|
1803
1918
|
### Sneakers
|
|
1804
1919
|
|
|
@@ -1810,7 +1925,7 @@ You can enable it through `Datadog.configure`:
|
|
|
1810
1925
|
require 'ddtrace'
|
|
1811
1926
|
|
|
1812
1927
|
Datadog.configure do |c|
|
|
1813
|
-
c.
|
|
1928
|
+
c.tracing.instrument :sneakers, options
|
|
1814
1929
|
end
|
|
1815
1930
|
```
|
|
1816
1931
|
|
|
@@ -1819,7 +1934,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
|
1819
1934
|
| Key | Description | Default |
|
|
1820
1935
|
| --- | ----------- | ------- |
|
|
1821
1936
|
| `enabled` | Defines whether Sneakers should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
|
1822
|
-
| `service_name` | Service name used for `sneakers` instrumentation | `'sneakers'` |
|
|
1823
1937
|
| `tag_body` | Enable tagging of job message. `true` for on, `false` for off. | `false` |
|
|
1824
1938
|
| `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? }` |
|
|
1825
1939
|
|
|
@@ -1831,63 +1945,57 @@ The `sucker_punch` integration traces all scheduled jobs:
|
|
|
1831
1945
|
require 'ddtrace'
|
|
1832
1946
|
|
|
1833
1947
|
Datadog.configure do |c|
|
|
1834
|
-
c.
|
|
1948
|
+
c.tracing.instrument :sucker_punch
|
|
1835
1949
|
end
|
|
1836
1950
|
|
|
1837
1951
|
# Execution of this job is traced
|
|
1838
1952
|
LogJob.perform_async('login')
|
|
1839
1953
|
```
|
|
1840
1954
|
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
| Key | Description | Default |
|
|
1844
|
-
| --- | ----------- | ------- |
|
|
1845
|
-
| `service_name` | Service name used for `sucker_punch` instrumentation | `'sucker_punch'` |
|
|
1846
|
-
|
|
1847
|
-
## Advanced configuration
|
|
1955
|
+
## Additional configuration
|
|
1848
1956
|
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
To change the default behavior of the Datadog tracer, you can provide custom options inside the `Datadog.configure` block as in:
|
|
1957
|
+
To change the default behavior of Datadog tracing, you can set environment variables, or provide custom options inside a `Datadog.configure` block, e.g.:
|
|
1852
1958
|
|
|
1853
1959
|
```ruby
|
|
1854
|
-
# config/initializers/datadog-tracer.rb
|
|
1855
|
-
|
|
1856
1960
|
Datadog.configure do |c|
|
|
1857
|
-
c.
|
|
1858
|
-
c.
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1961
|
+
c.service = 'billing-api'
|
|
1962
|
+
c.env = ENV['RACK_ENV']
|
|
1963
|
+
|
|
1964
|
+
c.tracing.report_hostname = true
|
|
1965
|
+
c.tracing.test_mode.enabled = (ENV['RACK_ENV'] == 'test')
|
|
1966
|
+
end
|
|
1967
|
+
```
|
|
1968
|
+
|
|
1969
|
+
**Available configuration options:**
|
|
1970
|
+
|
|
1971
|
+
| Setting | Env Var | Default | Description |
|
|
1972
|
+
|---------------------------------------------------------|--------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
1973
|
+
| **Global** | | | |
|
|
1974
|
+
| `agent.host` | `DD_AGENT_HOST` | `127.0.0.1` | Hostname of agent to where trace data will be sent. |
|
|
1975
|
+
| `agent.port` | `DD_TRACE_AGENT_PORT` | `8126` | Port of agent host to where trace data will be sent. |
|
|
1976
|
+
| | `DD_TRACE_AGENT_URL` | `nil` | Sets the URL endpoint where traces are sent. Has priority over `agent.host` and `agent.port`. |
|
|
1977
|
+
| `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. |
|
|
1978
|
+
| `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. |
|
|
1979
|
+
| `env` | `DD_ENV` | `nil` | Your application environment. (e.g. `production`, `staging`, etc.) This value is set as a tag on all traces. |
|
|
1980
|
+
| `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. |
|
|
1981
|
+
| `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. |
|
|
1982
|
+
| `time_now_provider` | | `->{ Time.now }` | Changes how time is retrieved. See [Setting the time provider](#Setting the time provider) for more details. |
|
|
1983
|
+
| `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. |
|
|
1984
|
+
| **Tracing** | | | |
|
|
1985
|
+
| `tracing.analytics.enabled` | `DD_TRACE_ANALYTICS_ENABLED` | `nil` | Enables or disables trace analytics. See [Sampling](#sampling) for more details. |
|
|
1986
|
+
| `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. |
|
|
1987
|
+
| `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. |
|
|
1988
|
+
| `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. |
|
|
1989
|
+
| `tracing.instrument(<integration-name>, <options...>)` | | | Activates instrumentation for a specific library. See [Integration instrumentation](#integration-instrumentation) for more details. |
|
|
1990
|
+
| `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`. |
|
|
1991
|
+
| `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. |
|
|
1992
|
+
| `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. |
|
|
1993
|
+
| `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. |
|
|
1994
|
+
| `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. |
|
|
1995
|
+
| `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. |
|
|
1996
|
+
| `tracing.report_hostname` | `DD_TRACE_REPORT_HOSTNAME` | `false` | Adds hostname tag to traces. |
|
|
1997
|
+
| `tracing.test_mode.enabled` | `DD_TRACE_TEST_MODE_ENABLED` | `false` | Enables or disables test mode, for use of tracing in test suites. |
|
|
1998
|
+
| `tracing.test_mode.trace_flush` | | `nil` | Object that determines trace flushing behavior. |
|
|
1891
1999
|
|
|
1892
2000
|
#### Custom logging
|
|
1893
2001
|
|
|
@@ -1900,18 +2008,16 @@ Additionally, it is possible to override the default logger and replace it by a
|
|
|
1900
2008
|
```ruby
|
|
1901
2009
|
f = File.new("my-custom.log", "w+") # Log messages should go there
|
|
1902
2010
|
Datadog.configure do |c|
|
|
1903
|
-
c.logger = Logger.new(f) # Overriding the default logger
|
|
2011
|
+
c.logger.instance = Logger.new(f) # Overriding the default logger
|
|
1904
2012
|
c.logger.level = ::Logger::INFO
|
|
1905
2013
|
end
|
|
1906
2014
|
|
|
1907
2015
|
Datadog.logger.info { "this is typically called by tracing code" }
|
|
1908
2016
|
```
|
|
1909
2017
|
|
|
1910
|
-
|
|
2018
|
+
#### Environment and tags
|
|
1911
2019
|
|
|
1912
|
-
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,
|
|
1913
|
-
|
|
1914
|
-
You can configure the application to automatically tag your traces and metrics, using the following environment variables:
|
|
2020
|
+
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:
|
|
1915
2021
|
|
|
1916
2022
|
- `DD_ENV`: Your application environment (e.g. `production`, `staging`, etc.)
|
|
1917
2023
|
- `DD_SERVICE`: Your application's default service name (e.g. `billing-api`)
|
|
@@ -1935,69 +2041,100 @@ This enables you to set this value on a per application basis, so you can have f
|
|
|
1935
2041
|
|
|
1936
2042
|
Tags can also be set directly on individual spans, which will supersede any conflicting tags defined at the application level.
|
|
1937
2043
|
|
|
1938
|
-
|
|
2044
|
+
#### Debugging and diagnostics
|
|
1939
2045
|
|
|
1940
|
-
|
|
2046
|
+
There are two different suggested means of producing diagnostics for tracing:
|
|
1941
2047
|
|
|
1942
|
-
|
|
1943
|
-
- `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.
|
|
1944
|
-
- `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.
|
|
1945
|
-
- `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`.
|
|
2048
|
+
##### Enabling debug mode
|
|
1946
2049
|
|
|
1947
|
-
|
|
2050
|
+
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.
|
|
2051
|
+
|
|
2052
|
+
You can enable this via `diagnostics.debug = true` or `DD_TRACE_DEBUG`.
|
|
2053
|
+
|
|
2054
|
+
```ruby
|
|
2055
|
+
Datadog.configure { |c| c.diagnostics.debug = true }
|
|
2056
|
+
```
|
|
2057
|
+
|
|
2058
|
+
**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.
|
|
2059
|
+
|
|
2060
|
+
##### Enabling startup logs
|
|
2061
|
+
|
|
2062
|
+
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.
|
|
1948
2063
|
|
|
1949
|
-
|
|
2064
|
+
You can enable this via `diagnostics.startup_logs.enabled = true` or `DD_TRACE_STARTUP_LOGS`.
|
|
1950
2065
|
|
|
1951
|
-
|
|
2066
|
+
```ruby
|
|
2067
|
+
Datadog.configure { |c| c.diagnostics.startup_logs.enabled = true }
|
|
2068
|
+
```
|
|
1952
2069
|
|
|
1953
|
-
|
|
2070
|
+
By default, this will be activated whenever `ddtrace` detects the application is running in a non-development environment.
|
|
2071
|
+
|
|
2072
|
+
### Sampling
|
|
1954
2073
|
|
|
1955
2074
|
#### Application-side sampling
|
|
1956
2075
|
|
|
1957
2076
|
While the trace agent can sample traces to reduce bandwidth usage, application-side sampling reduces the performance overhead.
|
|
1958
2077
|
|
|
1959
|
-
|
|
2078
|
+
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.
|
|
2079
|
+
|
|
2080
|
+
Set this value via `DD_TRACE_SAMPLE_RATE` or `Datadog.configure { |c| c.tracing.sampling.default_rate = <value> }`.
|
|
1960
2081
|
|
|
1961
|
-
`Datadog::RateSampler` samples a ratio of the traces. For example:
|
|
2082
|
+
Alternatively, you may provide your own sampler. The `Datadog::Tracing::Sampling::RateSampler` samples a ratio of the traces. For example:
|
|
1962
2083
|
|
|
1963
2084
|
```ruby
|
|
1964
2085
|
# Sample rate is between 0 (nothing sampled) to 1 (everything sampled).
|
|
1965
|
-
sampler = Datadog::RateSampler.new(0.5) # sample 50% of the traces
|
|
2086
|
+
sampler = Datadog::Tracing::Sampling::RateSampler.new(0.5) # sample 50% of the traces
|
|
1966
2087
|
|
|
1967
2088
|
Datadog.configure do |c|
|
|
1968
|
-
c.
|
|
2089
|
+
c.tracing.sampler = sampler
|
|
1969
2090
|
end
|
|
1970
2091
|
```
|
|
1971
2092
|
|
|
2093
|
+
See [Additional Configuration](#additional-configuration) for more details about these settings.
|
|
2094
|
+
|
|
1972
2095
|
#### Priority sampling
|
|
1973
2096
|
|
|
1974
2097
|
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.
|
|
1975
2098
|
|
|
1976
2099
|
The sampler can set the priority to the following values:
|
|
1977
2100
|
|
|
1978
|
-
- `Datadog::Ext::Priority::AUTO_REJECT`: the sampler automatically decided to reject the trace.
|
|
1979
|
-
- `Datadog::Ext::Priority::AUTO_KEEP`: the sampler automatically decided to keep the trace.
|
|
2101
|
+
- `Datadog::Tracing::Sampling::Ext::Priority::AUTO_REJECT`: the sampler automatically decided to reject the trace.
|
|
2102
|
+
- `Datadog::Tracing::Sampling::Ext::Priority::AUTO_KEEP`: the sampler automatically decided to keep the trace.
|
|
1980
2103
|
|
|
1981
2104
|
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.
|
|
1982
2105
|
|
|
1983
|
-
You can also set this priority manually to either drop a non-interesting trace or to keep an important one. For that, set the `
|
|
2106
|
+
You can also set this priority manually to either drop a non-interesting trace or to keep an important one. For that, set the `TraceOperation#sampling_priority` to:
|
|
1984
2107
|
|
|
1985
|
-
- `Datadog::Ext::Priority::USER_REJECT`: the user asked to reject the trace.
|
|
1986
|
-
- `Datadog::Ext::Priority::USER_KEEP`: the user asked to keep the trace.
|
|
2108
|
+
- `Datadog::Tracing::Sampling::Ext::Priority::USER_REJECT`: the user asked to reject the trace.
|
|
2109
|
+
- `Datadog::Tracing::Sampling::Ext::Priority::USER_KEEP`: the user asked to keep the trace.
|
|
1987
2110
|
|
|
1988
2111
|
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.
|
|
1989
2112
|
|
|
1990
|
-
|
|
2113
|
+
For this reason, if you change the priority, we recommend you do it as early as possible.
|
|
2114
|
+
|
|
2115
|
+
To change the sampling priority, you can use the following methods:
|
|
2116
|
+
|
|
2117
|
+
```ruby
|
|
2118
|
+
# Rejects the active trace
|
|
2119
|
+
Datadog::Tracing.reject!
|
|
2120
|
+
|
|
2121
|
+
# Keeps the active trace
|
|
2122
|
+
Datadog::Tracing.keep!
|
|
2123
|
+
```
|
|
2124
|
+
|
|
2125
|
+
It's safe to use `Datadog::Tracing.reject!` and `Datadog::Tracing.keep!` when no trace is active.
|
|
2126
|
+
|
|
2127
|
+
You can also reject a specific trace instance:
|
|
1991
2128
|
|
|
1992
2129
|
```ruby
|
|
1993
2130
|
# First, grab the active span
|
|
1994
|
-
|
|
2131
|
+
trace = Datadog::Tracing.active_trace
|
|
1995
2132
|
|
|
1996
|
-
#
|
|
1997
|
-
|
|
2133
|
+
# Rejects the trace
|
|
2134
|
+
trace.reject!
|
|
1998
2135
|
|
|
1999
|
-
#
|
|
2000
|
-
|
|
2136
|
+
# Keeps the trace
|
|
2137
|
+
trace.keep!
|
|
2001
2138
|
```
|
|
2002
2139
|
|
|
2003
2140
|
### Distributed Tracing
|
|
@@ -2102,6 +2239,33 @@ Service C:
|
|
|
2102
2239
|
Priority: 1
|
|
2103
2240
|
```
|
|
2104
2241
|
|
|
2242
|
+
**Distributed header formats**
|
|
2243
|
+
|
|
2244
|
+
Tracing supports the following distributed trace formats:
|
|
2245
|
+
|
|
2246
|
+
- `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG` (Default)
|
|
2247
|
+
- `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3`
|
|
2248
|
+
- `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER`
|
|
2249
|
+
|
|
2250
|
+
You can enable/disable the use of these formats via `Datadog.configure`:
|
|
2251
|
+
|
|
2252
|
+
```ruby
|
|
2253
|
+
Datadog.configure do |c|
|
|
2254
|
+
# List of header formats that should be extracted
|
|
2255
|
+
c.tracing.distributed_tracing.propagation_extract_style = [
|
|
2256
|
+
Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG,
|
|
2257
|
+
Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3,
|
|
2258
|
+
Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER
|
|
2259
|
+
|
|
2260
|
+
]
|
|
2261
|
+
|
|
2262
|
+
# List of header formats that should be injected
|
|
2263
|
+
c.tracing.distributed_tracing.propagation_inject_style = [
|
|
2264
|
+
Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG
|
|
2265
|
+
]
|
|
2266
|
+
end
|
|
2267
|
+
```
|
|
2268
|
+
|
|
2105
2269
|
**Activating distributed tracing for integrations**
|
|
2106
2270
|
|
|
2107
2271
|
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.
|
|
@@ -2119,30 +2283,30 @@ For more details on how to activate distributed tracing for integrations, see th
|
|
|
2119
2283
|
- [Rack](#rack)
|
|
2120
2284
|
- [Rails](#rails)
|
|
2121
2285
|
- [Sinatra](#sinatra)
|
|
2122
|
-
- [http.rb](#
|
|
2286
|
+
- [http.rb](#httprb)
|
|
2123
2287
|
- [httpclient](#httpclient)
|
|
2124
2288
|
- [httpx](#httpx)
|
|
2125
2289
|
|
|
2126
2290
|
**Using the HTTP propagator**
|
|
2127
2291
|
|
|
2128
|
-
To make the process of propagating this metadata easier, you can use the `Datadog::
|
|
2292
|
+
To make the process of propagating this metadata easier, you can use the `Datadog::Tracing::Propagation::HTTP` module.
|
|
2129
2293
|
|
|
2130
2294
|
On the client:
|
|
2131
2295
|
|
|
2132
2296
|
```ruby
|
|
2133
|
-
Datadog.
|
|
2134
|
-
# Inject
|
|
2135
|
-
Datadog::
|
|
2297
|
+
Datadog::Tracing.trace('web.call') do |span, trace|
|
|
2298
|
+
# Inject trace headers into request headers (`env` must be a Hash)
|
|
2299
|
+
Datadog::Tracing::Propagation::HTTP.inject!(trace.to_digest, env)
|
|
2136
2300
|
end
|
|
2137
2301
|
```
|
|
2138
2302
|
|
|
2139
2303
|
On the server:
|
|
2140
2304
|
|
|
2141
2305
|
```ruby
|
|
2142
|
-
Datadog.
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2306
|
+
trace_digest = Datadog::Tracing::Propagation::HTTP.extract(request.env)
|
|
2307
|
+
|
|
2308
|
+
Datadog::Tracing.trace('web.work', continue_from: trace_digest) do |span|
|
|
2309
|
+
# Do web work...
|
|
2146
2310
|
end
|
|
2147
2311
|
```
|
|
2148
2312
|
|
|
@@ -2168,149 +2332,87 @@ Then you must enable the request queuing feature, by setting `request_queuing: t
|
|
|
2168
2332
|
|
|
2169
2333
|
### Processing Pipeline
|
|
2170
2334
|
|
|
2171
|
-
Some applications might require that traces be altered or filtered out before they are sent
|
|
2172
|
-
|
|
2173
|
-
Processors can be any object that responds to `#call` accepting `trace` as an argument (which is an `Array` of `Datadog::Span`s.)
|
|
2174
|
-
|
|
2175
|
-
For example:
|
|
2176
|
-
|
|
2177
|
-
```ruby
|
|
2178
|
-
lambda_processor = ->(trace) do
|
|
2179
|
-
# Processing logic...
|
|
2180
|
-
trace
|
|
2181
|
-
end
|
|
2182
|
-
|
|
2183
|
-
class MyCustomProcessor
|
|
2184
|
-
def call(trace)
|
|
2185
|
-
# Processing logic...
|
|
2186
|
-
trace
|
|
2187
|
-
end
|
|
2188
|
-
end
|
|
2189
|
-
custom_processor = MyFancyProcessor.new
|
|
2190
|
-
```
|
|
2191
|
-
|
|
2192
|
-
`#call` blocks of processors *must* return the `trace` object; this return value will be passed to the next processor in the pipeline.
|
|
2193
|
-
|
|
2194
|
-
These processors must then be added to the pipeline via `Datadog::Pipeline.before_flush`:
|
|
2195
|
-
|
|
2196
|
-
```ruby
|
|
2197
|
-
Datadog::Pipeline.before_flush(lambda_processor, custom_processor)
|
|
2198
|
-
```
|
|
2199
|
-
|
|
2200
|
-
You can also define processors using the short-hand block syntax for `Datadog::Pipeline.before_flush`:
|
|
2201
|
-
|
|
2202
|
-
```ruby
|
|
2203
|
-
Datadog::Pipeline.before_flush do |trace|
|
|
2204
|
-
trace.delete_if { |span| span.name =~ /forbidden/ }
|
|
2205
|
-
end
|
|
2206
|
-
```
|
|
2335
|
+
Some applications might require that traces be altered or filtered out before they are sent to Datadog. The processing pipeline allows you to create *processors* to define such behavior.
|
|
2207
2336
|
|
|
2208
2337
|
#### Filtering
|
|
2209
2338
|
|
|
2210
|
-
You can use the `Datadog::Pipeline::SpanFilter` processor to remove spans, when the block evaluates as truthy:
|
|
2339
|
+
You can use the `Datadog::Tracing::Pipeline::SpanFilter` processor to remove spans, when the block evaluates as truthy:
|
|
2211
2340
|
|
|
2212
2341
|
```ruby
|
|
2213
|
-
Datadog::
|
|
2342
|
+
Datadog::Tracing.before_flush(
|
|
2214
2343
|
# Remove spans that match a particular resource
|
|
2215
|
-
Datadog::Pipeline::SpanFilter.new { |span| span.resource =~ /PingController/ },
|
|
2344
|
+
Datadog::Tracing::Pipeline::SpanFilter.new { |span| span.resource =~ /PingController/ },
|
|
2216
2345
|
# Remove spans that are trafficked to localhost
|
|
2217
|
-
Datadog::Pipeline::SpanFilter.new { |span| span.get_tag('host') == 'localhost' }
|
|
2346
|
+
Datadog::Tracing::Pipeline::SpanFilter.new { |span| span.get_tag('host') == 'localhost' }
|
|
2218
2347
|
)
|
|
2219
2348
|
```
|
|
2220
2349
|
|
|
2221
2350
|
#### Processing
|
|
2222
2351
|
|
|
2223
|
-
You can use the `Datadog::Pipeline::SpanProcessor` processor to modify spans:
|
|
2352
|
+
You can use the `Datadog::Tracing::Pipeline::SpanProcessor` processor to modify spans:
|
|
2224
2353
|
|
|
2225
2354
|
```ruby
|
|
2226
|
-
Datadog::
|
|
2355
|
+
Datadog::Tracing.before_flush(
|
|
2227
2356
|
# Strip matching text from the resource field
|
|
2228
|
-
Datadog::Pipeline::SpanProcessor.new { |span| span.resource.gsub!(/password=.*/, '') }
|
|
2357
|
+
Datadog::Tracing::Pipeline::SpanProcessor.new { |span| span.resource.gsub!(/password=.*/, '') }
|
|
2229
2358
|
)
|
|
2230
2359
|
```
|
|
2231
2360
|
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross-referencing.
|
|
2235
|
-
|
|
2236
|
-
#### For logging in Rails applications
|
|
2361
|
+
#### Custom processor
|
|
2237
2362
|
|
|
2238
|
-
|
|
2363
|
+
Processors can be any object that responds to `#call` accepting `trace` as an argument (which is an `Array` of `Datadog::Span`s.)
|
|
2239
2364
|
|
|
2240
|
-
For
|
|
2365
|
+
For example, using the short-hand block syntax:
|
|
2241
2366
|
|
|
2242
2367
|
```ruby
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
Datadog.configure do |c|
|
|
2247
|
-
c.use :rails, log_injection: true
|
|
2368
|
+
Datadog::Tracing.before_flush do |trace|
|
|
2369
|
+
# Processing logic...
|
|
2370
|
+
trace
|
|
2248
2371
|
end
|
|
2249
2372
|
```
|
|
2250
2373
|
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
##### Manual (Lograge)
|
|
2254
|
-
|
|
2255
|
-
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.
|
|
2374
|
+
For a custom processor class:
|
|
2256
2375
|
|
|
2257
2376
|
```ruby
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
# Adds IDs as tags to log output
|
|
2264
|
-
:dd => {
|
|
2265
|
-
# To preserve precision during JSON serialization, use strings for large numbers
|
|
2266
|
-
:trace_id => correlation.trace_id.to_s,
|
|
2267
|
-
:span_id => correlation.span_id.to_s,
|
|
2268
|
-
:env => correlation.env.to_s,
|
|
2269
|
-
:service => correlation.service.to_s,
|
|
2270
|
-
:version => correlation.version.to_s
|
|
2271
|
-
},
|
|
2272
|
-
:ddsource => ["ruby"],
|
|
2273
|
-
:params => event.payload[:params].reject { |k| %w(controller action).include? k }
|
|
2274
|
-
}
|
|
2377
|
+
class MyCustomProcessor
|
|
2378
|
+
def call(trace)
|
|
2379
|
+
# Processing logic...
|
|
2380
|
+
trace
|
|
2381
|
+
end
|
|
2275
2382
|
end
|
|
2383
|
+
|
|
2384
|
+
Datadog::Tracing.before_flush(MyCustomProcessor.new)
|
|
2276
2385
|
```
|
|
2277
2386
|
|
|
2278
|
-
|
|
2387
|
+
In both cases, the processor method *must* return the `trace` object; this return value will be passed to the next processor in the pipeline.
|
|
2388
|
+
|
|
2389
|
+
### Trace correlation
|
|
2279
2390
|
|
|
2280
|
-
|
|
2391
|
+
In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross-referencing.
|
|
2281
2392
|
|
|
2282
|
-
|
|
2283
|
-
Rails.application.configure do
|
|
2284
|
-
config.log_tags = [proc { Datadog.tracer.active_correlation.to_s }]
|
|
2285
|
-
end
|
|
2393
|
+
#### For logging in Rails applications
|
|
2286
2394
|
|
|
2287
|
-
|
|
2288
|
-
# DD_ENV = 'production' (The name of the environment your application is running in.)
|
|
2289
|
-
# DD_SERVICE = 'billing-api' (Default service name of your application.)
|
|
2290
|
-
# DD_VERSION = '2.5.17' (The version of your application.)
|
|
2395
|
+
##### Automatic
|
|
2291
2396
|
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
# [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"
|
|
2296
|
-
# [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)
|
|
2297
|
-
```
|
|
2397
|
+
For Rails applications using the default logger (`ActiveSupport::TaggedLogging`), `lograge` or `semantic_logger`, trace correlation injection is enabled by default.
|
|
2398
|
+
|
|
2399
|
+
It can be disabled by setting the environment variable `DD_LOGS_INJECTION=false`.
|
|
2298
2400
|
|
|
2299
2401
|
#### For logging in Ruby applications
|
|
2300
2402
|
|
|
2301
|
-
To add correlation IDs to your logger, add a log formatter which retrieves the correlation IDs with `Datadog.
|
|
2403
|
+
To add correlation IDs to your logger, add a log formatter which retrieves the correlation IDs with `Datadog::Tracing.correlation`, then add them to the message.
|
|
2302
2404
|
|
|
2303
2405
|
To properly correlate with Datadog logging, be sure the following is present in the log message, in order as they appear:
|
|
2304
2406
|
|
|
2305
|
-
- `dd.env=<ENV>`: Where `<ENV>` is equal to `Datadog.
|
|
2306
|
-
- `dd.service=<SERVICE>`: Where `<SERVICE>` is equal to `Datadog.
|
|
2307
|
-
- `dd.version=<VERSION>`: Where `<VERSION>` is equal to `Datadog.
|
|
2308
|
-
- `dd.trace_id=<TRACE_ID>`: Where `<TRACE_ID>` is equal to `Datadog.
|
|
2309
|
-
- `dd.span_id=<SPAN_ID>`: Where `<SPAN_ID>` is equal to `Datadog.
|
|
2407
|
+
- `dd.env=<ENV>`: Where `<ENV>` is equal to `Datadog::Tracing.correlation.env`. Omit if no environment is configured.
|
|
2408
|
+
- `dd.service=<SERVICE>`: Where `<SERVICE>` is equal to `Datadog::Tracing.correlation.service`. Omit if no default service name is configured.
|
|
2409
|
+
- `dd.version=<VERSION>`: Where `<VERSION>` is equal to `Datadog::Tracing.correlation.version`. Omit if no application version is configured.
|
|
2410
|
+
- `dd.trace_id=<TRACE_ID>`: Where `<TRACE_ID>` is equal to `Datadog::Tracing.correlation.trace_id` or `0` if no trace is active during logging.
|
|
2411
|
+
- `dd.span_id=<SPAN_ID>`: Where `<SPAN_ID>` is equal to `Datadog::Tracing.correlation.span_id` or `0` if no trace is active during logging.
|
|
2310
2412
|
|
|
2311
|
-
|
|
2413
|
+
`Datadog::Tracing.log_correlation` will return `dd.env=<ENV> dd.service=<SERVICE> dd.version=<VERSION> dd.trace_id=<TRACE_ID> dd.span_id=<SPAN_ID>`.
|
|
2312
2414
|
|
|
2313
|
-
If a trace is not active and the application environment & version is not configured, it will return `dd.
|
|
2415
|
+
If a trace is not active and the application environment & version is not configured, it will return `dd.env= dd.service= dd.version= dd.trace_id=0 dd.span_id=0`.
|
|
2314
2416
|
|
|
2315
2417
|
An example of this in practice:
|
|
2316
2418
|
|
|
@@ -2325,7 +2427,7 @@ ENV['DD_VERSION'] = '2.5.17'
|
|
|
2325
2427
|
logger = Logger.new(STDOUT)
|
|
2326
2428
|
logger.progname = 'my_app'
|
|
2327
2429
|
logger.formatter = proc do |severity, datetime, progname, msg|
|
|
2328
|
-
"[#{datetime}][#{progname}][#{severity}][#{Datadog.
|
|
2430
|
+
"[#{datetime}][#{progname}][#{severity}][#{Datadog::Tracing.log_correlation}] #{msg}\n"
|
|
2329
2431
|
end
|
|
2330
2432
|
|
|
2331
2433
|
# When no trace is active
|
|
@@ -2333,15 +2435,34 @@ logger.warn('This is an untraced operation.')
|
|
|
2333
2435
|
# [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.
|
|
2334
2436
|
|
|
2335
2437
|
# When a trace is active
|
|
2336
|
-
Datadog.
|
|
2438
|
+
Datadog::Tracing.trace('my.operation') { logger.warn('This is a traced operation.') }
|
|
2337
2439
|
# [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.
|
|
2338
2440
|
```
|
|
2339
2441
|
|
|
2340
2442
|
### Configuring the transport layer
|
|
2341
2443
|
|
|
2342
|
-
By default,
|
|
2444
|
+
By default, `ddtrace` will connect to the agent using the first available settings in the listed priority:
|
|
2445
|
+
|
|
2446
|
+
1. Via any explicitly provided configuration settings (hostname/port/transport)
|
|
2447
|
+
2. Via Unix Domain Socket (UDS) located at `/var/run/datadog/apm.socket`
|
|
2448
|
+
3. Via HTTP over TCP to `127.0.0.1:8126`
|
|
2343
2449
|
|
|
2344
|
-
|
|
2450
|
+
However, the tracer can be configured to send its trace data to alternative destinations, or by alternative protocols.
|
|
2451
|
+
|
|
2452
|
+
#### Changing default agent hostname and port
|
|
2453
|
+
|
|
2454
|
+
To change the agent host or port, provide `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT`.
|
|
2455
|
+
|
|
2456
|
+
OR within a `Datadog.configure` block, provide the following settings:
|
|
2457
|
+
|
|
2458
|
+
```ruby
|
|
2459
|
+
Datadog.configure do |c|
|
|
2460
|
+
c.agent.host = '127.0.0.1'
|
|
2461
|
+
c.agent.port = 8126
|
|
2462
|
+
end
|
|
2463
|
+
```
|
|
2464
|
+
|
|
2465
|
+
See [Additional Configuration](#additional-configuration) for more details.
|
|
2345
2466
|
|
|
2346
2467
|
#### Using the Net::HTTP adapter
|
|
2347
2468
|
|
|
@@ -2349,14 +2470,14 @@ The `Net` adapter submits traces using `Net::HTTP` over TCP. It is the default t
|
|
|
2349
2470
|
|
|
2350
2471
|
```ruby
|
|
2351
2472
|
Datadog.configure do |c|
|
|
2352
|
-
c.
|
|
2473
|
+
c.tracing.transport_options = proc { |t|
|
|
2353
2474
|
# Hostname, port, and additional options. :timeout is in seconds.
|
|
2354
2475
|
t.adapter :net_http, '127.0.0.1', 8126, { timeout: 1 }
|
|
2355
2476
|
}
|
|
2356
2477
|
end
|
|
2357
2478
|
```
|
|
2358
2479
|
|
|
2359
|
-
#### Using the Unix
|
|
2480
|
+
#### Using the Unix Domain Socket (UDS) adapter
|
|
2360
2481
|
|
|
2361
2482
|
The `UnixSocket` adapter submits traces using `Net::HTTP` over Unix socket.
|
|
2362
2483
|
|
|
@@ -2364,8 +2485,8 @@ To use, first configure your trace agent to listen by Unix socket, then configur
|
|
|
2364
2485
|
|
|
2365
2486
|
```ruby
|
|
2366
2487
|
Datadog.configure do |c|
|
|
2367
|
-
c.
|
|
2368
|
-
# Provide
|
|
2488
|
+
c.tracing.transport_options = proc { |t|
|
|
2489
|
+
# Provide local path to trace agent Unix socket
|
|
2369
2490
|
t.adapter :unix, '/tmp/ddagent/trace.sock'
|
|
2370
2491
|
}
|
|
2371
2492
|
end
|
|
@@ -2377,7 +2498,7 @@ The `Test` adapter is a no-op transport that can optionally buffer requests. For
|
|
|
2377
2498
|
|
|
2378
2499
|
```ruby
|
|
2379
2500
|
Datadog.configure do |c|
|
|
2380
|
-
c.
|
|
2501
|
+
c.tracing.transport_options = proc { |t|
|
|
2381
2502
|
# Set transport to no-op mode. Does not retain traces.
|
|
2382
2503
|
t.adapter :test
|
|
2383
2504
|
|
|
@@ -2394,7 +2515,7 @@ Custom adapters can be configured with:
|
|
|
2394
2515
|
|
|
2395
2516
|
```ruby
|
|
2396
2517
|
Datadog.configure do |c|
|
|
2397
|
-
c.
|
|
2518
|
+
c.tracing.transport_options = proc { |t|
|
|
2398
2519
|
# Initialize and pass an instance of the adapter
|
|
2399
2520
|
custom_adapter = CustomAdapter.new
|
|
2400
2521
|
t.adapter custom_adapter
|
|
@@ -2402,6 +2523,23 @@ Datadog.configure do |c|
|
|
|
2402
2523
|
end
|
|
2403
2524
|
```
|
|
2404
2525
|
|
|
2526
|
+
### Setting the time provider
|
|
2527
|
+
|
|
2528
|
+
By default, tracing uses a monotonic clock to measure the duration of spans, and timestamps (`->{ Time.now }`) for the start and end time.
|
|
2529
|
+
|
|
2530
|
+
When testing, it might be helpful to use a different time provider.
|
|
2531
|
+
|
|
2532
|
+
To change the function that provides timestamps, configure the following:
|
|
2533
|
+
|
|
2534
|
+
```ruby
|
|
2535
|
+
Datadog.configure do |c|
|
|
2536
|
+
# For Timecop, for example, `->{ Time.now_without_mock_time }` allows the tracer to use the real wall time.
|
|
2537
|
+
c.time_now_provider = -> { Time.now_without_mock_time }
|
|
2538
|
+
end
|
|
2539
|
+
```
|
|
2540
|
+
|
|
2541
|
+
Span duration calculation will still use the system monotonic clock when available, thus not being affected by this setting.
|
|
2542
|
+
|
|
2405
2543
|
### Metrics
|
|
2406
2544
|
|
|
2407
2545
|
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,7 +2547,7 @@ The tracer and its integrations can produce some additional metrics that can pro
|
|
|
2409
2547
|
To configure your application for metrics collection:
|
|
2410
2548
|
|
|
2411
2549
|
1. [Configure your Datadog agent for StatsD](https://docs.datadoghq.com/developers/dogstatsd/#setup)
|
|
2412
|
-
2. Add `gem 'dogstatsd-ruby', '~>
|
|
2550
|
+
2. Add `gem 'dogstatsd-ruby', '~> 5.3'` to your Gemfile
|
|
2413
2551
|
|
|
2414
2552
|
#### For application runtime
|
|
2415
2553
|
|
|
@@ -2438,11 +2576,13 @@ See the [Dogstatsd documentation](https://www.rubydoc.info/github/DataDog/dogsta
|
|
|
2438
2576
|
|
|
2439
2577
|
The stats are VM specific and will include:
|
|
2440
2578
|
|
|
2441
|
-
| Name | Type | Description |
|
|
2442
|
-
| -------------------------- | ------- | -------------------------------------------------------- |
|
|
2443
|
-
| `runtime.ruby.class_count` | `gauge` | Number of classes in memory space. |
|
|
2444
|
-
| `runtime.ruby.
|
|
2445
|
-
| `runtime.ruby.
|
|
2579
|
+
| Name | Type | Description | Available on |
|
|
2580
|
+
| -------------------------- | ------- | -------------------------------------------------------- | ------------ |
|
|
2581
|
+
| `runtime.ruby.class_count` | `gauge` | Number of classes in memory space. | CRuby |
|
|
2582
|
+
| `runtime.ruby.gc.*` | `gauge` | Garbage collection statistics: collected from `GC.stat`. | All runtimes |
|
|
2583
|
+
| `runtime.ruby.thread_count` | `gauge` | Number of threads. | All runtimes |
|
|
2584
|
+
| `runtime.ruby.global_constant_state` | `gauge` | Global constant cache generation. | CRuby |
|
|
2585
|
+
| `runtime.ruby.global_method_state` | `gauge` | [Global method cache generation.](https://tenderlovemaking.com/2015/12/23/inline-caching-in-mri.html) | [CRuby < 3.0.0](https://docs.ruby-lang.org/en/3.0.0/NEWS_md.html#label-Implementation+improvements) |
|
|
2446
2586
|
|
|
2447
2587
|
In addition, all metrics include the following tags:
|
|
2448
2588
|
|
|
@@ -2453,7 +2593,7 @@ In addition, all metrics include the following tags:
|
|
|
2453
2593
|
|
|
2454
2594
|
### OpenTracing
|
|
2455
2595
|
|
|
2456
|
-
For setting up Datadog with OpenTracing, see
|
|
2596
|
+
For setting up Datadog with OpenTracing, see our [Configuring OpenTracing](#configuring-opentracing) section for details.
|
|
2457
2597
|
|
|
2458
2598
|
**Configuring Datadog tracer settings**
|
|
2459
2599
|
|
|
@@ -2461,10 +2601,10 @@ The underlying Datadog tracer can be configured by passing options (which match
|
|
|
2461
2601
|
|
|
2462
2602
|
```ruby
|
|
2463
2603
|
# Where `options` is a Hash of options provided to Datadog::Tracer
|
|
2464
|
-
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new(options)
|
|
2604
|
+
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new(**options)
|
|
2465
2605
|
```
|
|
2466
2606
|
|
|
2467
|
-
It can also be configured by using `Datadog.configure` described in the [
|
|
2607
|
+
It can also be configured by using `Datadog.configure` described in the [Additional Configuration](#additional-configuration) section.
|
|
2468
2608
|
|
|
2469
2609
|
**Activating and configuring integrations**
|
|
2470
2610
|
|
|
@@ -2488,10 +2628,44 @@ However, additional instrumentation provided by Datadog can be activated alongsi
|
|
|
2488
2628
|
|
|
2489
2629
|
**Setup**
|
|
2490
2630
|
|
|
2491
|
-
To get started with profiling, follow the [
|
|
2631
|
+
To get started with profiling, follow the [Enabling the Ruby Profiler](https://docs.datadoghq.com/tracing/profiler/enabling/ruby/) guide.
|
|
2632
|
+
|
|
2633
|
+
#### Troubleshooting
|
|
2634
|
+
|
|
2635
|
+
If you run into issues with profiling, please check the [Profiler Troubleshooting Guide](https://docs.datadoghq.com/tracing/profiler/profiler_troubleshooting/?code-lang=ruby).
|
|
2492
2636
|
|
|
2493
2637
|
#### Profiling Resque jobs
|
|
2494
2638
|
|
|
2495
2639
|
When profiling [Resque](https://github.com/resque/resque) jobs, you should set the `RUN_AT_EXIT_HOOKS=1` option described in the [Resque](https://github.com/resque/resque/blob/v2.0.0/docs/HOOKS.md#worker-hooks) documentation.
|
|
2496
2640
|
|
|
2497
2641
|
Without this flag, profiles for short-lived Resque jobs will not be available as Resque kills worker processes before they have a chance to submit this information.
|
|
2642
|
+
|
|
2643
|
+
## Known issues and suggested configurations
|
|
2644
|
+
|
|
2645
|
+
### Payload too large
|
|
2646
|
+
|
|
2647
|
+
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.
|
|
2648
|
+
|
|
2649
|
+
If traces are missing, enable [debug mode](#debugging-and-diagnostics) to check if messages containing `"Dropping trace. Payload too large"` are logged.
|
|
2650
|
+
|
|
2651
|
+
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.
|
|
2652
|
+
|
|
2653
|
+
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.
|
|
2654
|
+
|
|
2655
|
+
### Stack level too deep
|
|
2656
|
+
|
|
2657
|
+
Datadog tracing collects trace data by adding instrumentation into other common libraries (e.g. Rails, Rack, etc.) Some libraries provide APIs to add this instrumentation, but some do not. In order to add instrumentation into libraries lacking an instrumentation API, Datadog uses a technique called "monkey-patching" to modify the code of that library.
|
|
2658
|
+
|
|
2659
|
+
In Ruby version 1.9.3 and earlier, "monkey-patching" often involved the use of [`alias_method`](https://ruby-doc.org/core-3.0.0/Module.html#method-i-alias_method), also known as *method rewriting*, to destructively replace existing Ruby methods. However, this practice would often create conflicts & errors if two libraries attempted to "rewrite" the same method. (e.g. two different APM packages trying to instrument the same method.)
|
|
2660
|
+
|
|
2661
|
+
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.
|
|
2662
|
+
|
|
2663
|
+
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.
|
|
2664
|
+
|
|
2665
|
+
As the implementation of `alias_method` exists within those libraries, Datadog generally cannot fix them. However, some libraries have known workarounds:
|
|
2666
|
+
|
|
2667
|
+
* `rack-mini-profiler`: [Net::HTTP stack level too deep errors](https://github.com/MiniProfiler/rack-mini-profiler#nethttp-stack-level-too-deep-errors).
|
|
2668
|
+
|
|
2669
|
+
For libraries without a known workaround, consider removing the library using `alias` or `Module#alias_method` or separating libraries into different environments for testing.
|
|
2670
|
+
|
|
2671
|
+
For any further questions or to report an occurence of this issue, please [reach out to Datadog support](https://docs.datadoghq.com/help)
|