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,43 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/action_view/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/action_view/patcher'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Contrib
|
|
7
|
+
module ActionView
|
|
8
|
+
# Describes the ActionView integration
|
|
9
|
+
class Integration
|
|
10
|
+
include Contrib::Integration
|
|
11
|
+
|
|
12
|
+
register_as :action_view, auto_patch: false
|
|
13
|
+
|
|
14
|
+
def self.version
|
|
15
|
+
# ActionView is its own gem in Rails 4.1+
|
|
16
|
+
if Gem.loaded_specs['actionview']
|
|
17
|
+
Gem.loaded_specs['actionview'].version
|
|
18
|
+
# ActionView is embedded in ActionPack in versions < 4.1
|
|
19
|
+
elsif Gem.loaded_specs['actionpack']
|
|
20
|
+
action_pack_version = Gem.loaded_specs['actionpack'].version
|
|
21
|
+
action_pack_version unless action_pack_version >= Gem::Version.new('4.1')
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.present?
|
|
26
|
+
super && defined?(::ActionView)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.compatible?
|
|
30
|
+
super && version >= Gem::Version.new('3.0')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def default_configuration
|
|
34
|
+
Configuration::Settings.new
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def patcher
|
|
38
|
+
ActionView::Patcher
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'ddtrace/ext/http'
|
|
2
|
+
require 'ddtrace/contrib/patcher'
|
|
3
|
+
require 'ddtrace/contrib/action_view/ext'
|
|
4
|
+
require 'ddtrace/contrib/action_view/instrumentation/partial_renderer'
|
|
5
|
+
require 'ddtrace/contrib/action_view/instrumentation/template_renderer'
|
|
6
|
+
require 'ddtrace/contrib/action_view/utils'
|
|
7
|
+
|
|
8
|
+
module Datadog
|
|
9
|
+
module Contrib
|
|
10
|
+
module ActionView
|
|
11
|
+
# Patcher enables patching of ActionView module.
|
|
12
|
+
module Patcher
|
|
13
|
+
include Contrib::Patcher
|
|
14
|
+
|
|
15
|
+
module_function
|
|
16
|
+
|
|
17
|
+
def patched?
|
|
18
|
+
done?(:action_view)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def patch
|
|
22
|
+
do_once(:action_view) do
|
|
23
|
+
begin
|
|
24
|
+
patch_renderer
|
|
25
|
+
rescue StandardError => e
|
|
26
|
+
Datadog::Tracer.log.error("Unable to apply Action View integration: #{e} Location: #{e.backtrace.first}")
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def patch_renderer
|
|
32
|
+
do_once(:patch_renderer) do
|
|
33
|
+
if defined?(::ActionView::TemplateRenderer) && defined?(::ActionView::PartialRenderer)
|
|
34
|
+
if Integration.version < Gem::Version.new('6.0.0')
|
|
35
|
+
::ActionView::TemplateRenderer.send(:prepend, Instrumentation::TemplateRenderer::Rails31To5)
|
|
36
|
+
::ActionView::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::RailsLessThan6)
|
|
37
|
+
else
|
|
38
|
+
::ActionView::TemplateRenderer.send(:prepend, Instrumentation::TemplateRenderer::Rails6Plus)
|
|
39
|
+
::ActionView::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::Rails6Plus)
|
|
40
|
+
end
|
|
41
|
+
elsif defined?(::ActionView::Rendering) && defined?(::ActionView::Partials::PartialRenderer)
|
|
42
|
+
# NOTE: Rails < 3.1 compatibility: different classes are used
|
|
43
|
+
::ActionView::Rendering.send(:prepend, Instrumentation::TemplateRenderer::Rails30)
|
|
44
|
+
::ActionView::Partials::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::RailsLessThan6)
|
|
45
|
+
else
|
|
46
|
+
Datadog::Tracer.log.debug('Expected Template/Partial classes not found; template rendering disabled')
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'ddtrace/contrib/analytics'
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module Contrib
|
|
5
|
+
module ActionView
|
|
6
|
+
# common utilities for Rails
|
|
7
|
+
module Utils
|
|
8
|
+
module_function
|
|
9
|
+
|
|
10
|
+
# in Rails the template name includes the template full path
|
|
11
|
+
# and it's better to avoid storing such information. This method
|
|
12
|
+
# returns the relative path from `views/` or the template name
|
|
13
|
+
# if a `views/` folder is not in the template full path. A wrong
|
|
14
|
+
# usage ensures that this method will not crash the tracing system.
|
|
15
|
+
def normalize_template_name(name)
|
|
16
|
+
return if name.nil?
|
|
17
|
+
|
|
18
|
+
base_path = Datadog.configuration[:action_view][:template_base_path]
|
|
19
|
+
sections_view = name.split(base_path)
|
|
20
|
+
|
|
21
|
+
if sections_view.length == 1
|
|
22
|
+
name.split('/')[-1]
|
|
23
|
+
else
|
|
24
|
+
sections_view[-1]
|
|
25
|
+
end
|
|
26
|
+
rescue
|
|
27
|
+
return name.to_s
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
require 'ddtrace/contrib/active_model_serializers/ext'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module ActiveModelSerializers
|
|
7
|
+
module Configuration
|
|
8
|
+
# Custom settings for the ActiveModelSerializers integration
|
|
9
|
+
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :analytics_enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
option :analytics_sample_rate do |o|
|
|
16
|
+
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
17
|
+
o.lazy
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
option :service_name, default: Ext::SERVICE_NAME
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
require 'ddtrace/ext/http'
|
|
2
|
+
require 'ddtrace/contrib/analytics'
|
|
3
|
+
require 'ddtrace/contrib/active_support/notifications/event'
|
|
4
|
+
require 'ddtrace/contrib/active_model_serializers/ext'
|
|
5
|
+
|
|
6
|
+
module Datadog
|
|
7
|
+
module Contrib
|
|
8
|
+
module ActiveModelSerializers
|
|
9
|
+
# Defines basic behaviors for an ActiveModelSerializers event.
|
|
10
|
+
module Event
|
|
11
|
+
def self.included(base)
|
|
12
|
+
base.send(:include, ActiveSupport::Notifications::Event)
|
|
13
|
+
base.send(:extend, ClassMethods)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Class methods for ActiveModelSerializers events.
|
|
17
|
+
# Note, they share the same process method and before_trace method.
|
|
18
|
+
module ClassMethods
|
|
19
|
+
def span_options
|
|
20
|
+
{ service: configuration[:service_name] }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def tracer
|
|
24
|
+
-> { configuration[:tracer] }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def configuration
|
|
28
|
+
Datadog.configuration[:active_model_serializers]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def process(span, event, _id, payload)
|
|
32
|
+
span.service = configuration[:service_name]
|
|
33
|
+
|
|
34
|
+
# Set analytics sample rate
|
|
35
|
+
if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
|
|
36
|
+
Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Set the resource name and serializer name
|
|
40
|
+
res = resource(payload[:serializer])
|
|
41
|
+
span.resource = res
|
|
42
|
+
span.set_tag(Ext::TAG_SERIALIZER, res)
|
|
43
|
+
|
|
44
|
+
span.span_type = Datadog::Ext::HTTP::TEMPLATE
|
|
45
|
+
|
|
46
|
+
# Will be nil in 0.9
|
|
47
|
+
span.set_tag(Ext::TAG_ADAPTER, payload[:adapter].class) unless payload[:adapter].nil?
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
def resource(serializer)
|
|
53
|
+
# Depending on the version of ActiveModelSerializers
|
|
54
|
+
# serializer will be a string or an object.
|
|
55
|
+
if serializer.respond_to?(:name)
|
|
56
|
+
serializer.name
|
|
57
|
+
else
|
|
58
|
+
serializer
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'ddtrace/contrib/active_model_serializers/events/render'
|
|
2
|
+
require 'ddtrace/contrib/active_model_serializers/events/serialize'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module ActiveModelSerializers
|
|
7
|
+
# Defines collection of instrumented ActiveModelSerializers events
|
|
8
|
+
module Events
|
|
9
|
+
ALL = [
|
|
10
|
+
Events::Render,
|
|
11
|
+
Events::Serialize
|
|
12
|
+
].freeze
|
|
13
|
+
|
|
14
|
+
module_function
|
|
15
|
+
|
|
16
|
+
def all
|
|
17
|
+
self::ALL
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def subscriptions
|
|
21
|
+
all.collect(&:subscriptions).collect(&:to_a).flatten
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def subscribe!
|
|
25
|
+
all.each(&:subscribe!)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'ddtrace/contrib/active_model_serializers/ext'
|
|
2
|
+
require 'ddtrace/contrib/active_model_serializers/event'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module ActiveModelSerializers
|
|
7
|
+
module Events
|
|
8
|
+
# Defines instrumentation for render.active_model_serializers event
|
|
9
|
+
module Render
|
|
10
|
+
include ActiveModelSerializers::Event
|
|
11
|
+
|
|
12
|
+
EVENT_NAME = 'render.active_model_serializers'.freeze
|
|
13
|
+
|
|
14
|
+
module_function
|
|
15
|
+
|
|
16
|
+
def supported?
|
|
17
|
+
Gem.loaded_specs['active_model_serializers'] \
|
|
18
|
+
&& Gem.loaded_specs['active_model_serializers'].version >= Gem::Version.new('0.10')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def event_name
|
|
22
|
+
self::EVENT_NAME
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def span_name
|
|
26
|
+
Ext::SPAN_RENDER
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'ddtrace/contrib/active_model_serializers/ext'
|
|
2
|
+
require 'ddtrace/contrib/active_model_serializers/event'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module ActiveModelSerializers
|
|
7
|
+
module Events
|
|
8
|
+
# Defines instrumentation for !serialize.active_model_serializers event
|
|
9
|
+
module Serialize
|
|
10
|
+
include ActiveModelSerializers::Event
|
|
11
|
+
|
|
12
|
+
EVENT_NAME = '!serialize.active_model_serializers'.freeze
|
|
13
|
+
|
|
14
|
+
module_function
|
|
15
|
+
|
|
16
|
+
def supported?
|
|
17
|
+
Gem.loaded_specs['active_model_serializers'] \
|
|
18
|
+
&& ( \
|
|
19
|
+
Gem.loaded_specs['active_model_serializers'].version >= Gem::Version.new('0.9') \
|
|
20
|
+
&& Gem.loaded_specs['active_model_serializers'].version < Gem::Version.new('0.10') \
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def event_name
|
|
25
|
+
self::EVENT_NAME
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def span_name
|
|
29
|
+
Ext::SPAN_SERIALIZE
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Contrib
|
|
3
|
+
module ActiveModelSerializers
|
|
4
|
+
# ActiveModelSerializers integration constants
|
|
5
|
+
module Ext
|
|
6
|
+
APP = 'active_model_serializers'.freeze
|
|
7
|
+
ENV_ANALYTICS_ENABLED = 'DD_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
|
+
SERVICE_NAME = 'active_model_serializers'.freeze
|
|
10
|
+
SPAN_RENDER = 'active_model_serializers.render'.freeze
|
|
11
|
+
SPAN_SERIALIZE = 'active_model_serializers.serialize'.freeze
|
|
12
|
+
TAG_ADAPTER = 'active_model_serializers.adapter'.freeze
|
|
13
|
+
TAG_SERIALIZER = 'active_model_serializers.serializer'.freeze
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/active_model_serializers/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/active_model_serializers/patcher'
|
|
4
|
+
|
|
5
|
+
module Datadog
|
|
6
|
+
module Contrib
|
|
7
|
+
module ActiveModelSerializers
|
|
8
|
+
# Description of ActiveModelSerializers integration
|
|
9
|
+
class Integration
|
|
10
|
+
include Contrib::Integration
|
|
11
|
+
|
|
12
|
+
register_as :active_model_serializers
|
|
13
|
+
|
|
14
|
+
def self.version
|
|
15
|
+
Gem.loaded_specs['active_model_serializers'] \
|
|
16
|
+
&& Gem.loaded_specs['active_model_serializers'].version
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.present?
|
|
20
|
+
super && defined?(::ActiveModel::Serializer)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.compatible?
|
|
24
|
+
super \
|
|
25
|
+
&& defined?(::ActiveSupport::Notifications) \
|
|
26
|
+
&& version >= Gem::Version.new('0.9.0')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def default_configuration
|
|
30
|
+
Configuration::Settings.new
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def patcher
|
|
34
|
+
Patcher
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'ddtrace/contrib/patcher'
|
|
2
|
+
require 'ddtrace/ext/app_types'
|
|
3
|
+
require 'ddtrace/contrib/active_model_serializers/ext'
|
|
4
|
+
require 'ddtrace/contrib/active_model_serializers/events'
|
|
5
|
+
|
|
6
|
+
module Datadog
|
|
7
|
+
module Contrib
|
|
8
|
+
module ActiveModelSerializers
|
|
9
|
+
# Patcher enables patching of 'active_model_serializers' module.
|
|
10
|
+
module Patcher
|
|
11
|
+
include Contrib::Patcher
|
|
12
|
+
|
|
13
|
+
module_function
|
|
14
|
+
|
|
15
|
+
def patched?
|
|
16
|
+
done?(:active_model_serializers)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def patch
|
|
20
|
+
do_once(:active_model_serializers) do
|
|
21
|
+
begin
|
|
22
|
+
# Subscribe to ActiveModelSerializers events
|
|
23
|
+
Events.subscribe!
|
|
24
|
+
rescue StandardError => e
|
|
25
|
+
Datadog::Tracer.log.error("Unable to apply ActiveModelSerializers integration: #{e}")
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def get_option(option)
|
|
31
|
+
Datadog.configuration[:active_model_serializers].get_option(option)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'ddtrace/contrib/configuration/resolver'
|
|
2
|
+
require 'ddtrace/vendor/active_record/connection_specification'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module ActiveRecord
|
|
7
|
+
module Configuration
|
|
8
|
+
# Converts Symbols, Strings, and Hashes to a normalized connection settings Hash.
|
|
9
|
+
class Resolver < Contrib::Configuration::Resolver
|
|
10
|
+
def initialize(configurations = nil)
|
|
11
|
+
@configurations = configurations
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def configurations
|
|
15
|
+
@configurations || ::ActiveRecord::Base.configurations
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def connection_resolver
|
|
19
|
+
@resolver ||= begin
|
|
20
|
+
if defined?(::ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver)
|
|
21
|
+
::ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.new(configurations)
|
|
22
|
+
else
|
|
23
|
+
::Datadog::Vendor::ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.new(configurations)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def resolve(spec)
|
|
29
|
+
return :default if spec == :default
|
|
30
|
+
normalize(connection_resolver.resolve(spec).symbolize_keys)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def normalize(hash)
|
|
34
|
+
{
|
|
35
|
+
adapter: hash[:adapter],
|
|
36
|
+
host: hash[:host],
|
|
37
|
+
port: hash[:port],
|
|
38
|
+
database: hash[:database],
|
|
39
|
+
username: hash[:username]
|
|
40
|
+
}
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|