ddtrace 1.0.0.beta1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -16
- data/CHANGELOG.md +156 -2
- data/LICENSE-3rdparty.csv +3 -2
- data/README.md +2 -2
- data/ddtrace.gemspec +12 -3
- data/docs/GettingStarted.md +231 -146
- data/docs/ProfilingDevelopment.md +8 -8
- data/docs/UpgradeGuide.md +384 -205
- data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +118 -0
- data/ext/ddtrace_profiling_loader/extconf.rb +53 -0
- data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +31 -5
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +0 -8
- data/ext/ddtrace_profiling_native_extension/collectors_stack.c +278 -0
- data/ext/ddtrace_profiling_native_extension/extconf.rb +79 -100
- data/ext/ddtrace_profiling_native_extension/libddprof_helpers.h +13 -0
- data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +186 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +579 -7
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +30 -0
- data/ext/ddtrace_profiling_native_extension/profiling.c +10 -1
- data/ext/ddtrace_profiling_native_extension/stack_recorder.c +139 -0
- data/ext/ddtrace_profiling_native_extension/stack_recorder.h +28 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +248 -318
- data/lib/datadog/appsec/assets/waf_rules/risky.json +78 -18
- data/lib/datadog/appsec/assets/waf_rules/strict.json +4 -67
- data/lib/datadog/appsec/assets.rb +2 -0
- data/lib/datadog/appsec/autoload.rb +2 -2
- data/lib/datadog/appsec/configuration/settings.rb +22 -1
- data/lib/datadog/appsec/configuration.rb +10 -0
- data/lib/datadog/appsec/contrib/auto_instrument.rb +2 -0
- data/lib/datadog/appsec/contrib/configuration/settings.rb +2 -0
- data/lib/datadog/appsec/contrib/integration.rb +2 -0
- data/lib/datadog/appsec/contrib/patcher.rb +2 -0
- data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +2 -0
- data/lib/datadog/appsec/contrib/rack/ext.rb +2 -0
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +78 -37
- data/lib/datadog/appsec/contrib/rack/integration.rb +1 -0
- data/lib/datadog/appsec/contrib/rack/patcher.rb +0 -1
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +4 -2
- data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +64 -0
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +4 -2
- data/lib/datadog/appsec/contrib/rack/request.rb +16 -1
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +41 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +60 -46
- data/lib/datadog/appsec/contrib/rack/response.rb +2 -0
- data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +2 -0
- data/lib/datadog/appsec/contrib/rails/ext.rb +2 -0
- data/lib/datadog/appsec/contrib/rails/framework.rb +2 -0
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +81 -0
- data/lib/datadog/appsec/contrib/rails/patcher.rb +35 -2
- data/lib/datadog/appsec/contrib/rails/reactive/action.rb +68 -0
- data/lib/datadog/appsec/contrib/rails/request.rb +33 -0
- data/lib/datadog/appsec/contrib/rails/request_middleware.rb +2 -0
- data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +2 -0
- data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -0
- data/lib/datadog/appsec/contrib/sinatra/framework.rb +2 -0
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +124 -0
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +69 -2
- data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +63 -0
- data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +2 -0
- data/lib/datadog/appsec/event.rb +44 -34
- data/lib/datadog/appsec/extensions.rb +2 -4
- data/lib/datadog/appsec/instrumentation/gateway.rb +2 -0
- data/lib/datadog/appsec/processor.rb +164 -0
- data/lib/datadog/appsec/rate_limiter.rb +7 -0
- data/lib/datadog/appsec/reactive/address_hash.rb +2 -0
- data/lib/datadog/appsec/reactive/engine.rb +2 -0
- data/lib/datadog/appsec/reactive/operation.rb +2 -1
- data/lib/datadog/appsec/reactive/subscriber.rb +2 -0
- data/lib/datadog/appsec.rb +2 -0
- data/lib/datadog/ci/configuration/components.rb +1 -0
- data/lib/datadog/ci/configuration/settings.rb +9 -2
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +1 -0
- data/lib/datadog/ci/contrib/cucumber/ext.rb +1 -0
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +2 -1
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -0
- data/lib/datadog/ci/contrib/cucumber/integration.rb +1 -0
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/example.rb +3 -2
- data/lib/datadog/ci/contrib/rspec/ext.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/integration.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/patcher.rb +1 -0
- data/lib/datadog/ci/ext/app_types.rb +1 -0
- data/lib/datadog/ci/ext/environment.rb +23 -8
- data/lib/datadog/ci/ext/settings.rb +1 -0
- data/lib/datadog/ci/ext/test.rb +1 -0
- data/lib/datadog/ci/extensions.rb +1 -0
- data/lib/datadog/ci/flush.rb +1 -0
- data/lib/datadog/ci/test.rb +2 -1
- data/lib/datadog/ci.rb +3 -1
- data/lib/datadog/core/buffer/cruby.rb +1 -0
- data/lib/datadog/core/buffer/thread_safe.rb +1 -0
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +109 -40
- data/lib/datadog/core/configuration/base.rb +1 -0
- data/lib/datadog/core/configuration/components.rb +23 -4
- data/lib/datadog/core/configuration/dependency_resolver.rb +1 -0
- data/lib/datadog/core/configuration/option.rb +1 -0
- data/lib/datadog/core/configuration/option_definition.rb +1 -0
- data/lib/datadog/core/configuration/option_definition_set.rb +1 -0
- data/lib/datadog/core/configuration/option_set.rb +1 -0
- data/lib/datadog/core/configuration/options.rb +1 -0
- data/lib/datadog/core/configuration/settings.rb +4 -12
- data/lib/datadog/core/configuration.rb +8 -5
- data/lib/datadog/core/diagnostics/environment_logger.rb +2 -1
- data/lib/datadog/core/diagnostics/ext.rb +1 -0
- data/lib/datadog/core/diagnostics/health.rb +2 -1
- data/lib/datadog/core/encoding.rb +1 -0
- data/lib/datadog/core/environment/cgroup.rb +4 -1
- data/lib/datadog/core/environment/class_count.rb +1 -0
- data/lib/datadog/core/environment/container.rb +3 -1
- data/lib/datadog/core/environment/ext.rb +1 -0
- data/lib/datadog/core/environment/gc.rb +1 -0
- data/lib/datadog/core/environment/identity.rb +1 -0
- data/lib/datadog/core/environment/socket.rb +1 -0
- data/lib/datadog/core/environment/thread_count.rb +1 -0
- data/lib/datadog/core/environment/variable_helpers.rb +27 -2
- data/lib/datadog/core/environment/vm_cache.rb +1 -0
- data/lib/datadog/core/error.rb +2 -1
- data/lib/datadog/core/extensions.rb +2 -1
- data/lib/datadog/core/git/ext.rb +1 -0
- data/lib/datadog/core/logger.rb +1 -0
- data/lib/datadog/core/logging/ext.rb +11 -0
- data/lib/datadog/core/metrics/client.rb +16 -5
- data/lib/datadog/core/metrics/ext.rb +1 -0
- data/lib/datadog/core/metrics/helpers.rb +2 -0
- data/lib/datadog/core/metrics/logging.rb +2 -0
- data/lib/datadog/core/metrics/metric.rb +2 -0
- data/lib/datadog/core/metrics/options.rb +2 -0
- data/lib/datadog/core/pin.rb +1 -1
- data/lib/datadog/core/runtime/metrics.rb +2 -1
- data/lib/datadog/core/utils/compression.rb +1 -0
- data/lib/datadog/core/utils/forking.rb +1 -0
- data/lib/datadog/core/utils/object_set.rb +1 -0
- data/lib/datadog/core/utils/only_once.rb +2 -1
- data/lib/datadog/core/utils/safe_dup.rb +27 -0
- data/lib/datadog/core/utils/sequence.rb +1 -0
- data/lib/datadog/core/utils/string_table.rb +1 -0
- data/lib/datadog/core/utils/time.rb +1 -0
- data/lib/datadog/core/utils.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +1 -0
- data/lib/datadog/core/worker.rb +1 -0
- data/lib/datadog/core/workers/async.rb +4 -1
- data/lib/datadog/core/workers/interval_loop.rb +1 -0
- data/lib/datadog/core/workers/polling.rb +1 -0
- data/lib/datadog/core/workers/queue.rb +1 -0
- data/lib/datadog/core/workers/runtime_metrics.rb +0 -2
- data/lib/datadog/core.rb +7 -0
- data/lib/datadog/kit/enable_core_dumps.rb +50 -0
- data/lib/datadog/kit/identity.rb +63 -0
- data/lib/datadog/kit.rb +11 -0
- data/lib/datadog/opentracer/binary_propagator.rb +1 -0
- data/lib/datadog/opentracer/carrier.rb +1 -0
- data/lib/datadog/opentracer/distributed_headers.rb +1 -0
- data/lib/datadog/opentracer/global_tracer.rb +1 -0
- data/lib/datadog/opentracer/propagator.rb +1 -0
- data/lib/datadog/opentracer/rack_propagator.rb +1 -0
- data/lib/datadog/opentracer/scope.rb +1 -0
- data/lib/datadog/opentracer/scope_manager.rb +1 -0
- data/lib/datadog/opentracer/span.rb +1 -0
- data/lib/datadog/opentracer/span_context.rb +1 -0
- data/lib/datadog/opentracer/span_context_factory.rb +1 -0
- data/lib/datadog/opentracer/text_map_propagator.rb +1 -0
- data/lib/datadog/opentracer/thread_local_scope.rb +1 -0
- data/lib/datadog/opentracer/thread_local_scope_manager.rb +1 -0
- data/lib/datadog/opentracer/tracer.rb +1 -2
- data/lib/datadog/opentracer.rb +1 -0
- data/lib/datadog/profiling/backtrace_location.rb +1 -0
- data/lib/datadog/profiling/buffer.rb +1 -0
- data/lib/datadog/profiling/collectors/code_provenance.rb +2 -1
- data/lib/datadog/profiling/collectors/old_stack.rb +298 -0
- data/lib/datadog/profiling/collectors/stack.rb +5 -286
- data/lib/datadog/profiling/encoding/profile.rb +1 -1
- data/lib/datadog/profiling/event.rb +1 -0
- data/lib/datadog/profiling/events/stack.rb +1 -0
- data/lib/datadog/profiling/exporter.rb +1 -0
- data/lib/datadog/profiling/ext/forking.rb +1 -0
- data/lib/datadog/profiling/ext.rb +4 -3
- data/lib/datadog/profiling/flush.rb +2 -1
- data/lib/datadog/profiling/load_native_extension.rb +22 -0
- data/lib/datadog/profiling/native_extension.rb +1 -0
- data/lib/datadog/profiling/pprof/builder.rb +2 -1
- data/lib/datadog/profiling/pprof/converter.rb +1 -0
- data/lib/datadog/profiling/pprof/message_set.rb +1 -0
- data/lib/datadog/profiling/pprof/payload.rb +1 -0
- data/lib/datadog/profiling/pprof/pprof_pb.rb +1 -0
- data/lib/datadog/profiling/pprof/stack_sample.rb +1 -0
- data/lib/datadog/profiling/pprof/string_table.rb +1 -0
- data/lib/datadog/profiling/pprof/template.rb +1 -0
- data/lib/datadog/profiling/preload.rb +1 -0
- data/lib/datadog/profiling/profiler.rb +1 -0
- data/lib/datadog/profiling/recorder.rb +2 -1
- data/lib/datadog/profiling/scheduler.rb +3 -2
- data/lib/datadog/profiling/stack_recorder.rb +33 -0
- data/lib/datadog/profiling/tag_builder.rb +48 -0
- data/lib/datadog/profiling/tasks/exec.rb +3 -2
- data/lib/datadog/profiling/tasks/help.rb +1 -0
- data/lib/datadog/profiling/tasks/setup.rb +7 -4
- data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +2 -1
- data/lib/datadog/profiling/trace_identifiers/helper.rb +2 -1
- data/lib/datadog/profiling/transport/client.rb +1 -0
- data/lib/datadog/profiling/transport/http/api/endpoint.rb +1 -0
- data/lib/datadog/profiling/transport/http/api/instance.rb +1 -0
- data/lib/datadog/profiling/transport/http/api/spec.rb +1 -0
- data/lib/datadog/profiling/transport/http/api.rb +1 -0
- data/lib/datadog/profiling/transport/http/builder.rb +1 -0
- data/lib/datadog/profiling/transport/http/client.rb +1 -0
- data/lib/datadog/profiling/transport/http/response.rb +1 -0
- data/lib/datadog/profiling/transport/http.rb +1 -0
- data/lib/datadog/profiling/transport/io/client.rb +1 -0
- data/lib/datadog/profiling/transport/io/response.rb +1 -0
- data/lib/datadog/profiling/transport/io.rb +1 -0
- data/lib/datadog/profiling/transport/parcel.rb +1 -0
- data/lib/datadog/profiling/transport/request.rb +1 -0
- data/lib/datadog/profiling/transport/response.rb +1 -0
- data/lib/datadog/profiling.rb +30 -27
- data/lib/datadog/tracing/analytics.rb +1 -0
- data/lib/datadog/tracing/buffer.rb +10 -3
- data/lib/datadog/tracing/configuration/ext.rb +1 -0
- data/lib/datadog/tracing/context.rb +1 -0
- data/lib/datadog/tracing/context_provider.rb +18 -19
- data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/event.rb +2 -1
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/events.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +1 -1
- data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +2 -1
- data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/events.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +3 -2
- data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/utils.rb +2 -1
- data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/event.rb +2 -1
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/events.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/action_view/utils.rb +2 -1
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/event.rb +2 -1
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/log_injection.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +2 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +2 -1
- data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +3 -2
- data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/event.rb +2 -1
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +2 -1
- data/lib/datadog/tracing/contrib/active_record/events.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/utils.rb +2 -1
- data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +2 -1
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +5 -2
- data/lib/datadog/tracing/contrib/active_support/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/analytics.rb +1 -0
- data/lib/datadog/tracing/contrib/auto_instrument.rb +23 -20
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +3 -1
- data/lib/datadog/tracing/contrib/aws/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/patcher.rb +2 -1
- data/lib/datadog/tracing/contrib/aws/services.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +12 -4
- data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/configurable.rb +1 -0
- data/lib/datadog/tracing/contrib/configuration/resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -1
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +10 -3
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +40 -3
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +2 -1
- data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +2 -1
- data/lib/datadog/tracing/contrib/ethon/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -1
- data/lib/datadog/tracing/contrib/excon/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/extensions.rb +57 -44
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/connection.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +2 -1
- data/lib/datadog/tracing/contrib/faraday/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -2
- data/lib/datadog/tracing/contrib/grape/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +31 -4
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +3 -2
- data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +2 -1
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/http/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/http/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/http/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/http_annotation_helper.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -2
- data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +3 -2
- data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/integration.rb +2 -1
- data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/event.rb +2 -1
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/lograge/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +4 -2
- data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +2 -1
- data/lib/datadog/tracing/contrib/mongodb/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +3 -2
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/patchable.rb +1 -0
- data/lib/datadog/tracing/contrib/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/presto/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/qless/qless_job.rb +3 -2
- data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +2 -1
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +2 -1
- data/lib/datadog/tracing/contrib/que/ext.rb +2 -1
- data/lib/datadog/tracing/contrib/que/integration.rb +2 -1
- data/lib/datadog/tracing/contrib/que/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/que/tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/event.rb +2 -1
- data/lib/datadog/tracing/contrib/racecar/events/batch.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/events/message.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/events.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +2 -1
- data/lib/datadog/tracing/contrib/rack/patcher.rb +3 -2
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +3 -1
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +5 -4
- data/lib/datadog/tracing/contrib/rails/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/framework.rb +37 -36
- data/lib/datadog/tracing/contrib/rails/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +4 -16
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/patcher.rb +8 -3
- data/lib/datadog/tracing/contrib/rails/railtie.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/utils.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +6 -4
- data/lib/datadog/tracing/contrib/rake/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/redis/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/tags.rb +2 -1
- data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/registry.rb +1 -0
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/resque/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/resque/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/resque/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +3 -2
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +2 -1
- data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +4 -2
- data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/database.rb +2 -1
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +2 -1
- data/lib/datadog/tracing/contrib/sequel/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -1
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +2 -1
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +2 -1
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +22 -2
- data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/env.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +14 -1
- data/lib/datadog/tracing/contrib/sinatra/headers.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +2 -1
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +2 -1
- data/lib/datadog/tracing/contrib/sneakers/ext.rb +2 -1
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +2 -1
- data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/status_code_matcher.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/utils/database.rb +1 -0
- data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +1 -0
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +1 -0
- data/lib/datadog/tracing/contrib.rb +3 -0
- data/lib/datadog/tracing/correlation.rb +12 -20
- data/lib/datadog/tracing/distributed/headers/b3.rb +1 -0
- data/lib/datadog/tracing/distributed/headers/b3_single.rb +1 -0
- data/lib/datadog/tracing/distributed/headers/datadog.rb +1 -0
- data/lib/datadog/tracing/distributed/headers/ext.rb +1 -0
- data/lib/datadog/tracing/distributed/helpers.rb +1 -0
- data/lib/datadog/tracing/distributed/parser.rb +1 -0
- data/lib/datadog/tracing/event.rb +3 -1
- data/lib/datadog/tracing/flush.rb +1 -0
- data/lib/datadog/tracing/metadata/analytics.rb +2 -0
- data/lib/datadog/tracing/metadata/errors.rb +24 -0
- data/lib/datadog/tracing/metadata/ext.rb +2 -1
- data/lib/datadog/tracing/metadata/tagging.rb +2 -10
- data/lib/datadog/tracing/metadata.rb +4 -0
- data/lib/datadog/tracing/pipeline/span_processor.rb +1 -0
- data/lib/datadog/tracing/propagation/grpc.rb +1 -0
- data/lib/datadog/tracing/propagation/http.rb +1 -0
- data/lib/datadog/tracing/runtime/metrics.rb +1 -0
- data/lib/datadog/tracing/sampling/all_sampler.rb +1 -0
- data/lib/datadog/tracing/sampling/ext.rb +1 -0
- data/lib/datadog/tracing/sampling/matcher.rb +1 -0
- data/lib/datadog/tracing/sampling/priority_sampler.rb +4 -4
- data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +1 -0
- data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +1 -0
- data/lib/datadog/tracing/sampling/rate_limiter.rb +1 -0
- data/lib/datadog/tracing/sampling/rate_sampler.rb +1 -0
- data/lib/datadog/tracing/sampling/rule.rb +12 -5
- data/lib/datadog/tracing/sampling/rule_sampler.rb +3 -4
- data/lib/datadog/tracing/sampling/sampler.rb +1 -0
- data/lib/datadog/tracing/span.rb +7 -5
- data/lib/datadog/tracing/span_operation.rb +8 -7
- data/lib/datadog/tracing/sync_writer.rb +1 -0
- data/lib/datadog/tracing/trace_digest.rb +2 -0
- data/lib/datadog/tracing/trace_operation.rb +44 -24
- data/lib/datadog/tracing/trace_segment.rb +109 -194
- data/lib/datadog/tracing/tracer.rb +3 -2
- data/lib/datadog/tracing/workers/trace_writer.rb +1 -0
- data/lib/datadog/tracing/workers.rb +1 -0
- data/lib/datadog/tracing/writer.rb +1 -0
- data/lib/datadog/tracing.rb +2 -0
- data/lib/ddtrace/auto_instrument.rb +2 -1
- data/lib/ddtrace/auto_instrument_base.rb +1 -0
- data/lib/ddtrace/profiling/preload.rb +2 -0
- data/lib/ddtrace/transport/ext.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/net.rb +1 -0
- 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 +1 -0
- 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 +1 -0
- data/lib/ddtrace/transport/http/builder.rb +1 -0
- data/lib/ddtrace/transport/http/client.rb +3 -1
- data/lib/ddtrace/transport/http/env.rb +1 -0
- data/lib/ddtrace/transport/http/response.rb +35 -4
- data/lib/ddtrace/transport/http/statistics.rb +1 -0
- data/lib/ddtrace/transport/http/traces.rb +1 -0
- data/lib/ddtrace/transport/http.rb +14 -3
- data/lib/ddtrace/transport/io/client.rb +4 -1
- data/lib/ddtrace/transport/io/response.rb +1 -0
- data/lib/ddtrace/transport/io/traces.rb +1 -0
- data/lib/ddtrace/transport/io.rb +1 -0
- data/lib/ddtrace/transport/parcel.rb +1 -0
- data/lib/ddtrace/transport/request.rb +1 -0
- data/lib/ddtrace/transport/response.rb +1 -0
- data/lib/ddtrace/transport/serializable_trace.rb +2 -0
- data/lib/ddtrace/transport/statistics.rb +1 -0
- data/lib/ddtrace/transport/trace_formatter.rb +24 -1
- data/lib/ddtrace/transport/traces.rb +1 -0
- data/lib/ddtrace/version.rb +13 -11
- data/lib/ddtrace.rb +3 -21
- metadata +47 -9
- data/lib/datadog/opentelemetry/extensions.rb +0 -14
- data/lib/datadog/opentelemetry/span.rb +0 -34
data/docs/GettingStarted.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
***Version 1.0.0
|
1
|
+
***Version 1.0.0 has been released. 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
2
|
|
3
3
|
# Datadog Ruby Trace Client
|
4
4
|
|
@@ -26,9 +26,13 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
26
26
|
|
27
27
|
- [Compatibility](#compatibility)
|
28
28
|
- [Installation](#installation)
|
29
|
-
- [
|
30
|
-
- [
|
31
|
-
|
29
|
+
- [Setup the Datadog Agent for tracing](#setup-the-datadog-agent-for-tracing)
|
30
|
+
- [Instrument your application](#instrument-your-application)
|
31
|
+
- [Rails applications](#rails-applications)
|
32
|
+
- [Ruby applications](#ruby-applications)
|
33
|
+
- [Configuring OpenTracing](#configuring-opentracing)
|
34
|
+
- [Configuring OpenTelemetry](#configuring-opentelemetry)
|
35
|
+
- [Connect your application to the Datadog Agent](#connect-your-application-to-the-datadog-agent)
|
32
36
|
- [Manual instrumentation](#manual-instrumentation)
|
33
37
|
- [Integration instrumentation](#integration-instrumentation)
|
34
38
|
- [Action Cable](#action-cable)
|
@@ -75,11 +79,10 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
75
79
|
- [Sinatra](#sinatra)
|
76
80
|
- [Sneakers](#sneakers)
|
77
81
|
- [Sucker Punch](#sucker-punch)
|
78
|
-
- [
|
79
|
-
- [Tracer settings](#tracer-settings)
|
82
|
+
- [Additional configuration](#additional-configuration)
|
80
83
|
- [Custom logging](#custom-logging)
|
81
84
|
- [Environment and tags](#environment-and-tags)
|
82
|
-
- [
|
85
|
+
- [Debugging and diagnostics](#debugging-and-diagnostics)
|
83
86
|
- [Sampling](#sampling)
|
84
87
|
- [Application-side sampling](#application-side-sampling)
|
85
88
|
- [Priority sampling](#priority-sampling)
|
@@ -102,11 +105,18 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
102
105
|
|
103
106
|
## Compatibility
|
104
107
|
|
108
|
+
<!--
|
109
|
+
Note: Please replicate any changes to this section also to
|
110
|
+
https://github.com/datadog/documentation/blob/master/content/en/tracing/setup_overview/compatibility_requirements/ruby.md
|
111
|
+
so that they remain in sync.
|
112
|
+
-->
|
113
|
+
|
105
114
|
**Supported Ruby interpreters**:
|
106
115
|
|
107
116
|
| Type | Documentation | Version | Support type | Gem version support |
|
108
117
|
| ----- | -------------------------- | ----- | ------------------------------------ | ------------------- |
|
109
|
-
| MRI | https://www.ruby-lang.org/ | 3.
|
118
|
+
| MRI | https://www.ruby-lang.org/ | 3.1 | Full | Latest |
|
119
|
+
| | | 3.0 | Full | Latest |
|
110
120
|
| | | 2.7 | Full | Latest |
|
111
121
|
| | | 2.6 | Full | Latest |
|
112
122
|
| | | 2.5 | Full | Latest |
|
@@ -117,7 +127,8 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
117
127
|
| | | 2.0 | EOL since June 7th, 2021 | < 0.50.0 |
|
118
128
|
| | | 1.9.3 | EOL since August 6th, 2020 | < 0.27.0 |
|
119
129
|
| | | 1.9.1 | EOL since August 6th, 2020 | < 0.27.0 |
|
120
|
-
| JRuby | https://www.jruby.org | 9.
|
130
|
+
| JRuby | https://www.jruby.org | 9.3 | Full | Latest |
|
131
|
+
| | | 9.2 | Full | Latest |
|
121
132
|
|
122
133
|
**Supported web servers**:
|
123
134
|
|
@@ -152,66 +163,95 @@ but will consider them as having low priority.
|
|
152
163
|
|
153
164
|
## Installation
|
154
165
|
|
155
|
-
|
166
|
+
Adding tracing to your Ruby application only takes a few quick steps:
|
156
167
|
|
157
|
-
|
168
|
+
1. Setup the Datadog Agent for tracing
|
169
|
+
2. Instrument your application
|
170
|
+
3. Connect your application to the Datadog Agent
|
158
171
|
|
159
|
-
|
172
|
+
### Setup the Datadog Agent for tracing
|
160
173
|
|
161
|
-
|
174
|
+
Before installing `ddtrace`, [install the Datadog Agent](https://docs.datadoghq.com/agent/), to which `ddtrace` will send trace data.
|
162
175
|
|
163
|
-
|
176
|
+
Then configure the Datadog Agent to accept traces. To do this, either:
|
164
177
|
|
165
|
-
|
178
|
+
- Set `DD_APM_ENABLED=true` in the agent's environment
|
166
179
|
|
167
|
-
|
180
|
+
OR
|
168
181
|
|
169
|
-
|
182
|
+
- Add `apm_enabled: true` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file)
|
170
183
|
|
184
|
+
*Additionally, in containerized environments...*
|
171
185
|
|
172
|
-
|
186
|
+
- Set `DD_APM_NON_LOCAL_TRAFFIC=true` in the agent's environment
|
173
187
|
|
174
|
-
|
188
|
+
OR
|
175
189
|
|
176
|
-
|
190
|
+
- Add `apm_non_local_traffic: true` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file).
|
177
191
|
|
178
|
-
|
179
|
-
source 'https://rubygems.org'
|
180
|
-
gem 'ddtrace', require: 'ddtrace/auto_instrument'
|
181
|
-
```
|
192
|
+
See the specific setup instructions for [Docker](https://docs.datadoghq.com/agent/docker/apm/?tab=ruby), [Kubernetes](https://docs.datadoghq.com/agent/kubernetes/apm/?tab=helm), [Amazon ECS](https://docs.datadoghq.com/agent/amazon_ecs/apm/?tab=ruby) or [Fargate](https://docs.datadoghq.com/integrations/ecs_fargate/#trace-collection) to ensure that the Agent is configured to receive traces in a containerized environment.
|
182
193
|
|
183
|
-
|
194
|
+
#### Configuring trace data ingestion
|
195
|
+
|
196
|
+
The Datadog agent will listen for traces via HTTP on port `8126` by default.
|
197
|
+
|
198
|
+
You may change the protocol or port the agent listens for trace data using the following:
|
199
|
+
|
200
|
+
**For HTTP over TCP**:
|
201
|
+
|
202
|
+
- Set `DD_APM_RECEIVER_PORT=<port>` in the agent's environment
|
203
|
+
|
204
|
+
OR
|
205
|
+
|
206
|
+
- Add `apm_config: receiver_port: <port>` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file)
|
184
207
|
|
185
|
-
|
208
|
+
**For Unix Domain Socket (UDS)**:
|
186
209
|
|
187
|
-
|
210
|
+
- Set `DD_APM_RECEIVER_SOCKET=<path-to-socket-file>`
|
211
|
+
|
212
|
+
OR
|
213
|
+
|
214
|
+
- 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)
|
215
|
+
|
216
|
+
### Instrument your application
|
217
|
+
|
218
|
+
#### Rails applications
|
188
219
|
|
189
220
|
1. Add the `ddtrace` gem to your Gemfile:
|
190
221
|
|
191
222
|
```ruby
|
192
223
|
source 'https://rubygems.org'
|
193
|
-
gem 'ddtrace'
|
224
|
+
gem 'ddtrace', require: 'ddtrace/auto_instrument'
|
194
225
|
```
|
195
226
|
|
196
227
|
2. Install the gem with `bundle install`
|
228
|
+
|
197
229
|
3. Create a `config/initializers/datadog.rb` file containing:
|
198
230
|
|
199
231
|
```ruby
|
200
232
|
Datadog.configure do |c|
|
201
|
-
#
|
202
|
-
|
233
|
+
# Add additional configuration here.
|
234
|
+
# Activate integrations, change tracer settings, etc...
|
203
235
|
end
|
204
236
|
```
|
205
237
|
|
206
|
-
|
238
|
+
Using this block you can:
|
207
239
|
|
208
|
-
|
240
|
+
- [Add additional configuration settings](#additional-configuration)
|
241
|
+
- [Activate or reconfigure instrumentation](#integration-instrumentation)
|
209
242
|
|
210
|
-
####
|
243
|
+
#### Ruby applications
|
211
244
|
|
212
|
-
1.
|
213
|
-
|
214
|
-
|
245
|
+
1. Add the `ddtrace` gem to your Gemfile:
|
246
|
+
|
247
|
+
```ruby
|
248
|
+
source 'https://rubygems.org'
|
249
|
+
gem 'ddtrace'
|
250
|
+
```
|
251
|
+
|
252
|
+
2. Install the gem with `bundle install`
|
253
|
+
3. `require` any [supported libraries or frameworks](#integration-instrumentation) that should be instrumented.
|
254
|
+
4. Add `require 'ddtrace/auto_instrument'` to your application. _Note:_ This must be done _after_ requiring any supported libraries or frameworks.
|
215
255
|
|
216
256
|
```ruby
|
217
257
|
# Example frameworks and libraries
|
@@ -222,30 +262,31 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
222
262
|
require 'ddtrace/auto_instrument'
|
223
263
|
```
|
224
264
|
|
225
|
-
|
226
|
-
|
227
|
-
#### Manual instrumentation
|
228
|
-
|
229
|
-
1. Install the gem with `gem install ddtrace`
|
230
|
-
2. Add a configuration block to your Ruby application:
|
265
|
+
5. Add a configuration block to your application:
|
231
266
|
|
232
267
|
```ruby
|
233
|
-
require 'ddtrace'
|
234
268
|
Datadog.configure do |c|
|
235
|
-
#
|
269
|
+
# Add additional configuration here.
|
236
270
|
# Activate integrations, change tracer settings, etc...
|
237
|
-
# By default without additional configuration, nothing will be traced.
|
238
271
|
end
|
239
272
|
```
|
240
273
|
|
241
|
-
|
242
|
-
- Activate integration instrumentation (see [Integration instrumentation](#integration-instrumentation))
|
243
|
-
- Add manual instrumentation around your code (see [Manual instrumentation](#manual-instrumentation))
|
274
|
+
Using this block you can:
|
244
275
|
|
245
|
-
|
276
|
+
- [Add additional configuration settings](#additional-configuration)
|
277
|
+
- [Activate or reconfigure instrumentation](#integration-instrumentation)
|
278
|
+
|
279
|
+
#### Configuring OpenTracing
|
280
|
+
|
281
|
+
1. Add the `ddtrace` gem to your Gemfile:
|
282
|
+
|
283
|
+
```ruby
|
284
|
+
source 'https://rubygems.org'
|
285
|
+
gem 'ddtrace'
|
286
|
+
```
|
246
287
|
|
247
|
-
|
248
|
-
|
288
|
+
2. Install the gem with `bundle install`
|
289
|
+
3. To your OpenTracing configuration file, add the following:
|
249
290
|
|
250
291
|
```ruby
|
251
292
|
require 'opentracing'
|
@@ -256,7 +297,7 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
256
297
|
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new
|
257
298
|
```
|
258
299
|
|
259
|
-
|
300
|
+
4. Add a configuration block to your application:
|
260
301
|
|
261
302
|
```ruby
|
262
303
|
Datadog.configure do |c|
|
@@ -268,9 +309,29 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
268
309
|
end
|
269
310
|
```
|
270
311
|
|
271
|
-
|
272
|
-
|
273
|
-
|
312
|
+
Using this block you can:
|
313
|
+
|
314
|
+
- [Add additional Datadog configuration settings](#additional-configuration)
|
315
|
+
- [Activate or reconfigure Datadog instrumentation](#integration-instrumentation)
|
316
|
+
|
317
|
+
#### Configuring OpenTelemetry
|
318
|
+
|
319
|
+
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.
|
320
|
+
|
321
|
+
### Connect your application to the Datadog Agent
|
322
|
+
|
323
|
+
By default, `ddtrace` will connect to the agent using the first available settings in the listed priority:
|
324
|
+
|
325
|
+
1. Via any explicitly provided configuration settings (hostname/port/transport)
|
326
|
+
2. Via Unix Domain Socket (UDS) located at `/var/run/datadog/apm.socket`
|
327
|
+
3. Via HTTP over TCP to `127.0.0.1:8126`
|
328
|
+
|
329
|
+
If your Datadog Agent is listening at any of these locations, no further configuration should be required.
|
330
|
+
|
331
|
+
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.
|
332
|
+
|
333
|
+
- [How to send trace data via HTTP over TCP to agent](#changing-default-agent-hostname-and-port)
|
334
|
+
- [How to send trace data via Unix Domain Socket (UDS) to agent](#using-the-unix-domain-socket-uds-adapter)
|
274
335
|
|
275
336
|
### Final steps for installation
|
276
337
|
|
@@ -401,6 +462,12 @@ end
|
|
401
462
|
|
402
463
|
For a list of available integrations, and their configuration options, please refer to the following:
|
403
464
|
|
465
|
+
<!--
|
466
|
+
Note: Please replicate any changes to this section also to
|
467
|
+
https://github.com/datadog/documentation/blob/master/content/en/tracing/setup_overview/compatibility_requirements/ruby.md
|
468
|
+
so that they remain in sync.
|
469
|
+
-->
|
470
|
+
|
404
471
|
| Name | Key | Versions Supported: MRI | Versions Supported: JRuby | How to configure | Gem source |
|
405
472
|
| -------------------------- | -------------------------- | ------------------------ | --------------------------| ----------------------------------- | ------------------------------------------------------------------------------ |
|
406
473
|
| Action Cable | `action_cable` | `>= 5.0` | `>= 5.0` | *[Link](#action-cable)* | *[Link](https://github.com/rails/rails/tree/master/actioncable)* |
|
@@ -815,6 +882,9 @@ end
|
|
815
882
|
# Perform a query to Elasticsearch
|
816
883
|
client = Elasticsearch::Client.new url: 'http://127.0.0.1:9200'
|
817
884
|
response = client.perform_request 'GET', '_cluster/health'
|
885
|
+
|
886
|
+
# In case you want to override the global configuration for a certain client instance
|
887
|
+
Datadog.configure_onto(client.transport, **options)
|
818
888
|
```
|
819
889
|
|
820
890
|
Where `options` is an optional `Hash` that accepts the following parameters:
|
@@ -1531,6 +1601,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1531
1601
|
| --- | ----------- | ------- |
|
1532
1602
|
| `enabled` | Defines whether Rake tasks should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
1533
1603
|
| `quantize` | Hash containing options for quantization of task arguments. See below for more details and examples. | `{}` |
|
1604
|
+
| `service_name` | Service name used for `rake` instrumentation | `'rake'` |
|
1534
1605
|
|
1535
1606
|
**Configuring task quantization behavior**
|
1536
1607
|
|
@@ -1797,6 +1868,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1797
1868
|
| --- | ----------- | ------- |
|
1798
1869
|
| `tag_args` | Enable tagging of job arguments. `true` for on, `false` for off. | `false` |
|
1799
1870
|
| `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? }` |
|
1871
|
+
| `quantize` | Hash containing options for quantization of job arguments. | `{}` |
|
1800
1872
|
|
1801
1873
|
### Sinatra
|
1802
1874
|
|
@@ -1897,41 +1969,50 @@ end
|
|
1897
1969
|
LogJob.perform_async('login')
|
1898
1970
|
```
|
1899
1971
|
|
1900
|
-
##
|
1901
|
-
|
1902
|
-
### Environment variables
|
1972
|
+
## Additional configuration
|
1903
1973
|
|
1904
|
-
|
1905
|
-
- `DD_ENV`: Your application environment. See [Environment and tags](#environment-and-tags) for more details.
|
1906
|
-
- `DD_LOGS_INJECTION`: Injects [Trace Correlation](#trace-correlation) information into Rails logs, if present. Supports the default logger (`ActiveSupport::TaggedLogging`), `lograge`, and `semantic_logger`. Valid values are: `true` (default) or `false`. e.g. `DD_LOGS_INJECTION=false`.
|
1907
|
-
- `DD_PROPAGATION_STYLE_EXTRACT`: Distributed tracing header formats to extract. See [Distributed Tracing](#distributed-tracing) for more details.
|
1908
|
-
- `DD_PROPAGATION_STYLE_INJECT`: Distributed tracing header formats to inject. See [Distributed Tracing](#distributed-tracing) for more details.
|
1909
|
-
- `DD_SERVICE`: Your application's default service name. See [Environment and tags](#environment-and-tags) for more details.
|
1910
|
-
- `DD_TAGS`: Custom tags for telemetry produced by your application. See [Environment and tags](#environment-and-tags) for more details.
|
1911
|
-
- `DD_TRACE_<INTEGRATION>_ENABLED`: Enables or disables an **activated** integration. Defaults to `true`.. e.g. `DD_TRACE_RAILS_ENABLED=false`. This option has no effects on integrations that have not been explicitly activated (e.g. `Datadog.configure { |c| c.tracing.instrument :integration }`).on code. This environment variable can only be used to disable an integration.
|
1912
|
-
- `DD_TRACE_AGENT_PORT`: Port to where traces will be sent. See [Tracer settings](#tracer-settings) for more details.
|
1913
|
-
- `DD_TRACE_AGENT_URL`: Sets the URL endpoint where traces are sent. Has priority over `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT` if set. e.g. `DD_TRACE_AGENT_URL=http://localhost:8126`.
|
1914
|
-
- `DD_TRACE_ANALYTICS_ENABLED`: Enables or disables trace analytics. See [Sampling](#sampling) for more details.
|
1915
|
-
- `DD_TRACE_RATE_LIMIT`: Sets a rate limit for sampling. See [Sampling](#sampling) for more details.
|
1916
|
-
- `DD_TRACE_REPORT_HOSTNAME`: Enables ot disables hostname tags on traces.
|
1917
|
-
- `DD_TRACE_SAMPLE_RATE`: Sets the trace sampling rate between `0.0` (0%) and `1.0` (100%, recommended). `1.0` or Tracing without Limits™, allows you to send all of your traffic and retention can be [configured within the Datadog app](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/). When this configuration is not set, the Datadog agent will keep an intelligent assortment of diverse traces.
|
1918
|
-
- `DD_TRACE_TEST_MODE_ENABLED`: Enables or disables test mode, for use of tracing in test suites.
|
1919
|
-
- `DD_VERSION`: Your application version. See [Environment and tags](#environment-and-tags) for more details.
|
1920
|
-
|
1921
|
-
### Global settings
|
1974
|
+
To change the default behavior of Datadog tracing, you can set environment variables, or provide custom options inside a `Datadog.configure` block, e.g.:
|
1922
1975
|
|
1923
1976
|
```ruby
|
1924
|
-
# config/initializers/datadog-tracer.rb
|
1925
1977
|
Datadog.configure do |c|
|
1926
|
-
c.
|
1927
|
-
c.
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
|
1934
|
-
|
1978
|
+
c.service = 'billing-api'
|
1979
|
+
c.env = ENV['RACK_ENV']
|
1980
|
+
|
1981
|
+
c.tracing.report_hostname = true
|
1982
|
+
c.tracing.test_mode.enabled = (ENV['RACK_ENV'] == 'test')
|
1983
|
+
end
|
1984
|
+
```
|
1985
|
+
|
1986
|
+
**Available configuration options:**
|
1987
|
+
|
1988
|
+
| Setting | Env Var | Default | Description |
|
1989
|
+
|---------------------------------------------------------|--------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
1990
|
+
| **Global** | | | |
|
1991
|
+
| `agent.host` | `DD_AGENT_HOST` | `127.0.0.1` | Hostname of agent to where trace data will be sent. |
|
1992
|
+
| `agent.port` | `DD_TRACE_AGENT_PORT` | `8126` | Port of agent host to where trace data will be sent. |
|
1993
|
+
| | `DD_TRACE_AGENT_URL` | `nil` | Sets the URL endpoint where traces are sent. Has priority over `agent.host` and `agent.port`. |
|
1994
|
+
| `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. |
|
1995
|
+
| `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. |
|
1996
|
+
| `env` | `DD_ENV` | `nil` | Your application environment. (e.g. `production`, `staging`, etc.) This value is set as a tag on all traces. |
|
1997
|
+
| `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. |
|
1998
|
+
| `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. |
|
1999
|
+
| `time_now_provider` | | `->{ Time.now }` | Changes how time is retrieved. See [Setting the time provider](#Setting the time provider) for more details. |
|
2000
|
+
| `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. |
|
2001
|
+
| **Tracing** | | | |
|
2002
|
+
| `tracing.analytics.enabled` | `DD_TRACE_ANALYTICS_ENABLED` | `nil` | Enables or disables trace analytics. See [Sampling](#sampling) for more details. |
|
2003
|
+
| `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. |
|
2004
|
+
| `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. |
|
2005
|
+
| `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. |
|
2006
|
+
| `tracing.instrument(<integration-name>, <options...>)` | | | Activates instrumentation for a specific library. See [Integration instrumentation](#integration-instrumentation) for more details. |
|
2007
|
+
| `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`. |
|
2008
|
+
| `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. |
|
2009
|
+
| `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. |
|
2010
|
+
| `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. |
|
2011
|
+
| `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. |
|
2012
|
+
| `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. |
|
2013
|
+
| `tracing.report_hostname` | `DD_TRACE_REPORT_HOSTNAME` | `false` | Adds hostname tag to traces. |
|
2014
|
+
| `tracing.test_mode.enabled` | `DD_TRACE_TEST_MODE_ENABLED` | `false` | Enables or disables test mode, for use of tracing in test suites. |
|
2015
|
+
| `tracing.test_mode.trace_flush` | | `nil` | Object that determines trace flushing behavior. |
|
1935
2016
|
|
1936
2017
|
#### Custom logging
|
1937
2018
|
|
@@ -1953,9 +2034,7 @@ Datadog.logger.info { "this is typically called by tracing code" }
|
|
1953
2034
|
|
1954
2035
|
#### Environment and tags
|
1955
2036
|
|
1956
|
-
By default, the trace agent (not this library, but the program running in the background collecting data from various clients) uses the tags set in the agent config file,
|
1957
|
-
|
1958
|
-
You can configure the application to automatically tag your traces and metrics, using the following environment variables:
|
2037
|
+
By default, the trace agent (not this library, but the program running in the background collecting data from various clients) uses the tags set in the agent config file. You can configure the application to automatically tag your traces and metrics, using the following environment variables:
|
1959
2038
|
|
1960
2039
|
- `DD_ENV`: Your application environment (e.g. `production`, `staging`, etc.)
|
1961
2040
|
- `DD_SERVICE`: Your application's default service name (e.g. `billing-api`)
|
@@ -1981,73 +2060,43 @@ Tags can also be set directly on individual spans, which will supersede any conf
|
|
1981
2060
|
|
1982
2061
|
#### Debugging and diagnostics
|
1983
2062
|
|
1984
|
-
|
2063
|
+
There are two different suggested means of producing diagnostics for tracing:
|
1985
2064
|
|
1986
|
-
|
1987
|
-
# config/initializers/datadog-tracer.rb
|
2065
|
+
##### Enabling debug mode
|
1988
2066
|
|
1989
|
-
|
1990
|
-
Datadog.configure do |c|
|
1991
|
-
# To enable debug mode
|
1992
|
-
c.diagnostics.debug = true
|
1993
|
-
end
|
1994
|
-
```
|
2067
|
+
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.
|
1995
2068
|
|
1996
|
-
|
2069
|
+
You can enable this via `diagnostics.debug = true` or `DD_TRACE_DEBUG`.
|
1997
2070
|
|
1998
|
-
|
1999
|
-
|
2000
|
-
|
2001
|
-
|
2002
|
-
### Tracer settings
|
2071
|
+
```ruby
|
2072
|
+
Datadog.configure { |c| c.diagnostics.debug = true }
|
2073
|
+
```
|
2003
2074
|
|
2004
|
-
|
2075
|
+
**We do NOT recommend use of this feature in production or other sensitive environments**, as it can be very verbose under load. It's best to use this in a controlled environment where you can control application load.
|
2005
2076
|
|
2006
|
-
|
2007
|
-
# config/initializers/datadog-tracer.rb
|
2008
|
-
# Tracer settings are set here:
|
2009
|
-
Datadog.configure do |c|
|
2010
|
-
c.tracing.enabled = true
|
2077
|
+
##### Enabling startup logs
|
2011
2078
|
|
2012
|
-
|
2013
|
-
c.tracing.sampling.default_rate = 1.0 # Recommended
|
2014
|
-
c.tracing.sampling.rate_limit = 200
|
2015
|
-
# or provide a custom implementation (overrides c.tracing.sampling settings)
|
2016
|
-
c.tracing.sampler = Datadog::Tracing::Sampling::AllSampler.new
|
2079
|
+
Startup logs produce a report of tracing state when the application is initially configured. This can be helpful for confirming that configuration and instrumentation is activated correctly.
|
2017
2080
|
|
2018
|
-
|
2019
|
-
c.tracing.partial_flush.enabled = false
|
2081
|
+
You can enable this via `diagnostics.startup_logs.enabled = true` or `DD_TRACE_STARTUP_LOGS`.
|
2020
2082
|
|
2021
|
-
|
2022
|
-
|
2023
|
-
end
|
2083
|
+
```ruby
|
2084
|
+
Datadog.configure { |c| c.diagnostics.startup_logs.enabled = true }
|
2024
2085
|
```
|
2025
2086
|
|
2026
|
-
|
2027
|
-
|
2028
|
-
- `tracing.log_injection`: Injects [Trace Correlation](#trace-correlation) information into Rails logs, if present. Defaults to `true`.
|
2029
|
-
- `sampling.default_rate`: default tracer sampling rate, between `0.0` (0%) and `1.0` (100%, recommended). `1.0` or Tracing without Limits™, allows you to send all of your traffic and retention can be [configured within the Datadog app](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/). When this configuration is not set, the Datadog agent will keep an intelligent assortment of diverse traces.
|
2030
|
-
- `sampling.rate_limit`: maximum number of traces per second to sample. Defaults to 100 per second.
|
2031
|
-
- `tracing.enabled`: defines if the `tracer` is enabled or not. If set to `false` instrumentation will still run, but no spans are sent to the trace agent. Can be configured through the `DD_TRACE_ENABLED` environment variable. Defaults to `true`.
|
2032
|
-
- `tracing.instance`: set to a custom `Datadog::Tracer` instance. If provided, other trace settings are ignored (you must configure it manually.)
|
2033
|
-
- `tracing.partial_flush.enabled`: set to `true` to enable partial trace flushing (for long running traces.) Disabled by default. *Experimental.*
|
2034
|
-
- `tracing.sampler`: set to a custom `Datadog::Sampler` instance. If provided, the tracer will use this sampler to determine sampling behavior.
|
2087
|
+
By default, this will be activated whenever `ddtrace` detects the application is running in a non-development environment.
|
2035
2088
|
|
2036
2089
|
### Sampling
|
2037
2090
|
|
2038
|
-
Datadog's Tracing without Limits™ allows you to send all of your traffic and [configure retention within the Datadog app](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/).
|
2039
|
-
|
2040
|
-
We recommend setting the environment variable `DD_TRACE_SAMPLE_RATE=1.0` in all new applications using `ddtrace`.
|
2041
|
-
|
2042
|
-
App Analytics, previously configured with the `tracing.analytics.enabled` setting, is deprecated in favor of Tracing without Limits™. Documentation for this [deprecated configuration is still available](https://docs.datadoghq.com/tracing/legacy_app_analytics/).
|
2043
|
-
|
2044
2091
|
#### Application-side sampling
|
2045
2092
|
|
2046
2093
|
While the trace agent can sample traces to reduce bandwidth usage, application-side sampling reduces the performance overhead.
|
2047
2094
|
|
2048
|
-
|
2095
|
+
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.
|
2096
|
+
|
2097
|
+
Set this value via `DD_TRACE_SAMPLE_RATE` or `Datadog.configure { |c| c.tracing.sampling.default_rate = <value> }`.
|
2049
2098
|
|
2050
|
-
`Datadog::Tracing::Sampling::RateSampler` samples a ratio of the traces. For example:
|
2099
|
+
Alternatively, you may provide your own sampler. The `Datadog::Tracing::Sampling::RateSampler` samples a ratio of the traces. For example:
|
2051
2100
|
|
2052
2101
|
```ruby
|
2053
2102
|
# Sample rate is between 0 (nothing sampled) to 1 (everything sampled).
|
@@ -2058,6 +2107,8 @@ Datadog.configure do |c|
|
|
2058
2107
|
end
|
2059
2108
|
```
|
2060
2109
|
|
2110
|
+
See [Additional Configuration](#additional-configuration) for more details about these settings.
|
2111
|
+
|
2061
2112
|
#### Priority sampling
|
2062
2113
|
|
2063
2114
|
Priority sampling decides whether to keep a trace by using a priority attribute propagated for distributed traces. Its value indicates to the Agent and the backend about how important the trace is.
|
@@ -2407,11 +2458,28 @@ Datadog::Tracing.trace('my.operation') { logger.warn('This is a traced operation
|
|
2407
2458
|
|
2408
2459
|
### Configuring the transport layer
|
2409
2460
|
|
2410
|
-
By default,
|
2461
|
+
By default, `ddtrace` will connect to the agent using the first available settings in the listed priority:
|
2462
|
+
|
2463
|
+
1. Via any explicitly provided configuration settings (hostname/port/transport)
|
2464
|
+
2. Via Unix Domain Socket (UDS) located at `/var/run/datadog/apm.socket`
|
2465
|
+
3. Via HTTP over TCP to `127.0.0.1:8126`
|
2411
2466
|
|
2412
2467
|
However, the tracer can be configured to send its trace data to alternative destinations, or by alternative protocols.
|
2413
2468
|
|
2414
|
-
|
2469
|
+
#### Changing default agent hostname and port
|
2470
|
+
|
2471
|
+
To change the agent host or port, provide `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT`.
|
2472
|
+
|
2473
|
+
OR within a `Datadog.configure` block, provide the following settings:
|
2474
|
+
|
2475
|
+
```ruby
|
2476
|
+
Datadog.configure do |c|
|
2477
|
+
c.agent.host = '127.0.0.1'
|
2478
|
+
c.agent.port = 8126
|
2479
|
+
end
|
2480
|
+
```
|
2481
|
+
|
2482
|
+
See [Additional Configuration](#additional-configuration) for more details.
|
2415
2483
|
|
2416
2484
|
#### Using the Net::HTTP adapter
|
2417
2485
|
|
@@ -2426,7 +2494,7 @@ Datadog.configure do |c|
|
|
2426
2494
|
end
|
2427
2495
|
```
|
2428
2496
|
|
2429
|
-
#### Using the Unix
|
2497
|
+
#### Using the Unix Domain Socket (UDS) adapter
|
2430
2498
|
|
2431
2499
|
The `UnixSocket` adapter submits traces using `Net::HTTP` over Unix socket.
|
2432
2500
|
|
@@ -2472,6 +2540,23 @@ Datadog.configure do |c|
|
|
2472
2540
|
end
|
2473
2541
|
```
|
2474
2542
|
|
2543
|
+
### Setting the time provider
|
2544
|
+
|
2545
|
+
By default, tracing uses a monotonic clock to measure the duration of spans, and timestamps (`->{ Time.now }`) for the start and end time.
|
2546
|
+
|
2547
|
+
When testing, it might be helpful to use a different time provider.
|
2548
|
+
|
2549
|
+
To change the function that provides timestamps, configure the following:
|
2550
|
+
|
2551
|
+
```ruby
|
2552
|
+
Datadog.configure do |c|
|
2553
|
+
# For Timecop, for example, `->{ Time.now_without_mock_time }` allows the tracer to use the real wall time.
|
2554
|
+
c.time_now_provider = -> { Time.now_without_mock_time }
|
2555
|
+
end
|
2556
|
+
```
|
2557
|
+
|
2558
|
+
Span duration calculation will still use the system monotonic clock when available, thus not being affected by this setting.
|
2559
|
+
|
2475
2560
|
### Metrics
|
2476
2561
|
|
2477
2562
|
The tracer and its integrations can produce some additional metrics that can provide useful insight into the performance of your application. These metrics are collected with `dogstatsd-ruby`, and can be sent to the same Datadog agent to which you send your traces.
|
@@ -2525,7 +2610,7 @@ In addition, all metrics include the following tags:
|
|
2525
2610
|
|
2526
2611
|
### OpenTracing
|
2527
2612
|
|
2528
|
-
For setting up Datadog with OpenTracing, see
|
2613
|
+
For setting up Datadog with OpenTracing, see our [Configuring OpenTracing](#configuring-opentracing) section for details.
|
2529
2614
|
|
2530
2615
|
**Configuring Datadog tracer settings**
|
2531
2616
|
|
@@ -2536,7 +2621,7 @@ The underlying Datadog tracer can be configured by passing options (which match
|
|
2536
2621
|
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new(**options)
|
2537
2622
|
```
|
2538
2623
|
|
2539
|
-
It can also be configured by using `Datadog.configure` described in the [
|
2624
|
+
It can also be configured by using `Datadog.configure` described in the [Additional Configuration](#additional-configuration) section.
|
2540
2625
|
|
2541
2626
|
**Activating and configuring integrations**
|
2542
2627
|
|
@@ -2578,11 +2663,11 @@ Without this flag, profiles for short-lived Resque jobs will not be available as
|
|
2578
2663
|
|
2579
2664
|
By default, Datadog limits the size of trace payloads to prevent memory overhead within instrumented applications. As a result, traces containing thousands of operations may not be sent to Datadog.
|
2580
2665
|
|
2581
|
-
If traces are missing, enable [debug mode](#
|
2666
|
+
If traces are missing, enable [debug mode](#debugging-and-diagnostics) to check if messages containing `"Dropping trace. Payload too large"` are logged.
|
2582
2667
|
|
2583
|
-
Since debug mode is verbose, Datadog does not recommend leaving this enabled or enabling this in production
|
2668
|
+
Since debug mode is verbose, **Datadog does not recommend leaving this enabled or enabling this in production.** Disable it after confirming. You can inspect the [Datadog Agent logs](https://docs.datadoghq.com/agent/guide/agent-log-files/) for similar messages.
|
2584
2669
|
|
2585
|
-
If you have confirmed that traces are dropped due to large payloads, then enable the [partial_flush](#
|
2670
|
+
If you have confirmed that traces are dropped due to large payloads, then enable the [partial_flush](#additional-configuration) setting to break down large traces into smaller chunks.
|
2586
2671
|
|
2587
2672
|
### Stack level too deep
|
2588
2673
|
|
@@ -2592,7 +2677,7 @@ In Ruby version 1.9.3 and earlier, "monkey-patching" often involved the use of [
|
|
2592
2677
|
|
2593
2678
|
In Ruby 2.0, the [`Module#prepend`](https://ruby-doc.org/core-3.0.0/Module.html#method-i-prepend) feature was introduced. This feature avoids destructive method rewriting and allows multiple "monkey patches" on the same method. Consequently, it has become the safest, preferred means to "monkey patch" code.
|
2594
2679
|
|
2595
|
-
Datadog instrumentation almost exclusively uses the `Module#prepend` feature to add instrumentation non-destructively. However, some libraries (typically those supporting Ruby < 2.0) still use `alias_method` which can create conflicts with Datadog instrumentation, often resulting in `SystemStackError` or `stack level too deep` errors.
|
2680
|
+
Datadog instrumentation almost exclusively uses the `Module#prepend` feature to add instrumentation non-destructively. However, some other libraries (typically those supporting Ruby < 2.0) still use `alias_method` which can create conflicts with Datadog instrumentation, often resulting in `SystemStackError` or `stack level too deep` errors.
|
2596
2681
|
|
2597
2682
|
As the implementation of `alias_method` exists within those libraries, Datadog generally cannot fix them. However, some libraries have known workarounds:
|
2598
2683
|
|