ddtrace 1.0.0.beta1 → 1.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +85 -1
- data/ddtrace.gemspec +2 -2
- data/docs/GettingStarted.md +211 -144
- data/docs/UpgradeGuide.md +383 -205
- 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/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/configuration/settings.rb +3 -1
- data/lib/datadog/appsec/configuration.rb +2 -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 +2 -4
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +4 -2
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +4 -2
- data/lib/datadog/appsec/contrib/rack/request.rb +2 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +4 -45
- 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/patcher.rb +1 -1
- 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/request_middleware.rb +2 -0
- data/lib/datadog/appsec/event.rb +12 -17
- data/lib/datadog/appsec/extensions.rb +2 -1
- data/lib/datadog/appsec/instrumentation/gateway.rb +2 -0
- data/lib/datadog/appsec/processor.rb +121 -0
- data/lib/datadog/appsec/rate_limiter.rb +2 -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 -0
- 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 +2 -1
- 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 +1 -0
- 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 +1 -9
- data/lib/datadog/core/configuration.rb +1 -0
- 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 +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 +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 +1 -0
- 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/metrics/client.rb +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- data/lib/datadog/core.rb +1 -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 -0
- 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/stack.rb +1 -1
- data/lib/datadog/profiling/encoding/profile.rb +1 -0
- 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 +3 -2
- data/lib/datadog/profiling/flush.rb +1 -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 +1 -0
- data/lib/datadog/profiling/scheduler.rb +2 -1
- data/lib/datadog/profiling/tasks/exec.rb +1 -0
- data/lib/datadog/profiling/tasks/help.rb +1 -0
- data/lib/datadog/profiling/tasks/setup.rb +1 -0
- 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 +1 -0
- data/lib/datadog/tracing/analytics.rb +1 -0
- data/lib/datadog/tracing/buffer.rb +1 -0
- data/lib/datadog/tracing/configuration/ext.rb +1 -0
- data/lib/datadog/tracing/context.rb +1 -0
- 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 -0
- 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 +1 -0
- 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 +1 -0
- data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +1 -0
- 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 +1 -0
- 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 +2 -1
- 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 -0
- 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 -0
- 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 +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +2 -1
- 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 -0
- 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 -42
- 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 -0
- 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 -0
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -1
- 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 -0
- 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 -0
- 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 +2 -1
- 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 -1
- 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 -1
- 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 -0
- 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 +1 -0
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/patcher.rb +2 -1
- 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 +4 -2
- data/lib/datadog/tracing/contrib/rake/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/patcher.rb +2 -1
- 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 -0
- 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 -0
- 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 -0
- 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 +2 -1
- 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 +1 -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 +2 -1
- 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 +3 -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 -0
- 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 -1
- 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 -1
- 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 +2 -1
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- data/lib/datadog/tracing/sampling/rule_sampler.rb +1 -0
- data/lib/datadog/tracing/sampling/sampler.rb +1 -0
- data/lib/datadog/tracing/span.rb +2 -1
- data/lib/datadog/tracing/span_operation.rb +2 -0
- 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 +18 -3
- data/lib/datadog/tracing/trace_segment.rb +109 -194
- data/lib/datadog/tracing/tracer.rb +2 -1
- 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 +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 +1 -0
- data/lib/ddtrace/transport/http.rb +14 -3
- 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 +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 +12 -10
- data/lib/ddtrace.rb +2 -21
- metadata +11 -10
- data/lib/datadog/opentelemetry/extensions.rb +0 -14
- data/lib/datadog/opentelemetry/span.rb +0 -34
data/docs/GettingStarted.md
CHANGED
@@ -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)
|
@@ -106,7 +109,8 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
106
109
|
|
107
110
|
| Type | Documentation | Version | Support type | Gem version support |
|
108
111
|
| ----- | -------------------------- | ----- | ------------------------------------ | ------------------- |
|
109
|
-
| MRI | https://www.ruby-lang.org/ | 3.
|
112
|
+
| MRI | https://www.ruby-lang.org/ | 3.1 | Full | Latest |
|
113
|
+
| | | 3.0 | Full | Latest |
|
110
114
|
| | | 2.7 | Full | Latest |
|
111
115
|
| | | 2.6 | Full | Latest |
|
112
116
|
| | | 2.5 | Full | Latest |
|
@@ -152,66 +156,95 @@ but will consider them as having low priority.
|
|
152
156
|
|
153
157
|
## Installation
|
154
158
|
|
155
|
-
|
159
|
+
Adding tracing to your Ruby application only takes a few quick steps:
|
156
160
|
|
157
|
-
|
161
|
+
1. Setup the Datadog Agent for tracing
|
162
|
+
2. Instrument your application
|
163
|
+
3. Connect your application to the Datadog Agent
|
158
164
|
|
159
|
-
|
165
|
+
### Setup the Datadog Agent for tracing
|
160
166
|
|
161
|
-
|
167
|
+
Before installing `ddtrace`, [install the Datadog Agent](https://docs.datadoghq.com/agent/), to which `ddtrace` will send trace data.
|
162
168
|
|
163
|
-
|
169
|
+
Then configure the Datadog Agent to accept traces. To do this, either:
|
164
170
|
|
165
|
-
|
171
|
+
- Set `DD_APM_ENABLED=true` in the agent's environment
|
166
172
|
|
167
|
-
|
173
|
+
OR
|
168
174
|
|
169
|
-
|
175
|
+
- Add `apm_enabled: true` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file)
|
170
176
|
|
177
|
+
*Additionally, in containerized environments...*
|
171
178
|
|
172
|
-
|
179
|
+
- Set `DD_APM_NON_LOCAL_TRAFFIC=true` in the agent's environment
|
173
180
|
|
174
|
-
|
181
|
+
OR
|
175
182
|
|
176
|
-
|
183
|
+
- Add `apm_non_local_traffic: true` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file).
|
177
184
|
|
178
|
-
|
179
|
-
source 'https://rubygems.org'
|
180
|
-
gem 'ddtrace', require: 'ddtrace/auto_instrument'
|
181
|
-
```
|
185
|
+
See the specific setup instructions for [Docker](https://docs.datadoghq.com/agent/docker/apm/?tab=ruby), [Kubernetes](https://docs.datadoghq.com/agent/kubernetes/apm/?tab=helm), [Amazon ECS](https://docs.datadoghq.com/agent/amazon_ecs/apm/?tab=ruby) or [Fargate](https://docs.datadoghq.com/integrations/ecs_fargate/#trace-collection) to ensure that the Agent is configured to receive traces in a containerized environment.
|
182
186
|
|
183
|
-
|
187
|
+
#### Configuring trace data ingestion
|
188
|
+
|
189
|
+
The Datadog agent will listen for traces via HTTP on port `8126` by default.
|
190
|
+
|
191
|
+
You may change the protocol or port the agent listens for trace data using the following:
|
192
|
+
|
193
|
+
**For HTTP over TCP**:
|
194
|
+
|
195
|
+
- Set `DD_APM_RECEIVER_PORT=<port>` in the agent's environment
|
196
|
+
|
197
|
+
OR
|
198
|
+
|
199
|
+
- Add `apm_config: receiver_port: <port>` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file)
|
184
200
|
|
185
|
-
|
201
|
+
**For Unix Domain Socket (UDS)**:
|
186
202
|
|
187
|
-
|
203
|
+
- Set `DD_APM_RECEIVER_SOCKET=<path-to-socket-file>`
|
204
|
+
|
205
|
+
OR
|
206
|
+
|
207
|
+
- Add `apm_config: receiver_socket: <path-to-socket-file>` to the [agent's configuration file](https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file)
|
208
|
+
|
209
|
+
### Instrument your application
|
210
|
+
|
211
|
+
#### Rails applications
|
188
212
|
|
189
213
|
1. Add the `ddtrace` gem to your Gemfile:
|
190
214
|
|
191
215
|
```ruby
|
192
216
|
source 'https://rubygems.org'
|
193
|
-
gem 'ddtrace'
|
217
|
+
gem 'ddtrace', require: 'ddtrace/auto_instrument'
|
194
218
|
```
|
195
219
|
|
196
220
|
2. Install the gem with `bundle install`
|
221
|
+
|
197
222
|
3. Create a `config/initializers/datadog.rb` file containing:
|
198
223
|
|
199
224
|
```ruby
|
200
225
|
Datadog.configure do |c|
|
201
|
-
#
|
202
|
-
|
226
|
+
# Add additional configuration here.
|
227
|
+
# Activate integrations, change tracer settings, etc...
|
203
228
|
end
|
204
229
|
```
|
205
230
|
|
206
|
-
|
231
|
+
Using this block you can:
|
207
232
|
|
208
|
-
|
233
|
+
- [Add additional configuration settings](#additional-configuration)
|
234
|
+
- [Activate or reconfigure instrumentation](#integration-instrumentation)
|
209
235
|
|
210
|
-
####
|
236
|
+
#### Ruby applications
|
211
237
|
|
212
|
-
1.
|
213
|
-
|
214
|
-
|
238
|
+
1. Add the `ddtrace` gem to your Gemfile:
|
239
|
+
|
240
|
+
```ruby
|
241
|
+
source 'https://rubygems.org'
|
242
|
+
gem 'ddtrace'
|
243
|
+
```
|
244
|
+
|
245
|
+
2. Install the gem with `bundle install`
|
246
|
+
3. `require` any [supported libraries or frameworks](#integration-instrumentation) that should be instrumented.
|
247
|
+
4. Add `require 'ddtrace/auto_instrument'` to your application. _Note:_ This must be done _after_ requiring any supported libraries or frameworks.
|
215
248
|
|
216
249
|
```ruby
|
217
250
|
# Example frameworks and libraries
|
@@ -222,30 +255,31 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
222
255
|
require 'ddtrace/auto_instrument'
|
223
256
|
```
|
224
257
|
|
225
|
-
|
226
|
-
|
227
|
-
#### Manual instrumentation
|
228
|
-
|
229
|
-
1. Install the gem with `gem install ddtrace`
|
230
|
-
2. Add a configuration block to your Ruby application:
|
258
|
+
5. Add a configuration block to your application:
|
231
259
|
|
232
260
|
```ruby
|
233
|
-
require 'ddtrace'
|
234
261
|
Datadog.configure do |c|
|
235
|
-
#
|
262
|
+
# Add additional configuration here.
|
236
263
|
# Activate integrations, change tracer settings, etc...
|
237
|
-
# By default without additional configuration, nothing will be traced.
|
238
264
|
end
|
239
265
|
```
|
240
266
|
|
241
|
-
|
242
|
-
- Activate integration instrumentation (see [Integration instrumentation](#integration-instrumentation))
|
243
|
-
- Add manual instrumentation around your code (see [Manual instrumentation](#manual-instrumentation))
|
267
|
+
Using this block you can:
|
244
268
|
|
245
|
-
|
269
|
+
- [Add additional configuration settings](#additional-configuration)
|
270
|
+
- [Activate or reconfigure instrumentation](#integration-instrumentation)
|
246
271
|
|
247
|
-
|
248
|
-
|
272
|
+
#### Configuring OpenTracing
|
273
|
+
|
274
|
+
1. Add the `ddtrace` gem to your Gemfile:
|
275
|
+
|
276
|
+
```ruby
|
277
|
+
source 'https://rubygems.org'
|
278
|
+
gem 'ddtrace'
|
279
|
+
```
|
280
|
+
|
281
|
+
2. Install the gem with `bundle install`
|
282
|
+
3. To your OpenTracing configuration file, add the following:
|
249
283
|
|
250
284
|
```ruby
|
251
285
|
require 'opentracing'
|
@@ -256,7 +290,7 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
256
290
|
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new
|
257
291
|
```
|
258
292
|
|
259
|
-
|
293
|
+
4. Add a configuration block to your application:
|
260
294
|
|
261
295
|
```ruby
|
262
296
|
Datadog.configure do |c|
|
@@ -268,9 +302,29 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
268
302
|
end
|
269
303
|
```
|
270
304
|
|
271
|
-
|
272
|
-
|
273
|
-
|
305
|
+
Using this block you can:
|
306
|
+
|
307
|
+
- [Add additional Datadog configuration settings](#additional-configuration)
|
308
|
+
- [Activate or reconfigure Datadog instrumentation](#integration-instrumentation)
|
309
|
+
|
310
|
+
#### Configuring OpenTelemetry
|
311
|
+
|
312
|
+
You can send OpenTelemetry traces directly to the Datadog agent (without `ddtrace`) by using OTLP. Check out our documentation on [OTLP ingest in the Datadog Agent](https://docs.datadoghq.com/tracing/setup_overview/open_standards/#otlp-ingest-in-datadog-agent) for details.
|
313
|
+
|
314
|
+
### Connect your application to the Datadog Agent
|
315
|
+
|
316
|
+
By default, `ddtrace` will connect to the agent using the first available settings in the listed priority:
|
317
|
+
|
318
|
+
1. Via any explicitly provided configuration settings (hostname/port/transport)
|
319
|
+
2. Via Unix Domain Socket (UDS) located at `/var/run/datadog/apm.socket`
|
320
|
+
3. Via HTTP over TCP to `127.0.0.1:8126`
|
321
|
+
|
322
|
+
If your Datadog Agent is listening at any of these locations, no further configuration should be required.
|
323
|
+
|
324
|
+
If your agent runs on a different host or container than your application, or you would like to send traces via a different protocol, you will need to configure your application accordingly.
|
325
|
+
|
326
|
+
- [How to send trace data via HTTP over TCP to agent](#changing-default-agent-hostname-and-port)
|
327
|
+
- [How to send trace data via Unix Domain Socket (UDS) to agent](#using-the-unix-domain-socket-uds-adapter)
|
274
328
|
|
275
329
|
### Final steps for installation
|
276
330
|
|
@@ -1897,41 +1951,50 @@ end
|
|
1897
1951
|
LogJob.perform_async('login')
|
1898
1952
|
```
|
1899
1953
|
|
1900
|
-
##
|
1901
|
-
|
1902
|
-
### Environment variables
|
1903
|
-
|
1904
|
-
- `DD_AGENT_HOST`: Hostname of agent to where traces will be sent. See [Tracer settings](#tracer-settings) for more details.
|
1905
|
-
- `DD_ENV`: Your application environment. See [Environment and tags](#environment-and-tags) for more details.
|
1906
|
-
- `DD_LOGS_INJECTION`: Injects [Trace Correlation](#trace-correlation) information into Rails logs, if present. Supports the default logger (`ActiveSupport::TaggedLogging`), `lograge`, and `semantic_logger`. Valid values are: `true` (default) or `false`. e.g. `DD_LOGS_INJECTION=false`.
|
1907
|
-
- `DD_PROPAGATION_STYLE_EXTRACT`: Distributed tracing header formats to extract. See [Distributed Tracing](#distributed-tracing) for more details.
|
1908
|
-
- `DD_PROPAGATION_STYLE_INJECT`: Distributed tracing header formats to inject. See [Distributed Tracing](#distributed-tracing) for more details.
|
1909
|
-
- `DD_SERVICE`: Your application's default service name. See [Environment and tags](#environment-and-tags) for more details.
|
1910
|
-
- `DD_TAGS`: Custom tags for telemetry produced by your application. See [Environment and tags](#environment-and-tags) for more details.
|
1911
|
-
- `DD_TRACE_<INTEGRATION>_ENABLED`: Enables or disables an **activated** integration. Defaults to `true`.. e.g. `DD_TRACE_RAILS_ENABLED=false`. This option has no effects on integrations that have not been explicitly activated (e.g. `Datadog.configure { |c| c.tracing.instrument :integration }`).on code. This environment variable can only be used to disable an integration.
|
1912
|
-
- `DD_TRACE_AGENT_PORT`: Port to where traces will be sent. See [Tracer settings](#tracer-settings) for more details.
|
1913
|
-
- `DD_TRACE_AGENT_URL`: Sets the URL endpoint where traces are sent. Has priority over `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT` if set. e.g. `DD_TRACE_AGENT_URL=http://localhost:8126`.
|
1914
|
-
- `DD_TRACE_ANALYTICS_ENABLED`: Enables or disables trace analytics. See [Sampling](#sampling) for more details.
|
1915
|
-
- `DD_TRACE_RATE_LIMIT`: Sets a rate limit for sampling. See [Sampling](#sampling) for more details.
|
1916
|
-
- `DD_TRACE_REPORT_HOSTNAME`: Enables ot disables hostname tags on traces.
|
1917
|
-
- `DD_TRACE_SAMPLE_RATE`: Sets the trace sampling rate between `0.0` (0%) and `1.0` (100%, recommended). `1.0` or Tracing without Limits™, allows you to send all of your traffic and retention can be [configured within the Datadog app](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/). When this configuration is not set, the Datadog agent will keep an intelligent assortment of diverse traces.
|
1918
|
-
- `DD_TRACE_TEST_MODE_ENABLED`: Enables or disables test mode, for use of tracing in test suites.
|
1919
|
-
- `DD_VERSION`: Your application version. See [Environment and tags](#environment-and-tags) for more details.
|
1954
|
+
## Additional configuration
|
1920
1955
|
|
1921
|
-
|
1956
|
+
To change the default behavior of Datadog tracing, you can set environment variables, or provide custom options inside a `Datadog.configure` block, e.g.:
|
1922
1957
|
|
1923
1958
|
```ruby
|
1924
|
-
# config/initializers/datadog-tracer.rb
|
1925
1959
|
Datadog.configure do |c|
|
1926
|
-
c.
|
1927
|
-
c.
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
|
1934
|
-
|
1960
|
+
c.service = 'billing-api'
|
1961
|
+
c.env = ENV['RACK_ENV']
|
1962
|
+
|
1963
|
+
c.tracing.report_hostname = true
|
1964
|
+
c.tracing.test_mode.enabled = (ENV['RACK_ENV'] == 'test')
|
1965
|
+
end
|
1966
|
+
```
|
1967
|
+
|
1968
|
+
**Available configuration options:**
|
1969
|
+
|
1970
|
+
| Setting | Env Var | Default | Description |
|
1971
|
+
|---------------------------------------------------------|--------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
1972
|
+
| **Global** | | | |
|
1973
|
+
| `agent.host` | `DD_AGENT_HOST` | `127.0.0.1` | Hostname of agent to where trace data will be sent. |
|
1974
|
+
| `agent.port` | `DD_TRACE_AGENT_PORT` | `8126` | Port of agent host to where trace data will be sent. |
|
1975
|
+
| | `DD_TRACE_AGENT_URL` | `nil` | Sets the URL endpoint where traces are sent. Has priority over `agent.host` and `agent.port`. |
|
1976
|
+
| `diagnostics.debug` | `DD_TRACE_DEBUG` | `false` | Enables or disables debug mode. Prints verbose logs. **NOT recommended for production or other sensitive environments.** See [Debugging and diagnostics](#debugging-and-diagnostics) for more details. |
|
1977
|
+
| `diagnostics.startup_logs.enabled` | `DD_TRACE_STARTUP_LOGS` | `nil` | Prints startup configuration and diagnostics to log. For assessing state of tracing at application startup. See [Debugging and diagnostics](#debugging-and-diagnostics) for more details. |
|
1978
|
+
| `env` | `DD_ENV` | `nil` | Your application environment. (e.g. `production`, `staging`, etc.) This value is set as a tag on all traces. |
|
1979
|
+
| `service` | `DD_SERVICE` | *Ruby filename* | Your application's default service name. (e.g. `billing-api`) This value is set as a tag on all traces. |
|
1980
|
+
| `tags` | `DD_TAGS` | `nil` | Custom tags in value pairs separated by `,` (e.g. `layer:api,team:intake`) These tags are set on all traces. See [Environment and tags](#environment-and-tags) for more details. |
|
1981
|
+
| `time_now_provider` | | `->{ Time.now }` | Changes how time is retrieved. See [Setting the time provider](#Setting the time provider) for more details. |
|
1982
|
+
| `version` | `DD_VERSION` | `nil` | Your application version (e.g. `2.5`, `202003181415`, `1.3-alpha`, etc.) This value is set as a tag on all traces. |
|
1983
|
+
| **Tracing** | | | |
|
1984
|
+
| `tracing.analytics.enabled` | `DD_TRACE_ANALYTICS_ENABLED` | `nil` | Enables or disables trace analytics. See [Sampling](#sampling) for more details. |
|
1985
|
+
| `tracing.distributed_tracing.propagation_extract_style` | `DD_PROPAGATION_STYLE_EXTRACT` | `['Datadog','B3','B3 single header']` | Distributed tracing header formats to extract. See [Distributed Tracing](#distributed-tracing) for more details. |
|
1986
|
+
| `tracing.distributed_tracing.propagation_inject_style` | `DD_PROPAGATION_STYLE_INJECT` | `['Datadog']` | Distributed tracing header formats to inject. See [Distributed Tracing](#distributed-tracing) for more details. |
|
1987
|
+
| `tracing.enabled` | `DD_TRACE_ENABLED` | `true` | Enables or disables tracing. If set to `false` instrumentation will still run, but no traces are sent to the trace agent. |
|
1988
|
+
| `tracing.instrument(<integration-name>, <options...>)` | | | Activates instrumentation for a specific library. See [Integration instrumentation](#integration-instrumentation) for more details. |
|
1989
|
+
| `tracing.log_injection` | `DD_LOGS_INJECTION` | `true` | Injects [Trace Correlation](#trace-correlation) information into Rails logs if present. Supports the default logger (`ActiveSupport::TaggedLogging`), `lograge`, and `semantic_logger`. |
|
1990
|
+
| `tracing.partial_flush.enabled` | | `false` | Enables or disables partial flushing. Partial flushing submits completed portions of a trace to the agent. Used when tracing instruments long running tasks (e.g. jobs) with many spans. |
|
1991
|
+
| `tracing.partial_flush.min_spans_threshold` | | `500` | The number of spans that must be completed in a trace before partial flushing submits those completed spans. |
|
1992
|
+
| `tracing.sampler` | | `nil` | Advanced usage only. Sets a custom `Datadog::Tracing::Sampling::Sampler` instance. If provided, the tracer will use this sampler to determine sampling behavior. See [Application-side sampling](#application-side-sampling) for details. |
|
1993
|
+
| `tracing.sampling.default_rate` | `DD_TRACE_SAMPLE_RATE` | `nil` | Sets the trace sampling rate between `0.0` (0%) and `1.0` (100%). See [Application-side sampling](#application-side-sampling) for details. |
|
1994
|
+
| `tracing.sampling.rate_limit` | `DD_TRACE_RATE_LIMIT` | `100` (per second) | Sets a maximum number of traces per second to sample. Set a rate limit to avoid the ingestion volume overages in the case of traffic spikes. |
|
1995
|
+
| `tracing.report_hostname` | `DD_TRACE_REPORT_HOSTNAME` | `false` | Adds hostname tag to traces. |
|
1996
|
+
| `tracing.test_mode.enabled` | `DD_TRACE_TEST_MODE_ENABLED` | `false` | Enables or disables test mode, for use of tracing in test suites. |
|
1997
|
+
| `tracing.test_mode.trace_flush` | | `nil` | Object that determines trace flushing behavior. |
|
1935
1998
|
|
1936
1999
|
#### Custom logging
|
1937
2000
|
|
@@ -1953,9 +2016,7 @@ Datadog.logger.info { "this is typically called by tracing code" }
|
|
1953
2016
|
|
1954
2017
|
#### Environment and tags
|
1955
2018
|
|
1956
|
-
By default, the trace agent (not this library, but the program running in the background collecting data from various clients) uses the tags set in the agent config file,
|
1957
|
-
|
1958
|
-
You can configure the application to automatically tag your traces and metrics, using the following environment variables:
|
2019
|
+
By default, the trace agent (not this library, but the program running in the background collecting data from various clients) uses the tags set in the agent config file. You can configure the application to automatically tag your traces and metrics, using the following environment variables:
|
1959
2020
|
|
1960
2021
|
- `DD_ENV`: Your application environment (e.g. `production`, `staging`, etc.)
|
1961
2022
|
- `DD_SERVICE`: Your application's default service name (e.g. `billing-api`)
|
@@ -1981,73 +2042,43 @@ Tags can also be set directly on individual spans, which will supersede any conf
|
|
1981
2042
|
|
1982
2043
|
#### Debugging and diagnostics
|
1983
2044
|
|
1984
|
-
|
1985
|
-
|
1986
|
-
```ruby
|
1987
|
-
# config/initializers/datadog-tracer.rb
|
2045
|
+
There are two different suggested means of producing diagnostics for tracing:
|
1988
2046
|
|
1989
|
-
|
1990
|
-
Datadog.configure do |c|
|
1991
|
-
# To enable debug mode
|
1992
|
-
c.diagnostics.debug = true
|
1993
|
-
end
|
1994
|
-
```
|
2047
|
+
##### Enabling debug mode
|
1995
2048
|
|
1996
|
-
|
2049
|
+
Switching the library into debug mode will produce verbose, detailed logs about tracing activity, including any suppressed errors. This output can be helpful in identifying errors, or confirming trace output to the agent.
|
1997
2050
|
|
1998
|
-
|
1999
|
-
- `diagnostics.startup_logs.enabled`: Startup configuration and diagnostic log. Defaults to `true`. Can be configured through the `DD_TRACE_STARTUP_LOGS` environment variable.
|
2000
|
-
- `time_now_provider`: when testing, it might be helpful to use a different time provider. For Timecop, for example, `->{ Time.now_without_mock_time }` allows the tracer to use the real wall time. Span duration calculation will still use the system monotonic clock when available, thus not being affected by this setting. Defaults to `->{ Time.now }`.
|
2051
|
+
You can enable this via `diagnostics.debug = true` or `DD_TRACE_DEBUG`.
|
2001
2052
|
|
2002
|
-
|
2053
|
+
```ruby
|
2054
|
+
Datadog.configure { |c| c.diagnostics.debug = true }
|
2055
|
+
```
|
2003
2056
|
|
2004
|
-
|
2057
|
+
**We do NOT recommend use of this feature in production or other sensitive environments**, as it can be very verbose under load. It's best to use this in a controlled environment where you can control application load.
|
2005
2058
|
|
2006
|
-
|
2007
|
-
# config/initializers/datadog-tracer.rb
|
2008
|
-
# Tracer settings are set here:
|
2009
|
-
Datadog.configure do |c|
|
2010
|
-
c.tracing.enabled = true
|
2059
|
+
##### Enabling startup logs
|
2011
2060
|
|
2012
|
-
|
2013
|
-
c.tracing.sampling.default_rate = 1.0 # Recommended
|
2014
|
-
c.tracing.sampling.rate_limit = 200
|
2015
|
-
# or provide a custom implementation (overrides c.tracing.sampling settings)
|
2016
|
-
c.tracing.sampler = Datadog::Tracing::Sampling::AllSampler.new
|
2061
|
+
Startup logs produce a report of tracing state when the application is initially configured. This can be helpful for confirming that configuration and instrumentation is activated correctly.
|
2017
2062
|
|
2018
|
-
|
2019
|
-
c.tracing.partial_flush.enabled = false
|
2063
|
+
You can enable this via `diagnostics.startup_logs.enabled = true` or `DD_TRACE_STARTUP_LOGS`.
|
2020
2064
|
|
2021
|
-
|
2022
|
-
|
2023
|
-
end
|
2065
|
+
```ruby
|
2066
|
+
Datadog.configure { |c| c.diagnostics.startup_logs.enabled = true }
|
2024
2067
|
```
|
2025
2068
|
|
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.
|
2069
|
+
By default, this will be activated whenever `ddtrace` detects the application is running in a non-development environment.
|
2035
2070
|
|
2036
2071
|
### Sampling
|
2037
2072
|
|
2038
|
-
Datadog's Tracing without Limits™ allows you to send all of your traffic and [configure retention within the Datadog app](https://docs.datadoghq.com/tracing/trace_retention_and_ingestion/).
|
2039
|
-
|
2040
|
-
We recommend setting the environment variable `DD_TRACE_SAMPLE_RATE=1.0` in all new applications using `ddtrace`.
|
2041
|
-
|
2042
|
-
App Analytics, previously configured with the `tracing.analytics.enabled` setting, is deprecated in favor of Tracing without Limits™. Documentation for this [deprecated configuration is still available](https://docs.datadoghq.com/tracing/legacy_app_analytics/).
|
2043
|
-
|
2044
2073
|
#### Application-side sampling
|
2045
2074
|
|
2046
2075
|
While the trace agent can sample traces to reduce bandwidth usage, application-side sampling reduces the performance overhead.
|
2047
2076
|
|
2048
|
-
|
2077
|
+
The default sampling rate can be set between `0.0` (0%) and `1.0` (100%). Configure the rate in order to control the volume of traces sent to Datadog. When this configuration is not set, the Datadog agent will distribute a default sampling rate of 10 traces per second.
|
2078
|
+
|
2079
|
+
Set this value via `DD_TRACE_SAMPLE_RATE` or `Datadog.configure { |c| c.tracing.sampling.default_rate = <value> }`.
|
2049
2080
|
|
2050
|
-
`Datadog::Tracing::Sampling::RateSampler` samples a ratio of the traces. For example:
|
2081
|
+
Alternatively, you may provide your own sampler. The `Datadog::Tracing::Sampling::RateSampler` samples a ratio of the traces. For example:
|
2051
2082
|
|
2052
2083
|
```ruby
|
2053
2084
|
# Sample rate is between 0 (nothing sampled) to 1 (everything sampled).
|
@@ -2058,6 +2089,8 @@ Datadog.configure do |c|
|
|
2058
2089
|
end
|
2059
2090
|
```
|
2060
2091
|
|
2092
|
+
See [Additional Configuration](#additional-configuration) for more details about these settings.
|
2093
|
+
|
2061
2094
|
#### Priority sampling
|
2062
2095
|
|
2063
2096
|
Priority sampling decides whether to keep a trace by using a priority attribute propagated for distributed traces. Its value indicates to the Agent and the backend about how important the trace is.
|
@@ -2407,11 +2440,28 @@ Datadog::Tracing.trace('my.operation') { logger.warn('This is a traced operation
|
|
2407
2440
|
|
2408
2441
|
### Configuring the transport layer
|
2409
2442
|
|
2410
|
-
By default,
|
2443
|
+
By default, `ddtrace` will connect to the agent using the first available settings in the listed priority:
|
2444
|
+
|
2445
|
+
1. Via any explicitly provided configuration settings (hostname/port/transport)
|
2446
|
+
2. Via Unix Domain Socket (UDS) located at `/var/run/datadog/apm.socket`
|
2447
|
+
3. Via HTTP over TCP to `127.0.0.1:8126`
|
2411
2448
|
|
2412
2449
|
However, the tracer can be configured to send its trace data to alternative destinations, or by alternative protocols.
|
2413
2450
|
|
2414
|
-
|
2451
|
+
#### Changing default agent hostname and port
|
2452
|
+
|
2453
|
+
To change the agent host or port, provide `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT`.
|
2454
|
+
|
2455
|
+
OR within a `Datadog.configure` block, provide the following settings:
|
2456
|
+
|
2457
|
+
```ruby
|
2458
|
+
Datadog.configure do |c|
|
2459
|
+
c.agent.host = '127.0.0.1'
|
2460
|
+
c.agent.port = 8126
|
2461
|
+
end
|
2462
|
+
```
|
2463
|
+
|
2464
|
+
See [Additional Configuration](#additional-configuration) for more details.
|
2415
2465
|
|
2416
2466
|
#### Using the Net::HTTP adapter
|
2417
2467
|
|
@@ -2426,7 +2476,7 @@ Datadog.configure do |c|
|
|
2426
2476
|
end
|
2427
2477
|
```
|
2428
2478
|
|
2429
|
-
#### Using the Unix
|
2479
|
+
#### Using the Unix Domain Socket (UDS) adapter
|
2430
2480
|
|
2431
2481
|
The `UnixSocket` adapter submits traces using `Net::HTTP` over Unix socket.
|
2432
2482
|
|
@@ -2472,6 +2522,23 @@ Datadog.configure do |c|
|
|
2472
2522
|
end
|
2473
2523
|
```
|
2474
2524
|
|
2525
|
+
### Setting the time provider
|
2526
|
+
|
2527
|
+
By default, tracing uses a monotonic clock to measure the duration of spans, and timestamps (`->{ Time.now }`) for the start and end time.
|
2528
|
+
|
2529
|
+
When testing, it might be helpful to use a different time provider.
|
2530
|
+
|
2531
|
+
To change the function that provides timestamps, configure the following:
|
2532
|
+
|
2533
|
+
```ruby
|
2534
|
+
Datadog.configure do |c|
|
2535
|
+
# For Timecop, for example, `->{ Time.now_without_mock_time }` allows the tracer to use the real wall time.
|
2536
|
+
c.time_now_provider = -> { Time.now_without_mock_time }
|
2537
|
+
end
|
2538
|
+
```
|
2539
|
+
|
2540
|
+
Span duration calculation will still use the system monotonic clock when available, thus not being affected by this setting.
|
2541
|
+
|
2475
2542
|
### Metrics
|
2476
2543
|
|
2477
2544
|
The tracer and its integrations can produce some additional metrics that can provide useful insight into the performance of your application. These metrics are collected with `dogstatsd-ruby`, and can be sent to the same Datadog agent to which you send your traces.
|
@@ -2525,7 +2592,7 @@ In addition, all metrics include the following tags:
|
|
2525
2592
|
|
2526
2593
|
### OpenTracing
|
2527
2594
|
|
2528
|
-
For setting up Datadog with OpenTracing, see
|
2595
|
+
For setting up Datadog with OpenTracing, see our [Configuring OpenTracing](#configuring-opentracing) section for details.
|
2529
2596
|
|
2530
2597
|
**Configuring Datadog tracer settings**
|
2531
2598
|
|
@@ -2536,7 +2603,7 @@ The underlying Datadog tracer can be configured by passing options (which match
|
|
2536
2603
|
OpenTracing.global_tracer = Datadog::OpenTracer::Tracer.new(**options)
|
2537
2604
|
```
|
2538
2605
|
|
2539
|
-
It can also be configured by using `Datadog.configure` described in the [
|
2606
|
+
It can also be configured by using `Datadog.configure` described in the [Additional Configuration](#additional-configuration) section.
|
2540
2607
|
|
2541
2608
|
**Activating and configuring integrations**
|
2542
2609
|
|
@@ -2578,11 +2645,11 @@ Without this flag, profiles for short-lived Resque jobs will not be available as
|
|
2578
2645
|
|
2579
2646
|
By default, Datadog limits the size of trace payloads to prevent memory overhead within instrumented applications. As a result, traces containing thousands of operations may not be sent to Datadog.
|
2580
2647
|
|
2581
|
-
If traces are missing, enable [debug mode](#
|
2648
|
+
If traces are missing, enable [debug mode](#debugging-and-diagnostics) to check if messages containing `"Dropping trace. Payload too large"` are logged.
|
2582
2649
|
|
2583
|
-
Since debug mode is verbose, Datadog does not recommend leaving this enabled or enabling this in production
|
2650
|
+
Since debug mode is verbose, **Datadog does not recommend leaving this enabled or enabling this in production.** Disable it after confirming. You can inspect the [Datadog Agent logs](https://docs.datadoghq.com/agent/guide/agent-log-files/) for similar messages.
|
2584
2651
|
|
2585
|
-
If you have confirmed that traces are dropped due to large payloads, then enable the [partial_flush](#
|
2652
|
+
If you have confirmed that traces are dropped due to large payloads, then enable the [partial_flush](#additional-configuration) setting to break down large traces into smaller chunks.
|
2586
2653
|
|
2587
2654
|
### Stack level too deep
|
2588
2655
|
|
@@ -2592,7 +2659,7 @@ In Ruby version 1.9.3 and earlier, "monkey-patching" often involved the use of [
|
|
2592
2659
|
|
2593
2660
|
In Ruby 2.0, the [`Module#prepend`](https://ruby-doc.org/core-3.0.0/Module.html#method-i-prepend) feature was introduced. This feature avoids destructive method rewriting and allows multiple "monkey patches" on the same method. Consequently, it has become the safest, preferred means to "monkey patch" code.
|
2594
2661
|
|
2595
|
-
Datadog instrumentation almost exclusively uses the `Module#prepend` feature to add instrumentation non-destructively. However, some libraries (typically those supporting Ruby < 2.0) still use `alias_method` which can create conflicts with Datadog instrumentation, often resulting in `SystemStackError` or `stack level too deep` errors.
|
2662
|
+
Datadog instrumentation almost exclusively uses the `Module#prepend` feature to add instrumentation non-destructively. However, some other libraries (typically those supporting Ruby < 2.0) still use `alias_method` which can create conflicts with Datadog instrumentation, often resulting in `SystemStackError` or `stack level too deep` errors.
|
2596
2663
|
|
2597
2664
|
As the implementation of `alias_method` exists within those libraries, Datadog generally cannot fix them. However, some libraries have known workarounds:
|
2598
2665
|
|