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