ls-trace 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.circleci/config.yml +673 -0
- data/.circleci/images/primary/Dockerfile-2.0.0 +73 -0
- data/.circleci/images/primary/Dockerfile-2.1.10 +73 -0
- data/.circleci/images/primary/Dockerfile-2.2.10 +73 -0
- data/.circleci/images/primary/Dockerfile-2.3.8 +75 -0
- data/.circleci/images/primary/Dockerfile-2.4.6 +73 -0
- data/.circleci/images/primary/Dockerfile-2.5.6 +73 -0
- data/.circleci/images/primary/Dockerfile-2.6.4 +73 -0
- data/.dockerignore +1 -0
- data/.env +24 -0
- data/.github/CODEOWNERS +1 -0
- data/.gitignore +59 -0
- data/.rspec +1 -0
- data/.rubocop.yml +77 -0
- data/.yardopts +5 -0
- data/Appraisals +820 -0
- data/CHANGELOG.md +1051 -0
- data/CONTRIBUTING.md +85 -0
- data/Gemfile +7 -0
- data/LICENSE +24 -0
- data/README.md +108 -0
- data/Rakefile +635 -0
- data/benchmarks/postgres_database.yml +9 -0
- data/benchmarks/sidekiq_test.rb +154 -0
- data/ddtrace.gemspec +63 -0
- data/docker-compose.yml +276 -0
- data/docs/DevelopmentGuide.md +195 -0
- data/docs/GettingStarted.md +1981 -0
- data/lib/ddtrace.rb +63 -0
- data/lib/ddtrace/analytics.rb +29 -0
- data/lib/ddtrace/augmentation.rb +13 -0
- data/lib/ddtrace/augmentation/method_wrapper.rb +20 -0
- data/lib/ddtrace/augmentation/method_wrapping.rb +38 -0
- data/lib/ddtrace/augmentation/shim.rb +102 -0
- data/lib/ddtrace/buffer.rb +119 -0
- data/lib/ddtrace/configuration.rb +30 -0
- data/lib/ddtrace/configuration/base.rb +82 -0
- data/lib/ddtrace/configuration/dependency_resolver.rb +24 -0
- data/lib/ddtrace/configuration/option.rb +55 -0
- data/lib/ddtrace/configuration/option_definition.rb +127 -0
- data/lib/ddtrace/configuration/option_definition_set.rb +18 -0
- data/lib/ddtrace/configuration/option_set.rb +6 -0
- data/lib/ddtrace/configuration/options.rb +107 -0
- data/lib/ddtrace/configuration/pin_setup.rb +30 -0
- data/lib/ddtrace/configuration/settings.rb +105 -0
- data/lib/ddtrace/context.rb +284 -0
- data/lib/ddtrace/context_flush.rb +132 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +144 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +37 -0
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +27 -0
- data/lib/ddtrace/contrib/action_pack/ext.rb +16 -0
- data/lib/ddtrace/contrib/action_pack/integration.rb +36 -0
- data/lib/ddtrace/contrib/action_pack/patcher.rb +29 -0
- data/lib/ddtrace/contrib/action_pack/utils.rb +36 -0
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +26 -0
- data/lib/ddtrace/contrib/action_view/ext.rb +17 -0
- data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +78 -0
- data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +167 -0
- data/lib/ddtrace/contrib/action_view/integration.rb +43 -0
- data/lib/ddtrace/contrib/action_view/patcher.rb +53 -0
- data/lib/ddtrace/contrib/action_view/utils.rb +32 -0
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +65 -0
- data/lib/ddtrace/contrib/active_model_serializers/events.rb +30 -0
- data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +32 -0
- data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +35 -0
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +17 -0
- data/lib/ddtrace/contrib/active_model_serializers/integration.rb +39 -0
- data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +36 -0
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +46 -0
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/active_record/event.rb +30 -0
- data/lib/ddtrace/contrib/active_record/events.rb +30 -0
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +57 -0
- data/lib/ddtrace/contrib/active_record/events/sql.rb +64 -0
- data/lib/ddtrace/contrib/active_record/ext.rb +21 -0
- data/lib/ddtrace/contrib/active_record/integration.rb +44 -0
- data/lib/ddtrace/contrib/active_record/patcher.rb +29 -0
- data/lib/ddtrace/contrib/active_record/utils.rb +76 -0
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +157 -0
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +62 -0
- data/lib/ddtrace/contrib/active_support/cache/redis.rb +47 -0
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/active_support/ext.rb +21 -0
- data/lib/ddtrace/contrib/active_support/integration.rb +38 -0
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +62 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +66 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +159 -0
- data/lib/ddtrace/contrib/active_support/patcher.rb +29 -0
- data/lib/ddtrace/contrib/analytics.rb +20 -0
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/aws/ext.rb +20 -0
- data/lib/ddtrace/contrib/aws/instrumentation.rb +56 -0
- data/lib/ddtrace/contrib/aws/integration.rb +36 -0
- data/lib/ddtrace/contrib/aws/parsed_context.rb +56 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +49 -0
- data/lib/ddtrace/contrib/aws/services.rb +115 -0
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +15 -0
- data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +35 -0
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +11 -0
- data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +23 -0
- data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +32 -0
- data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +35 -0
- data/lib/ddtrace/contrib/configurable.rb +59 -0
- data/lib/ddtrace/contrib/configuration/resolver.rb +12 -0
- data/lib/ddtrace/contrib/configuration/settings.rb +35 -0
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/dalli/ext.rb +17 -0
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +50 -0
- data/lib/ddtrace/contrib/dalli/integration.rb +36 -0
- data/lib/ddtrace/contrib/dalli/patcher.rb +73 -0
- data/lib/ddtrace/contrib/dalli/quantize.rb +22 -0
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/delayed_job/ext.rb +18 -0
- data/lib/ddtrace/contrib/delayed_job/integration.rb +32 -0
- data/lib/ddtrace/contrib/delayed_job/patcher.rb +34 -0
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +57 -0
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +26 -0
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +19 -0
- data/lib/ddtrace/contrib/elasticsearch/integration.rb +37 -0
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +124 -0
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +80 -0
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +26 -0
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +139 -0
- data/lib/ddtrace/contrib/ethon/ext.rb +15 -0
- data/lib/ddtrace/contrib/ethon/integration.rb +31 -0
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +80 -0
- data/lib/ddtrace/contrib/ethon/patcher.rb +27 -0
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +28 -0
- data/lib/ddtrace/contrib/excon/ext.rb +14 -0
- data/lib/ddtrace/contrib/excon/integration.rb +32 -0
- data/lib/ddtrace/contrib/excon/middleware.rb +154 -0
- data/lib/ddtrace/contrib/excon/patcher.rb +34 -0
- data/lib/ddtrace/contrib/extensions.rb +59 -0
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +33 -0
- data/lib/ddtrace/contrib/faraday/ext.rb +14 -0
- data/lib/ddtrace/contrib/faraday/integration.rb +36 -0
- data/lib/ddtrace/contrib/faraday/middleware.rb +93 -0
- data/lib/ddtrace/contrib/faraday/patcher.rb +82 -0
- data/lib/ddtrace/contrib/faraday/rack_builder.rb +18 -0
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +27 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +199 -0
- data/lib/ddtrace/contrib/grape/ext.rb +19 -0
- data/lib/ddtrace/contrib/grape/instrumentation.rb +33 -0
- data/lib/ddtrace/contrib/grape/integration.rb +36 -0
- data/lib/ddtrace/contrib/grape/patcher.rb +79 -0
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +27 -0
- data/lib/ddtrace/contrib/graphql/ext.rb +13 -0
- data/lib/ddtrace/contrib/graphql/integration.rb +38 -0
- data/lib/ddtrace/contrib/graphql/patcher.rb +63 -0
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +74 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +56 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +73 -0
- data/lib/ddtrace/contrib/grpc/ext.rb +15 -0
- data/lib/ddtrace/contrib/grpc/integration.rb +36 -0
- data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +49 -0
- data/lib/ddtrace/contrib/grpc/patcher.rb +78 -0
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +63 -0
- data/lib/ddtrace/contrib/http/configuration/settings.rb +26 -0
- data/lib/ddtrace/contrib/http/ext.rb +14 -0
- data/lib/ddtrace/contrib/http/instrumentation.rb +114 -0
- data/lib/ddtrace/contrib/http/integration.rb +32 -0
- data/lib/ddtrace/contrib/http/patcher.rb +32 -0
- data/lib/ddtrace/contrib/integration.rb +16 -0
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +28 -0
- data/lib/ddtrace/contrib/mongodb/ext.rb +20 -0
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +68 -0
- data/lib/ddtrace/contrib/mongodb/integration.rb +36 -0
- data/lib/ddtrace/contrib/mongodb/parsers.rb +68 -0
- data/lib/ddtrace/contrib/mongodb/patcher.rb +37 -0
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +108 -0
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/mysql2/ext.rb +15 -0
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +60 -0
- data/lib/ddtrace/contrib/mysql2/integration.rb +32 -0
- data/lib/ddtrace/contrib/mysql2/patcher.rb +33 -0
- data/lib/ddtrace/contrib/patchable.rb +42 -0
- data/lib/ddtrace/contrib/patcher.rb +28 -0
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/racecar/event.rb +67 -0
- data/lib/ddtrace/contrib/racecar/events.rb +30 -0
- data/lib/ddtrace/contrib/racecar/events/batch.rb +27 -0
- data/lib/ddtrace/contrib/racecar/events/message.rb +27 -0
- data/lib/ddtrace/contrib/racecar/ext.rb +21 -0
- data/lib/ddtrace/contrib/racecar/integration.rb +36 -0
- data/lib/ddtrace/contrib/racecar/patcher.rb +32 -0
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +41 -0
- data/lib/ddtrace/contrib/rack/ext.rb +18 -0
- data/lib/ddtrace/contrib/rack/integration.rb +32 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +283 -0
- data/lib/ddtrace/contrib/rack/patcher.rb +72 -0
- data/lib/ddtrace/contrib/rack/request_queue.rb +39 -0
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +80 -0
- data/lib/ddtrace/contrib/rails/ext.rb +12 -0
- data/lib/ddtrace/contrib/rails/framework.rb +100 -0
- data/lib/ddtrace/contrib/rails/integration.rb +37 -0
- data/lib/ddtrace/contrib/rails/middlewares.rb +38 -0
- data/lib/ddtrace/contrib/rails/patcher.rb +78 -0
- data/lib/ddtrace/contrib/rails/railtie.rb +17 -0
- data/lib/ddtrace/contrib/rails/utils.rb +20 -0
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +27 -0
- data/lib/ddtrace/contrib/rake/ext.rb +18 -0
- data/lib/ddtrace/contrib/rake/instrumentation.rb +84 -0
- data/lib/ddtrace/contrib/rake/integration.rb +32 -0
- data/lib/ddtrace/contrib/rake/patcher.rb +36 -0
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/redis/ext.rb +18 -0
- data/lib/ddtrace/contrib/redis/integration.rb +36 -0
- data/lib/ddtrace/contrib/redis/patcher.rb +94 -0
- data/lib/ddtrace/contrib/redis/quantize.rb +47 -0
- data/lib/ddtrace/contrib/redis/tags.rb +38 -0
- data/lib/ddtrace/contrib/registerable.rb +33 -0
- data/lib/ddtrace/contrib/registry.rb +42 -0
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +26 -0
- data/lib/ddtrace/contrib/resque/ext.rb +14 -0
- data/lib/ddtrace/contrib/resque/integration.rb +37 -0
- data/lib/ddtrace/contrib/resque/patcher.rb +35 -0
- data/lib/ddtrace/contrib/resque/resque_job.rb +76 -0
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +26 -0
- data/lib/ddtrace/contrib/rest_client/ext.rb +14 -0
- data/lib/ddtrace/contrib/rest_client/integration.rb +31 -0
- data/lib/ddtrace/contrib/rest_client/patcher.rb +25 -0
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +89 -0
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +23 -0
- data/lib/ddtrace/contrib/sequel/database.rb +61 -0
- data/lib/ddtrace/contrib/sequel/dataset.rb +62 -0
- data/lib/ddtrace/contrib/sequel/ext.rb +15 -0
- data/lib/ddtrace/contrib/sequel/integration.rb +32 -0
- data/lib/ddtrace/contrib/sequel/patcher.rb +39 -0
- data/lib/ddtrace/contrib/sequel/utils.rb +46 -0
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +24 -0
- data/lib/ddtrace/contrib/shoryuken/ext.rb +18 -0
- data/lib/ddtrace/contrib/shoryuken/integration.rb +35 -0
- data/lib/ddtrace/contrib/shoryuken/patcher.rb +30 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +45 -0
- data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +43 -0
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +26 -0
- data/lib/ddtrace/contrib/sidekiq/ext.rb +21 -0
- data/lib/ddtrace/contrib/sidekiq/integration.rb +36 -0
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +40 -0
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +58 -0
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +28 -0
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +34 -0
- data/lib/ddtrace/contrib/sinatra/env.rb +38 -0
- data/lib/ddtrace/contrib/sinatra/ext.rb +18 -0
- data/lib/ddtrace/contrib/sinatra/headers.rb +31 -0
- data/lib/ddtrace/contrib/sinatra/integration.rb +36 -0
- data/lib/ddtrace/contrib/sinatra/patcher.rb +33 -0
- data/lib/ddtrace/contrib/sinatra/tracer.rb +84 -0
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +72 -0
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +25 -0
- data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +26 -0
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +18 -0
- data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +70 -0
- data/lib/ddtrace/contrib/sucker_punch/integration.rb +36 -0
- data/lib/ddtrace/contrib/sucker_punch/patcher.rb +48 -0
- data/lib/ddtrace/correlation.rb +28 -0
- data/lib/ddtrace/diagnostics/health.rb +30 -0
- data/lib/ddtrace/distributed_tracing/headers/b3.rb +44 -0
- data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +56 -0
- data/lib/ddtrace/distributed_tracing/headers/datadog.rb +42 -0
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +70 -0
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +45 -0
- data/lib/ddtrace/encoding.rb +65 -0
- data/lib/ddtrace/environment.rb +23 -0
- data/lib/ddtrace/error.rb +27 -0
- data/lib/ddtrace/ext/analytics.rb +11 -0
- data/lib/ddtrace/ext/app_types.rb +11 -0
- data/lib/ddtrace/ext/diagnostics.rb +25 -0
- data/lib/ddtrace/ext/distributed.rb +33 -0
- data/lib/ddtrace/ext/errors.rb +10 -0
- data/lib/ddtrace/ext/forced_tracing.rb +25 -0
- data/lib/ddtrace/ext/http.rb +46 -0
- data/lib/ddtrace/ext/manual_tracing.rb +9 -0
- data/lib/ddtrace/ext/metrics.rb +15 -0
- data/lib/ddtrace/ext/net.rb +10 -0
- data/lib/ddtrace/ext/priority.rb +16 -0
- data/lib/ddtrace/ext/runtime.rb +26 -0
- data/lib/ddtrace/ext/sql.rb +8 -0
- data/lib/ddtrace/ext/transport.rb +17 -0
- data/lib/ddtrace/forced_tracing.rb +36 -0
- data/lib/ddtrace/logger.rb +39 -0
- data/lib/ddtrace/metrics.rb +215 -0
- data/lib/ddtrace/monkey.rb +58 -0
- data/lib/ddtrace/opentracer.rb +40 -0
- data/lib/ddtrace/opentracer/binary_propagator.rb +24 -0
- data/lib/ddtrace/opentracer/carrier.rb +6 -0
- data/lib/ddtrace/opentracer/distributed_headers.rb +52 -0
- data/lib/ddtrace/opentracer/global_tracer.rb +15 -0
- data/lib/ddtrace/opentracer/propagator.rb +22 -0
- data/lib/ddtrace/opentracer/rack_propagator.rb +60 -0
- data/lib/ddtrace/opentracer/scope.rb +15 -0
- data/lib/ddtrace/opentracer/scope_manager.rb +6 -0
- data/lib/ddtrace/opentracer/span.rb +98 -0
- data/lib/ddtrace/opentracer/span_context.rb +14 -0
- data/lib/ddtrace/opentracer/span_context_factory.rb +23 -0
- data/lib/ddtrace/opentracer/text_map_propagator.rb +75 -0
- data/lib/ddtrace/opentracer/thread_local_scope.rb +30 -0
- data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +40 -0
- data/lib/ddtrace/opentracer/tracer.rb +208 -0
- data/lib/ddtrace/patcher.rb +47 -0
- data/lib/ddtrace/pin.rb +114 -0
- data/lib/ddtrace/pipeline.rb +46 -0
- data/lib/ddtrace/pipeline/span_filter.rb +38 -0
- data/lib/ddtrace/pipeline/span_processor.rb +20 -0
- data/lib/ddtrace/propagation/grpc_propagator.rb +61 -0
- data/lib/ddtrace/propagation/http_propagator.rb +75 -0
- data/lib/ddtrace/provider.rb +21 -0
- data/lib/ddtrace/quantization/hash.rb +103 -0
- data/lib/ddtrace/quantization/http.rb +86 -0
- data/lib/ddtrace/runtime/cgroup.rb +44 -0
- data/lib/ddtrace/runtime/class_count.rb +17 -0
- data/lib/ddtrace/runtime/container.rb +73 -0
- data/lib/ddtrace/runtime/gc.rb +16 -0
- data/lib/ddtrace/runtime/identity.rb +41 -0
- data/lib/ddtrace/runtime/metrics.rb +93 -0
- data/lib/ddtrace/runtime/object_space.rb +19 -0
- data/lib/ddtrace/runtime/socket.rb +14 -0
- data/lib/ddtrace/runtime/thread_count.rb +16 -0
- data/lib/ddtrace/sampler.rb +195 -0
- data/lib/ddtrace/span.rb +260 -0
- data/lib/ddtrace/sync_writer.rb +62 -0
- data/lib/ddtrace/tracer.rb +459 -0
- data/lib/ddtrace/transport/http.rb +91 -0
- data/lib/ddtrace/transport/http/adapters/net.rb +112 -0
- data/lib/ddtrace/transport/http/adapters/registry.rb +24 -0
- data/lib/ddtrace/transport/http/adapters/test.rb +77 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +64 -0
- data/lib/ddtrace/transport/http/api.rb +46 -0
- data/lib/ddtrace/transport/http/api/endpoint.rb +27 -0
- data/lib/ddtrace/transport/http/api/fallbacks.rb +22 -0
- data/lib/ddtrace/transport/http/api/instance.rb +29 -0
- data/lib/ddtrace/transport/http/api/map.rb +14 -0
- data/lib/ddtrace/transport/http/api/spec.rb +15 -0
- data/lib/ddtrace/transport/http/builder.rb +165 -0
- data/lib/ddtrace/transport/http/client.rb +107 -0
- data/lib/ddtrace/transport/http/env.rb +48 -0
- data/lib/ddtrace/transport/http/response.rb +26 -0
- data/lib/ddtrace/transport/http/statistics.rb +30 -0
- data/lib/ddtrace/transport/http/traces.rb +140 -0
- data/lib/ddtrace/transport/parcel.rb +13 -0
- data/lib/ddtrace/transport/request.rb +13 -0
- data/lib/ddtrace/transport/response.rb +49 -0
- data/lib/ddtrace/transport/statistics.rb +72 -0
- data/lib/ddtrace/transport/traces.rb +33 -0
- data/lib/ddtrace/utils.rb +65 -0
- data/lib/ddtrace/utils/database.rb +25 -0
- data/lib/ddtrace/utils/time.rb +14 -0
- data/lib/ddtrace/vendor/active_record/connection_specification.rb +301 -0
- data/lib/ddtrace/version.rb +12 -0
- data/lib/ddtrace/workers.rb +125 -0
- data/lib/ddtrace/writer.rb +157 -0
- data/tasks/release_gem.rake +28 -0
- metadata +682 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
# TODO: Remove me!
|
|
3
|
+
# Monkey was used for monkey-patching 3rd party libs.
|
|
4
|
+
# It is now DEPRECATED. This API is no-op, and serves only to warn
|
|
5
|
+
# of its deactivation.
|
|
6
|
+
module Monkey
|
|
7
|
+
@registry = Datadog.registry
|
|
8
|
+
|
|
9
|
+
DEPRECATION_WARNING = %(
|
|
10
|
+
Datadog::Monkey has been REMOVED as of version 0.11.1.
|
|
11
|
+
All calls to Datadog::Monkey are no-ops.
|
|
12
|
+
*Implementations using Monkey will no longer function*.
|
|
13
|
+
Upgrade to the new configuration API using the migration guide here:
|
|
14
|
+
https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
|
|
15
|
+
|
|
16
|
+
module_function
|
|
17
|
+
|
|
18
|
+
def registry
|
|
19
|
+
log_deprecation_warning('Monkey#registry')
|
|
20
|
+
@registry
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def autopatch_modules
|
|
24
|
+
log_deprecation_warning('Monkey#autopatch_modules')
|
|
25
|
+
{}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def patch_all
|
|
29
|
+
log_deprecation_warning('Monkey#patch_all')
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def patch_module(m)
|
|
33
|
+
log_deprecation_warning('Monkey#patch_module')
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def patch(modules)
|
|
37
|
+
log_deprecation_warning('Monkey#patch')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def get_patched_modules
|
|
41
|
+
log_deprecation_warning('Monkey#get_patched_modules')
|
|
42
|
+
{}
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def without_warnings(&block)
|
|
46
|
+
log_deprecation_warning('Monkey#without_warnings')
|
|
47
|
+
Datadog::Patcher.without_warnings(&block)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def log_deprecation_warning(method)
|
|
51
|
+
Datadog::Tracer.log.warn("#{method}:#{DEPRECATION_WARNING}")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
class << self
|
|
55
|
+
attr_writer :registry
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
# Namespace for ddtrace OpenTracing implementation
|
|
3
|
+
module OpenTracer
|
|
4
|
+
module_function
|
|
5
|
+
|
|
6
|
+
def supported?
|
|
7
|
+
Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.1')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def load_opentracer
|
|
11
|
+
require 'opentracing'
|
|
12
|
+
require 'opentracing/carrier'
|
|
13
|
+
require 'ddtrace'
|
|
14
|
+
require 'ddtrace/opentracer/carrier'
|
|
15
|
+
require 'ddtrace/opentracer/tracer'
|
|
16
|
+
require 'ddtrace/opentracer/span'
|
|
17
|
+
require 'ddtrace/opentracer/span_context'
|
|
18
|
+
require 'ddtrace/opentracer/span_context_factory'
|
|
19
|
+
require 'ddtrace/opentracer/scope'
|
|
20
|
+
require 'ddtrace/opentracer/scope_manager'
|
|
21
|
+
require 'ddtrace/opentracer/thread_local_scope'
|
|
22
|
+
require 'ddtrace/opentracer/thread_local_scope_manager'
|
|
23
|
+
require 'ddtrace/opentracer/distributed_headers'
|
|
24
|
+
require 'ddtrace/opentracer/propagator'
|
|
25
|
+
require 'ddtrace/opentracer/text_map_propagator'
|
|
26
|
+
require 'ddtrace/opentracer/binary_propagator'
|
|
27
|
+
require 'ddtrace/opentracer/rack_propagator'
|
|
28
|
+
require 'ddtrace/opentracer/global_tracer'
|
|
29
|
+
|
|
30
|
+
# Modify the OpenTracing module functions
|
|
31
|
+
OpenTracing.module_eval do
|
|
32
|
+
class << self
|
|
33
|
+
prepend Datadog::OpenTracer::GlobalTracer
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
load_opentracer if supported?
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module OpenTracer
|
|
3
|
+
# OpenTracing propagator for Datadog::OpenTracer::Tracer
|
|
4
|
+
module BinaryPropagator
|
|
5
|
+
extend Propagator
|
|
6
|
+
|
|
7
|
+
# Inject a SpanContext into the given carrier
|
|
8
|
+
#
|
|
9
|
+
# @param span_context [SpanContext]
|
|
10
|
+
# @param carrier [Carrier] A carrier object of Binary type
|
|
11
|
+
def self.inject(span_context, carrier)
|
|
12
|
+
nil
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Extract a SpanContext in Binary format from the given carrier.
|
|
16
|
+
#
|
|
17
|
+
# @param carrier [Carrier] A carrier object of Binary type
|
|
18
|
+
# @return [SpanContext, nil] the extracted SpanContext or nil if none could be found
|
|
19
|
+
def self.extract(carrier)
|
|
20
|
+
SpanContext::NOOP_INSTANCE
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'ddtrace/span'
|
|
2
|
+
require 'ddtrace/ext/distributed'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module OpenTracer
|
|
6
|
+
# DistributedHeaders provides easy access and validation to headers
|
|
7
|
+
class DistributedHeaders
|
|
8
|
+
include Datadog::Ext::DistributedTracing
|
|
9
|
+
|
|
10
|
+
def initialize(carrier)
|
|
11
|
+
@carrier = carrier
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def valid?
|
|
15
|
+
# Sampling priority is optional.
|
|
16
|
+
!trace_id.nil? && !parent_id.nil?
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def trace_id
|
|
20
|
+
id HTTP_HEADER_TRACE_ID
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def parent_id
|
|
24
|
+
id HTTP_HEADER_PARENT_ID
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def sampling_priority
|
|
28
|
+
hdr = @carrier[HTTP_HEADER_SAMPLING_PRIORITY]
|
|
29
|
+
# It's important to make a difference between no header,
|
|
30
|
+
# and a header defined to zero.
|
|
31
|
+
return unless hdr
|
|
32
|
+
value = hdr.to_i
|
|
33
|
+
return if value < 0
|
|
34
|
+
value
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def origin
|
|
38
|
+
hdr = @carrier[HTTP_HEADER_ORIGIN]
|
|
39
|
+
# Only return the value if it is not an empty string
|
|
40
|
+
hdr if hdr != ''
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def id(header)
|
|
46
|
+
value = @carrier[header].to_i
|
|
47
|
+
return if value.zero? || value >= Datadog::Span::MAX_ID
|
|
48
|
+
value < 0 ? value + 0x1_0000_0000_0000_0000 : value
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module OpenTracer
|
|
3
|
+
# Patch for OpenTracing module
|
|
4
|
+
module GlobalTracer
|
|
5
|
+
def global_tracer=(tracer)
|
|
6
|
+
super.tap do
|
|
7
|
+
if tracer.class <= Datadog::OpenTracer::Tracer
|
|
8
|
+
# Update the Datadog global tracer, too.
|
|
9
|
+
Datadog.configuration.tracer = tracer.datadog_tracer
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module OpenTracer
|
|
3
|
+
# OpenTracing propagator for Datadog::OpenTracer::Tracer
|
|
4
|
+
module Propagator
|
|
5
|
+
# Inject a SpanContext into the given carrier
|
|
6
|
+
#
|
|
7
|
+
# @param span_context [SpanContext]
|
|
8
|
+
# @param carrier [Carrier] A carrier object of the type dictated by the specified `format`
|
|
9
|
+
def inject(span_context, carrier)
|
|
10
|
+
raise NotImplementedError
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Extract a SpanContext in the given format from the given carrier.
|
|
14
|
+
#
|
|
15
|
+
# @param carrier [Carrier] A carrier object of the type dictated by the specified `format`
|
|
16
|
+
# @return [SpanContext, nil] the extracted SpanContext or nil if none could be found
|
|
17
|
+
def extract(carrier)
|
|
18
|
+
raise NotImplementedError
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require 'ddtrace/propagation/http_propagator'
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module OpenTracer
|
|
5
|
+
# OpenTracing propagator for Datadog::OpenTracer::Tracer
|
|
6
|
+
module RackPropagator
|
|
7
|
+
extend Propagator
|
|
8
|
+
extend Datadog::Ext::DistributedTracing
|
|
9
|
+
include Datadog::Ext::DistributedTracing
|
|
10
|
+
|
|
11
|
+
BAGGAGE_PREFIX = 'ot-baggage-'.freeze
|
|
12
|
+
BAGGAGE_PREFIX_FORMATTED = 'HTTP_OT_BAGGAGE_'.freeze
|
|
13
|
+
|
|
14
|
+
class << self
|
|
15
|
+
# Inject a SpanContext into the given carrier
|
|
16
|
+
#
|
|
17
|
+
# @param span_context [SpanContext]
|
|
18
|
+
# @param carrier [Carrier] A carrier object of Rack type
|
|
19
|
+
def inject(span_context, carrier)
|
|
20
|
+
# Inject Datadog trace properties
|
|
21
|
+
Datadog::HTTPPropagator.inject!(span_context.datadog_context, carrier)
|
|
22
|
+
|
|
23
|
+
# Inject baggage
|
|
24
|
+
span_context.baggage.each do |key, value|
|
|
25
|
+
carrier[BAGGAGE_PREFIX + key] = value
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
nil
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Extract a SpanContext in Rack format from the given carrier.
|
|
32
|
+
#
|
|
33
|
+
# @param carrier [Carrier] A carrier object of Rack type
|
|
34
|
+
# @return [SpanContext, nil] the extracted SpanContext or nil if none could be found
|
|
35
|
+
def extract(carrier)
|
|
36
|
+
# First extract & build a Datadog context
|
|
37
|
+
datadog_context = Datadog::HTTPPropagator.extract(carrier)
|
|
38
|
+
|
|
39
|
+
# Then extract any other baggage
|
|
40
|
+
baggage = {}
|
|
41
|
+
carrier.each do |key, value|
|
|
42
|
+
baggage[header_to_baggage(key)] = value if baggage_header?(key)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
SpanContextFactory.build(datadog_context: datadog_context, baggage: baggage)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def baggage_header?(header)
|
|
51
|
+
header.to_s.start_with?(BAGGAGE_PREFIX_FORMATTED)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def header_to_baggage(key)
|
|
55
|
+
key[BAGGAGE_PREFIX_FORMATTED.length, key.length].downcase
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module OpenTracer
|
|
3
|
+
# OpenTracing adapter for Datadog::Span
|
|
4
|
+
class Span < ::OpenTracing::Span
|
|
5
|
+
attr_reader \
|
|
6
|
+
:datadog_span
|
|
7
|
+
|
|
8
|
+
def initialize(datadog_span:, span_context:)
|
|
9
|
+
@datadog_span = datadog_span
|
|
10
|
+
@span_context = span_context
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Set the name of the operation
|
|
14
|
+
#
|
|
15
|
+
# @param [String] name
|
|
16
|
+
def operation_name=(name)
|
|
17
|
+
datadog_span.name = name
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Span Context
|
|
21
|
+
#
|
|
22
|
+
# @return [SpanContext]
|
|
23
|
+
def context
|
|
24
|
+
@span_context
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Set a tag value on this span
|
|
28
|
+
# @param key [String] the key of the tag
|
|
29
|
+
# @param value [String, Numeric, Boolean] the value of the tag. If it's not
|
|
30
|
+
# a String, Numeric, or Boolean it will be encoded with to_s
|
|
31
|
+
def set_tag(key, value)
|
|
32
|
+
# Special cases to convert opentracing tags to datadog tags
|
|
33
|
+
case key
|
|
34
|
+
when 'error'
|
|
35
|
+
# Opentracing supports and `error: <bool>` tag, we need to convert to span status
|
|
36
|
+
# DEV: Do not return, we want to still set the `error` tag as they requested
|
|
37
|
+
datadog_span.status = value ? Datadog::Ext::Errors::STATUS : 0
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
tap { datadog_span.set_tag(key, value) }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Set a baggage item on the span
|
|
44
|
+
# @param key [String] the key of the baggage item
|
|
45
|
+
# @param value [String] the value of the baggage item
|
|
46
|
+
def set_baggage_item(key, value)
|
|
47
|
+
tap do
|
|
48
|
+
# SpanContext is immutable, so to make changes
|
|
49
|
+
# build a new span context.
|
|
50
|
+
@span_context = SpanContextFactory.clone(
|
|
51
|
+
span_context: context,
|
|
52
|
+
baggage: { key => value }
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Get a baggage item
|
|
58
|
+
# @param key [String] the key of the baggage item
|
|
59
|
+
# @return [String] value of the baggage item
|
|
60
|
+
def get_baggage_item(key)
|
|
61
|
+
context.baggage[key]
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# @deprecated Use {#log_kv} instead.
|
|
65
|
+
# Reason: event is an optional standard log field defined in spec and not required. Also,
|
|
66
|
+
# method name {#log_kv} is more consistent with other language implementations such as Python and Go.
|
|
67
|
+
#
|
|
68
|
+
# Add a log entry to this span
|
|
69
|
+
# @param event [String] event name for the log
|
|
70
|
+
# @param timestamp [Time] time of the log
|
|
71
|
+
# @param fields [Hash] Additional information to log
|
|
72
|
+
def log(event: nil, timestamp: Time.now, **fields)
|
|
73
|
+
super # Log deprecation warning
|
|
74
|
+
|
|
75
|
+
# If the fields specify an error
|
|
76
|
+
if fields.key?(:'error.object')
|
|
77
|
+
datadog_span.set_error(fields[:'error.object'])
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Add a log entry to this span
|
|
82
|
+
# @param timestamp [Time] time of the log
|
|
83
|
+
# @param fields [Hash] Additional information to log
|
|
84
|
+
def log_kv(timestamp: Time.now, **fields)
|
|
85
|
+
# If the fields specify an error
|
|
86
|
+
if fields.key?(:'error.object')
|
|
87
|
+
datadog_span.set_error(fields[:'error.object'])
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Finish the {Span}
|
|
92
|
+
# @param end_time [Time] custom end time, if not now
|
|
93
|
+
def finish(end_time: Time.now)
|
|
94
|
+
datadog_span.finish(end_time)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module OpenTracer
|
|
3
|
+
# OpenTracing adapter for SpanContext
|
|
4
|
+
class SpanContext < ::OpenTracing::SpanContext
|
|
5
|
+
attr_reader \
|
|
6
|
+
:datadog_context
|
|
7
|
+
|
|
8
|
+
def initialize(datadog_context:, baggage: {})
|
|
9
|
+
@datadog_context = datadog_context
|
|
10
|
+
@baggage = baggage.freeze
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module OpenTracer
|
|
3
|
+
# Creates new Datadog::OpenTracer::SpanContext
|
|
4
|
+
module SpanContextFactory
|
|
5
|
+
module_function
|
|
6
|
+
|
|
7
|
+
def build(datadog_context:, baggage: {})
|
|
8
|
+
SpanContext.new(
|
|
9
|
+
datadog_context: datadog_context,
|
|
10
|
+
baggage: baggage.dup
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def clone(span_context:, baggage: {})
|
|
15
|
+
SpanContext.new(
|
|
16
|
+
datadog_context: span_context.datadog_context,
|
|
17
|
+
# Merge baggage from previous SpanContext
|
|
18
|
+
baggage: span_context.baggage.merge(baggage)
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|