ddtrace 0.54.1 → 1.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/CHANGELOG.md +106 -1
- data/LICENSE-3rdparty.csv +2 -1
- data/README.md +4 -0
- data/bin/ddtracerb +5 -5
- data/ddtrace.gemspec +8 -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 +1 -1
- data/docs/GettingStarted.md +556 -508
- data/docs/ProfilingDevelopment.md +12 -9
- data/docs/PublicApi.md +14 -0
- data/docs/UpgradeGuide.md +735 -0
- data/ext/ddtrace_profiling_native_extension/extconf.rb +48 -8
- data/ext/ddtrace_profiling_native_extension/profiling.c +3 -1
- 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 +45 -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 +9 -8
- data/lib/datadog/ci/configuration/settings.rb +19 -3
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +4 -2
- data/lib/datadog/ci/contrib/cucumber/ext.rb +2 -0
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +4 -9
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +2 -1
- data/lib/datadog/ci/contrib/cucumber/integration.rb +3 -2
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +3 -2
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +4 -2
- data/lib/datadog/ci/contrib/rspec/example.rb +4 -9
- data/lib/datadog/ci/contrib/rspec/ext.rb +2 -0
- data/lib/datadog/ci/contrib/rspec/integration.rb +3 -2
- data/lib/datadog/ci/contrib/rspec/patcher.rb +3 -2
- data/lib/datadog/ci/ext/app_types.rb +2 -1
- data/lib/datadog/ci/ext/environment.rb +107 -103
- data/lib/datadog/ci/ext/settings.rb +2 -1
- data/lib/datadog/ci/ext/test.rb +1 -0
- data/lib/datadog/ci/extensions.rb +5 -4
- data/lib/datadog/ci/flush.rb +38 -0
- data/lib/datadog/ci/test.rb +15 -13
- data/lib/datadog/ci.rb +4 -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 +1 -0
- data/lib/datadog/core/environment/class_count.rb +1 -0
- data/lib/datadog/core/environment/container.rb +1 -0
- data/lib/datadog/core/environment/ext.rb +28 -9
- data/lib/datadog/core/environment/gc.rb +1 -0
- data/lib/datadog/core/environment/identity.rb +11 -4
- data/lib/datadog/core/environment/socket.rb +9 -2
- data/lib/datadog/core/environment/thread_count.rb +1 -0
- data/lib/datadog/core/environment/variable_helpers.rb +2 -0
- data/lib/datadog/core/environment/vm_cache.rb +1 -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/{ddtrace → datadog/core}/vendor/multipart-post/LICENSE +0 -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/{ddtrace → datadog}/profiling/pprof/pprof.proto +0 -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 +67 -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/{ddtrace/vendor/active_record → datadog/tracing/contrib/active_record/vendor}/MIT-LICENSE +0 -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 +65 -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 +117 -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/{ddtrace → datadog/tracing}/contrib/redis/vendor/LICENSE +0 -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 +109 -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 +211 -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 +426 -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 +6 -2
- data/lib/ddtrace/auto_instrument_base.rb +1 -0
- data/lib/ddtrace/profiling/preload.rb +2 -2
- data/lib/ddtrace/transport/ext.rb +35 -0
- data/lib/ddtrace/transport/http/adapters/net.rb +3 -2
- data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +3 -2
- data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
- data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
- data/lib/ddtrace/transport/http/api/instance.rb +1 -0
- data/lib/ddtrace/transport/http/api/map.rb +1 -0
- data/lib/ddtrace/transport/http/api/spec.rb +1 -0
- data/lib/ddtrace/transport/http/api.rb +5 -11
- data/lib/ddtrace/transport/http/builder.rb +3 -2
- data/lib/ddtrace/transport/http/client.rb +1 -0
- data/lib/ddtrace/transport/http/env.rb +1 -0
- data/lib/ddtrace/transport/http/response.rb +1 -0
- data/lib/ddtrace/transport/http/statistics.rb +1 -0
- data/lib/ddtrace/transport/http/traces.rb +3 -0
- data/lib/ddtrace/transport/http.rb +33 -28
- data/lib/ddtrace/transport/io/client.rb +1 -0
- data/lib/ddtrace/transport/io/response.rb +1 -0
- data/lib/ddtrace/transport/io/traces.rb +2 -1
- data/lib/ddtrace/transport/io.rb +3 -2
- data/lib/ddtrace/transport/parcel.rb +2 -0
- data/lib/ddtrace/transport/request.rb +1 -0
- data/lib/ddtrace/transport/response.rb +1 -0
- data/lib/ddtrace/transport/serializable_trace.rb +118 -0
- data/lib/ddtrace/transport/statistics.rb +6 -4
- data/lib/ddtrace/transport/trace_formatter.rb +187 -0
- data/lib/ddtrace/transport/traces.rb +15 -5
- data/lib/ddtrace/version.rb +16 -14
- data/lib/ddtrace.rb +8 -48
- metadata +568 -491
- data/.yardopts +0 -5
- data/lib/datadog/ci/context_flush.rb +0 -29
- data/lib/datadog/contrib.rb +0 -71
- data/lib/ddtrace/analytics.rb +0 -39
- data/lib/ddtrace/buffer.rb +0 -340
- data/lib/ddtrace/chunker.rb +0 -35
- data/lib/ddtrace/configuration/agent_settings_resolver.rb +0 -309
- data/lib/ddtrace/configuration/base.rb +0 -82
- data/lib/ddtrace/configuration/components.rb +0 -292
- data/lib/ddtrace/configuration/dependency_resolver.rb +0 -25
- data/lib/ddtrace/configuration/option.rb +0 -65
- data/lib/ddtrace/configuration/option_definition.rb +0 -122
- data/lib/ddtrace/configuration/option_definition_set.rb +0 -19
- data/lib/ddtrace/configuration/option_set.rb +0 -7
- data/lib/ddtrace/configuration/options.rb +0 -112
- data/lib/ddtrace/configuration/pin_setup.rb +0 -32
- data/lib/ddtrace/configuration/settings.rb +0 -413
- data/lib/ddtrace/configuration.rb +0 -195
- data/lib/ddtrace/context.rb +0 -334
- data/lib/ddtrace/context_flush.rb +0 -82
- data/lib/ddtrace/context_provider.rb +0 -62
- data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/action_cable/event.rb +0 -67
- data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +0 -50
- data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +0 -56
- data/lib/ddtrace/contrib/action_cable/events/transmit.rb +0 -51
- data/lib/ddtrace/contrib/action_cable/events.rb +0 -34
- data/lib/ddtrace/contrib/action_cable/ext.rb +0 -27
- data/lib/ddtrace/contrib/action_cable/instrumentation.rb +0 -78
- data/lib/ddtrace/contrib/action_cable/integration.rb +0 -46
- data/lib/ddtrace/contrib/action_cable/patcher.rb +0 -29
- data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/action_mailer/event.rb +0 -50
- data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +0 -54
- data/lib/ddtrace/contrib/action_mailer/events/process.rb +0 -41
- data/lib/ddtrace/contrib/action_mailer/events.rb +0 -31
- data/lib/ddtrace/contrib/action_mailer/ext.rb +0 -32
- data/lib/ddtrace/contrib/action_mailer/integration.rb +0 -45
- data/lib/ddtrace/contrib/action_mailer/patcher.rb +0 -27
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +0 -157
- data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +0 -26
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/action_pack/ext.rb +0 -20
- data/lib/ddtrace/contrib/action_pack/integration.rb +0 -46
- data/lib/ddtrace/contrib/action_pack/patcher.rb +0 -24
- data/lib/ddtrace/contrib/action_pack/utils.rb +0 -37
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/action_view/event.rb +0 -36
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +0 -47
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +0 -50
- data/lib/ddtrace/contrib/action_view/events.rb +0 -31
- data/lib/ddtrace/contrib/action_view/ext.rb +0 -21
- data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +0 -75
- data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +0 -168
- data/lib/ddtrace/contrib/action_view/integration.rb +0 -53
- data/lib/ddtrace/contrib/action_view/patcher.rb +0 -48
- data/lib/ddtrace/contrib/action_view/utils.rb +0 -33
- data/lib/ddtrace/contrib/active_job/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/active_job/event.rb +0 -54
- data/lib/ddtrace/contrib/active_job/events/discard.rb +0 -46
- data/lib/ddtrace/contrib/active_job/events/enqueue.rb +0 -45
- data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +0 -45
- data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +0 -47
- data/lib/ddtrace/contrib/active_job/events/perform.rb +0 -45
- data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +0 -46
- data/lib/ddtrace/contrib/active_job/events.rb +0 -39
- data/lib/ddtrace/contrib/active_job/ext.rb +0 -32
- data/lib/ddtrace/contrib/active_job/integration.rb +0 -46
- data/lib/ddtrace/contrib/active_job/log_injection.rb +0 -21
- data/lib/ddtrace/contrib/active_job/patcher.rb +0 -33
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +0 -69
- data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +0 -33
- data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +0 -36
- data/lib/ddtrace/contrib/active_model_serializers/events.rb +0 -31
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +0 -21
- data/lib/ddtrace/contrib/active_model_serializers/integration.rb +0 -41
- data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +0 -30
- data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +0 -31
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +0 -135
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +0 -36
- data/lib/ddtrace/contrib/active_record/event.rb +0 -31
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +0 -61
- data/lib/ddtrace/contrib/active_record/events/sql.rb +0 -69
- data/lib/ddtrace/contrib/active_record/events.rb +0 -31
- data/lib/ddtrace/contrib/active_record/ext.rb +0 -25
- data/lib/ddtrace/contrib/active_record/integration.rb +0 -54
- data/lib/ddtrace/contrib/active_record/patcher.rb +0 -24
- data/lib/ddtrace/contrib/active_record/utils.rb +0 -124
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +0 -259
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +0 -70
- data/lib/ddtrace/contrib/active_support/cache/redis.rb +0 -44
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/active_support/ext.rb +0 -28
- data/lib/ddtrace/contrib/active_support/integration.rb +0 -47
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +0 -76
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +0 -68
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +0 -164
- data/lib/ddtrace/contrib/active_support/patcher.rb +0 -24
- data/lib/ddtrace/contrib/analytics.rb +0 -25
- data/lib/ddtrace/contrib/auto_instrument.rb +0 -48
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/aws/ext.rb +0 -24
- data/lib/ddtrace/contrib/aws/instrumentation.rb +0 -91
- data/lib/ddtrace/contrib/aws/integration.rb +0 -43
- data/lib/ddtrace/contrib/aws/parsed_context.rb +0 -57
- data/lib/ddtrace/contrib/aws/patcher.rb +0 -54
- data/lib/ddtrace/contrib/aws/services.rb +0 -119
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +0 -21
- data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -42
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +0 -13
- data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +0 -24
- data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +0 -39
- data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +0 -30
- data/lib/ddtrace/contrib/configurable.rb +0 -103
- data/lib/ddtrace/contrib/configuration/resolver.rb +0 -82
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +0 -40
- data/lib/ddtrace/contrib/configuration/settings.rb +0 -56
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/dalli/ext.rb +0 -21
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +0 -55
- data/lib/ddtrace/contrib/dalli/integration.rb +0 -39
- data/lib/ddtrace/contrib/dalli/patcher.rb +0 -26
- data/lib/ddtrace/contrib/dalli/quantize.rb +0 -23
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/delayed_job/ext.rb +0 -24
- data/lib/ddtrace/contrib/delayed_job/integration.rb +0 -39
- data/lib/ddtrace/contrib/delayed_job/patcher.rb +0 -29
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -85
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +0 -23
- data/lib/ddtrace/contrib/elasticsearch/integration.rb +0 -40
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +0 -123
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +0 -84
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +0 -152
- data/lib/ddtrace/contrib/ethon/ext.rb +0 -20
- data/lib/ddtrace/contrib/ethon/integration.rb +0 -44
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +0 -85
- data/lib/ddtrace/contrib/ethon/patcher.rb +0 -27
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +0 -34
- data/lib/ddtrace/contrib/excon/ext.rb +0 -18
- data/lib/ddtrace/contrib/excon/integration.rb +0 -44
- data/lib/ddtrace/contrib/excon/middleware.rb +0 -164
- data/lib/ddtrace/contrib/excon/patcher.rb +0 -28
- data/lib/ddtrace/contrib/extensions.rb +0 -169
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +0 -39
- data/lib/ddtrace/contrib/faraday/connection.rb +0 -19
- data/lib/ddtrace/contrib/faraday/ext.rb +0 -18
- data/lib/ddtrace/contrib/faraday/integration.rb +0 -44
- data/lib/ddtrace/contrib/faraday/middleware.rb +0 -86
- data/lib/ddtrace/contrib/faraday/patcher.rb +0 -54
- data/lib/ddtrace/contrib/faraday/rack_builder.rb +0 -19
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +0 -39
- data/lib/ddtrace/contrib/grape/endpoint.rb +0 -246
- data/lib/ddtrace/contrib/grape/ext.rb +0 -24
- data/lib/ddtrace/contrib/grape/instrumentation.rb +0 -34
- data/lib/ddtrace/contrib/grape/integration.rb +0 -40
- data/lib/ddtrace/contrib/grape/patcher.rb +0 -32
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/graphql/ext.rb +0 -17
- data/lib/ddtrace/contrib/graphql/integration.rb +0 -40
- data/lib/ddtrace/contrib/graphql/patcher.rb +0 -61
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +0 -59
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +0 -80
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +0 -79
- data/lib/ddtrace/contrib/grpc/ext.rb +0 -19
- data/lib/ddtrace/contrib/grpc/integration.rb +0 -39
- data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +0 -50
- data/lib/ddtrace/contrib/grpc/patcher.rb +0 -34
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +0 -38
- data/lib/ddtrace/contrib/http/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/http/ext.rb +0 -18
- data/lib/ddtrace/contrib/http/instrumentation.rb +0 -180
- data/lib/ddtrace/contrib/http/integration.rb +0 -46
- data/lib/ddtrace/contrib/http/patcher.rb +0 -27
- data/lib/ddtrace/contrib/http_annotation_helper.rb +0 -11
- data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/httpclient/ext.rb +0 -18
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +0 -148
- data/lib/ddtrace/contrib/httpclient/integration.rb +0 -44
- data/lib/ddtrace/contrib/httpclient/patcher.rb +0 -39
- data/lib/ddtrace/contrib/httprb/configuration/settings.rb +0 -33
- data/lib/ddtrace/contrib/httprb/ext.rb +0 -18
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +0 -158
- data/lib/ddtrace/contrib/httprb/integration.rb +0 -44
- data/lib/ddtrace/contrib/httprb/patcher.rb +0 -39
- data/lib/ddtrace/contrib/integration.rb +0 -17
- data/lib/ddtrace/contrib/kafka/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/kafka/consumer_event.rb +0 -15
- data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +0 -15
- data/lib/ddtrace/contrib/kafka/event.rb +0 -52
- data/lib/ddtrace/contrib/kafka/events/connection/request.rb +0 -35
- data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +0 -42
- data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +0 -40
- data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +0 -40
- data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +0 -30
- data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +0 -30
- data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +0 -30
- data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +0 -33
- data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +0 -36
- data/lib/ddtrace/contrib/kafka/events.rb +0 -45
- data/lib/ddtrace/contrib/kafka/ext.rb +0 -42
- data/lib/ddtrace/contrib/kafka/integration.rb +0 -40
- data/lib/ddtrace/contrib/kafka/patcher.rb +0 -27
- data/lib/ddtrace/contrib/lograge/configuration/settings.rb +0 -19
- data/lib/ddtrace/contrib/lograge/ext.rb +0 -11
- data/lib/ddtrace/contrib/lograge/instrumentation.rb +0 -39
- data/lib/ddtrace/contrib/lograge/integration.rb +0 -46
- data/lib/ddtrace/contrib/lograge/patcher.rb +0 -26
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +0 -34
- data/lib/ddtrace/contrib/mongodb/ext.rb +0 -24
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +0 -70
- data/lib/ddtrace/contrib/mongodb/integration.rb +0 -44
- data/lib/ddtrace/contrib/mongodb/parsers.rb +0 -69
- data/lib/ddtrace/contrib/mongodb/patcher.rb +0 -32
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +0 -112
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/mysql2/ext.rb +0 -19
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +0 -65
- data/lib/ddtrace/contrib/mysql2/integration.rb +0 -39
- data/lib/ddtrace/contrib/mysql2/patcher.rb +0 -28
- data/lib/ddtrace/contrib/patchable.rb +0 -71
- data/lib/ddtrace/contrib/patcher.rb +0 -66
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/presto/ext.rb +0 -29
- data/lib/ddtrace/contrib/presto/instrumentation.rb +0 -111
- data/lib/ddtrace/contrib/presto/integration.rb +0 -39
- data/lib/ddtrace/contrib/presto/patcher.rb +0 -34
- data/lib/ddtrace/contrib/qless/configuration/settings.rb +0 -36
- data/lib/ddtrace/contrib/qless/ext.rb +0 -21
- data/lib/ddtrace/contrib/qless/integration.rb +0 -39
- data/lib/ddtrace/contrib/qless/patcher.rb +0 -35
- data/lib/ddtrace/contrib/qless/qless_job.rb +0 -74
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +0 -34
- data/lib/ddtrace/contrib/que/configuration/settings.rb +0 -44
- data/lib/ddtrace/contrib/que/ext.rb +0 -31
- data/lib/ddtrace/contrib/que/integration.rb +0 -43
- data/lib/ddtrace/contrib/que/patcher.rb +0 -25
- data/lib/ddtrace/contrib/que/tracer.rb +0 -58
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/racecar/event.rb +0 -77
- data/lib/ddtrace/contrib/racecar/events/batch.rb +0 -28
- data/lib/ddtrace/contrib/racecar/events/consume.rb +0 -28
- data/lib/ddtrace/contrib/racecar/events/message.rb +0 -28
- data/lib/ddtrace/contrib/racecar/events.rb +0 -33
- data/lib/ddtrace/contrib/racecar/ext.rb +0 -26
- data/lib/ddtrace/contrib/racecar/integration.rb +0 -40
- data/lib/ddtrace/contrib/racecar/patcher.rb +0 -27
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +0 -47
- data/lib/ddtrace/contrib/rack/ext.rb +0 -22
- data/lib/ddtrace/contrib/rack/integration.rb +0 -46
- data/lib/ddtrace/contrib/rack/middlewares.rb +0 -288
- data/lib/ddtrace/contrib/rack/patcher.rb +0 -106
- data/lib/ddtrace/contrib/rack/request_queue.rb +0 -45
- data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -10
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +0 -101
- data/lib/ddtrace/contrib/rails/ext.rb +0 -18
- data/lib/ddtrace/contrib/rails/framework.rb +0 -172
- data/lib/ddtrace/contrib/rails/integration.rb +0 -45
- data/lib/ddtrace/contrib/rails/log_injection.rb +0 -42
- data/lib/ddtrace/contrib/rails/middlewares.rb +0 -44
- data/lib/ddtrace/contrib/rails/patcher.rb +0 -119
- data/lib/ddtrace/contrib/rails/railtie.rb +0 -18
- data/lib/ddtrace/contrib/rails/utils.rb +0 -25
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/rake/ext.rb +0 -22
- data/lib/ddtrace/contrib/rake/instrumentation.rb +0 -91
- data/lib/ddtrace/contrib/rake/integration.rb +0 -39
- data/lib/ddtrace/contrib/rake/patcher.rb +0 -31
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +0 -46
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +0 -36
- data/lib/ddtrace/contrib/redis/ext.rb +0 -23
- data/lib/ddtrace/contrib/redis/instrumentation.rb +0 -90
- data/lib/ddtrace/contrib/redis/integration.rb +0 -43
- data/lib/ddtrace/contrib/redis/patcher.rb +0 -33
- data/lib/ddtrace/contrib/redis/quantize.rb +0 -76
- data/lib/ddtrace/contrib/redis/tags.rb +0 -47
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +0 -159
- data/lib/ddtrace/contrib/registerable.rb +0 -33
- data/lib/ddtrace/contrib/registry.rb +0 -43
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +0 -49
- data/lib/ddtrace/contrib/resque/ext.rb +0 -18
- data/lib/ddtrace/contrib/resque/integration.rb +0 -44
- data/lib/ddtrace/contrib/resque/patcher.rb +0 -30
- data/lib/ddtrace/contrib/resque/resque_job.rb +0 -104
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/rest_client/ext.rb +0 -18
- data/lib/ddtrace/contrib/rest_client/integration.rb +0 -39
- data/lib/ddtrace/contrib/rest_client/patcher.rb +0 -25
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +0 -92
- data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +0 -19
- data/lib/ddtrace/contrib/semantic_logger/ext.rb +0 -11
- data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +0 -43
- data/lib/ddtrace/contrib/semantic_logger/integration.rb +0 -48
- data/lib/ddtrace/contrib/semantic_logger/patcher.rb +0 -26
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +0 -29
- data/lib/ddtrace/contrib/sequel/database.rb +0 -64
- data/lib/ddtrace/contrib/sequel/dataset.rb +0 -64
- data/lib/ddtrace/contrib/sequel/ext.rb +0 -20
- data/lib/ddtrace/contrib/sequel/integration.rb +0 -39
- data/lib/ddtrace/contrib/sequel/patcher.rb +0 -34
- data/lib/ddtrace/contrib/sequel/utils.rb +0 -75
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +0 -32
- data/lib/ddtrace/contrib/shoryuken/ext.rb +0 -22
- data/lib/ddtrace/contrib/shoryuken/integration.rb +0 -40
- data/lib/ddtrace/contrib/shoryuken/patcher.rb +0 -25
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -56
- data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +0 -44
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +0 -38
- data/lib/ddtrace/contrib/sidekiq/ext.rb +0 -31
- data/lib/ddtrace/contrib/sidekiq/integration.rb +0 -49
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +0 -68
- data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +0 -30
- data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +0 -30
- data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +0 -29
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +0 -66
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -45
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +0 -40
- data/lib/ddtrace/contrib/sinatra/env.rb +0 -59
- data/lib/ddtrace/contrib/sinatra/ext.rb +0 -28
- data/lib/ddtrace/contrib/sinatra/headers.rb +0 -30
- data/lib/ddtrace/contrib/sinatra/integration.rb +0 -39
- data/lib/ddtrace/contrib/sinatra/patcher.rb +0 -30
- data/lib/ddtrace/contrib/sinatra/tracer.rb +0 -150
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +0 -112
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +0 -34
- data/lib/ddtrace/contrib/sneakers/ext.rb +0 -23
- data/lib/ddtrace/contrib/sneakers/integration.rb +0 -42
- data/lib/ddtrace/contrib/sneakers/patcher.rb +0 -25
- data/lib/ddtrace/contrib/sneakers/tracer.rb +0 -54
- data/lib/ddtrace/contrib/status_code_matcher.rb +0 -70
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +0 -31
- data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +0 -25
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +0 -22
- data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +0 -89
- data/lib/ddtrace/contrib/sucker_punch/integration.rb +0 -39
- data/lib/ddtrace/contrib/sucker_punch/patcher.rb +0 -44
- data/lib/ddtrace/correlation.rb +0 -40
- data/lib/ddtrace/diagnostics/environment_logger.rb +0 -280
- data/lib/ddtrace/diagnostics/health.rb +0 -34
- data/lib/ddtrace/distributed_tracing/headers/b3.rb +0 -45
- data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +0 -57
- data/lib/ddtrace/distributed_tracing/headers/datadog.rb +0 -43
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +0 -72
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +0 -44
- data/lib/ddtrace/encoding.rb +0 -72
- data/lib/ddtrace/error.rb +0 -97
- data/lib/ddtrace/event.rb +0 -53
- data/lib/ddtrace/ext/analytics.rb +0 -13
- data/lib/ddtrace/ext/app_types.rb +0 -12
- data/lib/ddtrace/ext/correlation.rb +0 -12
- data/lib/ddtrace/ext/diagnostics.rb +0 -37
- data/lib/ddtrace/ext/distributed.rb +0 -40
- data/lib/ddtrace/ext/environment.rb +0 -24
- data/lib/ddtrace/ext/errors.rb +0 -11
- data/lib/ddtrace/ext/forced_tracing.rb +0 -26
- data/lib/ddtrace/ext/git.rb +0 -32
- data/lib/ddtrace/ext/http.rb +0 -47
- data/lib/ddtrace/ext/integration.rb +0 -9
- data/lib/ddtrace/ext/manual_tracing.rb +0 -10
- data/lib/ddtrace/ext/metrics.rb +0 -16
- data/lib/ddtrace/ext/net.rb +0 -11
- data/lib/ddtrace/ext/priority.rb +0 -19
- data/lib/ddtrace/ext/profiling.rb +0 -57
- data/lib/ddtrace/ext/runtime.rb +0 -25
- data/lib/ddtrace/ext/sampling.rb +0 -17
- data/lib/ddtrace/ext/sql.rb +0 -9
- data/lib/ddtrace/ext/test.rb +0 -9
- data/lib/ddtrace/ext/transport.rb +0 -32
- data/lib/ddtrace/forced_tracing.rb +0 -39
- data/lib/ddtrace/logger.rb +0 -41
- data/lib/ddtrace/metrics.rb +0 -282
- data/lib/ddtrace/opentelemetry/extensions.rb +0 -14
- data/lib/ddtrace/opentelemetry/span.rb +0 -34
- data/lib/ddtrace/opentracer/binary_propagator.rb +0 -25
- data/lib/ddtrace/opentracer/carrier.rb +0 -7
- data/lib/ddtrace/opentracer/distributed_headers.rb +0 -56
- data/lib/ddtrace/opentracer/global_tracer.rb +0 -16
- data/lib/ddtrace/opentracer/propagator.rb +0 -23
- data/lib/ddtrace/opentracer/rack_propagator.rb +0 -61
- data/lib/ddtrace/opentracer/scope.rb +0 -16
- data/lib/ddtrace/opentracer/scope_manager.rb +0 -7
- data/lib/ddtrace/opentracer/span.rb +0 -95
- data/lib/ddtrace/opentracer/span_context.rb +0 -15
- data/lib/ddtrace/opentracer/span_context_factory.rb +0 -24
- data/lib/ddtrace/opentracer/text_map_propagator.rb +0 -76
- data/lib/ddtrace/opentracer/thread_local_scope.rb +0 -32
- data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +0 -41
- data/lib/ddtrace/opentracer/tracer.rb +0 -209
- data/lib/ddtrace/opentracer.rb +0 -22
- data/lib/ddtrace/patcher.rb +0 -69
- data/lib/ddtrace/pin.rb +0 -86
- data/lib/ddtrace/pipeline/span_filter.rb +0 -39
- data/lib/ddtrace/pipeline/span_processor.rb +0 -21
- data/lib/ddtrace/pipeline.rb +0 -47
- data/lib/ddtrace/profiling/backtrace_location.rb +0 -33
- data/lib/ddtrace/profiling/buffer.rb +0 -42
- data/lib/ddtrace/profiling/collectors/stack.rb +0 -301
- data/lib/ddtrace/profiling/encoding/profile.rb +0 -46
- data/lib/ddtrace/profiling/event.rb +0 -14
- data/lib/ddtrace/profiling/events/stack.rb +0 -81
- data/lib/ddtrace/profiling/exporter.rb +0 -24
- data/lib/ddtrace/profiling/ext/forking.rb +0 -98
- data/lib/ddtrace/profiling/flush.rb +0 -44
- data/lib/ddtrace/profiling/native_extension.rb +0 -40
- data/lib/ddtrace/profiling/pprof/builder.rb +0 -126
- data/lib/ddtrace/profiling/pprof/converter.rb +0 -103
- data/lib/ddtrace/profiling/pprof/message_set.rb +0 -15
- data/lib/ddtrace/profiling/pprof/payload.rb +0 -19
- data/lib/ddtrace/profiling/pprof/pprof_pb.rb +0 -82
- data/lib/ddtrace/profiling/pprof/stack_sample.rb +0 -140
- data/lib/ddtrace/profiling/pprof/string_table.rb +0 -11
- data/lib/ddtrace/profiling/pprof/template.rb +0 -119
- data/lib/ddtrace/profiling/profiler.rb +0 -31
- data/lib/ddtrace/profiling/recorder.rb +0 -96
- data/lib/ddtrace/profiling/scheduler.rb +0 -134
- data/lib/ddtrace/profiling/tasks/setup.rb +0 -90
- data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +0 -42
- data/lib/ddtrace/profiling/trace_identifiers/helper.rb +0 -46
- data/lib/ddtrace/profiling/transport/client.rb +0 -15
- data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +0 -101
- data/lib/ddtrace/profiling/transport/http/api/instance.rb +0 -37
- data/lib/ddtrace/profiling/transport/http/api/spec.rb +0 -41
- data/lib/ddtrace/profiling/transport/http/api.rb +0 -44
- data/lib/ddtrace/profiling/transport/http/builder.rb +0 -29
- data/lib/ddtrace/profiling/transport/http/client.rb +0 -34
- data/lib/ddtrace/profiling/transport/http/response.rb +0 -22
- data/lib/ddtrace/profiling/transport/http.rb +0 -111
- data/lib/ddtrace/profiling/transport/io/client.rb +0 -28
- data/lib/ddtrace/profiling/transport/io/response.rb +0 -17
- data/lib/ddtrace/profiling/transport/io.rb +0 -31
- data/lib/ddtrace/profiling/transport/parcel.rb +0 -18
- data/lib/ddtrace/profiling/transport/request.rb +0 -16
- data/lib/ddtrace/profiling/transport/response.rb +0 -9
- data/lib/ddtrace/profiling.rb +0 -149
- data/lib/ddtrace/propagation/grpc_propagator.rb +0 -75
- data/lib/ddtrace/propagation/http_propagator.rb +0 -91
- data/lib/ddtrace/quantization/hash.rb +0 -104
- data/lib/ddtrace/quantization/http.rb +0 -90
- data/lib/ddtrace/runtime/metrics.rb +0 -135
- data/lib/ddtrace/sampler.rb +0 -303
- data/lib/ddtrace/sampling/matcher.rb +0 -58
- data/lib/ddtrace/sampling/rate_limiter.rb +0 -177
- data/lib/ddtrace/sampling/rule.rb +0 -62
- data/lib/ddtrace/sampling/rule_sampler.rb +0 -133
- data/lib/ddtrace/sampling.rb +0 -3
- data/lib/ddtrace/span.rb +0 -445
- data/lib/ddtrace/sync_writer.rb +0 -69
- data/lib/ddtrace/tasks/exec.rb +0 -47
- data/lib/ddtrace/tasks/help.rb +0 -15
- data/lib/ddtrace/tracer.rb +0 -449
- data/lib/ddtrace/utils/compression.rb +0 -28
- data/lib/ddtrace/utils/database.rb +0 -26
- data/lib/ddtrace/utils/forking.rb +0 -53
- data/lib/ddtrace/utils/object_set.rb +0 -40
- data/lib/ddtrace/utils/only_once.rb +0 -41
- data/lib/ddtrace/utils/sequence.rb +0 -18
- data/lib/ddtrace/utils/string_table.rb +0 -46
- data/lib/ddtrace/utils/time.rb +0 -51
- data/lib/ddtrace/utils.rb +0 -80
- data/lib/ddtrace/vendor/active_record/connection_specification.rb +0 -302
- data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -117
- data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +0 -58
- data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +0 -136
- data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +0 -10
- data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +0 -9
- data/lib/ddtrace/vendor/multipart-post/multipart.rb +0 -13
- data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +0 -33
- data/lib/ddtrace/worker.rb +0 -21
- data/lib/ddtrace/workers/async.rb +0 -175
- data/lib/ddtrace/workers/loop.rb +0 -132
- data/lib/ddtrace/workers/polling.rb +0 -56
- data/lib/ddtrace/workers/queue.rb +0 -41
- data/lib/ddtrace/workers/runtime_metrics.rb +0 -65
- data/lib/ddtrace/workers/trace_writer.rb +0 -200
- data/lib/ddtrace/workers.rb +0 -123
- data/lib/ddtrace/writer.rb +0 -200
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,22 +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)
|
30
|
-
- [Action View](#action-view)
|
31
39
|
- [Action Mailer](#action-mailer)
|
32
|
-
- [Active Model Serializers](#active-model-serializers)
|
33
40
|
- [Action Pack](#action-pack)
|
41
|
+
- [Action View](#action-view)
|
34
42
|
- [Active Job](#active-job)
|
43
|
+
- [Active Model Serializers](#active-model-serializers)
|
35
44
|
- [Active Record](#active-record)
|
36
45
|
- [Active Support](#active-support)
|
37
46
|
- [AWS](#aws)
|
@@ -49,6 +58,7 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
49
58
|
- [http.rb](#httprb)
|
50
59
|
- [httpclient](#httpclient)
|
51
60
|
- [httpx](#httpx)
|
61
|
+
- [Kafka](#kafka)
|
52
62
|
- [MongoDB](#mongodb)
|
53
63
|
- [MySQL2](#mysql2)
|
54
64
|
- [Net/HTTP](#nethttp)
|
@@ -60,20 +70,19 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
60
70
|
- [Rails](#rails)
|
61
71
|
- [Rake](#rake)
|
62
72
|
- [Redis](#redis)
|
63
|
-
- [Rest Client](#rest-client)
|
64
73
|
- [Resque](#resque)
|
74
|
+
- [Rest Client](#rest-client)
|
65
75
|
- [RSpec](#rspec)
|
66
|
-
- [Shoryuken](#shoryuken)
|
67
76
|
- [Sequel](#sequel)
|
77
|
+
- [Shoryuken](#shoryuken)
|
68
78
|
- [Sidekiq](#sidekiq)
|
69
79
|
- [Sinatra](#sinatra)
|
70
80
|
- [Sneakers](#sneakers)
|
71
81
|
- [Sucker Punch](#sucker-punch)
|
72
|
-
- [
|
73
|
-
- [Tracer settings](#tracer-settings)
|
82
|
+
- [Additional configuration](#additional-configuration)
|
74
83
|
- [Custom logging](#custom-logging)
|
75
84
|
- [Environment and tags](#environment-and-tags)
|
76
|
-
- [
|
85
|
+
- [Debugging and diagnostics](#debugging-and-diagnostics)
|
77
86
|
- [Sampling](#sampling)
|
78
87
|
- [Application-side sampling](#application-side-sampling)
|
79
88
|
- [Priority sampling](#priority-sampling)
|
@@ -100,7 +109,8 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
100
109
|
|
101
110
|
| Type | Documentation | Version | Support type | Gem version support |
|
102
111
|
| ----- | -------------------------- | ----- | ------------------------------------ | ------------------- |
|
103
|
-
| MRI | https://www.ruby-lang.org/ | 3.
|
112
|
+
| MRI | https://www.ruby-lang.org/ | 3.1 | Full | Latest |
|
113
|
+
| | | 3.0 | Full | Latest |
|
104
114
|
| | | 2.7 | Full | Latest |
|
105
115
|
| | | 2.6 | Full | Latest |
|
106
116
|
| | | 2.5 | Full | Latest |
|
@@ -135,73 +145,106 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
135
145
|
|
136
146
|
*EOL* indicates support is no longer provided.
|
137
147
|
|
148
|
+
### Apple macOS support
|
149
|
+
|
150
|
+
Use of `ddtrace` on macOS is supported for development, but not for production deployments.
|
151
|
+
|
138
152
|
### Microsoft Windows support
|
139
153
|
|
140
|
-
Using `ddtrace
|
154
|
+
Using `ddtrace` on Microsoft Windows is currently unsupported. We'll still accept community contributions and issues,
|
141
155
|
but will consider them as having low priority.
|
142
156
|
|
143
157
|
## Installation
|
144
158
|
|
145
|
-
|
159
|
+
Adding tracing to your Ruby application only takes a few quick steps:
|
146
160
|
|
147
|
-
|
161
|
+
1. Setup the Datadog Agent for tracing
|
162
|
+
2. Instrument your application
|
163
|
+
3. Connect your application to the Datadog Agent
|
148
164
|
|
149
|
-
|
165
|
+
### Setup the Datadog Agent for tracing
|
150
166
|
|
151
|
-
|
167
|
+
Before installing `ddtrace`, [install the Datadog Agent](https://docs.datadoghq.com/agent/), to which `ddtrace` will send trace data.
|
152
168
|
|
153
|
-
|
169
|
+
Then configure the Datadog Agent to accept traces. To do this, either:
|
154
170
|
|
155
|
-
|
171
|
+
- Set `DD_APM_ENABLED=true` in the agent's environment
|
156
172
|
|
157
|
-
|
173
|
+
OR
|
158
174
|
|
159
|
-
|
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)
|
160
176
|
|
177
|
+
*Additionally, in containerized environments...*
|
161
178
|
|
162
|
-
|
179
|
+
- Set `DD_APM_NON_LOCAL_TRAFFIC=true` in the agent's environment
|
163
180
|
|
164
|
-
|
181
|
+
OR
|
165
182
|
|
166
|
-
|
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).
|
167
184
|
|
168
|
-
|
169
|
-
source 'https://rubygems.org'
|
170
|
-
gem 'ddtrace', require: 'ddtrace/auto_instrument'
|
171
|
-
```
|
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.
|
172
186
|
|
173
|
-
|
187
|
+
#### Configuring trace data ingestion
|
188
|
+
|
189
|
+
The Datadog agent will listen for traces via HTTP on port `8126` by default.
|
190
|
+
|
191
|
+
You may change the protocol or port the agent listens for trace data using the following:
|
192
|
+
|
193
|
+
**For HTTP over TCP**:
|
194
|
+
|
195
|
+
- Set `DD_APM_RECEIVER_PORT=<port>` in the agent's environment
|
196
|
+
|
197
|
+
OR
|
198
|
+
|
199
|
+
- Add `apm_config: receiver_port: <port>` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file)
|
200
|
+
|
201
|
+
**For Unix Domain Socket (UDS)**:
|
174
202
|
|
175
|
-
|
203
|
+
- Set `DD_APM_RECEIVER_SOCKET=<path-to-socket-file>`
|
176
204
|
|
177
|
-
|
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
|
178
212
|
|
179
213
|
1. Add the `ddtrace` gem to your Gemfile:
|
180
214
|
|
181
215
|
```ruby
|
182
216
|
source 'https://rubygems.org'
|
183
|
-
gem 'ddtrace'
|
217
|
+
gem 'ddtrace', require: 'ddtrace/auto_instrument'
|
184
218
|
```
|
185
219
|
|
186
220
|
2. Install the gem with `bundle install`
|
221
|
+
|
187
222
|
3. Create a `config/initializers/datadog.rb` file containing:
|
188
223
|
|
189
224
|
```ruby
|
190
225
|
Datadog.configure do |c|
|
191
|
-
#
|
192
|
-
|
226
|
+
# Add additional configuration here.
|
227
|
+
# Activate integrations, change tracer settings, etc...
|
193
228
|
end
|
194
229
|
```
|
195
230
|
|
196
|
-
|
231
|
+
Using this block you can:
|
197
232
|
|
198
|
-
|
233
|
+
- [Add additional configuration settings](#additional-configuration)
|
234
|
+
- [Activate or reconfigure instrumentation](#integration-instrumentation)
|
199
235
|
|
200
|
-
####
|
236
|
+
#### Ruby applications
|
201
237
|
|
202
|
-
1.
|
203
|
-
|
204
|
-
|
238
|
+
1. Add the `ddtrace` gem to your Gemfile:
|
239
|
+
|
240
|
+
```ruby
|
241
|
+
source 'https://rubygems.org'
|
242
|
+
gem 'ddtrace'
|
243
|
+
```
|
244
|
+
|
245
|
+
2. Install the gem with `bundle install`
|
246
|
+
3. `require` any [supported libraries or frameworks](#integration-instrumentation) that should be instrumented.
|
247
|
+
4. Add `require 'ddtrace/auto_instrument'` to your application. _Note:_ This must be done _after_ requiring any supported libraries or frameworks.
|
205
248
|
|
206
249
|
```ruby
|
207
250
|
# Example frameworks and libraries
|
@@ -212,41 +255,42 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
212
255
|
require 'ddtrace/auto_instrument'
|
213
256
|
```
|
214
257
|
|
215
|
-
|
216
|
-
|
217
|
-
#### Manual instrumentation
|
218
|
-
|
219
|
-
1. Install the gem with `gem install ddtrace`
|
220
|
-
2. Add a configuration block to your Ruby application:
|
258
|
+
5. Add a configuration block to your application:
|
221
259
|
|
222
260
|
```ruby
|
223
|
-
require 'ddtrace'
|
224
261
|
Datadog.configure do |c|
|
225
|
-
#
|
262
|
+
# Add additional configuration here.
|
226
263
|
# Activate integrations, change tracer settings, etc...
|
227
|
-
# By default without additional configuration, nothing will be traced.
|
228
264
|
end
|
229
265
|
```
|
230
266
|
|
231
|
-
|
232
|
-
|
233
|
-
|
267
|
+
Using this block you can:
|
268
|
+
|
269
|
+
- [Add additional configuration settings](#additional-configuration)
|
270
|
+
- [Activate or reconfigure instrumentation](#integration-instrumentation)
|
271
|
+
|
272
|
+
#### Configuring OpenTracing
|
273
|
+
|
274
|
+
1. Add the `ddtrace` gem to your Gemfile:
|
234
275
|
|
235
|
-
|
276
|
+
```ruby
|
277
|
+
source 'https://rubygems.org'
|
278
|
+
gem 'ddtrace'
|
279
|
+
```
|
236
280
|
|
237
|
-
|
238
|
-
|
281
|
+
2. Install the gem with `bundle install`
|
282
|
+
3. To your OpenTracing configuration file, add the following:
|
239
283
|
|
240
284
|
```ruby
|
241
285
|
require 'opentracing'
|
242
|
-
require '
|
243
|
-
require '
|
286
|
+
require 'datadog/tracing'
|
287
|
+
require 'datadog/opentracer'
|
244
288
|
|
245
289
|
# Activate the Datadog tracer for OpenTracing
|
246
290
|
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new
|
247
291
|
```
|
248
292
|
|
249
|
-
|
293
|
+
4. Add a configuration block to your application:
|
250
294
|
|
251
295
|
```ruby
|
252
296
|
Datadog.configure do |c|
|
@@ -258,9 +302,29 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
258
302
|
end
|
259
303
|
```
|
260
304
|
|
261
|
-
|
262
|
-
|
263
|
-
|
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)
|
264
328
|
|
265
329
|
### Final steps for installation
|
266
330
|
|
@@ -270,10 +334,10 @@ After setting up, your services will appear on the [APM services page](https://a
|
|
270
334
|
|
271
335
|
If you aren't using a supported framework instrumentation, you may want to manually instrument your code.
|
272
336
|
|
273
|
-
To trace any Ruby code, you can use the `Datadog.
|
337
|
+
To trace any Ruby code, you can use the `Datadog::Tracing.trace` method:
|
274
338
|
|
275
339
|
```ruby
|
276
|
-
Datadog.
|
340
|
+
Datadog::Tracing.trace(name, options) do |span, trace|
|
277
341
|
# Wrap this block around the code you want to instrument
|
278
342
|
# Additionally, you can modify the span here.
|
279
343
|
# e.g. Change the resource name, set tags, etc...
|
@@ -285,14 +349,15 @@ Where `name` should be a `String` that describes the generic kind of operation b
|
|
285
349
|
And `options` is an optional `Hash` that accepts the following parameters:
|
286
350
|
|
287
351
|
| Key | Type | Description | Default |
|
288
|
-
|
|
289
|
-
| `
|
290
|
-
| `
|
291
|
-
| `
|
292
|
-
| `
|
293
|
-
| `
|
294
|
-
| `
|
295
|
-
| `
|
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` |
|
296
361
|
|
297
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.
|
298
363
|
|
@@ -300,9 +365,9 @@ Example of manual instrumentation in action:
|
|
300
365
|
|
301
366
|
```ruby
|
302
367
|
get '/posts' do
|
303
|
-
Datadog.
|
368
|
+
Datadog::Tracing.trace('web.request', service: 'my-blog', resource: 'GET /posts') do |span|
|
304
369
|
# Trace the activerecord call
|
305
|
-
Datadog.
|
370
|
+
Datadog::Tracing.trace('posts.fetch') do
|
306
371
|
@posts = Posts.order(created_at: :desc).limit(10)
|
307
372
|
end
|
308
373
|
|
@@ -311,7 +376,7 @@ get '/posts' do
|
|
311
376
|
span.set_tag('posts.count', @posts.length)
|
312
377
|
|
313
378
|
# Trace the template rendering
|
314
|
-
Datadog.
|
379
|
+
Datadog::Tracing.trace('template.render') do
|
315
380
|
erb :index
|
316
381
|
end
|
317
382
|
end
|
@@ -320,37 +385,36 @@ end
|
|
320
385
|
|
321
386
|
### Asynchronous tracing
|
322
387
|
|
323
|
-
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.
|
324
389
|
|
325
|
-
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:
|
326
391
|
|
327
392
|
```ruby
|
328
393
|
# Some instrumentation framework calls this after an event finishes...
|
329
394
|
def db_query(start, finish, query)
|
330
|
-
span = Datadog.
|
395
|
+
span = Datadog::Tracing.trace('database.query', start_time: start)
|
331
396
|
span.resource = query
|
332
|
-
span.start_time = start
|
333
397
|
span.finish(finish)
|
334
398
|
end
|
335
399
|
```
|
336
400
|
|
337
|
-
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`.
|
338
402
|
|
339
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.
|
340
404
|
|
341
|
-
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.
|
342
406
|
|
343
407
|
```ruby
|
344
408
|
# e.g. ActiveSupport::Notifications calls this when an event starts
|
345
409
|
def start(name, id, payload)
|
346
410
|
# Start a span
|
347
|
-
Datadog.
|
411
|
+
Datadog::Tracing.trace(name)
|
348
412
|
end
|
349
413
|
|
350
414
|
# e.g. ActiveSupport::Notifications calls this when an event finishes
|
351
415
|
def finish(name, id, payload)
|
352
416
|
# Retrieve current active span (thread-safe)
|
353
|
-
current_span = Datadog.
|
417
|
+
current_span = Datadog::Tracing.active_span
|
354
418
|
unless current_span.nil?
|
355
419
|
current_span.resource = payload[:query]
|
356
420
|
current_span.finish
|
@@ -364,17 +428,16 @@ You can tag additional information to the current active span from any method. N
|
|
364
428
|
```ruby
|
365
429
|
# e.g. adding tag to active span
|
366
430
|
|
367
|
-
current_span = Datadog.
|
431
|
+
current_span = Datadog::Tracing.active_span
|
368
432
|
current_span.set_tag('my_tag', 'my_value') unless current_span.nil?
|
369
433
|
```
|
370
434
|
|
371
|
-
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.
|
372
436
|
|
373
437
|
```ruby
|
374
|
-
# e.g.
|
438
|
+
# e.g. accessing active trace
|
375
439
|
|
376
|
-
|
377
|
-
current_root_span.set_tag('my_tag', 'my_value') unless current_root_span.nil?
|
440
|
+
current_trace = Datadog::Tracing.active_trace
|
378
441
|
```
|
379
442
|
|
380
443
|
## Integration instrumentation
|
@@ -384,7 +447,7 @@ Many popular libraries and frameworks are supported out-of-the-box, which can be
|
|
384
447
|
```ruby
|
385
448
|
Datadog.configure do |c|
|
386
449
|
# Activates and configures an integration
|
387
|
-
c.
|
450
|
+
c.tracing.instrument :integration_name, options
|
388
451
|
end
|
389
452
|
```
|
390
453
|
|
@@ -392,94 +455,86 @@ end
|
|
392
455
|
|
393
456
|
For a list of available integrations, and their configuration options, please refer to the following:
|
394
457
|
|
395
|
-
| Name
|
396
|
-
|
|
397
|
-
| Action Cable
|
398
|
-
| Action Mailer
|
399
|
-
| Action
|
400
|
-
|
|
401
|
-
|
|
402
|
-
| Active
|
403
|
-
| Active Record
|
404
|
-
| Active Support
|
405
|
-
| AWS
|
406
|
-
| Concurrent Ruby
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
The Action Cable integration traces broadcast messages and channel actions.
|
446
|
-
|
447
|
-
You can enable it through `Datadog.configure`:
|
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:
|
448
507
|
|
449
508
|
```ruby
|
450
|
-
require 'ddtrace'
|
451
|
-
|
452
509
|
Datadog.configure do |c|
|
453
|
-
|
510
|
+
# Activates and configures an integration
|
511
|
+
c.ci.instrument :integration_name, options
|
454
512
|
end
|
455
513
|
```
|
456
514
|
|
457
|
-
|
515
|
+
`options` is a `Hash` of integration-specific configuration settings.
|
458
516
|
|
459
|
-
|
460
|
-
| --- | ----------- | ------- |
|
461
|
-
| `service_name` | Service name used for `action_cable` instrumentation | `'action_cable'` |
|
517
|
+
These are the available CI Visibility integrations:
|
462
518
|
|
463
|
-
|
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)* |
|
464
523
|
|
465
|
-
|
524
|
+
### Action Cable
|
525
|
+
|
526
|
+
The Action Cable integration traces broadcast messages and channel actions.
|
527
|
+
|
528
|
+
You can enable it through `Datadog.configure`:
|
466
529
|
|
467
530
|
```ruby
|
468
|
-
require 'actionview'
|
469
531
|
require 'ddtrace'
|
470
532
|
|
471
533
|
Datadog.configure do |c|
|
472
|
-
c.
|
534
|
+
c.tracing.instrument :action_cable
|
473
535
|
end
|
474
536
|
```
|
475
537
|
|
476
|
-
Where `options` is an optional `Hash` that accepts the following parameters:
|
477
|
-
|
478
|
-
| Key | Description | Default |
|
479
|
-
| ---| --- | --- |
|
480
|
-
| `service_name` | Service name used for rendering instrumentation. | `action_view` |
|
481
|
-
| `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/'` |
|
482
|
-
|
483
538
|
### Action Mailer
|
484
539
|
|
485
540
|
The Action Mailer integration provides tracing for Rails 5 ActionMailer actions.
|
@@ -488,8 +543,8 @@ You can enable it through `Datadog.configure`:
|
|
488
543
|
|
489
544
|
```ruby
|
490
545
|
require 'ddtrace'
|
491
|
-
|
492
|
-
c.
|
546
|
+
Datadog.configure do |c|
|
547
|
+
c.tracing.instrument :action_mailer, options
|
493
548
|
end
|
494
549
|
```
|
495
550
|
|
@@ -498,39 +553,31 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
498
553
|
| Key | Description | Default |
|
499
554
|
| --- | ----------- | ------- |
|
500
555
|
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
501
|
-
| `service_name` | Service name used for `action_mailer` instrumentation | `'action_mailer'` |
|
502
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` |
|
503
557
|
|
504
|
-
###
|
558
|
+
### Action Pack
|
505
559
|
|
506
|
-
|
560
|
+
Most of the time, Action Pack is set up as part of Rails, but it can be activated separately:
|
507
561
|
|
508
562
|
```ruby
|
509
|
-
require '
|
563
|
+
require 'actionpack'
|
510
564
|
require 'ddtrace'
|
511
565
|
|
512
566
|
Datadog.configure do |c|
|
513
|
-
c.
|
567
|
+
c.tracing.instrument :action_pack
|
514
568
|
end
|
515
|
-
|
516
|
-
my_object = MyModel.new(name: 'my object')
|
517
|
-
ActiveModelSerializers::SerializableResource.new(test_obj).serializable_hash
|
518
569
|
```
|
519
570
|
|
520
|
-
|
521
|
-
| --- | ----------- | ------- |
|
522
|
-
| `service_name` | Service name used for `active_model_serializers` instrumentation. | `'active_model_serializers'` |
|
523
|
-
|
524
|
-
### Action Pack
|
571
|
+
### Action View
|
525
572
|
|
526
|
-
Most of the time, Action
|
573
|
+
Most of the time, Action View is set up as part of Rails, but it can be activated separately:
|
527
574
|
|
528
575
|
```ruby
|
529
|
-
require '
|
576
|
+
require 'actionview'
|
530
577
|
require 'ddtrace'
|
531
578
|
|
532
579
|
Datadog.configure do |c|
|
533
|
-
c.
|
580
|
+
c.tracing.instrument :action_view, options
|
534
581
|
end
|
535
582
|
```
|
536
583
|
|
@@ -538,7 +585,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
538
585
|
|
539
586
|
| Key | Description | Default |
|
540
587
|
| ---| --- | --- |
|
541
|
-
| `
|
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/'` |
|
542
589
|
|
543
590
|
### Active Job
|
544
591
|
|
@@ -549,18 +596,27 @@ require 'active_job'
|
|
549
596
|
require 'ddtrace'
|
550
597
|
|
551
598
|
Datadog.configure do |c|
|
552
|
-
c.
|
599
|
+
c.tracing.instrument :active_job
|
553
600
|
end
|
554
601
|
|
555
602
|
ExampleJob.perform_later
|
556
603
|
```
|
557
604
|
|
558
|
-
|
605
|
+
### Active Model Serializers
|
559
606
|
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
607
|
+
The Active Model Serializers integration traces the `serialize` event for version 0.9+ and the `render` event for version 0.10+.
|
608
|
+
|
609
|
+
```ruby
|
610
|
+
require 'active_model_serializers'
|
611
|
+
require 'ddtrace'
|
612
|
+
|
613
|
+
Datadog.configure do |c|
|
614
|
+
c.tracing.instrument :active_model_serializers
|
615
|
+
end
|
616
|
+
|
617
|
+
my_object = MyModel.new(name: 'my object')
|
618
|
+
ActiveModelSerializers::SerializableResource.new(test_obj).serializable_hash
|
619
|
+
```
|
564
620
|
|
565
621
|
### Active Record
|
566
622
|
|
@@ -573,7 +629,7 @@ require 'active_record'
|
|
573
629
|
require 'ddtrace'
|
574
630
|
|
575
631
|
Datadog.configure do |c|
|
576
|
-
c.
|
632
|
+
c.tracing.instrument :active_record, options
|
577
633
|
end
|
578
634
|
|
579
635
|
Dir::Tmpname.create(['test', '.sqlite']) do |db|
|
@@ -587,7 +643,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
587
643
|
|
588
644
|
| Key | Description | Default |
|
589
645
|
| ---| --- | --- |
|
590
|
-
| `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'`) |
|
591
646
|
| `service_name` | Service name used for database portion of `active_record` instrumentation. | Name of database adapter (e.g. `'mysql2'`) |
|
592
647
|
|
593
648
|
**Configuring trace settings per database**
|
@@ -603,22 +658,22 @@ You can configure trace settings per database connection by using the `describes
|
|
603
658
|
Datadog.configure do |c|
|
604
659
|
# Symbol matching your database connection in config/database.yml
|
605
660
|
# Only available if you are using Rails with ActiveRecord.
|
606
|
-
c.
|
661
|
+
c.tracing.instrument :active_record, describes: :secondary_database, service_name: 'secondary-db'
|
607
662
|
|
608
663
|
# Block configuration pattern.
|
609
|
-
c.
|
664
|
+
c.tracing.instrument :active_record, describes: :secondary_database do |second_db|
|
610
665
|
second_db.service_name = 'secondary-db'
|
611
666
|
end
|
612
667
|
|
613
668
|
# Connection string with the following connection settings:
|
614
669
|
# adapter, username, host, port, database
|
615
670
|
# Other fields are ignored.
|
616
|
-
c.
|
671
|
+
c.tracing.instrument :active_record, describes: 'mysql2://root@127.0.0.1:3306/mysql', service_name: 'secondary-db'
|
617
672
|
|
618
673
|
# Hash with following connection settings:
|
619
674
|
# adapter, username, host, port, database
|
620
675
|
# Other fields are ignored.
|
621
|
-
c.
|
676
|
+
c.tracing.instrument :active_record, describes: {
|
622
677
|
adapter: 'mysql2',
|
623
678
|
host: '127.0.0.1',
|
624
679
|
port: '3306',
|
@@ -628,8 +683,8 @@ Datadog.configure do |c|
|
|
628
683
|
service_name: 'secondary-db'
|
629
684
|
|
630
685
|
# If using the `makara` gem, it's possible to match on connection `role`:
|
631
|
-
c.
|
632
|
-
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'
|
633
688
|
end
|
634
689
|
```
|
635
690
|
|
@@ -638,23 +693,23 @@ You can also create configurations based on partial matching of database connect
|
|
638
693
|
```ruby
|
639
694
|
Datadog.configure do |c|
|
640
695
|
# Matches any connection on host `127.0.0.1`.
|
641
|
-
c.
|
696
|
+
c.tracing.instrument :active_record, describes: { host: '127.0.0.1' }, service_name: 'local-db'
|
642
697
|
|
643
698
|
# Matches any `mysql2` connection.
|
644
|
-
c.
|
699
|
+
c.tracing.instrument :active_record, describes: { adapter: 'mysql2'}, service_name: 'mysql-db'
|
645
700
|
|
646
701
|
# Matches any `mysql2` connection to the `reports` database.
|
647
702
|
#
|
648
703
|
# In case of multiple matching `describe` configurations, the latest one applies.
|
649
704
|
# In this case a connection with both adapter `mysql` and database `reports`
|
650
705
|
# will be configured `service_name: 'reports-db'`, not `service_name: 'mysql-db'`.
|
651
|
-
c.
|
706
|
+
c.tracing.instrument :active_record, describes: { adapter: 'mysql2', database: 'reports'}, service_name: 'reports-db'
|
652
707
|
end
|
653
708
|
```
|
654
709
|
|
655
710
|
When multiple `describes` configurations match a connection, the latest configured rule that matches will be applied.
|
656
711
|
|
657
|
-
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.
|
658
713
|
|
659
714
|
### Active Support
|
660
715
|
|
@@ -665,7 +720,7 @@ require 'activesupport'
|
|
665
720
|
require 'ddtrace'
|
666
721
|
|
667
722
|
Datadog.configure do |c|
|
668
|
-
c.
|
723
|
+
c.tracing.instrument :active_support, options
|
669
724
|
end
|
670
725
|
|
671
726
|
cache = ActiveSupport::Cache::MemoryStore.new
|
@@ -687,7 +742,7 @@ require 'aws-sdk'
|
|
687
742
|
require 'ddtrace'
|
688
743
|
|
689
744
|
Datadog.configure do |c|
|
690
|
-
c.
|
745
|
+
c.tracing.instrument :aws, options
|
691
746
|
end
|
692
747
|
|
693
748
|
# Perform traced call
|
@@ -711,21 +766,15 @@ To activate your integration, use the `Datadog.configure` method:
|
|
711
766
|
# Inside Rails initializer or equivalent
|
712
767
|
Datadog.configure do |c|
|
713
768
|
# Patches ::Concurrent::Future to use ExecutorService that propagates context
|
714
|
-
c.
|
769
|
+
c.tracing.instrument :concurrent_ruby
|
715
770
|
end
|
716
771
|
|
717
772
|
# Pass context into code executed within Concurrent::Future
|
718
|
-
Datadog.
|
719
|
-
Concurrent::Future.execute { Datadog.
|
773
|
+
Datadog::Tracing.trace('outer') do
|
774
|
+
Concurrent::Future.execute { Datadog::Tracing.trace('inner') { } }.wait
|
720
775
|
end
|
721
776
|
```
|
722
777
|
|
723
|
-
Where `options` is an optional `Hash` that accepts the following parameters:
|
724
|
-
|
725
|
-
| Key | Description | Default |
|
726
|
-
| --- | ----------- | ------- |
|
727
|
-
| `service_name` | Service name used for `concurrent-ruby` instrumentation | `'concurrent-ruby'` |
|
728
|
-
|
729
778
|
### Cucumber
|
730
779
|
|
731
780
|
Cucumber integration will trace all executions of scenarios and steps when using `cucumber` framework.
|
@@ -738,7 +787,7 @@ require 'ddtrace'
|
|
738
787
|
|
739
788
|
# Configure default Cucumber integration
|
740
789
|
Datadog.configure do |c|
|
741
|
-
c.
|
790
|
+
c.ci.instrument :cucumber, options
|
742
791
|
end
|
743
792
|
|
744
793
|
# Example of how to attach tags from scenario to active span
|
@@ -771,7 +820,7 @@ require 'ddtrace'
|
|
771
820
|
|
772
821
|
# Configure default Dalli tracing behavior
|
773
822
|
Datadog.configure do |c|
|
774
|
-
c.
|
823
|
+
c.tracing.instrument :dalli, options
|
775
824
|
end
|
776
825
|
|
777
826
|
# Configure Dalli tracing behavior for single client
|
@@ -795,7 +844,7 @@ You can enable it through `Datadog.configure`:
|
|
795
844
|
require 'ddtrace'
|
796
845
|
|
797
846
|
Datadog.configure do |c|
|
798
|
-
c.
|
847
|
+
c.tracing.instrument :delayed_job, options
|
799
848
|
end
|
800
849
|
```
|
801
850
|
|
@@ -803,8 +852,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
803
852
|
|
804
853
|
| Key | Description | Default |
|
805
854
|
| --- | ----------- | ------- |
|
806
|
-
| `service_name` | Service name used for `DelayedJob` instrumentation | `'delayed_job'` |
|
807
|
-
| `client_service_name` | Service name used for client-side `DelayedJob` instrumentation | `'delayed_job-client'` |
|
808
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? }` |
|
809
856
|
|
810
857
|
### Elasticsearch
|
@@ -816,7 +863,7 @@ require 'elasticsearch/transport'
|
|
816
863
|
require 'ddtrace'
|
817
864
|
|
818
865
|
Datadog.configure do |c|
|
819
|
-
c.
|
866
|
+
c.tracing.instrument :elasticsearch, options
|
820
867
|
end
|
821
868
|
|
822
869
|
# Perform a query to Elasticsearch
|
@@ -839,10 +886,10 @@ The `ethon` integration will trace any HTTP request through `Easy` or `Multi` ob
|
|
839
886
|
require 'ddtrace'
|
840
887
|
|
841
888
|
Datadog.configure do |c|
|
842
|
-
c.
|
889
|
+
c.tracing.instrument :ethon, options
|
843
890
|
|
844
891
|
# optionally, specify a different service name for hostnames matching a regex
|
845
|
-
c.
|
892
|
+
c.tracing.instrument :ethon, describes: /user-[^.]+\.example\.com/ do |ethon|
|
846
893
|
ethon.service_name = 'user.example.com'
|
847
894
|
ethon.split_by_domain = false # Only necessary if split_by_domain is true by default
|
848
895
|
end
|
@@ -867,10 +914,10 @@ require 'ddtrace'
|
|
867
914
|
|
868
915
|
# Configure default Excon tracing behavior
|
869
916
|
Datadog.configure do |c|
|
870
|
-
c.
|
917
|
+
c.tracing.instrument :excon, options
|
871
918
|
|
872
919
|
# optionally, specify a different service name for hostnames matching a regex
|
873
|
-
c.
|
920
|
+
c.tracing.instrument :excon, describes: /user-[^.]+\.example\.com/ do |excon|
|
874
921
|
excon.service_name = 'user.example.com'
|
875
922
|
excon.split_by_domain = false # Only necessary if split_by_domain is true by default
|
876
923
|
end
|
@@ -897,7 +944,7 @@ If you use multiple connections with Excon, you can give each of them different
|
|
897
944
|
# Wrap the Datadog tracing middleware around the default middleware stack
|
898
945
|
Excon.new(
|
899
946
|
'http://example.com',
|
900
|
-
middlewares: Datadog::Contrib::Excon::Middleware.with(options).around_default_stack
|
947
|
+
middlewares: Datadog::Tracing::Contrib::Excon::Middleware.with(options).around_default_stack
|
901
948
|
)
|
902
949
|
|
903
950
|
# Insert the middleware into a custom middleware stack.
|
@@ -906,7 +953,7 @@ Excon.new(
|
|
906
953
|
'http://example.com',
|
907
954
|
middlewares: [
|
908
955
|
Excon::Middleware::ResponseParser,
|
909
|
-
Datadog::Contrib::Excon::Middleware.with(options),
|
956
|
+
Datadog::Tracing::Contrib::Excon::Middleware.with(options),
|
910
957
|
Excon::Middleware::Idempotent
|
911
958
|
]
|
912
959
|
)
|
@@ -924,10 +971,10 @@ require 'ddtrace'
|
|
924
971
|
|
925
972
|
# Configure default Faraday tracing behavior
|
926
973
|
Datadog.configure do |c|
|
927
|
-
c.
|
974
|
+
c.tracing.instrument :faraday, options
|
928
975
|
|
929
976
|
# optionally, specify a different service name for hostnames matching a regex
|
930
|
-
c.
|
977
|
+
c.tracing.instrument :faraday, describes: /user-[^.]+\.example\.com/ do |faraday|
|
931
978
|
faraday.service_name = 'user.example.com'
|
932
979
|
faraday.split_by_domain = false # Only necessary if split_by_domain is true by default
|
933
980
|
end
|
@@ -963,7 +1010,7 @@ require 'grape'
|
|
963
1010
|
require 'ddtrace'
|
964
1011
|
|
965
1012
|
Datadog.configure do |c|
|
966
|
-
c.
|
1013
|
+
c.tracing.instrument :grape, options
|
967
1014
|
end
|
968
1015
|
|
969
1016
|
# Then define your application
|
@@ -980,7 +1027,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
980
1027
|
| Key | Description | Default |
|
981
1028
|
| --- | ----------- | ------- |
|
982
1029
|
| `enabled` | Defines whether Grape should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
983
|
-
| `service_name` | Service name used for `grape` instrumentation | `'grape'` |
|
984
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` |
|
985
1031
|
|
986
1032
|
### GraphQL
|
@@ -992,7 +1038,7 @@ To activate your integration, use the `Datadog.configure` method:
|
|
992
1038
|
```ruby
|
993
1039
|
# Inside Rails initializer or equivalent
|
994
1040
|
Datadog.configure do |c|
|
995
|
-
c.
|
1041
|
+
c.tracing.instrument :graphql, schemas: [YourSchema], options
|
996
1042
|
end
|
997
1043
|
|
998
1044
|
# Then run a GraphQL query
|
@@ -1003,7 +1049,6 @@ The `use :graphql` method accepts the following parameters. Additional options c
|
|
1003
1049
|
|
1004
1050
|
| Key | Description | Default |
|
1005
1051
|
| --- | ----------- | ------- |
|
1006
|
-
| `service_name` | Service name used for `graphql` instrumentation | `'ruby-graphql'` |
|
1007
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. | `[]` |
|
1008
1053
|
|
1009
1054
|
**Manually configuring GraphQL schemas**
|
@@ -1063,7 +1108,7 @@ require 'grpc'
|
|
1063
1108
|
require 'ddtrace'
|
1064
1109
|
|
1065
1110
|
Datadog.configure do |c|
|
1066
|
-
c.
|
1111
|
+
c.tracing.instrument :grpc, options
|
1067
1112
|
end
|
1068
1113
|
|
1069
1114
|
# Server side
|
@@ -1089,7 +1134,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1089
1134
|
In situations where you have multiple clients calling multiple distinct services, you may pass the Datadog interceptor directly, like so
|
1090
1135
|
|
1091
1136
|
```ruby
|
1092
|
-
configured_interceptor = Datadog::Contrib::GRPC::DatadogInterceptor::Client.new do |c|
|
1137
|
+
configured_interceptor = Datadog::Tracing::Contrib::GRPC::DatadogInterceptor::Client.new do |c|
|
1093
1138
|
c.service_name = "Alternate"
|
1094
1139
|
end
|
1095
1140
|
|
@@ -1110,9 +1155,9 @@ The http.rb integration will trace any HTTP call using the Http.rb gem.
|
|
1110
1155
|
require 'http'
|
1111
1156
|
require 'ddtrace'
|
1112
1157
|
Datadog.configure do |c|
|
1113
|
-
c.
|
1158
|
+
c.tracing.instrument :httprb, options
|
1114
1159
|
# optionally, specify a different service name for hostnames matching a regex
|
1115
|
-
c.
|
1160
|
+
c.tracing.instrument :httprb, describes: /user-[^.]+\.example\.com/ do |httprb|
|
1116
1161
|
httprb.service_name = 'user.example.com'
|
1117
1162
|
httprb.split_by_domain = false # Only necessary if split_by_domain is true by default
|
1118
1163
|
end
|
@@ -1135,9 +1180,9 @@ The httpclient integration will trace any HTTP call using the httpclient gem.
|
|
1135
1180
|
require 'httpclient'
|
1136
1181
|
require 'ddtrace'
|
1137
1182
|
Datadog.configure do |c|
|
1138
|
-
c.
|
1183
|
+
c.tracing.instrument :httpclient, options
|
1139
1184
|
# optionally, specify a different service name for hostnames matching a regex
|
1140
|
-
c.
|
1185
|
+
c.tracing.instrument :httpclient, describes: /user-[^.]+\.example\.com/ do |httpclient|
|
1141
1186
|
httpclient.service_name = 'user.example.com'
|
1142
1187
|
httpclient.split_by_domain = false # Only necessary if split_by_domain is true by default
|
1143
1188
|
end
|
@@ -1161,10 +1206,10 @@ require "ddtrace"
|
|
1161
1206
|
require "httpx/adapters/datadog"
|
1162
1207
|
|
1163
1208
|
Datadog.configure do |c|
|
1164
|
-
c.
|
1209
|
+
c.tracing.instrument :httpx
|
1165
1210
|
|
1166
1211
|
# optionally, specify a different service name for hostnames matching a regex
|
1167
|
-
c.
|
1212
|
+
c.tracing.instrument :httpx, describes: /user-[^.]+\.example\.com/ do |http|
|
1168
1213
|
http.service_name = 'user.example.com'
|
1169
1214
|
http.split_by_domain = false # Only necessary if split_by_domain is true by default
|
1170
1215
|
end
|
@@ -1183,17 +1228,10 @@ require 'kafka'
|
|
1183
1228
|
require 'ddtrace'
|
1184
1229
|
|
1185
1230
|
Datadog.configure do |c|
|
1186
|
-
c.
|
1231
|
+
c.tracing.instrument :kafka
|
1187
1232
|
end
|
1188
1233
|
```
|
1189
1234
|
|
1190
|
-
Where `options` is an optional `Hash` that accepts the following parameters:
|
1191
|
-
|
1192
|
-
| Key | Description | Default |
|
1193
|
-
| --- | ----------- | ------- |
|
1194
|
-
| `service_name` | Service name used for `kafka` instrumentation | `'kafka'` |
|
1195
|
-
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
1196
|
-
|
1197
1235
|
### MongoDB
|
1198
1236
|
|
1199
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:
|
@@ -1203,7 +1241,7 @@ require 'mongo'
|
|
1203
1241
|
require 'ddtrace'
|
1204
1242
|
|
1205
1243
|
Datadog.configure do |c|
|
1206
|
-
c.
|
1244
|
+
c.tracing.instrument :mongo, options
|
1207
1245
|
end
|
1208
1246
|
|
1209
1247
|
# Create a MongoDB client and use it as usual
|
@@ -1212,7 +1250,7 @@ collection = client[:people]
|
|
1212
1250
|
collection.insert_one({ name: 'Steve' })
|
1213
1251
|
|
1214
1252
|
# In case you want to override the global configuration for a certain client instance
|
1215
|
-
Datadog.
|
1253
|
+
Datadog.configure_onto(client, **options)
|
1216
1254
|
```
|
1217
1255
|
|
1218
1256
|
Where `options` is an optional `Hash` that accepts the following parameters:
|
@@ -1234,10 +1272,10 @@ You can configure trace settings per connection by using the `describes` option:
|
|
1234
1272
|
|
1235
1273
|
Datadog.configure do |c|
|
1236
1274
|
# Network connection string
|
1237
|
-
c.
|
1275
|
+
c.tracing.instrument :mongo, describes: '127.0.0.1:27017', service_name: 'mongo-primary'
|
1238
1276
|
|
1239
1277
|
# Network connection regular expression
|
1240
|
-
c.
|
1278
|
+
c.tracing.instrument :mongo, describes: /localhost.*/, service_name: 'mongo-secondary'
|
1241
1279
|
end
|
1242
1280
|
|
1243
1281
|
client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'artists')
|
@@ -1262,7 +1300,7 @@ require 'mysql2'
|
|
1262
1300
|
require 'ddtrace'
|
1263
1301
|
|
1264
1302
|
Datadog.configure do |c|
|
1265
|
-
c.
|
1303
|
+
c.tracing.instrument :mysql2, options
|
1266
1304
|
end
|
1267
1305
|
|
1268
1306
|
client = Mysql2::Client.new(:host => "localhost", :username => "root")
|
@@ -1284,10 +1322,10 @@ require 'net/http'
|
|
1284
1322
|
require 'ddtrace'
|
1285
1323
|
|
1286
1324
|
Datadog.configure do |c|
|
1287
|
-
c.
|
1325
|
+
c.tracing.instrument :http, options
|
1288
1326
|
|
1289
1327
|
# optionally, specify a different service name for hostnames matching a regex
|
1290
|
-
c.
|
1328
|
+
c.tracing.instrument :http, describes: /user-[^.]+\.example\.com/ do |http|
|
1291
1329
|
http.service_name = 'user.example.com'
|
1292
1330
|
http.split_by_domain = false # Only necessary if split_by_domain is true by default
|
1293
1331
|
end
|
@@ -1309,11 +1347,11 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1309
1347
|
| `service_name` | Service name used for `http` instrumentation | `'net/http'` |
|
1310
1348
|
| `split_by_domain` | Uses the request domain as the service name when set to `true`. | `false` |
|
1311
1349
|
|
1312
|
-
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:
|
1313
1351
|
|
1314
1352
|
```ruby
|
1315
1353
|
client = Net::HTTP.new(host, port)
|
1316
|
-
Datadog.
|
1354
|
+
Datadog.configure_onto(client, **options)
|
1317
1355
|
```
|
1318
1356
|
|
1319
1357
|
### Presto
|
@@ -1325,7 +1363,7 @@ require 'presto-client'
|
|
1325
1363
|
require 'ddtrace'
|
1326
1364
|
|
1327
1365
|
Datadog.configure do |c|
|
1328
|
-
c.
|
1366
|
+
c.tracing.instrument :presto, options
|
1329
1367
|
end
|
1330
1368
|
|
1331
1369
|
client = Presto::Client.new(
|
@@ -1357,7 +1395,7 @@ To add tracing to a Qless job:
|
|
1357
1395
|
require 'ddtrace'
|
1358
1396
|
|
1359
1397
|
Datadog.configure do |c|
|
1360
|
-
c.
|
1398
|
+
c.tracing.instrument :qless, options
|
1361
1399
|
end
|
1362
1400
|
```
|
1363
1401
|
|
@@ -1365,7 +1403,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1365
1403
|
|
1366
1404
|
| Key | Description | Default |
|
1367
1405
|
| --- | ----------- | ------- |
|
1368
|
-
| `service_name` | Service name used for `qless` instrumentation | `'qless'` |
|
1369
1406
|
| `tag_job_data` | Enable tagging with job arguments. true for on, false for off. | `false` |
|
1370
1407
|
| `tag_job_tags` | Enable tagging with job tags. true for on, false for off. | `false` |
|
1371
1408
|
|
@@ -1379,7 +1416,7 @@ You can enable it through `Datadog.configure`:
|
|
1379
1416
|
require 'ddtrace'
|
1380
1417
|
|
1381
1418
|
Datadog.configure do |c|
|
1382
|
-
c.
|
1419
|
+
c.tracing.instrument :que, options
|
1383
1420
|
end
|
1384
1421
|
```
|
1385
1422
|
|
@@ -1388,7 +1425,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1388
1425
|
| Key | Description | Default |
|
1389
1426
|
| --- | ----------- | ------- |
|
1390
1427
|
| `enabled` | Defines whether Que should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
1391
|
-
| `service_name` | Service name used for `que` instrumentation | `'que'` |
|
1392
1428
|
| `tag_args` | Enable tagging of a job's args field. `true` for on, `false` for off. | `false` |
|
1393
1429
|
| `tag_data` | Enable tagging of a job's data field. `true` for on, `false` for off. | `false` |
|
1394
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? }` |
|
@@ -1403,7 +1439,7 @@ You can enable it through `Datadog.configure`:
|
|
1403
1439
|
require 'ddtrace'
|
1404
1440
|
|
1405
1441
|
Datadog.configure do |c|
|
1406
|
-
c.
|
1442
|
+
c.tracing.instrument :racecar, options
|
1407
1443
|
end
|
1408
1444
|
```
|
1409
1445
|
|
@@ -1424,10 +1460,10 @@ This integration is automatically activated with web frameworks like Rails. If y
|
|
1424
1460
|
require 'ddtrace'
|
1425
1461
|
|
1426
1462
|
Datadog.configure do |c|
|
1427
|
-
c.
|
1463
|
+
c.tracing.instrument :rack, options
|
1428
1464
|
end
|
1429
1465
|
|
1430
|
-
use Datadog::Contrib::Rack::TraceMiddleware
|
1466
|
+
use Datadog::Tracing::Contrib::Rack::TraceMiddleware
|
1431
1467
|
|
1432
1468
|
app = proc do |env|
|
1433
1469
|
[ 200, {'Content-Type' => 'text/plain'}, ['OK'] ]
|
@@ -1450,7 +1486,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1450
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` |
|
1451
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` |
|
1452
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` |
|
1453
|
-
| `service_name` | Service name used for `rack` instrumentation | `'rack'` |
|
1454
1489
|
| `web_service_name` | Service name for frontend server request queuing spans. (e.g. `'nginx'`) | `'web-server'` |
|
1455
1490
|
|
1456
1491
|
**Configuring URL quantization behavior**
|
@@ -1463,23 +1498,23 @@ Datadog.configure do |c|
|
|
1463
1498
|
|
1464
1499
|
# Show values for any query string parameter matching 'category_id' exactly
|
1465
1500
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id=1&sort_by
|
1466
|
-
c.
|
1501
|
+
c.tracing.instrument :rack, quantize: { query: { show: ['category_id'] } }
|
1467
1502
|
|
1468
1503
|
# Show all values for all query string parameters
|
1469
1504
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id=1&sort_by=asc
|
1470
|
-
c.
|
1505
|
+
c.tracing.instrument :rack, quantize: { query: { show: :all } }
|
1471
1506
|
|
1472
1507
|
# Totally exclude any query string parameter matching 'sort_by' exactly
|
1473
1508
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id
|
1474
|
-
c.
|
1509
|
+
c.tracing.instrument :rack, quantize: { query: { exclude: ['sort_by'] } }
|
1475
1510
|
|
1476
1511
|
# Remove the query string entirely
|
1477
1512
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path
|
1478
|
-
c.
|
1513
|
+
c.tracing.instrument :rack, quantize: { query: { exclude: :all } }
|
1479
1514
|
|
1480
1515
|
# Show URL fragments
|
1481
1516
|
# http://example.com/path?category_id=1&sort_by=asc#featured --> http://example.com/path?category_id&sort_by#featured
|
1482
|
-
c.
|
1517
|
+
c.tracing.instrument :rack, quantize: { fragment: :show }
|
1483
1518
|
end
|
1484
1519
|
```
|
1485
1520
|
|
@@ -1494,7 +1529,7 @@ To enable the Rails instrumentation, create an initializer file in your `config/
|
|
1494
1529
|
require 'ddtrace'
|
1495
1530
|
|
1496
1531
|
Datadog.configure do |c|
|
1497
|
-
c.
|
1532
|
+
c.tracing.instrument :rails, options
|
1498
1533
|
end
|
1499
1534
|
```
|
1500
1535
|
|
@@ -1503,23 +1538,20 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1503
1538
|
| Key | Description | Default |
|
1504
1539
|
| --- | ----------- | ------- |
|
1505
1540
|
| `cache_service` | Cache service name used when tracing cache activity | `'<app_name>-cache'` |
|
1506
|
-
| `controller_service` | Service name used when tracing a Rails action controller | `'<app_name>'` |
|
1507
1541
|
| `database_service` | Database service name used when tracing database activity | `'<app_name>-<adapter_name>'` |
|
1508
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` |
|
1509
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` |
|
1510
|
-
| `job_service` | Service name used when tracing ActiveJob activity. | `<app_name>-active_job` |
|
1511
1544
|
| `middleware` | Add the trace middleware to the Rails application. Set to `false` if you don't want the middleware to load. | `true` |
|
1512
1545
|
| `middleware_names` | Enables any short-circuited middleware requests to display the middleware name as a resource for the trace. | `false` |
|
1513
1546
|
| `service_name` | Service name used when tracing application requests (on the `rack` level) | `'<app_name>'` (inferred from your Rails application namespace) |
|
1514
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/'` |
|
1515
|
-
| `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` |
|
1516
1548
|
|
1517
1549
|
**Supported versions**
|
1518
1550
|
|
1519
1551
|
| MRI Versions | JRuby Versions | Rails Versions |
|
1520
1552
|
| ------------- | -------------- | -------------- |
|
1521
|
-
| 2.1 | | 3.
|
1522
|
-
| 2.2 - 2.3 | | 3.
|
1553
|
+
| 2.1 | | 3.2 - 4.2 |
|
1554
|
+
| 2.2 - 2.3 | | 3.2 - 5.2 |
|
1523
1555
|
| 2.4 | | 4.2.8 - 5.2 |
|
1524
1556
|
| 2.5 | | 4.2.8 - 6.1 |
|
1525
1557
|
| 2.6 - 2.7 | 9.2 | 5.0 - 6.1 |
|
@@ -1537,7 +1569,7 @@ require 'rake'
|
|
1537
1569
|
require 'ddtrace'
|
1538
1570
|
|
1539
1571
|
Datadog.configure do |c|
|
1540
|
-
c.
|
1572
|
+
c.tracing.instrument :rake, options
|
1541
1573
|
end
|
1542
1574
|
|
1543
1575
|
task :my_task do
|
@@ -1553,7 +1585,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1553
1585
|
| --- | ----------- | ------- |
|
1554
1586
|
| `enabled` | Defines whether Rake tasks should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
1555
1587
|
| `quantize` | Hash containing options for quantization of task arguments. See below for more details and examples. | `{}` |
|
1556
|
-
| `service_name` | Service name used for `rake` instrumentation | `'rake'` |
|
1557
1588
|
|
1558
1589
|
**Configuring task quantization behavior**
|
1559
1590
|
|
@@ -1565,27 +1596,27 @@ Datadog.configure do |c|
|
|
1565
1596
|
# Default behavior: all arguments are quantized.
|
1566
1597
|
# `rake.invoke.args` tag --> ['?']
|
1567
1598
|
# `rake.execute.args` tag --> { one: '?', two: '?', three: '?' }
|
1568
|
-
c.
|
1599
|
+
c.tracing.instrument :rake
|
1569
1600
|
|
1570
1601
|
# Show values for any argument matching :two exactly
|
1571
1602
|
# `rake.invoke.args` tag --> ['?']
|
1572
1603
|
# `rake.execute.args` tag --> { one: '?', two: 'bar', three: '?' }
|
1573
|
-
c.
|
1604
|
+
c.tracing.instrument :rake, quantize: { args: { show: [:two] } }
|
1574
1605
|
|
1575
1606
|
# Show all values for all arguments.
|
1576
1607
|
# `rake.invoke.args` tag --> ['foo', 'bar', 'baz']
|
1577
1608
|
# `rake.execute.args` tag --> { one: 'foo', two: 'bar', three: 'baz' }
|
1578
|
-
c.
|
1609
|
+
c.tracing.instrument :rake, quantize: { args: { show: :all } }
|
1579
1610
|
|
1580
1611
|
# Totally exclude any argument matching :three exactly
|
1581
1612
|
# `rake.invoke.args` tag --> ['?']
|
1582
1613
|
# `rake.execute.args` tag --> { one: '?', two: '?' }
|
1583
|
-
c.
|
1614
|
+
c.tracing.instrument :rake, quantize: { args: { exclude: [:three] } }
|
1584
1615
|
|
1585
1616
|
# Remove the arguments entirely
|
1586
1617
|
# `rake.invoke.args` tag --> ['?']
|
1587
1618
|
# `rake.execute.args` tag --> {}
|
1588
|
-
c.
|
1619
|
+
c.tracing.instrument :rake, quantize: { args: { exclude: :all } }
|
1589
1620
|
end
|
1590
1621
|
```
|
1591
1622
|
|
@@ -1598,7 +1629,7 @@ require 'redis'
|
|
1598
1629
|
require 'ddtrace'
|
1599
1630
|
|
1600
1631
|
Datadog.configure do |c|
|
1601
|
-
c.
|
1632
|
+
c.tracing.instrument :redis, options
|
1602
1633
|
end
|
1603
1634
|
|
1604
1635
|
# Perform Redis commands
|
@@ -1620,14 +1651,14 @@ require 'redis'
|
|
1620
1651
|
require 'ddtrace'
|
1621
1652
|
|
1622
1653
|
Datadog.configure do |c|
|
1623
|
-
c.
|
1654
|
+
c.tracing.instrument :redis # Enabling integration instrumentation is still required
|
1624
1655
|
end
|
1625
1656
|
|
1626
1657
|
customer_cache = Redis.new
|
1627
1658
|
invoice_cache = Redis.new
|
1628
1659
|
|
1629
|
-
Datadog.
|
1630
|
-
Datadog.
|
1660
|
+
Datadog.configure_onto(customer_cache, service_name: 'customer-cache')
|
1661
|
+
Datadog.configure_onto(invoice_cache, service_name: 'invoice-cache')
|
1631
1662
|
|
1632
1663
|
# Traced call will belong to `customer-cache` service
|
1633
1664
|
customer_cache.get(...)
|
@@ -1647,23 +1678,23 @@ You can configure trace settings per connection by using the `describes` option:
|
|
1647
1678
|
|
1648
1679
|
Datadog.configure do |c|
|
1649
1680
|
# The default configuration for any redis client
|
1650
|
-
c.
|
1681
|
+
c.tracing.instrument :redis, service_name: 'redis-default'
|
1651
1682
|
|
1652
1683
|
# The configuration matching a given unix socket.
|
1653
|
-
c.
|
1684
|
+
c.tracing.instrument :redis, describes: { url: 'unix://path/to/file' }, service_name: 'redis-unix'
|
1654
1685
|
|
1655
1686
|
# For network connections, only these fields are considered during matching:
|
1656
1687
|
# scheme, host, port, db
|
1657
1688
|
# Other fields are ignored.
|
1658
1689
|
|
1659
1690
|
# Network connection string
|
1660
|
-
c.
|
1661
|
-
c.
|
1691
|
+
c.tracing.instrument :redis, describes: 'redis://127.0.0.1:6379/0', service_name: 'redis-connection-string'
|
1692
|
+
c.tracing.instrument :redis, describes: { url: 'redis://127.0.0.1:6379/1' }, service_name: 'redis-connection-url'
|
1662
1693
|
# Network client hash
|
1663
|
-
c.
|
1694
|
+
c.tracing.instrument :redis, describes: { host: 'my-host.com', port: 6379, db: 1, scheme: 'redis' }, service_name: 'redis-connection-hash'
|
1664
1695
|
# Only a subset of the connection hash
|
1665
|
-
c.
|
1666
|
-
c.
|
1696
|
+
c.tracing.instrument :redis, describes: { host: ENV['APP_CACHE_HOST'], port: ENV['APP_CACHE_PORT'] }, service_name: 'redis-cache'
|
1697
|
+
c.tracing.instrument :redis, describes: { host: ENV['SIDEKIQ_CACHE_HOST'] }, service_name: 'redis-sidekiq'
|
1667
1698
|
end
|
1668
1699
|
```
|
1669
1700
|
|
@@ -1680,7 +1711,7 @@ require 'resque'
|
|
1680
1711
|
require 'ddtrace'
|
1681
1712
|
|
1682
1713
|
Datadog.configure do |c|
|
1683
|
-
c.
|
1714
|
+
c.tracing.instrument :resque, **options
|
1684
1715
|
end
|
1685
1716
|
```
|
1686
1717
|
|
@@ -1688,9 +1719,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1688
1719
|
|
1689
1720
|
| Key | Description | Default |
|
1690
1721
|
| --- | ----------- | ------- |
|
1691
|
-
| `service_name` | Service name used for `resque` instrumentation | `'resque'` |
|
1692
1722
|
| `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? }` |
|
1693
|
-
| `workers` | **[DEPRECATED]** Limits instrumented worker classes to only the ones specified in an array (e.g. `[MyJob]`). If not provided, instruments all workers. | `nil` |
|
1694
1723
|
|
1695
1724
|
### Rest Client
|
1696
1725
|
|
@@ -1701,7 +1730,7 @@ require 'rest_client'
|
|
1701
1730
|
require 'ddtrace'
|
1702
1731
|
|
1703
1732
|
Datadog.configure do |c|
|
1704
|
-
c.
|
1733
|
+
c.tracing.instrument :rest_client, options
|
1705
1734
|
end
|
1706
1735
|
```
|
1707
1736
|
|
@@ -1724,7 +1753,7 @@ require 'ddtrace'
|
|
1724
1753
|
|
1725
1754
|
# Configure default RSpec integration
|
1726
1755
|
Datadog.configure do |c|
|
1727
|
-
c.
|
1756
|
+
c.ci.instrument :rspec, options
|
1728
1757
|
end
|
1729
1758
|
```
|
1730
1759
|
|
@@ -1754,7 +1783,7 @@ database.create_table :articles do
|
|
1754
1783
|
end
|
1755
1784
|
|
1756
1785
|
Datadog.configure do |c|
|
1757
|
-
c.
|
1786
|
+
c.tracing.instrument :sequel, options
|
1758
1787
|
end
|
1759
1788
|
|
1760
1789
|
# Perform a query
|
@@ -1777,8 +1806,8 @@ sqlite_database = Sequel.sqlite
|
|
1777
1806
|
postgres_database = Sequel.connect('postgres://user:password@host:port/database_name')
|
1778
1807
|
|
1779
1808
|
# Configure each database with different service names
|
1780
|
-
Datadog.
|
1781
|
-
Datadog.
|
1809
|
+
Datadog.configure_onto(sqlite_database, service_name: 'my-sqlite-db')
|
1810
|
+
Datadog.configure_onto(postgres_database, service_name: 'my-postgres-db')
|
1782
1811
|
```
|
1783
1812
|
|
1784
1813
|
### Shoryuken
|
@@ -1791,7 +1820,7 @@ You can enable it through `Datadog.configure`:
|
|
1791
1820
|
require 'ddtrace'
|
1792
1821
|
|
1793
1822
|
Datadog.configure do |c|
|
1794
|
-
c.
|
1823
|
+
c.tracing.instrument :shoryuken, options
|
1795
1824
|
end
|
1796
1825
|
```
|
1797
1826
|
|
@@ -1799,7 +1828,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1799
1828
|
|
1800
1829
|
| Key | Description | Default |
|
1801
1830
|
| --- | ----------- | ------- |
|
1802
|
-
| `service_name` | Service name used for `shoryuken` instrumentation | `'shoryuken'` |
|
1803
1831
|
| `tag_body` | Tag spans with the SQS message body `true` or `false` | `false` |
|
1804
1832
|
| `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? }` |
|
1805
1833
|
|
@@ -1813,7 +1841,7 @@ You can enable it through `Datadog.configure`:
|
|
1813
1841
|
require 'ddtrace'
|
1814
1842
|
|
1815
1843
|
Datadog.configure do |c|
|
1816
|
-
c.
|
1844
|
+
c.tracing.instrument :sidekiq, options
|
1817
1845
|
end
|
1818
1846
|
```
|
1819
1847
|
|
@@ -1821,8 +1849,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1821
1849
|
|
1822
1850
|
| Key | Description | Default |
|
1823
1851
|
| --- | ----------- | ------- |
|
1824
|
-
| `client_service_name` | Service name used for client-side `sidekiq` instrumentation | `'sidekiq-client'` |
|
1825
|
-
| `service_name` | Service name used for server-side `sidekiq` instrumentation | `'sidekiq'` |
|
1826
1852
|
| `tag_args` | Enable tagging of job arguments. `true` for on, `false` for off. | `false` |
|
1827
1853
|
| `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? }` |
|
1828
1854
|
|
@@ -1839,7 +1865,7 @@ require 'sinatra'
|
|
1839
1865
|
require 'ddtrace'
|
1840
1866
|
|
1841
1867
|
Datadog.configure do |c|
|
1842
|
-
c.
|
1868
|
+
c.tracing.instrument :sinatra, options
|
1843
1869
|
end
|
1844
1870
|
|
1845
1871
|
get '/' do
|
@@ -1854,11 +1880,11 @@ require 'sinatra/base'
|
|
1854
1880
|
require 'ddtrace'
|
1855
1881
|
|
1856
1882
|
Datadog.configure do |c|
|
1857
|
-
c.
|
1883
|
+
c.tracing.instrument :sinatra, options
|
1858
1884
|
end
|
1859
1885
|
|
1860
1886
|
class NestedApp < Sinatra::Base
|
1861
|
-
register Datadog::Contrib::Sinatra::Tracer
|
1887
|
+
register Datadog::Tracing::Contrib::Sinatra::Tracer
|
1862
1888
|
|
1863
1889
|
get '/nested' do
|
1864
1890
|
'Hello from nested app!'
|
@@ -1866,7 +1892,7 @@ class NestedApp < Sinatra::Base
|
|
1866
1892
|
end
|
1867
1893
|
|
1868
1894
|
class App < Sinatra::Base
|
1869
|
-
register Datadog::Contrib::Sinatra::Tracer
|
1895
|
+
register Datadog::Tracing::Contrib::Sinatra::Tracer
|
1870
1896
|
|
1871
1897
|
use NestedApp
|
1872
1898
|
|
@@ -1876,7 +1902,7 @@ class App < Sinatra::Base
|
|
1876
1902
|
end
|
1877
1903
|
```
|
1878
1904
|
|
1879
|
-
Ensure you register `Datadog::Contrib::Sinatra::Tracer` as a middleware before you mount your nested applications.
|
1905
|
+
Ensure you register `Datadog::Tracing::Contrib::Sinatra::Tracer` as a middleware before you mount your nested applications.
|
1880
1906
|
|
1881
1907
|
#### Instrumentation options
|
1882
1908
|
|
@@ -1887,7 +1913,6 @@ Ensure you register `Datadog::Contrib::Sinatra::Tracer` as a middleware before y
|
|
1887
1913
|
| `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` |
|
1888
1914
|
| `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'] }` |
|
1889
1915
|
| `resource_script_names` | Prepend resource names with script name | `false` |
|
1890
|
-
| `service_name` | Service name used for `sinatra` instrumentation | `'sinatra'` |
|
1891
1916
|
|
1892
1917
|
### Sneakers
|
1893
1918
|
|
@@ -1899,7 +1924,7 @@ You can enable it through `Datadog.configure`:
|
|
1899
1924
|
require 'ddtrace'
|
1900
1925
|
|
1901
1926
|
Datadog.configure do |c|
|
1902
|
-
c.
|
1927
|
+
c.tracing.instrument :sneakers, options
|
1903
1928
|
end
|
1904
1929
|
```
|
1905
1930
|
|
@@ -1908,7 +1933,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1908
1933
|
| Key | Description | Default |
|
1909
1934
|
| --- | ----------- | ------- |
|
1910
1935
|
| `enabled` | Defines whether Sneakers should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
1911
|
-
| `service_name` | Service name used for `sneakers` instrumentation | `'sneakers'` |
|
1912
1936
|
| `tag_body` | Enable tagging of job message. `true` for on, `false` for off. | `false` |
|
1913
1937
|
| `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? }` |
|
1914
1938
|
|
@@ -1920,63 +1944,57 @@ The `sucker_punch` integration traces all scheduled jobs:
|
|
1920
1944
|
require 'ddtrace'
|
1921
1945
|
|
1922
1946
|
Datadog.configure do |c|
|
1923
|
-
c.
|
1947
|
+
c.tracing.instrument :sucker_punch
|
1924
1948
|
end
|
1925
1949
|
|
1926
1950
|
# Execution of this job is traced
|
1927
1951
|
LogJob.perform_async('login')
|
1928
1952
|
```
|
1929
1953
|
|
1930
|
-
|
1931
|
-
|
1932
|
-
| Key | Description | Default |
|
1933
|
-
| --- | ----------- | ------- |
|
1934
|
-
| `service_name` | Service name used for `sucker_punch` instrumentation | `'sucker_punch'` |
|
1935
|
-
|
1936
|
-
## Advanced configuration
|
1954
|
+
## Additional configuration
|
1937
1955
|
|
1938
|
-
|
1939
|
-
|
1940
|
-
To change the default behavior of the Datadog tracer, you can provide custom options inside the `Datadog.configure` block as in:
|
1956
|
+
To change the default behavior of Datadog tracing, you can set environment variables, or provide custom options inside a `Datadog.configure` block, e.g.:
|
1941
1957
|
|
1942
1958
|
```ruby
|
1943
|
-
# config/initializers/datadog-tracer.rb
|
1944
|
-
|
1945
1959
|
Datadog.configure do |c|
|
1946
|
-
c.
|
1947
|
-
c.
|
1948
|
-
|
1949
|
-
|
1950
|
-
|
1951
|
-
|
1952
|
-
|
1953
|
-
|
1954
|
-
|
1955
|
-
|
1956
|
-
|
1957
|
-
|
1958
|
-
|
1959
|
-
|
1960
|
-
|
1961
|
-
|
1962
|
-
|
1963
|
-
|
1964
|
-
|
1965
|
-
|
1966
|
-
|
1967
|
-
|
1968
|
-
|
1969
|
-
|
1970
|
-
|
1971
|
-
|
1972
|
-
|
1973
|
-
|
1974
|
-
|
1975
|
-
|
1976
|
-
|
1977
|
-
|
1978
|
-
|
1979
|
-
|
1960
|
+
c.service = 'billing-api'
|
1961
|
+
c.env = ENV['RACK_ENV']
|
1962
|
+
|
1963
|
+
c.tracing.report_hostname = true
|
1964
|
+
c.tracing.test_mode.enabled = (ENV['RACK_ENV'] == 'test')
|
1965
|
+
end
|
1966
|
+
```
|
1967
|
+
|
1968
|
+
**Available configuration options:**
|
1969
|
+
|
1970
|
+
| Setting | Env Var | Default | Description |
|
1971
|
+
|---------------------------------------------------------|--------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
1972
|
+
| **Global** | | | |
|
1973
|
+
| `agent.host` | `DD_AGENT_HOST` | `127.0.0.1` | Hostname of agent to where trace data will be sent. |
|
1974
|
+
| `agent.port` | `DD_TRACE_AGENT_PORT` | `8126` | Port of agent host to where trace data will be sent. |
|
1975
|
+
| | `DD_TRACE_AGENT_URL` | `nil` | Sets the URL endpoint where traces are sent. Has priority over `agent.host` and `agent.port`. |
|
1976
|
+
| `diagnostics.debug` | `DD_TRACE_DEBUG` | `false` | Enables or disables debug mode. Prints verbose logs. **NOT recommended for production or other sensitive environments.** See [Debugging and diagnostics](#debugging-and-diagnostics) for more details. |
|
1977
|
+
| `diagnostics.startup_logs.enabled` | `DD_TRACE_STARTUP_LOGS` | `nil` | Prints startup configuration and diagnostics to log. For assessing state of tracing at application startup. See [Debugging and diagnostics](#debugging-and-diagnostics) for more details. |
|
1978
|
+
| `env` | `DD_ENV` | `nil` | Your application environment. (e.g. `production`, `staging`, etc.) This value is set as a tag on all traces. |
|
1979
|
+
| `service` | `DD_SERVICE` | *Ruby filename* | Your application's default service name. (e.g. `billing-api`) This value is set as a tag on all traces. |
|
1980
|
+
| `tags` | `DD_TAGS` | `nil` | Custom tags in value pairs separated by `,` (e.g. `layer:api,team:intake`) These tags are set on all traces. See [Environment and tags](#environment-and-tags) for more details. |
|
1981
|
+
| `time_now_provider` | | `->{ Time.now }` | Changes how time is retrieved. See [Setting the time provider](#Setting the time provider) for more details. |
|
1982
|
+
| `version` | `DD_VERSION` | `nil` | Your application version (e.g. `2.5`, `202003181415`, `1.3-alpha`, etc.) This value is set as a tag on all traces. |
|
1983
|
+
| **Tracing** | | | |
|
1984
|
+
| `tracing.analytics.enabled` | `DD_TRACE_ANALYTICS_ENABLED` | `nil` | Enables or disables trace analytics. See [Sampling](#sampling) for more details. |
|
1985
|
+
| `tracing.distributed_tracing.propagation_extract_style` | `DD_PROPAGATION_STYLE_EXTRACT` | `['Datadog','B3','B3 single header']` | Distributed tracing header formats to extract. See [Distributed Tracing](#distributed-tracing) for more details. |
|
1986
|
+
| `tracing.distributed_tracing.propagation_inject_style` | `DD_PROPAGATION_STYLE_INJECT` | `['Datadog']` | Distributed tracing header formats to inject. See [Distributed Tracing](#distributed-tracing) for more details. |
|
1987
|
+
| `tracing.enabled` | `DD_TRACE_ENABLED` | `true` | Enables or disables tracing. If set to `false` instrumentation will still run, but no traces are sent to the trace agent. |
|
1988
|
+
| `tracing.instrument(<integration-name>, <options...>)` | | | Activates instrumentation for a specific library. See [Integration instrumentation](#integration-instrumentation) for more details. |
|
1989
|
+
| `tracing.log_injection` | `DD_LOGS_INJECTION` | `true` | Injects [Trace Correlation](#trace-correlation) information into Rails logs if present. Supports the default logger (`ActiveSupport::TaggedLogging`), `lograge`, and `semantic_logger`. |
|
1990
|
+
| `tracing.partial_flush.enabled` | | `false` | Enables or disables partial flushing. Partial flushing submits completed portions of a trace to the agent. Used when tracing instruments long running tasks (e.g. jobs) with many spans. |
|
1991
|
+
| `tracing.partial_flush.min_spans_threshold` | | `500` | The number of spans that must be completed in a trace before partial flushing submits those completed spans. |
|
1992
|
+
| `tracing.sampler` | | `nil` | Advanced usage only. Sets a custom `Datadog::Tracing::Sampling::Sampler` instance. If provided, the tracer will use this sampler to determine sampling behavior. See [Application-side sampling](#application-side-sampling) for details. |
|
1993
|
+
| `tracing.sampling.default_rate` | `DD_TRACE_SAMPLE_RATE` | `nil` | Sets the trace sampling rate between `0.0` (0%) and `1.0` (100%). See [Application-side sampling](#application-side-sampling) for details. |
|
1994
|
+
| `tracing.sampling.rate_limit` | `DD_TRACE_RATE_LIMIT` | `100` (per second) | Sets a maximum number of traces per second to sample. Set a rate limit to avoid the ingestion volume overages in the case of traffic spikes. |
|
1995
|
+
| `tracing.report_hostname` | `DD_TRACE_REPORT_HOSTNAME` | `false` | Adds hostname tag to traces. |
|
1996
|
+
| `tracing.test_mode.enabled` | `DD_TRACE_TEST_MODE_ENABLED` | `false` | Enables or disables test mode, for use of tracing in test suites. |
|
1997
|
+
| `tracing.test_mode.trace_flush` | | `nil` | Object that determines trace flushing behavior. |
|
1980
1998
|
|
1981
1999
|
#### Custom logging
|
1982
2000
|
|
@@ -1989,18 +2007,16 @@ Additionally, it is possible to override the default logger and replace it by a
|
|
1989
2007
|
```ruby
|
1990
2008
|
f = File.new("my-custom.log", "w+") # Log messages should go there
|
1991
2009
|
Datadog.configure do |c|
|
1992
|
-
c.logger = Logger.new(f) # Overriding the default logger
|
2010
|
+
c.logger.instance = Logger.new(f) # Overriding the default logger
|
1993
2011
|
c.logger.level = ::Logger::INFO
|
1994
2012
|
end
|
1995
2013
|
|
1996
2014
|
Datadog.logger.info { "this is typically called by tracing code" }
|
1997
2015
|
```
|
1998
2016
|
|
1999
|
-
|
2000
|
-
|
2001
|
-
By default, the trace agent (not this library, but the program running in the background collecting data from various clients) uses the tags set in the agent config file, see our [environments tutorial](https://app.datadoghq.com/apm/docs/tutorials/environments) for details.
|
2017
|
+
#### Environment and tags
|
2002
2018
|
|
2003
|
-
You can configure the application to automatically tag your traces and metrics, using the following environment variables:
|
2019
|
+
By default, the trace agent (not this library, but the program running in the background collecting data from various clients) uses the tags set in the agent config file. You can configure the application to automatically tag your traces and metrics, using the following environment variables:
|
2004
2020
|
|
2005
2021
|
- `DD_ENV`: Your application environment (e.g. `production`, `staging`, etc.)
|
2006
2022
|
- `DD_SERVICE`: Your application's default service name (e.g. `billing-api`)
|
@@ -2024,69 +2040,100 @@ This enables you to set this value on a per application basis, so you can have f
|
|
2024
2040
|
|
2025
2041
|
Tags can also be set directly on individual spans, which will supersede any conflicting tags defined at the application level.
|
2026
2042
|
|
2027
|
-
|
2043
|
+
#### Debugging and diagnostics
|
2028
2044
|
|
2029
|
-
|
2045
|
+
There are two different suggested means of producing diagnostics for tracing:
|
2030
2046
|
|
2031
|
-
|
2032
|
-
- `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.
|
2033
|
-
- `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.
|
2034
|
-
- `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`.
|
2047
|
+
##### Enabling debug mode
|
2035
2048
|
|
2036
|
-
|
2049
|
+
Switching the library into debug mode will produce verbose, detailed logs about tracing activity, including any suppressed errors. This output can be helpful in identifying errors, or confirming trace output to the agent.
|
2050
|
+
|
2051
|
+
You can enable this via `diagnostics.debug = true` or `DD_TRACE_DEBUG`.
|
2052
|
+
|
2053
|
+
```ruby
|
2054
|
+
Datadog.configure { |c| c.diagnostics.debug = true }
|
2055
|
+
```
|
2056
|
+
|
2057
|
+
**We do NOT recommend use of this feature in production or other sensitive environments**, as it can be very verbose under load. It's best to use this in a controlled environment where you can control application load.
|
2058
|
+
|
2059
|
+
##### Enabling startup logs
|
2060
|
+
|
2061
|
+
Startup logs produce a report of tracing state when the application is initially configured. This can be helpful for confirming that configuration and instrumentation is activated correctly.
|
2037
2062
|
|
2038
|
-
|
2063
|
+
You can enable this via `diagnostics.startup_logs.enabled = true` or `DD_TRACE_STARTUP_LOGS`.
|
2039
2064
|
|
2040
|
-
|
2065
|
+
```ruby
|
2066
|
+
Datadog.configure { |c| c.diagnostics.startup_logs.enabled = true }
|
2067
|
+
```
|
2041
2068
|
|
2042
|
-
|
2069
|
+
By default, this will be activated whenever `ddtrace` detects the application is running in a non-development environment.
|
2070
|
+
|
2071
|
+
### Sampling
|
2043
2072
|
|
2044
2073
|
#### Application-side sampling
|
2045
2074
|
|
2046
2075
|
While the trace agent can sample traces to reduce bandwidth usage, application-side sampling reduces the performance overhead.
|
2047
2076
|
|
2048
|
-
|
2077
|
+
The default sampling rate can be set between `0.0` (0%) and `1.0` (100%). Configure the rate in order to control the volume of traces sent to Datadog. When this configuration is not set, the Datadog agent will distribute a default sampling rate of 10 traces per second.
|
2049
2078
|
|
2050
|
-
`
|
2079
|
+
Set this value via `DD_TRACE_SAMPLE_RATE` or `Datadog.configure { |c| c.tracing.sampling.default_rate = <value> }`.
|
2080
|
+
|
2081
|
+
Alternatively, you may provide your own sampler. The `Datadog::Tracing::Sampling::RateSampler` samples a ratio of the traces. For example:
|
2051
2082
|
|
2052
2083
|
```ruby
|
2053
2084
|
# Sample rate is between 0 (nothing sampled) to 1 (everything sampled).
|
2054
|
-
sampler = Datadog::RateSampler.new(0.5) # sample 50% of the traces
|
2085
|
+
sampler = Datadog::Tracing::Sampling::RateSampler.new(0.5) # sample 50% of the traces
|
2055
2086
|
|
2056
2087
|
Datadog.configure do |c|
|
2057
|
-
c.
|
2088
|
+
c.tracing.sampler = sampler
|
2058
2089
|
end
|
2059
2090
|
```
|
2060
2091
|
|
2092
|
+
See [Additional Configuration](#additional-configuration) for more details about these settings.
|
2093
|
+
|
2061
2094
|
#### Priority sampling
|
2062
2095
|
|
2063
2096
|
Priority sampling decides whether to keep a trace by using a priority attribute propagated for distributed traces. Its value indicates to the Agent and the backend about how important the trace is.
|
2064
2097
|
|
2065
2098
|
The sampler can set the priority to the following values:
|
2066
2099
|
|
2067
|
-
- `Datadog::Ext::Priority::AUTO_REJECT`: the sampler automatically decided to reject the trace.
|
2068
|
-
- `Datadog::Ext::Priority::AUTO_KEEP`: the sampler automatically decided to keep the trace.
|
2100
|
+
- `Datadog::Tracing::Sampling::Ext::Priority::AUTO_REJECT`: the sampler automatically decided to reject the trace.
|
2101
|
+
- `Datadog::Tracing::Sampling::Ext::Priority::AUTO_KEEP`: the sampler automatically decided to keep the trace.
|
2069
2102
|
|
2070
2103
|
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.
|
2071
2104
|
|
2072
|
-
You can also set this priority manually to either drop a non-interesting trace or to keep an important one. For that, set the `
|
2105
|
+
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:
|
2073
2106
|
|
2074
|
-
- `Datadog::Ext::Priority::USER_REJECT`: the user asked to reject the trace.
|
2075
|
-
- `Datadog::Ext::Priority::USER_KEEP`: the user asked to keep the trace.
|
2107
|
+
- `Datadog::Tracing::Sampling::Ext::Priority::USER_REJECT`: the user asked to reject the trace.
|
2108
|
+
- `Datadog::Tracing::Sampling::Ext::Priority::USER_KEEP`: the user asked to keep the trace.
|
2076
2109
|
|
2077
2110
|
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.
|
2078
2111
|
|
2079
|
-
|
2112
|
+
For this reason, if you change the priority, we recommend you do it as early as possible.
|
2113
|
+
|
2114
|
+
To change the sampling priority, you can use the following methods:
|
2115
|
+
|
2116
|
+
```ruby
|
2117
|
+
# Rejects the active trace
|
2118
|
+
Datadog::Tracing.reject!
|
2119
|
+
|
2120
|
+
# Keeps the active trace
|
2121
|
+
Datadog::Tracing.keep!
|
2122
|
+
```
|
2123
|
+
|
2124
|
+
It's safe to use `Datadog::Tracing.reject!` and `Datadog::Tracing.keep!` when no trace is active.
|
2125
|
+
|
2126
|
+
You can also reject a specific trace instance:
|
2080
2127
|
|
2081
2128
|
```ruby
|
2082
2129
|
# First, grab the active span
|
2083
|
-
|
2130
|
+
trace = Datadog::Tracing.active_trace
|
2084
2131
|
|
2085
|
-
#
|
2086
|
-
|
2132
|
+
# Rejects the trace
|
2133
|
+
trace.reject!
|
2087
2134
|
|
2088
|
-
#
|
2089
|
-
|
2135
|
+
# Keeps the trace
|
2136
|
+
trace.keep!
|
2090
2137
|
```
|
2091
2138
|
|
2092
2139
|
### Distributed Tracing
|
@@ -2191,6 +2238,33 @@ Service C:
|
|
2191
2238
|
Priority: 1
|
2192
2239
|
```
|
2193
2240
|
|
2241
|
+
**Distributed header formats**
|
2242
|
+
|
2243
|
+
Tracing supports the following distributed trace formats:
|
2244
|
+
|
2245
|
+
- `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG` (Default)
|
2246
|
+
- `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3`
|
2247
|
+
- `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER`
|
2248
|
+
|
2249
|
+
You can enable/disable the use of these formats via `Datadog.configure`:
|
2250
|
+
|
2251
|
+
```ruby
|
2252
|
+
Datadog.configure do |c|
|
2253
|
+
# List of header formats that should be extracted
|
2254
|
+
c.tracing.distributed_tracing.propagation_extract_style = [
|
2255
|
+
Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG,
|
2256
|
+
Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3,
|
2257
|
+
Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER
|
2258
|
+
|
2259
|
+
]
|
2260
|
+
|
2261
|
+
# List of header formats that should be injected
|
2262
|
+
c.tracing.distributed_tracing.propagation_inject_style = [
|
2263
|
+
Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG
|
2264
|
+
]
|
2265
|
+
end
|
2266
|
+
```
|
2267
|
+
|
2194
2268
|
**Activating distributed tracing for integrations**
|
2195
2269
|
|
2196
2270
|
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.
|
@@ -2214,24 +2288,24 @@ For more details on how to activate distributed tracing for integrations, see th
|
|
2214
2288
|
|
2215
2289
|
**Using the HTTP propagator**
|
2216
2290
|
|
2217
|
-
To make the process of propagating this metadata easier, you can use the `Datadog::
|
2291
|
+
To make the process of propagating this metadata easier, you can use the `Datadog::Tracing::Propagation::HTTP` module.
|
2218
2292
|
|
2219
2293
|
On the client:
|
2220
2294
|
|
2221
2295
|
```ruby
|
2222
|
-
Datadog.
|
2223
|
-
# Inject
|
2224
|
-
Datadog::
|
2296
|
+
Datadog::Tracing.trace('web.call') do |span, trace|
|
2297
|
+
# Inject trace headers into request headers (`env` must be a Hash)
|
2298
|
+
Datadog::Tracing::Propagation::HTTP.inject!(trace.to_digest, env)
|
2225
2299
|
end
|
2226
2300
|
```
|
2227
2301
|
|
2228
2302
|
On the server:
|
2229
2303
|
|
2230
2304
|
```ruby
|
2231
|
-
Datadog.
|
2232
|
-
|
2233
|
-
|
2234
|
-
|
2305
|
+
trace_digest = Datadog::Tracing::Propagation::HTTP.extract(request.env)
|
2306
|
+
|
2307
|
+
Datadog::Tracing.trace('web.work', continue_from: trace_digest) do |span|
|
2308
|
+
# Do web work...
|
2235
2309
|
end
|
2236
2310
|
```
|
2237
2311
|
|
@@ -2257,147 +2331,87 @@ Then you must enable the request queuing feature, by setting `request_queuing: t
|
|
2257
2331
|
|
2258
2332
|
### Processing Pipeline
|
2259
2333
|
|
2260
|
-
Some applications might require that traces be altered or filtered out before they are sent
|
2261
|
-
|
2262
|
-
Processors can be any object that responds to `#call` accepting `trace` as an argument (which is an `Array` of `Datadog::Span`s.)
|
2263
|
-
|
2264
|
-
For example:
|
2265
|
-
|
2266
|
-
```ruby
|
2267
|
-
lambda_processor = ->(trace) do
|
2268
|
-
# Processing logic...
|
2269
|
-
trace
|
2270
|
-
end
|
2271
|
-
|
2272
|
-
class MyCustomProcessor
|
2273
|
-
def call(trace)
|
2274
|
-
# Processing logic...
|
2275
|
-
trace
|
2276
|
-
end
|
2277
|
-
end
|
2278
|
-
custom_processor = MyFancyProcessor.new
|
2279
|
-
```
|
2280
|
-
|
2281
|
-
`#call` blocks of processors *must* return the `trace` object; this return value will be passed to the next processor in the pipeline.
|
2282
|
-
|
2283
|
-
These processors must then be added to the pipeline via `Datadog::Pipeline.before_flush`:
|
2284
|
-
|
2285
|
-
```ruby
|
2286
|
-
Datadog::Pipeline.before_flush(lambda_processor, custom_processor)
|
2287
|
-
```
|
2288
|
-
|
2289
|
-
You can also define processors using the short-hand block syntax for `Datadog::Pipeline.before_flush`:
|
2290
|
-
|
2291
|
-
```ruby
|
2292
|
-
Datadog::Pipeline.before_flush do |trace|
|
2293
|
-
trace.delete_if { |span| span.name =~ /forbidden/ }
|
2294
|
-
end
|
2295
|
-
```
|
2334
|
+
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.
|
2296
2335
|
|
2297
2336
|
#### Filtering
|
2298
2337
|
|
2299
|
-
You can use the `Datadog::Pipeline::SpanFilter` processor to remove spans, when the block evaluates as truthy:
|
2338
|
+
You can use the `Datadog::Tracing::Pipeline::SpanFilter` processor to remove spans, when the block evaluates as truthy:
|
2300
2339
|
|
2301
2340
|
```ruby
|
2302
|
-
Datadog::
|
2341
|
+
Datadog::Tracing.before_flush(
|
2303
2342
|
# Remove spans that match a particular resource
|
2304
|
-
Datadog::Pipeline::SpanFilter.new { |span| span.resource =~ /PingController/ },
|
2343
|
+
Datadog::Tracing::Pipeline::SpanFilter.new { |span| span.resource =~ /PingController/ },
|
2305
2344
|
# Remove spans that are trafficked to localhost
|
2306
|
-
Datadog::Pipeline::SpanFilter.new { |span| span.get_tag('host') == 'localhost' }
|
2345
|
+
Datadog::Tracing::Pipeline::SpanFilter.new { |span| span.get_tag('host') == 'localhost' }
|
2307
2346
|
)
|
2308
2347
|
```
|
2309
2348
|
|
2310
2349
|
#### Processing
|
2311
2350
|
|
2312
|
-
You can use the `Datadog::Pipeline::SpanProcessor` processor to modify spans:
|
2351
|
+
You can use the `Datadog::Tracing::Pipeline::SpanProcessor` processor to modify spans:
|
2313
2352
|
|
2314
2353
|
```ruby
|
2315
|
-
Datadog::
|
2354
|
+
Datadog::Tracing.before_flush(
|
2316
2355
|
# Strip matching text from the resource field
|
2317
|
-
Datadog::Pipeline::SpanProcessor.new { |span| span.resource.gsub!(/password=.*/, '') }
|
2356
|
+
Datadog::Tracing::Pipeline::SpanProcessor.new { |span| span.resource.gsub!(/password=.*/, '') }
|
2318
2357
|
)
|
2319
2358
|
```
|
2320
2359
|
|
2321
|
-
|
2322
|
-
|
2323
|
-
In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross-referencing.
|
2324
|
-
|
2325
|
-
#### For logging in Rails applications
|
2360
|
+
#### Custom processor
|
2326
2361
|
|
2327
|
-
|
2362
|
+
Processors can be any object that responds to `#call` accepting `trace` as an argument (which is an `Array` of `Datadog::Span`s.)
|
2328
2363
|
|
2329
|
-
For
|
2364
|
+
For example, using the short-hand block syntax:
|
2330
2365
|
|
2331
2366
|
```ruby
|
2332
|
-
|
2333
|
-
|
2334
|
-
|
2335
|
-
Datadog.configure do |c|
|
2336
|
-
c.use :rails, log_injection: true
|
2367
|
+
Datadog::Tracing.before_flush do |trace|
|
2368
|
+
# Processing logic...
|
2369
|
+
trace
|
2337
2370
|
end
|
2338
2371
|
```
|
2339
2372
|
|
2340
|
-
|
2341
|
-
|
2342
|
-
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.
|
2373
|
+
For a custom processor class:
|
2343
2374
|
|
2344
2375
|
```ruby
|
2345
|
-
|
2346
|
-
|
2347
|
-
|
2348
|
-
|
2349
|
-
|
2350
|
-
# Adds IDs as tags to log output
|
2351
|
-
:dd => {
|
2352
|
-
# To preserve precision during JSON serialization, use strings for large numbers
|
2353
|
-
:trace_id => correlation.trace_id.to_s,
|
2354
|
-
:span_id => correlation.span_id.to_s,
|
2355
|
-
:env => correlation.env.to_s,
|
2356
|
-
:service => correlation.service.to_s,
|
2357
|
-
:version => correlation.version.to_s
|
2358
|
-
},
|
2359
|
-
:ddsource => ["ruby"],
|
2360
|
-
:params => event.payload[:params].reject { |k| %w(controller action).include? k }
|
2361
|
-
}
|
2376
|
+
class MyCustomProcessor
|
2377
|
+
def call(trace)
|
2378
|
+
# Processing logic...
|
2379
|
+
trace
|
2380
|
+
end
|
2362
2381
|
end
|
2382
|
+
|
2383
|
+
Datadog::Tracing.before_flush(MyCustomProcessor.new)
|
2363
2384
|
```
|
2364
2385
|
|
2365
|
-
|
2386
|
+
In both cases, the processor method *must* return the `trace` object; this return value will be passed to the next processor in the pipeline.
|
2366
2387
|
|
2367
|
-
|
2388
|
+
### Trace correlation
|
2368
2389
|
|
2369
|
-
|
2370
|
-
Rails.application.configure do
|
2371
|
-
config.log_tags = [proc { Datadog.tracer.active_correlation.to_s }]
|
2372
|
-
end
|
2390
|
+
In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross-referencing.
|
2373
2391
|
|
2374
|
-
|
2375
|
-
# DD_ENV = 'production' (The name of the environment your application is running in.)
|
2376
|
-
# DD_SERVICE = 'billing-api' (Default service name of your application.)
|
2377
|
-
# DD_VERSION = '2.5.17' (The version of your application.)
|
2392
|
+
#### For logging in Rails applications
|
2378
2393
|
|
2379
|
-
|
2380
|
-
|
2381
|
-
|
2382
|
-
|
2383
|
-
|
2384
|
-
```
|
2394
|
+
##### Automatic
|
2395
|
+
|
2396
|
+
For Rails applications using the default logger (`ActiveSupport::TaggedLogging`), `lograge` or `semantic_logger`, trace correlation injection is enabled by default.
|
2397
|
+
|
2398
|
+
It can be disabled by setting the environment variable `DD_LOGS_INJECTION=false`.
|
2385
2399
|
|
2386
2400
|
#### For logging in Ruby applications
|
2387
2401
|
|
2388
|
-
To add correlation IDs to your logger, add a log formatter which retrieves the correlation IDs with `Datadog.
|
2402
|
+
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.
|
2389
2403
|
|
2390
2404
|
To properly correlate with Datadog logging, be sure the following is present in the log message, in order as they appear:
|
2391
2405
|
|
2392
|
-
- `dd.env=<ENV>`: Where `<ENV>` is equal to `Datadog.
|
2393
|
-
- `dd.service=<SERVICE>`: Where `<SERVICE>` is equal to `Datadog.
|
2394
|
-
- `dd.version=<VERSION>`: Where `<VERSION>` is equal to `Datadog.
|
2395
|
-
- `dd.trace_id=<TRACE_ID>`: Where `<TRACE_ID>` is equal to `Datadog.
|
2396
|
-
- `dd.span_id=<SPAN_ID>`: Where `<SPAN_ID>` is equal to `Datadog.
|
2406
|
+
- `dd.env=<ENV>`: Where `<ENV>` is equal to `Datadog::Tracing.correlation.env`. Omit if no environment is configured.
|
2407
|
+
- `dd.service=<SERVICE>`: Where `<SERVICE>` is equal to `Datadog::Tracing.correlation.service`. Omit if no default service name is configured.
|
2408
|
+
- `dd.version=<VERSION>`: Where `<VERSION>` is equal to `Datadog::Tracing.correlation.version`. Omit if no application version is configured.
|
2409
|
+
- `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.
|
2410
|
+
- `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.
|
2397
2411
|
|
2398
|
-
|
2412
|
+
`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>`.
|
2399
2413
|
|
2400
|
-
If a trace is not active and the application environment & version is not configured, it will return `dd.
|
2414
|
+
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`.
|
2401
2415
|
|
2402
2416
|
An example of this in practice:
|
2403
2417
|
|
@@ -2412,7 +2426,7 @@ ENV['DD_VERSION'] = '2.5.17'
|
|
2412
2426
|
logger = Logger.new(STDOUT)
|
2413
2427
|
logger.progname = 'my_app'
|
2414
2428
|
logger.formatter = proc do |severity, datetime, progname, msg|
|
2415
|
-
"[#{datetime}][#{progname}][#{severity}][#{Datadog.
|
2429
|
+
"[#{datetime}][#{progname}][#{severity}][#{Datadog::Tracing.log_correlation}] #{msg}\n"
|
2416
2430
|
end
|
2417
2431
|
|
2418
2432
|
# When no trace is active
|
@@ -2420,17 +2434,34 @@ logger.warn('This is an untraced operation.')
|
|
2420
2434
|
# [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.
|
2421
2435
|
|
2422
2436
|
# When a trace is active
|
2423
|
-
Datadog.
|
2437
|
+
Datadog::Tracing.trace('my.operation') { logger.warn('This is a traced operation.') }
|
2424
2438
|
# [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.
|
2425
2439
|
```
|
2426
2440
|
|
2427
2441
|
### Configuring the transport layer
|
2428
2442
|
|
2429
|
-
By default,
|
2443
|
+
By default, `ddtrace` will connect to the agent using the first available settings in the listed priority:
|
2444
|
+
|
2445
|
+
1. Via any explicitly provided configuration settings (hostname/port/transport)
|
2446
|
+
2. Via Unix Domain Socket (UDS) located at `/var/run/datadog/apm.socket`
|
2447
|
+
3. Via HTTP over TCP to `127.0.0.1:8126`
|
2430
2448
|
|
2431
2449
|
However, the tracer can be configured to send its trace data to alternative destinations, or by alternative protocols.
|
2432
2450
|
|
2433
|
-
|
2451
|
+
#### Changing default agent hostname and port
|
2452
|
+
|
2453
|
+
To change the agent host or port, provide `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT`.
|
2454
|
+
|
2455
|
+
OR within a `Datadog.configure` block, provide the following settings:
|
2456
|
+
|
2457
|
+
```ruby
|
2458
|
+
Datadog.configure do |c|
|
2459
|
+
c.agent.host = '127.0.0.1'
|
2460
|
+
c.agent.port = 8126
|
2461
|
+
end
|
2462
|
+
```
|
2463
|
+
|
2464
|
+
See [Additional Configuration](#additional-configuration) for more details.
|
2434
2465
|
|
2435
2466
|
#### Using the Net::HTTP adapter
|
2436
2467
|
|
@@ -2438,14 +2469,14 @@ The `Net` adapter submits traces using `Net::HTTP` over TCP. It is the default t
|
|
2438
2469
|
|
2439
2470
|
```ruby
|
2440
2471
|
Datadog.configure do |c|
|
2441
|
-
c.
|
2472
|
+
c.tracing.transport_options = proc { |t|
|
2442
2473
|
# Hostname, port, and additional options. :timeout is in seconds.
|
2443
2474
|
t.adapter :net_http, '127.0.0.1', 8126, { timeout: 1 }
|
2444
2475
|
}
|
2445
2476
|
end
|
2446
2477
|
```
|
2447
2478
|
|
2448
|
-
#### Using the Unix
|
2479
|
+
#### Using the Unix Domain Socket (UDS) adapter
|
2449
2480
|
|
2450
2481
|
The `UnixSocket` adapter submits traces using `Net::HTTP` over Unix socket.
|
2451
2482
|
|
@@ -2453,7 +2484,7 @@ To use, first configure your trace agent to listen by Unix socket, then configur
|
|
2453
2484
|
|
2454
2485
|
```ruby
|
2455
2486
|
Datadog.configure do |c|
|
2456
|
-
c.
|
2487
|
+
c.tracing.transport_options = proc { |t|
|
2457
2488
|
# Provide local path to trace agent Unix socket
|
2458
2489
|
t.adapter :unix, '/tmp/ddagent/trace.sock'
|
2459
2490
|
}
|
@@ -2466,7 +2497,7 @@ The `Test` adapter is a no-op transport that can optionally buffer requests. For
|
|
2466
2497
|
|
2467
2498
|
```ruby
|
2468
2499
|
Datadog.configure do |c|
|
2469
|
-
c.
|
2500
|
+
c.tracing.transport_options = proc { |t|
|
2470
2501
|
# Set transport to no-op mode. Does not retain traces.
|
2471
2502
|
t.adapter :test
|
2472
2503
|
|
@@ -2483,7 +2514,7 @@ Custom adapters can be configured with:
|
|
2483
2514
|
|
2484
2515
|
```ruby
|
2485
2516
|
Datadog.configure do |c|
|
2486
|
-
c.
|
2517
|
+
c.tracing.transport_options = proc { |t|
|
2487
2518
|
# Initialize and pass an instance of the adapter
|
2488
2519
|
custom_adapter = CustomAdapter.new
|
2489
2520
|
t.adapter custom_adapter
|
@@ -2491,6 +2522,23 @@ Datadog.configure do |c|
|
|
2491
2522
|
end
|
2492
2523
|
```
|
2493
2524
|
|
2525
|
+
### Setting the time provider
|
2526
|
+
|
2527
|
+
By default, tracing uses a monotonic clock to measure the duration of spans, and timestamps (`->{ Time.now }`) for the start and end time.
|
2528
|
+
|
2529
|
+
When testing, it might be helpful to use a different time provider.
|
2530
|
+
|
2531
|
+
To change the function that provides timestamps, configure the following:
|
2532
|
+
|
2533
|
+
```ruby
|
2534
|
+
Datadog.configure do |c|
|
2535
|
+
# For Timecop, for example, `->{ Time.now_without_mock_time }` allows the tracer to use the real wall time.
|
2536
|
+
c.time_now_provider = -> { Time.now_without_mock_time }
|
2537
|
+
end
|
2538
|
+
```
|
2539
|
+
|
2540
|
+
Span duration calculation will still use the system monotonic clock when available, thus not being affected by this setting.
|
2541
|
+
|
2494
2542
|
### Metrics
|
2495
2543
|
|
2496
2544
|
The tracer and its integrations can produce some additional metrics that can provide useful insight into the performance of your application. These metrics are collected with `dogstatsd-ruby`, and can be sent to the same Datadog agent to which you send your traces.
|
@@ -2544,7 +2592,7 @@ In addition, all metrics include the following tags:
|
|
2544
2592
|
|
2545
2593
|
### OpenTracing
|
2546
2594
|
|
2547
|
-
For setting up Datadog with OpenTracing, see
|
2595
|
+
For setting up Datadog with OpenTracing, see our [Configuring OpenTracing](#configuring-opentracing) section for details.
|
2548
2596
|
|
2549
2597
|
**Configuring Datadog tracer settings**
|
2550
2598
|
|
@@ -2552,10 +2600,10 @@ The underlying Datadog tracer can be configured by passing options (which match
|
|
2552
2600
|
|
2553
2601
|
```ruby
|
2554
2602
|
# Where `options` is a Hash of options provided to Datadog::Tracer
|
2555
|
-
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new(options)
|
2603
|
+
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new(**options)
|
2556
2604
|
```
|
2557
2605
|
|
2558
|
-
It can also be configured by using `Datadog.configure` described in the [
|
2606
|
+
It can also be configured by using `Datadog.configure` described in the [Additional Configuration](#additional-configuration) section.
|
2559
2607
|
|
2560
2608
|
**Activating and configuring integrations**
|
2561
2609
|
|
@@ -2597,11 +2645,11 @@ Without this flag, profiles for short-lived Resque jobs will not be available as
|
|
2597
2645
|
|
2598
2646
|
By default, Datadog limits the size of trace payloads to prevent memory overhead within instrumented applications. As a result, traces containing thousands of operations may not be sent to Datadog.
|
2599
2647
|
|
2600
|
-
If traces are missing, enable [debug mode](#
|
2648
|
+
If traces are missing, enable [debug mode](#debugging-and-diagnostics) to check if messages containing `"Dropping trace. Payload too large"` are logged.
|
2601
2649
|
|
2602
|
-
Since debug mode is verbose, Datadog does not recommend leaving this enabled or enabling this in production
|
2650
|
+
Since debug mode is verbose, **Datadog does not recommend leaving this enabled or enabling this in production.** Disable it after confirming. You can inspect the [Datadog Agent logs](https://docs.datadoghq.com/agent/guide/agent-log-files/) for similar messages.
|
2603
2651
|
|
2604
|
-
If you have confirmed that traces are dropped due to large payloads, then enable the [partial_flush](#
|
2652
|
+
If you have confirmed that traces are dropped due to large payloads, then enable the [partial_flush](#additional-configuration) setting to break down large traces into smaller chunks.
|
2605
2653
|
|
2606
2654
|
### Stack level too deep
|
2607
2655
|
|
@@ -2611,7 +2659,7 @@ In Ruby version 1.9.3 and earlier, "monkey-patching" often involved the use of [
|
|
2611
2659
|
|
2612
2660
|
In Ruby 2.0, the [`Module#prepend`](https://ruby-doc.org/core-3.0.0/Module.html#method-i-prepend) feature was introduced. This feature avoids destructive method rewriting and allows multiple "monkey patches" on the same method. Consequently, it has become the safest, preferred means to "monkey patch" code.
|
2613
2661
|
|
2614
|
-
Datadog instrumentation almost exclusively uses the `Module#prepend` feature to add instrumentation non-destructively. However, some libraries (typically those supporting Ruby < 2.0) still use `alias_method` which can create conflicts with Datadog instrumentation, often resulting in `SystemStackError` or `stack level too deep` errors.
|
2662
|
+
Datadog instrumentation almost exclusively uses the `Module#prepend` feature to add instrumentation non-destructively. However, some other libraries (typically those supporting Ruby < 2.0) still use `alias_method` which can create conflicts with Datadog instrumentation, often resulting in `SystemStackError` or `stack level too deep` errors.
|
2615
2663
|
|
2616
2664
|
As the implementation of `alias_method` exists within those libraries, Datadog generally cannot fix them. However, some libraries have known workarounds:
|
2617
2665
|
|