ddtrace 1.1.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +129 -1
- data/LICENSE-3rdparty.csv +2 -0
- data/README.md +8 -3
- data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +2 -2
- data/ext/ddtrace_profiling_loader/extconf.rb +1 -0
- data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +15 -7
- data/ext/ddtrace_profiling_native_extension/clock_id.h +21 -1
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +31 -2
- data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +11 -2
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +390 -0
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +6 -0
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +391 -0
- data/ext/ddtrace_profiling_native_extension/collectors_stack.c +23 -19
- data/ext/ddtrace_profiling_native_extension/collectors_stack.h +9 -0
- data/ext/ddtrace_profiling_native_extension/extconf.rb +64 -16
- data/ext/ddtrace_profiling_native_extension/helpers.h +12 -0
- data/ext/ddtrace_profiling_native_extension/http_transport.c +334 -0
- data/ext/ddtrace_profiling_native_extension/{libddprof_helpers.h → libdatadog_helpers.h} +2 -1
- data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +116 -12
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +89 -4
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +5 -5
- data/ext/ddtrace_profiling_native_extension/profiling.c +8 -3
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +25 -0
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +65 -0
- data/ext/ddtrace_profiling_native_extension/stack_recorder.c +311 -28
- data/ext/ddtrace_profiling_native_extension/stack_recorder.h +18 -8
- data/lib/datadog/appsec/autoload.rb +4 -2
- data/lib/datadog/appsec/configuration.rb +1 -1
- data/lib/datadog/appsec/contrib/auto_instrument.rb +0 -2
- data/lib/datadog/appsec/contrib/configuration/settings.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +2 -2
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +6 -6
- data/lib/datadog/appsec/contrib/rack/integration.rb +5 -5
- data/lib/datadog/appsec/contrib/rack/patcher.rb +2 -2
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +2 -2
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +3 -3
- data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +2 -2
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +4 -4
- data/lib/datadog/appsec/contrib/rails/integration.rb +4 -4
- data/lib/datadog/appsec/contrib/rails/patcher.rb +16 -12
- data/lib/datadog/appsec/contrib/rails/reactive/action.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +2 -2
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +5 -5
- data/lib/datadog/appsec/contrib/sinatra/integration.rb +4 -4
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +16 -12
- data/lib/datadog/appsec/event.rb +3 -3
- data/lib/datadog/appsec/extensions.rb +1 -1
- data/lib/datadog/appsec/processor.rb +1 -1
- data/lib/datadog/appsec/reactive/engine.rb +2 -2
- data/lib/datadog/appsec/reactive/operation.rb +3 -3
- data/lib/datadog/appsec.rb +5 -5
- data/lib/datadog/ci/configuration/components.rb +1 -1
- data/lib/datadog/ci/configuration/settings.rb +1 -1
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +2 -2
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +5 -5
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -1
- data/lib/datadog/ci/contrib/cucumber/integration.rb +4 -4
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +2 -2
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +2 -2
- data/lib/datadog/ci/contrib/rspec/example.rb +5 -5
- data/lib/datadog/ci/contrib/rspec/integration.rb +4 -4
- data/lib/datadog/ci/contrib/rspec/patcher.rb +2 -2
- data/lib/datadog/ci/ext/environment.rb +8 -6
- data/lib/datadog/ci/extensions.rb +4 -4
- data/lib/datadog/ci/flush.rb +2 -2
- data/lib/datadog/ci/test.rb +3 -3
- data/lib/datadog/ci.rb +6 -6
- data/lib/datadog/core/buffer/cruby.rb +1 -1
- data/lib/datadog/core/buffer/thread_safe.rb +1 -1
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +6 -6
- data/lib/datadog/core/configuration/base.rb +11 -2
- data/lib/datadog/core/configuration/components.rb +70 -52
- data/lib/datadog/core/configuration/option_definition.rb +1 -1
- data/lib/datadog/core/configuration/option_definition_set.rb +1 -1
- data/lib/datadog/core/configuration/options.rb +3 -3
- data/lib/datadog/core/configuration/settings.rb +42 -8
- data/lib/datadog/core/configuration.rb +8 -5
- data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
- data/lib/datadog/core/diagnostics/health.rb +2 -2
- data/lib/datadog/core/environment/cgroup.rb +1 -1
- data/lib/datadog/core/environment/container.rb +1 -1
- data/lib/datadog/core/environment/ext.rb +1 -1
- data/lib/datadog/core/environment/identity.rb +2 -2
- data/lib/datadog/core/environment/platform.rb +40 -0
- data/lib/datadog/core/environment/socket.rb +1 -1
- data/lib/datadog/core/error.rb +1 -1
- data/lib/datadog/core/extensions.rb +1 -1
- data/lib/datadog/core/metrics/client.rb +8 -8
- data/lib/datadog/core/metrics/options.rb +3 -3
- data/lib/datadog/core/runtime/metrics.rb +6 -6
- data/lib/datadog/core/telemetry/client.rb +79 -0
- data/lib/datadog/core/telemetry/collector.rb +234 -0
- data/lib/datadog/core/telemetry/emitter.rb +48 -0
- data/lib/datadog/core/telemetry/event.rb +71 -0
- data/lib/datadog/core/telemetry/ext.rb +11 -0
- data/lib/datadog/core/telemetry/heartbeat.rb +37 -0
- data/lib/datadog/core/telemetry/http/adapters/net.rb +113 -0
- data/lib/datadog/core/telemetry/http/env.rb +20 -0
- data/lib/datadog/core/telemetry/http/ext.rb +20 -0
- data/lib/datadog/core/telemetry/http/response.rb +68 -0
- data/lib/datadog/core/telemetry/http/transport.rb +53 -0
- data/lib/datadog/core/telemetry/v1/app_event.rb +52 -0
- data/lib/datadog/core/telemetry/v1/application.rb +86 -0
- data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
- data/lib/datadog/core/telemetry/v1/dependency.rb +36 -0
- data/lib/datadog/core/telemetry/v1/host.rb +51 -0
- data/lib/datadog/core/telemetry/v1/integration.rb +58 -0
- data/lib/datadog/core/telemetry/v1/product.rb +28 -0
- data/lib/datadog/core/telemetry/v1/telemetry_request.rb +100 -0
- data/lib/datadog/core/utils/object_set.rb +1 -1
- data/lib/datadog/core/utils/sequence.rb +5 -0
- data/lib/datadog/core/utils/string_table.rb +1 -1
- data/lib/datadog/core/utils/time.rb +3 -3
- data/lib/datadog/core/utils.rb +3 -3
- data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +2 -2
- data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +3 -3
- data/lib/datadog/core/workers/async.rb +1 -1
- data/lib/datadog/core/workers/polling.rb +2 -2
- data/lib/datadog/core/workers/runtime_metrics.rb +4 -4
- data/lib/datadog/core.rb +50 -50
- data/lib/datadog/kit.rb +1 -1
- data/lib/datadog/opentracer/distributed_headers.rb +2 -2
- data/lib/datadog/opentracer/rack_propagator.rb +11 -7
- data/lib/datadog/opentracer/span.rb +1 -1
- data/lib/datadog/opentracer/text_map_propagator.rb +9 -6
- data/lib/datadog/opentracer/thread_local_scope_manager.rb +26 -3
- data/lib/datadog/opentracer/tracer.rb +19 -15
- data/lib/datadog/opentracer.rb +16 -16
- data/lib/datadog/profiling/buffer.rb +3 -3
- data/lib/datadog/profiling/collectors/code_provenance.rb +1 -0
- data/lib/datadog/profiling/collectors/cpu_and_wall_time.rb +27 -0
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +74 -0
- data/lib/datadog/profiling/collectors/old_stack.rb +7 -7
- data/lib/datadog/profiling/collectors/stack.rb +3 -6
- data/lib/datadog/profiling/encoding/profile.rb +8 -12
- data/lib/datadog/profiling/events/stack.rb +1 -1
- data/lib/datadog/profiling/exporter.rb +66 -9
- data/lib/datadog/profiling/ext/forking.rb +41 -42
- data/lib/datadog/profiling/ext.rb +3 -15
- data/lib/datadog/profiling/flush.rb +25 -56
- data/lib/datadog/profiling/http_transport.rb +132 -0
- data/lib/datadog/profiling/old_ext.rb +42 -0
- data/lib/datadog/profiling/old_recorder.rb +101 -0
- data/lib/datadog/profiling/pprof/builder.rb +4 -4
- data/lib/datadog/profiling/pprof/converter.rb +1 -1
- data/lib/datadog/profiling/pprof/message_set.rb +1 -1
- data/lib/datadog/profiling/pprof/stack_sample.rb +4 -4
- data/lib/datadog/profiling/pprof/string_table.rb +1 -1
- data/lib/datadog/profiling/pprof/template.rb +5 -5
- data/lib/datadog/profiling/preload.rb +1 -1
- data/lib/datadog/profiling/scheduler.rb +28 -46
- data/lib/datadog/profiling/stack_recorder.rb +14 -4
- data/lib/datadog/profiling/tag_builder.rb +6 -1
- data/lib/datadog/profiling/tasks/setup.rb +2 -2
- data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +2 -2
- data/lib/datadog/profiling/trace_identifiers/helper.rb +1 -1
- data/lib/datadog/profiling/transport/http/api/endpoint.rb +13 -35
- data/lib/datadog/profiling/transport/http/api/instance.rb +2 -2
- data/lib/datadog/profiling/transport/http/api/spec.rb +1 -1
- data/lib/datadog/profiling/transport/http/api.rb +5 -5
- data/lib/datadog/profiling/transport/http/builder.rb +3 -3
- data/lib/datadog/profiling/transport/http/client.rb +6 -4
- data/lib/datadog/profiling/transport/http/response.rb +1 -3
- data/lib/datadog/profiling/transport/http.rb +22 -16
- data/lib/datadog/profiling.rb +21 -20
- data/lib/datadog/tracing/analytics.rb +1 -1
- data/lib/datadog/tracing/buffer.rb +5 -5
- data/lib/datadog/tracing/context.rb +1 -1
- data/lib/datadog/tracing/context_provider.rb +18 -2
- data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/action_cable/event.rb +4 -5
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +4 -4
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +3 -3
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +4 -4
- data/lib/datadog/tracing/contrib/action_cable/events.rb +4 -4
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +3 -4
- data/lib/datadog/tracing/contrib/action_cable/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/action_cable/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +3 -3
- data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +3 -3
- data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +3 -3
- data/lib/datadog/tracing/contrib/action_mailer/events.rb +2 -2
- data/lib/datadog/tracing/contrib/action_mailer/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +10 -6
- data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/action_pack/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/action_pack/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/action_view/event.rb +1 -1
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +5 -5
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +5 -5
- data/lib/datadog/tracing/contrib/action_view/events.rb +2 -2
- data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +2 -2
- data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +2 -2
- data/lib/datadog/tracing/contrib/action_view/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/action_view/patcher.rb +7 -7
- data/lib/datadog/tracing/contrib/action_view/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/active_job/event.rb +3 -3
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +4 -4
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +4 -4
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +4 -4
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +4 -4
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +4 -4
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +4 -4
- data/lib/datadog/tracing/contrib/active_job/events.rb +6 -6
- data/lib/datadog/tracing/contrib/active_job/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/active_job/log_injection.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +4 -5
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +3 -3
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +2 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +2 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +3 -4
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +2 -2
- data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/active_record/event.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +4 -4
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +6 -6
- data/lib/datadog/tracing/contrib/active_record/events.rb +2 -2
- data/lib/datadog/tracing/contrib/active_record/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/active_record/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/active_record/utils.rb +2 -2
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +19 -9
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/active_support/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/analytics.rb +1 -1
- data/lib/datadog/tracing/contrib/auto_instrument.rb +4 -4
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +3 -4
- data/lib/datadog/tracing/contrib/aws/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/configurable.rb +2 -2
- data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -1
- data/lib/datadog/tracing/contrib/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +4 -5
- data/lib/datadog/tracing/contrib/dalli/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/dalli/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/delayed_job/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/delayed_job/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +8 -2
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +3 -4
- data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +32 -0
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +6 -7
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +4 -5
- data/lib/datadog/tracing/contrib/ethon/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +3 -4
- data/lib/datadog/tracing/contrib/ethon/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/excon/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/excon/middleware.rb +6 -7
- data/lib/datadog/tracing/contrib/excon/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/extensions.rb +5 -3
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/faraday/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +5 -6
- data/lib/datadog/tracing/contrib/faraday/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -5
- data/lib/datadog/tracing/contrib/grape/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/grape/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/graphql/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -3
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +4 -3
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +14 -5
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +6 -6
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +7 -4
- data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/grpc/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +1 -2
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +3 -4
- data/lib/datadog/tracing/contrib/http/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/http/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +4 -5
- data/lib/datadog/tracing/contrib/httpclient/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/httpclient/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +4 -5
- data/lib/datadog/tracing/contrib/httprb/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/httprb/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/kafka/event.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +2 -2
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +4 -4
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +4 -4
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +4 -4
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +4 -4
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +2 -2
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +2 -2
- data/lib/datadog/tracing/contrib/kafka/events.rb +9 -9
- data/lib/datadog/tracing/contrib/kafka/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -2
- data/lib/datadog/tracing/contrib/lograge/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +3 -3
- data/lib/datadog/tracing/contrib/mongodb/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
- data/lib/datadog/tracing/contrib/mongodb/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +4 -4
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +3 -4
- data/lib/datadog/tracing/contrib/mysql2/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/mysql2/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/patcher.rb +13 -2
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +35 -0
- data/lib/datadog/tracing/contrib/pg/ext.rb +31 -0
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +128 -0
- data/lib/datadog/tracing/contrib/pg/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/pg/patcher.rb +31 -0
- data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -3
- data/lib/datadog/tracing/contrib/presto/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/presto/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/qless/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/qless/patcher.rb +1 -2
- data/lib/datadog/tracing/contrib/qless/qless_job.rb +2 -3
- data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +0 -2
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/que/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/que/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
- data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/racecar/event.rb +4 -5
- data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
- data/lib/datadog/tracing/contrib/racecar/events/consume.rb +2 -2
- data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
- data/lib/datadog/tracing/contrib/racecar/events.rb +3 -3
- data/lib/datadog/tracing/contrib/racecar/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/racecar/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/rack/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +24 -20
- data/lib/datadog/tracing/contrib/rack/patcher.rb +12 -2
- data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +4 -1
- data/lib/datadog/tracing/contrib/rails/framework.rb +18 -22
- data/lib/datadog/tracing/contrib/rails/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -2
- data/lib/datadog/tracing/contrib/rails/patcher.rb +7 -8
- data/lib/datadog/tracing/contrib/rails/railtie.rb +3 -3
- data/lib/datadog/tracing/contrib/rails/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +17 -2
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +12 -7
- data/lib/datadog/tracing/contrib/rake/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/rake/patcher.rb +3 -4
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +6 -7
- data/lib/datadog/tracing/contrib/redis/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/redis/patcher.rb +6 -6
- data/lib/datadog/tracing/contrib/redis/tags.rb +3 -4
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/resque/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/resque/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +3 -4
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +3 -2
- data/lib/datadog/tracing/contrib/rest_client/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/rest_client/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -6
- data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -2
- data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/sequel/database.rb +4 -5
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +4 -5
- data/lib/datadog/tracing/contrib/sequel/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/sequel/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -2
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/shoryuken/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +4 -5
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +6 -0
- data/lib/datadog/tracing/contrib/sidekiq/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +14 -7
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +19 -1
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/{scheduled_push.rb → redis_info.rb} +5 -6
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +53 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -6
- data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +2 -2
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/sinatra/env.rb +2 -2
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +0 -2
- data/lib/datadog/tracing/contrib/sinatra/headers.rb +1 -1
- data/lib/datadog/tracing/contrib/sinatra/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/sinatra/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +7 -8
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +6 -7
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +2 -3
- data/lib/datadog/tracing/contrib/status_code_matcher.rb +2 -2
- data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +3 -4
- data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +4 -5
- data/lib/datadog/tracing/contrib.rb +48 -47
- data/lib/datadog/tracing/correlation.rb +1 -1
- data/lib/datadog/tracing/distributed/headers/b3.rb +4 -4
- data/lib/datadog/tracing/distributed/headers/b3_single.rb +7 -7
- data/lib/datadog/tracing/distributed/headers/datadog.rb +3 -3
- data/lib/datadog/tracing/distributed/headers/parser.rb +37 -0
- data/lib/datadog/tracing/distributed/helpers.rb +36 -2
- data/lib/datadog/tracing/distributed/metadata/b3.rb +55 -0
- data/lib/datadog/tracing/distributed/metadata/b3_single.rb +66 -0
- data/lib/datadog/tracing/distributed/metadata/datadog.rb +73 -0
- data/lib/datadog/tracing/distributed/metadata/parser.rb +34 -0
- data/lib/datadog/tracing/event.rb +1 -1
- data/lib/datadog/tracing/metadata/analytics.rb +2 -2
- data/lib/datadog/tracing/metadata/errors.rb +2 -2
- data/lib/datadog/tracing/metadata/ext.rb +25 -0
- data/lib/datadog/tracing/metadata/tagging.rb +8 -2
- data/lib/datadog/tracing/metadata.rb +3 -3
- data/lib/datadog/tracing/pipeline/span_filter.rb +10 -6
- data/lib/datadog/tracing/pipeline.rb +3 -3
- data/lib/datadog/tracing/propagation/grpc.rb +68 -58
- data/lib/datadog/tracing/propagation/http.rb +8 -8
- data/lib/datadog/tracing/runtime/metrics.rb +1 -1
- data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
- data/lib/datadog/tracing/sampling/priority_sampler.rb +5 -5
- data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +2 -2
- data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +3 -3
- data/lib/datadog/tracing/sampling/rate_limiter.rb +1 -1
- data/lib/datadog/tracing/sampling/rate_sampler.rb +7 -7
- data/lib/datadog/tracing/sampling/rule.rb +3 -3
- data/lib/datadog/tracing/sampling/rule_sampler.rb +4 -4
- data/lib/datadog/tracing/sampling/span/matcher.rb +80 -0
- data/lib/datadog/tracing/span.rb +25 -5
- data/lib/datadog/tracing/span_operation.rb +10 -9
- data/lib/datadog/tracing/sync_writer.rb +5 -5
- data/lib/datadog/tracing/trace_operation.rb +16 -9
- data/lib/datadog/tracing/trace_segment.rb +5 -5
- data/lib/datadog/tracing/tracer.rb +15 -15
- data/lib/datadog/tracing/workers/trace_writer.rb +9 -9
- data/lib/datadog/tracing/workers.rb +3 -3
- data/lib/datadog/tracing/writer.rb +5 -5
- data/lib/datadog/tracing.rb +8 -8
- data/lib/ddtrace/auto_instrument.rb +9 -2
- data/lib/ddtrace/transport/ext.rb +7 -1
- data/lib/ddtrace/transport/http/adapters/net.rb +3 -2
- data/lib/ddtrace/transport/http/adapters/test.rb +1 -1
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -2
- data/lib/ddtrace/transport/http/api/map.rb +1 -1
- data/lib/ddtrace/transport/http/api.rb +4 -4
- data/lib/ddtrace/transport/http/builder.rb +5 -5
- data/lib/ddtrace/transport/http/client.rb +2 -2
- data/lib/ddtrace/transport/http/response.rb +1 -1
- data/lib/ddtrace/transport/http/statistics.rb +1 -1
- data/lib/ddtrace/transport/http/traces.rb +5 -5
- data/lib/ddtrace/transport/http.rb +12 -9
- data/lib/ddtrace/transport/io/client.rb +2 -2
- data/lib/ddtrace/transport/io/response.rb +1 -1
- data/lib/ddtrace/transport/io/traces.rb +3 -3
- data/lib/ddtrace/transport/io.rb +3 -3
- data/lib/ddtrace/transport/statistics.rb +2 -2
- data/lib/ddtrace/transport/trace_formatter.rb +5 -5
- data/lib/ddtrace/transport/traces.rb +5 -5
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace.rb +6 -6
- metadata +57 -33
- data/.editorconfig +0 -22
- data/.gitignore +0 -58
- data/CONTRIBUTING.md +0 -81
- data/ddtrace.gemspec +0 -68
- data/docs/0.x-trace.png +0 -0
- data/docs/1.0-trace.png +0 -0
- data/docs/AutoInstrumentation.md +0 -36
- data/docs/Deprecation.md +0 -8
- data/docs/DevelopmentGuide.md +0 -259
- data/docs/GettingStarted.md +0 -2688
- data/docs/ProfilingDevelopment.md +0 -110
- data/docs/PublicApi.md +0 -14
- data/docs/UpgradeGuide.md +0 -736
- data/lib/datadog/profiling/recorder.rb +0 -117
- data/lib/datadog/profiling/transport/client.rb +0 -16
- data/lib/datadog/profiling/transport/io/client.rb +0 -29
- data/lib/datadog/profiling/transport/io/response.rb +0 -18
- data/lib/datadog/profiling/transport/io.rb +0 -32
- data/lib/datadog/profiling/transport/parcel.rb +0 -19
- data/lib/datadog/profiling/transport/request.rb +0 -17
- data/lib/datadog/profiling/transport/response.rb +0 -10
- data/lib/datadog/tracing/distributed/parser.rb +0 -70
data/docs/UpgradeGuide.md
DELETED
@@ -1,736 +0,0 @@
|
|
1
|
-
# Upgrading ddtrace
|
2
|
-
|
3
|
-
# From 0.x to 1.0
|
4
|
-
|
5
|
-
Upgrading `ddtrace` from 0.x to 1.x introduces some breaking changes which are outlined below.
|
6
|
-
|
7
|
-
**How to upgrade basic usage**
|
8
|
-
|
9
|
-
For users with a basic implementation (configuration file + out-of-the-box instrumentation), only minor changes to your configuration file are required: most applications take just minutes to update. Check out the following sections for a step-by-step guide.
|
10
|
-
|
11
|
-
- [Configuration](#1.0-configuration)
|
12
|
-
- [`require` paths have changed](#1.0-configuration-requires)
|
13
|
-
- [Settings have been renamed](#1.0-configuration-settings)
|
14
|
-
- [Activating instrumentation](#1.0-configuration-instrumentation)
|
15
|
-
- [Instrumentation](#1.0-instrumentation)
|
16
|
-
- [Service naming](#1.0-instrumentation-service-naming)
|
17
|
-
|
18
|
-
**Additional upgrades for advanced usage**
|
19
|
-
|
20
|
-
For users with an advanced implementation of `ddtrace` (custom instrumentation, sampling or processing behavior, etc), some additional namespace and behavioral changes may be required. See the following sections for details about what features changed and how to use them.
|
21
|
-
|
22
|
-
- [Namespacing](#1.0-namespacing)
|
23
|
-
- [Trace API](#1.0-trace-api)
|
24
|
-
- [Removed `Datadog.tracer`](#1.0-trace-api-removed-tracer)
|
25
|
-
- [Removed access to `Datadog::Context`](#1.0-trace-api-removed-context)
|
26
|
-
- [Manual tracing & trace model](#1.0-trace-api-manual-tracing)
|
27
|
-
- [Accessing trace state](#1.0-trace-api-trace-state)
|
28
|
-
- [Distributed tracing](#1.0-trace-api-distributed)
|
29
|
-
- [Over HTTP](#1.0-trace-api-distributed-http)
|
30
|
-
- [Over gRPC](#1.0-trace-api-distributed-grpc)
|
31
|
-
- [Between threads](#1.0-trace-api-distributed-threads)
|
32
|
-
- [Sampling](#1.0-trace-api-sampling)
|
33
|
-
- [Processing pipeline](#1.0-trace-api-pipeline)
|
34
|
-
|
35
|
-
**Appendix**
|
36
|
-
|
37
|
-
For a comprehensive list of everything that changed, the appendix hosts some helpful and detailed tables with recommendations.
|
38
|
-
|
39
|
-
- [Namespace mappings](#1.0-appendix-namespace)
|
40
|
-
- [Constants](#1.0-appendix-namespace-constants)
|
41
|
-
- [Breaking changes](#1.0-appendix-breaking-changes)
|
42
|
-
|
43
|
-
<h1 id="1.0-basic-upgrade">Upgrading basic usage</h1>
|
44
|
-
|
45
|
-
<h2 id="1.0-configuration">Configuration</h2>
|
46
|
-
|
47
|
-
<h3 id="1.0-configuration-requires">`require` paths have changed</h3>
|
48
|
-
|
49
|
-
If you `require` any of the following paths, update them accordingly:
|
50
|
-
|
51
|
-
| 0.x `require` path | 1.0 `require` path |
|
52
|
-
|-----------------------------|-----------------------------|
|
53
|
-
| `ddtrace/opentelemetry` | Removed |
|
54
|
-
| `ddtrace/opentracer` | `datadog/opentracer` |
|
55
|
-
| `ddtrace/profiling/preload` | `datadog/profiling/preload` |
|
56
|
-
|
57
|
-
Using `require 'ddtrace'` will load all features by default. To load individual features, you may use the following paths instead:
|
58
|
-
|
59
|
-
| Feature | 1.0 `require` path |
|
60
|
-
|-------------|----------------------|
|
61
|
-
| AppSec | `datadog/appsec` |
|
62
|
-
| CI | `datadog/ci` |
|
63
|
-
| OpenTracing | `datadog/opentracer` |
|
64
|
-
| Profiling | `datadog/profiling` |
|
65
|
-
| Tracing | `datadog/tracing` |
|
66
|
-
|
67
|
-
<h3 id="1.0-configuration-settings">Settings have been renamed</h3>
|
68
|
-
|
69
|
-
Configuration settings have been sorted into smaller configuration groups, by feature.
|
70
|
-
|
71
|
-
- `Datadog.configure { |c| c.* }`: Datadog configuration settings
|
72
|
-
- `Datadog.configure { |c| c.tracing.* }`: Tracing configuration settings
|
73
|
-
- `Datadog.configure { |c| c.profiling.* }`: Profiling configuration settings
|
74
|
-
- `Datadog.configure { |c| c.ci.* }`: CI configuration settings
|
75
|
-
|
76
|
-
For existing applications, configuration files should be updated accordingly. For example:
|
77
|
-
|
78
|
-
```ruby
|
79
|
-
# config/initializers/datadog.rb
|
80
|
-
require 'ddtrace'
|
81
|
-
|
82
|
-
### Old 0.x ###
|
83
|
-
Datadog.configure do |c|
|
84
|
-
# Global settings
|
85
|
-
c.tracer.hostname = '127.0.0.1'
|
86
|
-
c.tracer.port = 8126
|
87
|
-
c.runtime_metrics.enabled = true
|
88
|
-
c.service = 'billing-api'
|
89
|
-
|
90
|
-
# Tracing settings
|
91
|
-
c.analytics.enabled = true
|
92
|
-
c.tracer.partial_flush.enabled = true
|
93
|
-
|
94
|
-
# CI settings
|
95
|
-
c.ci_mode = (ENV['DD_ENV'] == 'ci')
|
96
|
-
|
97
|
-
# Instrumentation
|
98
|
-
c.use :rails
|
99
|
-
c.use :redis, service_name: 'billing-redis'
|
100
|
-
c.use :rspec
|
101
|
-
end
|
102
|
-
|
103
|
-
|
104
|
-
### New 1.0 ###
|
105
|
-
Datadog.configure do |c|
|
106
|
-
# Global settings
|
107
|
-
c.agent.host = '127.0.0.1'
|
108
|
-
c.agent.port = 8126
|
109
|
-
c.runtime_metrics.enabled = true
|
110
|
-
c.service = 'billing-api'
|
111
|
-
|
112
|
-
# Tracing settings
|
113
|
-
c.tracing.analytics.enabled = true
|
114
|
-
c.tracing.partial_flush.enabled = true
|
115
|
-
|
116
|
-
# CI settings
|
117
|
-
c.ci.enabled = (ENV['DD_ENV'] == 'ci')
|
118
|
-
|
119
|
-
# Instrumentation
|
120
|
-
c.tracing.instrument :rails
|
121
|
-
c.tracing.instrument :redis, service_name: 'billing-redis'
|
122
|
-
c.ci.instrument :rspec
|
123
|
-
end
|
124
|
-
```
|
125
|
-
|
126
|
-
Check out the table below for a list of common mappings:
|
127
|
-
|
128
|
-
| 0.x setting | 1.0 setting |
|
129
|
-
|----------------------------------------|---------------------------------|
|
130
|
-
| `analytics.enabled` | `tracing.analytics.enabled` |
|
131
|
-
| `ci_mode.context_flush` | `ci.context_flush` |
|
132
|
-
| `ci_mode.enabled` | `ci.enabled` |
|
133
|
-
| `ci_mode.writer_options` | `ci.writer_options` |
|
134
|
-
| `distributed_tracing` | `tracing.distributed_tracing` |
|
135
|
-
| `logger=` | `logger.instance=` |
|
136
|
-
| `profiling.exporter.transport_options` | Removed |
|
137
|
-
| `report_hostname` | `tracing.report_hostname` |
|
138
|
-
| `runtime_metrics_enabled` | `runtime_metrics.enabled` |
|
139
|
-
| `runtime_metrics(options)` | Removed |
|
140
|
-
| `sampling` | `tracing.sampling` |
|
141
|
-
| `test_mode` | `tracing.test_mode` |
|
142
|
-
| `tracer=` | Removed |
|
143
|
-
| `tracer.debug` | `diagnostics.debug` |
|
144
|
-
| `tracer.enabled` | `tracing.enabled` |
|
145
|
-
| `tracer.env` | `env` |
|
146
|
-
| `tracer.hostname` | `agent.host` |
|
147
|
-
| `tracer.instance` | `tracing.instance` |
|
148
|
-
| `tracer.log` | `logger.instance` |
|
149
|
-
| `tracer.partial_flush` | `tracing.partial_flush.enabled` |
|
150
|
-
| `tracer.port` | `agent.port` |
|
151
|
-
| `tracer.sampler` | `tracing.sampler` |
|
152
|
-
| `tracer.tags` | `tags` |
|
153
|
-
| `tracer.transport_options` | `tracing.transport_options` |
|
154
|
-
| `tracer.transport_options(options)` | Removed |
|
155
|
-
| `tracer.writer` | `tracing.writer` |
|
156
|
-
| `tracer.writer_options` | `tracing.writer_options` |
|
157
|
-
| `use` | `tracing.instrument` |
|
158
|
-
|
159
|
-
<h3 id="1.0-configuration-instrumentation">Activating instrumentation</h3>
|
160
|
-
|
161
|
-
- The `use` function has been renamed to `instrument`.
|
162
|
-
- `instrument` has been namespaced within the feature to which it belongs.
|
163
|
-
|
164
|
-
As an example:
|
165
|
-
|
166
|
-
```ruby
|
167
|
-
### Old 0.x ###
|
168
|
-
Datadog.configure do |c|
|
169
|
-
# Tracing instrumentation
|
170
|
-
c.use :rails
|
171
|
-
|
172
|
-
# CI instrumentation
|
173
|
-
c.use :cucumber
|
174
|
-
end
|
175
|
-
|
176
|
-
|
177
|
-
### New 1.0 ###
|
178
|
-
Datadog.configure do |c|
|
179
|
-
# Tracing instrumentation
|
180
|
-
c.tracing.instrument :rails
|
181
|
-
|
182
|
-
# CI instrumentation
|
183
|
-
c.ci.instrument :cucumber
|
184
|
-
end
|
185
|
-
```
|
186
|
-
|
187
|
-
Similarly, if you were accessing configuration for instrumentation, you will need to use the appropriate namespace:
|
188
|
-
|
189
|
-
```ruby
|
190
|
-
### Old 0.x ###
|
191
|
-
Datadog.configuration[:rails][:service_name]
|
192
|
-
Datadog.configuration[:cucumber][:service_name]
|
193
|
-
|
194
|
-
### New 1.0 ###
|
195
|
-
Datadog.configuration.tracing[:rails][:service_name]
|
196
|
-
Datadog.configuration.ci[:cucumber][:service_name]
|
197
|
-
```
|
198
|
-
|
199
|
-
<h2 id="1.0-instrumentation">Instrumentation</h2>
|
200
|
-
|
201
|
-
<h3 id="1.0-instrumentation-service-naming">Service naming</h3>
|
202
|
-
|
203
|
-
**Define an application service name**
|
204
|
-
|
205
|
-
We recommend setting the application's service name with `DD_SERVICE`, or by adding the following configuration:
|
206
|
-
|
207
|
-
```ruby
|
208
|
-
Datadog.configure do |c|
|
209
|
-
c.service = 'billing-api' # Or DD_SERVICE. Defaults to process name.
|
210
|
-
end
|
211
|
-
```
|
212
|
-
|
213
|
-
If this is not set, it will default to the process name.
|
214
|
-
|
215
|
-
**Update service names for your integrations**
|
216
|
-
|
217
|
-
Spans now inherit the global `service` name by default, unless otherwise explicitly set. This means, generally speaking, spans generated by Datadog integrations will default to the global `service` name, unless the `service_name` setting is configured for that integration.
|
218
|
-
|
219
|
-
Spans that describe external services (e.g. `mysql`) will continue to default to some other name that describes the external service instead. (e.g. `mysql`)
|
220
|
-
|
221
|
-
```ruby
|
222
|
-
### Old 0.x ###
|
223
|
-
Datadog.configure do |c|
|
224
|
-
# Instrumentation that measures internal behavior
|
225
|
-
c.use :rails, service_name: 'billing-api'
|
226
|
-
c.use :resque, service_name: 'billing-api'
|
227
|
-
c.use :sidekiq, service_name: 'billing-api'
|
228
|
-
|
229
|
-
# Instrumentation that measures external services
|
230
|
-
c.use :active_record, service_name: 'billing-api_mysql' # Defaults to DB type e.g. mysql
|
231
|
-
c.use :http, service_name: 'billing-api_http' # Defaults to net/http
|
232
|
-
c.use :redis, service_name: 'billing-api_redis' # Defaults to redis
|
233
|
-
end
|
234
|
-
|
235
|
-
### New 1.0 ###
|
236
|
-
Datadog.configure do |c|
|
237
|
-
c.service = 'billing-api'
|
238
|
-
|
239
|
-
# Instrumentation that measures internal behavior
|
240
|
-
# now inherits the application's service name.
|
241
|
-
c.tracing.instrument :rails
|
242
|
-
c.tracing.instrument :resque
|
243
|
-
c.tracing.instrument :sidekiq
|
244
|
-
|
245
|
-
# Instrumentation that measures external services
|
246
|
-
# defaults to adapter-specific names. You may still override
|
247
|
-
# these names with the `service_name:` option.
|
248
|
-
c.tracing.instrument :active_record, service_name: 'billing-api_mysql' # Defaults to DB type e.g. mysql
|
249
|
-
c.tracing.instrument :http, service_name: 'billing-api_http' # Defaults to net/http
|
250
|
-
c.tracing.instrument :redis, service_name: 'billing-api_redis' # Defaults to redis
|
251
|
-
end
|
252
|
-
```
|
253
|
-
|
254
|
-
**Update Rails instrumentation**
|
255
|
-
|
256
|
-
If your application activates and configures `rails` instrumentation, you will need to adjust your settings slightly.
|
257
|
-
|
258
|
-
The following options have been removed; instead, configure the underlying instrumentation directly.
|
259
|
-
|
260
|
-
| 0.x setting | 1.0 setting |
|
261
|
-
|---------------------------------------------|----------------------------------------------------------------|
|
262
|
-
| `use :rails, cache_service: <SERVICE>` | `tracing.instrument :active_support, cache_service: <SERVICE>` |
|
263
|
-
| `use :rails, controller_service: <SERVICE>` | `tracing.instrument :action_pack, service_name: <SERVICE>` |
|
264
|
-
| `use :rails, database_service: <SERVICE>` | `tracing.instrument :active_record, service_name: <SERVICE>` |
|
265
|
-
| `use :rails, job_service: <SERVICE>` | `tracing.instrument :active_job, service_name: <SERVICE>` |
|
266
|
-
| `use :rails, log_injection: true` | `tracing.log_injection = true` (Is `true` by default.) |
|
267
|
-
|
268
|
-
```ruby
|
269
|
-
### Old 0.x ###
|
270
|
-
Datadog.configure do |c|
|
271
|
-
c.use :rails, service_name: 'billing-api',
|
272
|
-
cache_service: 'billing-api-cache',
|
273
|
-
controller_service: 'billing-api-controllers',
|
274
|
-
database_service: 'billing-api-db',
|
275
|
-
job_service: 'billing-api-jobs',
|
276
|
-
log_injection: true
|
277
|
-
end
|
278
|
-
|
279
|
-
### New 1.0 ###
|
280
|
-
Datadog.configure do |c|
|
281
|
-
c.service = 'billing-api'
|
282
|
-
|
283
|
-
c.tracing.instrument :rails
|
284
|
-
c.tracing.instrument :active_support, cache_service: 'billing-api-cache'
|
285
|
-
c.tracing.instrument :action_pack, service_name: 'billing-api-controllers'
|
286
|
-
c.tracing.instrument :active_record, service_name: 'billing-api-db'
|
287
|
-
c.tracing.instrument :active_job, service_name: 'billing-api-jobs'
|
288
|
-
end
|
289
|
-
```
|
290
|
-
|
291
|
-
<h1 id="1.0-advanced-upgrade">Upgrading advanced usage</h1>
|
292
|
-
|
293
|
-
<h2 id="1.0-namespacing">Namespacing</h2>
|
294
|
-
|
295
|
-
Many files and constants within `ddtrace` have been recategorized by feature. The new categorization scheme is as follows:
|
296
|
-
|
297
|
-
| Feature | Namespace | File path |
|
298
|
-
|------------------|--------------------------|-------------------------|
|
299
|
-
| Globals | `Datadog` | `ddtrace` |
|
300
|
-
| | | |
|
301
|
-
| CI | `Datadog::CI` | `datadog/ci` |
|
302
|
-
| Core (Internals) | `Datadog::Core` | `datadog/core` |
|
303
|
-
| OpenTelemetry | `Datadog::OpenTelemetry` | `datadog/opentelemetry` |
|
304
|
-
| OpenTracing | `Datadog::OpenTracer` | `datadog/opentracer` |
|
305
|
-
| Profiling | `Datadog::Profiling` | `datadog/profiling` |
|
306
|
-
| Security | `Datadog::AppSec` | `datadog/appsec` |
|
307
|
-
| Tracing | `Datadog::Tracing` | `datadog/trace` |
|
308
|
-
|
309
|
-
As a result, if your application referenced file paths or constants affected by this change, they will need to be updated. Check out the [namespace mappings](#1.0-appendix-namespace) for some common cases and how to update them.
|
310
|
-
|
311
|
-
<h2 id="1.0-trace-api">Trace API</h2>
|
312
|
-
|
313
|
-
Usage of `Datadog.tracer` has been replaced with the `Datadog::Tracing` trace API. This module contains most of the functions that `Datadog.tracer` had, and most use cases will map one-to-one.
|
314
|
-
|
315
|
-
For example:
|
316
|
-
|
317
|
-
```ruby
|
318
|
-
### Old 0.x ###
|
319
|
-
Datadog.tracer.trace
|
320
|
-
Datadog.tracer.active_span
|
321
|
-
Datadog.tracer.active_correlation.to_s
|
322
|
-
|
323
|
-
|
324
|
-
### New 1.0 ###
|
325
|
-
Datadog::Tracing.trace
|
326
|
-
Datadog::Tracing.active_span
|
327
|
-
Datadog::Tracing.log_correlation
|
328
|
-
|
329
|
-
# ...and more...
|
330
|
-
```
|
331
|
-
|
332
|
-
See the table below for most common mappings:
|
333
|
-
|
334
|
-
| 0.x usage | 1.0 usage | Note |
|
335
|
-
|----------------------------------------------------------------------------------------------|---------------------------------------------|---------------------------------------------------------------------|
|
336
|
-
| `Datadog.tracer.active_correlation.to_s` | `Datadog::Tracing.log_correlation` | Returns `String` with trace identifiers for logging. |
|
337
|
-
| `Datadog.tracer.active_correlation` | `Datadog::Tracing.correlation` | Returns `Datadog::Tracing::Correlation::Identifier` |
|
338
|
-
| `Datadog.tracer.active_root_span` | Removed | Consider `Datadog::Tracing.active_trace` instead. |
|
339
|
-
| `Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_KEEP` | `Datadog::Tracing.keep!` | See [sampling](#1.0-trace-api-sampling) for details. |
|
340
|
-
| `Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_REJECT` | `Datadog::Tracing.reject!` | See [sampling](#1.0-trace-api-sampling) for details. |
|
341
|
-
| `Datadog.tracer.active_span.context` | Removed | Consider `Datadog::Tracing.active_trace` instead. |
|
342
|
-
| `Datadog.tracer.active_span` | `Datadog::Tracing.active_span` | See [trace state](#1.0-trace-api-trace-state) for details. |
|
343
|
-
| `Datadog.tracer.call_context` | Removed | See [trace state](#1.0-trace-api-trace-state) for details. |
|
344
|
-
| `Datadog.tracer.configure(options)` | `Datadog.configure { \|c\| ... }` | Use configuration API instead. |
|
345
|
-
| `Datadog.tracer.provider.context = context` | `Datadog::Tracing.continue_trace!(digest)` | See [distributed tracing](#1.0-trace-api-distributed) for details. |
|
346
|
-
| `Datadog.tracer.set_tags(tags)` | `Datadog.configure { \|c\| c.tags = tags }` | |
|
347
|
-
| `Datadog.tracer.shutdown!` | `Datadog::Tracing.shutdown!` | |
|
348
|
-
| `Datadog.tracer.start_span` | `Datadog::Tracing.trace` | See [manual tracing](#1.0-trace-api-manual-tracing) for details. |
|
349
|
-
| `Datadog.tracer.trace` | `Datadog::Tracing.trace` | See [manual tracing](#1.0-trace-api-manual-tracing) for details. |
|
350
|
-
|
351
|
-
|
352
|
-
Also check out the functions defined within `Datadog::Tracing` in our [public API](https://www.rubydoc.info/gems/ddtrace/) for more details on their usage.
|
353
|
-
|
354
|
-
<h3 id="1.0-trace-api-removed-tracer">Removed `Datadog.tracer`</h3>
|
355
|
-
|
356
|
-
Many of the functions accessed directly through `Datadog.tracer` have been moved to `Datadog::Tracing` instead.
|
357
|
-
|
358
|
-
<h3 id="1.0-trace-api-removed-context">Removed access to `Datadog::Context`</h3>
|
359
|
-
|
360
|
-
Direct usage of `Datadog::Context` has been removed. Previously, it was used to modify or access active trace state. Most use cases have been replaced by our [public trace API](https://www.rubydoc.info/gems/ddtrace/).
|
361
|
-
|
362
|
-
<h3 id="1.0-trace-api-manual-tracing">Manual tracing & trace model</h3>
|
363
|
-
|
364
|
-
Manual tracing is now done through the [public API](https://www.rubydoc.info/gems/ddtrace/).
|
365
|
-
|
366
|
-
Whereas in 0.x, the block would provide a `Datadog::Span` as `span`, in 1.0, the block provides a `Datadog::SpanOperation` as `span` and `Datadog::TraceOperation` as `trace`.
|
367
|
-
|
368
|
-
```ruby
|
369
|
-
### Old 0.x ###
|
370
|
-
Datadog.tracer.trace('my.job') do |span|
|
371
|
-
# Do work...
|
372
|
-
# span => #<Datadog::Tracing::Span>
|
373
|
-
end
|
374
|
-
|
375
|
-
|
376
|
-
### New 1.0 ###
|
377
|
-
Datadog::Tracing.trace('my.job') do |span, trace|
|
378
|
-
# Do work...
|
379
|
-
# span => #<Datadog::Tracing::SpanOperation>
|
380
|
-
# trace => #<Datadog::Tracing::TraceOperation>
|
381
|
-
end
|
382
|
-
```
|
383
|
-
|
384
|
-
The provided `span` is nearly identical in behavior, except access to some fields (like `context`) been removed. Instead, the provided `trace`, which models the trace itself, grants access to new functions, of which some replace old `span` behavior.
|
385
|
-
|
386
|
-
For more details about new behaviors and the trace model, see [this pull request](https://github.com/DataDog/dd-trace-rb/pull/1783).
|
387
|
-
|
388
|
-
<h3 id="1.0-trace-api-trace-state">Accessing trace state</h3>
|
389
|
-
|
390
|
-
The public API provides new functions to access active trace data:
|
391
|
-
|
392
|
-
```ruby
|
393
|
-
### Old 0.x ###
|
394
|
-
# Retuns the active context (contains trace state)
|
395
|
-
Datadog.tracer.call_context
|
396
|
-
# Returns the active Span
|
397
|
-
Datadog.tracer.active_span
|
398
|
-
# Returns an immutable set of identifiers for the current trace state
|
399
|
-
Datadog.tracer.active_correlation
|
400
|
-
|
401
|
-
|
402
|
-
### New 1.0 ###
|
403
|
-
# Retuns the active TraceOperation for the current thread (contains trace state)
|
404
|
-
Datadog::Tracing.active_trace
|
405
|
-
# Returns the active SpanOperation for the current thread (contains span state)
|
406
|
-
Datadog::Tracing.active_span
|
407
|
-
# Returns an immutable set of identifiers for the current trace state
|
408
|
-
Datadog::Tracing.correlation
|
409
|
-
```
|
410
|
-
|
411
|
-
Use of `active_root_span` has been removed.
|
412
|
-
|
413
|
-
<h3 id="1.0-trace-api-distributed">Distributed tracing</h3>
|
414
|
-
|
415
|
-
Previously, distributed tracing required building new `Datadog::Context` objects, then replacing the context within the tracer.
|
416
|
-
|
417
|
-
Instead, users must use `TraceDigest` objects derived from a trace. `TraceDigest` represents the state of a trace. It can be used to propagate a trace across execution boundaries (processes, threads) or to continue a trace locally.
|
418
|
-
|
419
|
-
```ruby
|
420
|
-
### Old 0.x ###
|
421
|
-
# Get trace continuation from active trace
|
422
|
-
env = {}
|
423
|
-
Datadog::HTTPPropagator.inject(Datadog.tracer.call_context, env)
|
424
|
-
context = Datadog::HTTPPropagator.extract(env)
|
425
|
-
|
426
|
-
# Continue a trace: implicit continuation
|
427
|
-
Datadog.tracer.provider.context = context
|
428
|
-
|
429
|
-
# Next trace inherits trace properties
|
430
|
-
Datadog.tracer.trace('my.job') do |span|
|
431
|
-
span.trace_id == context.trace_id
|
432
|
-
end
|
433
|
-
|
434
|
-
|
435
|
-
### New 1.0 ###
|
436
|
-
# Get trace continuation from active trace
|
437
|
-
trace_digest = Datadog::Tracing.active_trace.to_digest
|
438
|
-
|
439
|
-
# Continue a trace: implicit continuation
|
440
|
-
# Digest will be "consumed" by the next `trace` operation
|
441
|
-
Datadog::Tracing.continue_trace!(trace_digest)
|
442
|
-
|
443
|
-
# Next trace inherits trace properties
|
444
|
-
Datadog::Tracing.trace('my.job') do |span, trace|
|
445
|
-
trace.id == trace_digest.trace_id
|
446
|
-
end
|
447
|
-
|
448
|
-
# Second trace does NOT inherit trace properties
|
449
|
-
Datadog::Tracing.trace('my.job') do |span, trace|
|
450
|
-
trace.id != trace_digest.trace_id
|
451
|
-
end
|
452
|
-
```
|
453
|
-
|
454
|
-
New in 1.0, it's also possible to explicitly assign a trace block to continue from a specific trace, rather than implicitly inherit an active context. This gives users fine-grained control in applications where multiple traces run concurrently in the same execution context:
|
455
|
-
|
456
|
-
```ruby
|
457
|
-
### New 1.0 ###
|
458
|
-
# Get trace continuation from active trace
|
459
|
-
trace_digest = Datadog::Tracing.active_trace.to_digest
|
460
|
-
|
461
|
-
# Continue a trace: explicit continuation
|
462
|
-
# Inherits trace properties from the trace digest
|
463
|
-
Datadog::Tracing.trace('my.job', continue_from: trace_digest) do |span, trace|
|
464
|
-
trace.id == trace_digest.trace_id
|
465
|
-
end
|
466
|
-
|
467
|
-
# Continue a trace: explicit continuation (using #continue_trace!)
|
468
|
-
Datadog::Tracing.continue_trace!(trace_digest) do
|
469
|
-
# Traces implicitly continue within the block
|
470
|
-
Datadog::Tracing.trace('my.job') do |span, trace|
|
471
|
-
trace.id == trace_digest.trace_id
|
472
|
-
end
|
473
|
-
end
|
474
|
-
```
|
475
|
-
|
476
|
-
<h4 id="1.0-trace-api-distributed-http">Over HTTP</h4>
|
477
|
-
|
478
|
-
To propagate active trace to a remote service:
|
479
|
-
|
480
|
-
```ruby
|
481
|
-
### Old 0.x ###
|
482
|
-
headers = {}
|
483
|
-
context = Datadog.tracer.call_context
|
484
|
-
Datadog::HTTPPropagator.inject!(context, headers)
|
485
|
-
|
486
|
-
outgoing = Net::HTTP::Get.new(uri)
|
487
|
-
headers.each { |name, value| outgoing[name] = value }
|
488
|
-
|
489
|
-
### New 1.0 ###
|
490
|
-
headers = {}
|
491
|
-
trace_digest = Datadog::Tracing.active_trace.to_digest
|
492
|
-
Datadog::Tracing::Propagation::HTTP.inject!(trace_digest, headers)
|
493
|
-
|
494
|
-
outgoing = Net::HTTP::Get.new(uri)
|
495
|
-
headers.each { |name, value| outgoing[name] = value }
|
496
|
-
```
|
497
|
-
|
498
|
-
To continue a trace from a remote service:
|
499
|
-
|
500
|
-
```ruby
|
501
|
-
### Old 0.x ###
|
502
|
-
incoming = Rack::Request.new(env)
|
503
|
-
context = Datadog::HTTPPropagator.extract(incoming.env)
|
504
|
-
Datadog.tracer.provider.context = context
|
505
|
-
|
506
|
-
### New 1.0 ###
|
507
|
-
incoming = Rack::Request.new(env)
|
508
|
-
trace_digest = Datadog::Tracing::Propagation::HTTP.extract(incoming.env)
|
509
|
-
Datadog::Tracing.continue_trace!(trace_digest)
|
510
|
-
```
|
511
|
-
|
512
|
-
<h4 id="1.0-trace-api-distributed-grpc">Over gRPC</h4>
|
513
|
-
|
514
|
-
To propagate active trace to a remote service:
|
515
|
-
|
516
|
-
```ruby
|
517
|
-
### Old 0.x ###
|
518
|
-
context = Datadog.tracer.call_context
|
519
|
-
Datadog::GRPCPropagator.inject!(context, metadata)
|
520
|
-
|
521
|
-
### New 1.0 ###
|
522
|
-
trace_digest = Datadog::Tracing.active_trace.to_digest
|
523
|
-
Datadog::Tracing::Propagation::GRPC.inject!(trace_digest, metadata)
|
524
|
-
```
|
525
|
-
|
526
|
-
To continue a trace from a remote service:
|
527
|
-
|
528
|
-
```ruby
|
529
|
-
### Old 0.x ###
|
530
|
-
context = Datadog::GRPCPropagator.extract(metadata)
|
531
|
-
Datadog.tracer.provider.context = context
|
532
|
-
|
533
|
-
### New 1.0 ###
|
534
|
-
trace_digest = Datadog::Tracing::Propagation::GRPC.extract(metadata)
|
535
|
-
Datadog::Tracing.continue_trace!(trace_digest)
|
536
|
-
```
|
537
|
-
|
538
|
-
<h4 id="1.0-trace-api-distributed-threads">Between threads</h4>
|
539
|
-
|
540
|
-
Traces do not implicitly propagate across threads, as they are considered different execution contexts.
|
541
|
-
|
542
|
-
However, if you wish to do this, trace propagation across threads is similar to cross-process. A `TraceDigest` should be produced by the parent thread and consumed by the child thread.
|
543
|
-
|
544
|
-
NOTE: The same `TraceOperation` object should never be shared between threads; this would create race conditions.
|
545
|
-
|
546
|
-
```ruby
|
547
|
-
### New 1.0 ###
|
548
|
-
# Get trace digest
|
549
|
-
trace = Datadog::Tracing.active_trace
|
550
|
-
|
551
|
-
# NOTE: We must produce the digest BEFORE starting the thread.
|
552
|
-
# Otherwise if it's lazily evaluated within the thread,
|
553
|
-
# the thread's trace may follow the wrong parent span.
|
554
|
-
trace_digest = trace.to_digest
|
555
|
-
|
556
|
-
Thread.new do
|
557
|
-
# Inherits trace properties from the trace digest
|
558
|
-
Datadog::Tracing.trace('my.job', continue_from: trace_digest) do |span, trace|
|
559
|
-
trace.id == trace_digest.trace_id
|
560
|
-
end
|
561
|
-
end
|
562
|
-
```
|
563
|
-
|
564
|
-
<h3 id="1.0-trace-api-sampling">Sampling</h3>
|
565
|
-
|
566
|
-
Accessing `call_context` to set explicit sampling has been removed.
|
567
|
-
|
568
|
-
Instead, use the `TraceOperation` to set the sampling decision.
|
569
|
-
|
570
|
-
```ruby
|
571
|
-
### Old 0.x ###
|
572
|
-
# From within the trace:
|
573
|
-
Datadog.tracer.trace('web.request') do |span|
|
574
|
-
span.context.sampling_priority = Datadog::Ext::Priority::USER_REJECT if env.path == '/healthcheck'
|
575
|
-
end
|
576
|
-
|
577
|
-
# From outside the trace:
|
578
|
-
# Keeps current trace
|
579
|
-
Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_KEEP
|
580
|
-
# Drops current trace
|
581
|
-
Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_REJECT
|
582
|
-
|
583
|
-
|
584
|
-
### New 1.0 ###
|
585
|
-
# From within the trace:
|
586
|
-
Datadog::Tracing.trace('web.request') do |span, trace|
|
587
|
-
trace.reject! if env.path == '/healthcheck'
|
588
|
-
end
|
589
|
-
|
590
|
-
# From outside the trace:
|
591
|
-
Datadog::Tracing.keep! # Keeps current trace
|
592
|
-
Datadog::Tracing.reject! # Drops current trace
|
593
|
-
```
|
594
|
-
|
595
|
-
<h3 id="1.0-trace-api-pipeline">Processing pipeline</h3>
|
596
|
-
|
597
|
-
When using a trace processor in the processing pipeline, the block provides a `TraceSegment` as `trace` (instead of `Array[Datadog::Span]`.) This object can be directly mutated.
|
598
|
-
|
599
|
-
```ruby
|
600
|
-
### Old 0.x ###
|
601
|
-
Datadog::Pipeline.before_flush do |trace|
|
602
|
-
# Processing logic...
|
603
|
-
trace # => Array[Datadog::Span]
|
604
|
-
end
|
605
|
-
|
606
|
-
|
607
|
-
### New 1.0 ###
|
608
|
-
Datadog::Tracing.before_flush do |trace|
|
609
|
-
# Processing logic...
|
610
|
-
trace # => #<Datadog::Tracing::TraceSegment>
|
611
|
-
end
|
612
|
-
```
|
613
|
-
|
614
|
-
<h2 id="1.0-appendix">Appendix</h2>
|
615
|
-
|
616
|
-
<h3 id="1.0-appendix-namespace">Namespace mappings</h3>
|
617
|
-
|
618
|
-
<h4 id="1.0-appendix-namespace-constants">Constants</h3>
|
619
|
-
|
620
|
-
| `0.x Constant` | `1.0 Constant` |
|
621
|
-
|-----------------------------------------------------------------|-----------------------------------------------------------------------------------------|
|
622
|
-
| `Datadog::AllSampler` | `Datadog::Tracing::Sampling::AllSampler` |
|
623
|
-
| `Datadog::Buffer` | `Datadog::Core::Buffer::Random` |
|
624
|
-
| `Datadog::Chunker` | `Datadog::Core::Chunker` |
|
625
|
-
| `Datadog::Configuration` | `Datadog::Core::Configuration` |
|
626
|
-
| `Datadog::ContextFlush` | `Datadog::Tracing::Flush` |
|
627
|
-
| `Datadog::CRubyBuffer` | `Datadog::Core::Buffer::CRuby` |
|
628
|
-
| `Datadog::Diagnostics` | `Datadog::Core::Diagnostics` |
|
629
|
-
| `Datadog::DistributedTracing` | `Datadog::Tracing::Distributed` |
|
630
|
-
| `Datadog::Encoding` | `Datadog::Core::Encoding` |
|
631
|
-
| `Datadog::Error` | `Datadog::Core::Error` |
|
632
|
-
| `Datadog::Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED` | `Datadog::Tracing::Configuration::Ext::Analytics::ENV_TRACE_ANALYTICS_ENABLED` |
|
633
|
-
| `Datadog::Ext::Analytics` | `Datadog::Tracing::Metadata::Ext::Analytics` |
|
634
|
-
| `Datadog::Ext::AppTypes` | `Datadog::Tracing::Metadata::Ext::AppTypes` |
|
635
|
-
| `Datadog::Ext::Correlation::ENV_LOGS_INJECTION_ENABLED` | `Datadog::Tracing::Configuration::Ext::Correlation::ENV_LOGS_INJECTION_ENABLED` |
|
636
|
-
| `Datadog::Ext::Correlation` | `Datadog::Tracing::Correlation::Identifier` |
|
637
|
-
| `Datadog::Ext::Diagnostics` | `Datadog::Core::Diagnostics::Ext` |
|
638
|
-
| `Datadog::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT` | `Datadog::Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_EXTRACT` |
|
639
|
-
| `Datadog::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT` | `Datadog::Tracing::Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE_INJECT` |
|
640
|
-
| `Datadog::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER` | `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3_SINGLE_HEADER` |
|
641
|
-
| `Datadog::Ext::Distributed::PROPAGATION_STYLE_B3` | `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_B3` |
|
642
|
-
| `Datadog::Ext::Distributed::PROPAGATION_STYLE_DATADOG` | `Datadog::Tracing::Configuration::Ext::Distributed::PROPAGATION_STYLE_DATADOG` |
|
643
|
-
| `Datadog::Ext::Distributed` | `Datadog::Tracing::Metadata::Ext::Distributed` |
|
644
|
-
| `Datadog::Ext::DistributedTracing::TAG_ORIGIN` | `Datadog::Tracing::Metadata::Ext::Distributed::TAG_ORIGIN` |
|
645
|
-
| `Datadog::Ext::DistributedTracing::TAG_SAMPLING_PRIORITY` | `Datadog::Tracing::Metadata::Ext::Distributed::TAG_SAMPLING_PRIORITY` |
|
646
|
-
| `Datadog::Ext::DistributedTracing` | `Datadog::Tracing::Distributed::Headers::Ext` |
|
647
|
-
| `Datadog::Ext::Environment` | `Datadog::Core::Environment::Ext` |
|
648
|
-
| `Datadog::Ext::Errors` | `Datadog::Tracing::Metadata::Ext::Errors` |
|
649
|
-
| `Datadog::Ext::Git` | `Datadog::Core::Git::Ext` |
|
650
|
-
| `Datadog::Ext::HTTP` | `Datadog::Tracing::Metadata::Ext::HTTP` |
|
651
|
-
| `Datadog::Ext::Integration` | `Datadog::Tracing::Metadata::Ext` |
|
652
|
-
| `Datadog::Ext::NET::ENV_REPORT_HOSTNAME` | `Datadog::Tracing::Configuration::Ext::NET::ENV_REPORT_HOSTNAME` |
|
653
|
-
| `Datadog::Ext::NET` | `Datadog::Tracing::Metadata::Ext::NET` |
|
654
|
-
| `Datadog::Ext::Priority` | `Datadog::Tracing::Sampling::Ext::Priority` |
|
655
|
-
| `Datadog::Ext::Runtime` | `Datadog::Core::Runtime::Ext` |
|
656
|
-
| `Datadog::Ext::Sampling::ENV_RATE_LIMIT` | `Datadog::Tracing::Configuration::Ext::Sampling::ENV_RATE_LIMIT` |
|
657
|
-
| `Datadog::Ext::Sampling::ENV_SAMPLE_RATE` | `Datadog::Tracing::Configuration::Ext::Sampling::ENV_SAMPLE_RATE` |
|
658
|
-
| `Datadog::Ext::Sampling` | `Datadog::Tracing::Metadata::Ext::Sampling` |
|
659
|
-
| `Datadog::Ext::SQL` | `Datadog::Tracing::Metadata::Ext::SQL` |
|
660
|
-
| `Datadog::Ext::Test` | `Datadog::Tracing::Configuration::Ext::Test` |
|
661
|
-
| `Datadog::Ext::Transport::HTTP::ENV_DEFAULT_HOST` | `Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_HOST` |
|
662
|
-
| `Datadog::Ext::Transport::HTTP::ENV_DEFAULT_PORT` | `Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_PORT` |
|
663
|
-
| `Datadog::Ext::Transport::HTTP::ENV_DEFAULT_URL` | `Datadog::Tracing::Configuration::Ext::Transport::ENV_DEFAULT_URL` |
|
664
|
-
| `Datadog::Ext::Transport` | `Datadog::Transport::Ext` |
|
665
|
-
| `Datadog::GRPCPropagator` | `Datadog::Tracing::Propagation::GRPC` |
|
666
|
-
| `Datadog::HTTPPropagator` | `Datadog::Tracing::Propagation::HTTP` |
|
667
|
-
| `Datadog::Logger` | `Datadog::Core::Logger` |
|
668
|
-
| `Datadog::Metrics` | `Datadog::Core::Metrics::Client` |
|
669
|
-
| `Datadog::PrioritySampler` | `Datadog::Tracing::Sampling::PrioritySampler` |
|
670
|
-
| `Datadog::Quantization` | `Datadog::Contrib::Utils::Quantization` |
|
671
|
-
| `Datadog::RateByKeySampler` | `Datadog::Tracing::Sampling::RateByKeySampler` |
|
672
|
-
| `Datadog::RateByServiceSampler` | `Datadog::Tracing::Sampling::RateByServiceSampler` |
|
673
|
-
| `Datadog::RateSampler` | `Datadog::Tracing::Sampling::RateSampler` |
|
674
|
-
| `Datadog::Runtime` | `Datadog::Core::Runtime` |
|
675
|
-
| `Datadog::Sampler` | `Datadog::Tracing::Sampling::Sampler` |
|
676
|
-
| `Datadog::Tagging::Analytics` | `Datadog::Tracing::Metadata::Analytics` |
|
677
|
-
| `Datadog::Tagging::Metadata` | `Datadog::Tracing::Metadata::Tagging` |
|
678
|
-
| `Datadog::ThreadSafeBuffer` | `Datadog::Core::Buffer::ThreadSafe` |
|
679
|
-
| `Datadog::Utils` | `Datadog::Core::Utils` |
|
680
|
-
| `Datadog::Vendor::ActiveRecord` | `Datadog::Contrib::ActiveRecord::Vendor` |
|
681
|
-
| `Datadog::Vendor::Multipart` | `Datadog::Core::Vendor::Multipart` |
|
682
|
-
| `Datadog::Worker` | `Datadog::Core::Worker` |
|
683
|
-
| `Datadog::Workers` | `Datadog::Core::Workers` |
|
684
|
-
|
685
|
-
<h3 id="1.0-appendix-breaking-changes">Breaking changes</h3>
|
686
|
-
|
687
|
-
| **Category** | **Type** | **Description** | **Change / Alternative** |
|
688
|
-
|---------------------------------------|----------|---------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
689
|
-
| General | Changed | Many constants have been moved from `Datadog` to `Datadog::Core`, `Datadog::Tracing` | Update your references to these [new namespaces](#1.0-appendix-namespace-constants) where appropriate. |
|
690
|
-
| General | Changed | Some `require` paths have been moved from `ddtrace` to `datadog` | Update your references to these [new paths](#1.0-appendix-namespace-requires) where appropriate. |
|
691
|
-
| General | Removed | Support for trace agent API v0.2 | Use v0.4 instead (default behavior.) |
|
692
|
-
| General | Removed | `Datadog.configure` can no longer be called without a block | Remove uses of `Datadog.configure` without a block. |
|
693
|
-
| CI API | Changed | `DD_TRACE_CI_MODE_ENABLED` environment variable is now `DD_TRACE_CI_ENABLED` | Use `DD_TRACE_CI_ENABLED` instead. |
|
694
|
-
| Configuration | Changed | Many settings have been namespaced under specific categories | Update your configuration to these [new settings](#1.0-configuration-settings) where appropriate. |
|
695
|
-
| Configuration | Removed | `Datadog.configure(client, options)` | Use `Datadog::Tracing.configure_onto(client, options)` instead. |
|
696
|
-
| Configuration | Removed | `DD_#{integration}_ANALYTICS_ENABLED` and `DD_#{integration}_ANALYTICS_SAMPLE_RATE` environment variables | Use `DD_TRACE_#{integration}_ANALYTICS_ENABLED` and `DD_TRACE_#{integration}_ANALYTICS_SAMPLE_RATE` instead. |
|
697
|
-
| Configuration | Removed | `DD_PROPAGATION_INJECT_STYLE` and `DD_PROPAGATION_EXTRACT_STYLE` environment variables | Use `DD_PROPAGATION_STYLE_INJECT` and `DD_PROPAGATION_STYLE_EXTRACT` instead. |
|
698
|
-
| Integrations | Changed | `-` in HTTP header tag names are kept, and no longer replaced with `_` | For example: `http.response.headers.content_type` is changed to `http.response.headers.content-type`. |
|
699
|
-
| Integrations | Changed | `Contrib::Configurable#default_configuration` moved to `Tracing::Contrib::Configurable#new_configuration` | Use `Tracing::Contrib::Configurable#new_configuration` instead. |
|
700
|
-
| Integrations | Changed | `Datadog.configuration.registry` moved to `Datadog.registry` | Use `Datadog.registry` instead. |
|
701
|
-
| Integrations | Changed | `service_name` option from each integration uses the default service name, unless it represents an external service | Set `c.service` or `DD_SERVICE`, and remove `service_name` option from integration to inherit default service name. Set `service_name` option on integration to override. |
|
702
|
-
| Integrations | Removed | `tracer` integration option from all integrations | Remove this option from your configuration. |
|
703
|
-
| Integrations - ActiveJob | Removed | `log_injection` option | Use `c.tracing.log_injection` instead. |
|
704
|
-
| Integrations - ActiveModelSerializers | Removed | service_name configuration | Remove this option from your configuration. |
|
705
|
-
| Integrations - ConcurrentRuby | Removed | unused option `service_name` | Remove this option from your configuration. |
|
706
|
-
| Integrations - Presto | Changed | `out.host` tag now contains only client hostname. Before it contained `"#{hostname}:#{port}"`. | |
|
707
|
-
| Integrations - Rails | Changed | `service_name` does not propagate to sub-components (e.g. `c.use :rails, cache_service: 'my-cache'`) | Use `c.service` instead. |
|
708
|
-
| Integrations - Rails | Changed | Sub-components service_name options are now consistently called `:service_name` | Update your configuration to use `:service_name`. |
|
709
|
-
| Integrations - Rails | Changed | Trace-logging correlation is enabled by default | Can be disabled using the environment variable `DD_LOGS_INJECTION=false`. |
|
710
|
-
| Integrations - Rails | Removed | `log_injection` option. | Use global `c.tracing.log_injection` instead. |
|
711
|
-
| Integrations - Rails | Removed | `orm_service_name` option. | Remove this option from your configuration. |
|
712
|
-
| Integrations - Rails | Removed | 3.0 and 3.1 support. | Not supported. |
|
713
|
-
| Integrations - Resque | Removed | `workers` option. (All Resque workers are now automatically instrumented.) | Remove this option from your configuration. |
|
714
|
-
| Tracing API | Changed | `Correlation#to_s` to `Correlation#to_log_format` | Use `Datadog::Tracing.log_correlation` instead. |
|
715
|
-
| Tracing API | Changed | `Tracer#trace` implements keyword args | Omit invalid options from `trace` calls. |
|
716
|
-
| Tracing API | Changed | Distributed tracing takes and returns `TraceDigest` instead of `Context` | Update your usage of distributed tracing to use `continue_from` and `to_digest`. |
|
717
|
-
| Tracing API | Changed | Rules for RuleSampler now return `TraceOperation` instead of `Span` | Update Rule sampler usage to use `TraceOperation`. |
|
718
|
-
| Tracing API | Changed | Trace processors return `TraceSegment` instead of `Array[Span]` | Update pipeline callbacks to use `TraceSegment instead. |
|
719
|
-
| Tracing API | Removed | `child_of:` option from `Tracer#trace` | Not supported. |
|
720
|
-
| Tracing API | Removed | `Datadog.tracer` | Use methods in `Datadog::Tracing` instead. |
|
721
|
-
| Tracing API | Removed | `Pin.get_from(client)` | Use `Datadog::Tracing.configure_for(client)` instead. |
|
722
|
-
| Tracing API | Removed | `Pin.new(service, config: { option: value }).onto(client)` | Use `Datadog::Tracing.configure_onto(client, service_name: service, option: value)` instead. |
|
723
|
-
| Tracing API | Removed | `Pipeline.before_flush` | Use `Datadog::Tracing.before_flush` instead. |
|
724
|
-
| Tracing API | Removed | `SpanOperation#context` | Use `Datadog::Tracing.active_trace` instead. |
|
725
|
-
| Tracing API | Removed | `SpanOperation#parent`/`SpanOperation#parent=` | Not supported. |
|
726
|
-
| Tracing API | Removed | `SpanOperation#sampled` | Use `Datadog::TraceOperation#sampled?` instead. |
|
727
|
-
| Tracing API | Removed | `Tracer#active_correlation.to_log_format` | Use `Datadog::Tracing.log_correlation` instead. |
|
728
|
-
| Tracing API | Removed | `Tracer#active_correlation` | Use `Datadog::Tracing.correlation` instead. |
|
729
|
-
| Tracing API | Removed | `Tracer#active_root_span` | Use `Datadog::Tracing.active_trace` instead. |
|
730
|
-
| Tracing API | Removed | `Tracer#build_span` | Use `Datadog::Tracing.trace` instead. |
|
731
|
-
| Tracing API | Removed | `Tracer#call_context` | Use `Datadog::Tracing.active_trace` instead. |
|
732
|
-
| Tracing API | Removed | `Tracer#configure` | Not supported. |
|
733
|
-
| Tracing API | Removed | `Tracer#services` | Not supported. |
|
734
|
-
| Tracing API | Removed | `Tracer#set_service_info` | Not supported. |
|
735
|
-
| Tracing API | Removed | `Tracer#start_span` | Use `Datadog::Tracing.trace` instead. |
|
736
|
-
| Tracing API | Removed | `Writer#write` and `SyncWriter#write` `services` argument | Not supported. |
|