ddtrace 1.0.0 → 1.9.0
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 +4 -4
- data/CHANGELOG.md +453 -2
- data/LICENSE-3rdparty.csv +6 -2
- data/README.md +10 -5
- data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +134 -0
- data/ext/ddtrace_profiling_loader/extconf.rb +74 -0
- data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +79 -9
- data/ext/ddtrace_profiling_native_extension/clock_id.h +22 -1
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +33 -10
- data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +11 -2
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +899 -0
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +9 -0
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +776 -0
- data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c +142 -0
- data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h +14 -0
- data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +241 -0
- data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
- data/ext/ddtrace_profiling_native_extension/collectors_stack.c +390 -0
- data/ext/ddtrace_profiling_native_extension/collectors_stack.h +18 -0
- data/ext/ddtrace_profiling_native_extension/extconf.rb +156 -114
- data/ext/ddtrace_profiling_native_extension/helpers.h +17 -0
- data/ext/ddtrace_profiling_native_extension/http_transport.c +354 -0
- data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +18 -0
- data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +319 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +820 -9
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +42 -0
- data/ext/ddtrace_profiling_native_extension/profiling.c +230 -3
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +110 -0
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +89 -0
- data/ext/ddtrace_profiling_native_extension/setup_signal_handler.c +115 -0
- data/ext/ddtrace_profiling_native_extension/setup_signal_handler.h +11 -0
- data/ext/ddtrace_profiling_native_extension/stack_recorder.c +487 -0
- data/ext/ddtrace_profiling_native_extension/stack_recorder.h +39 -0
- data/ext/ddtrace_profiling_native_extension/time_helpers.c +17 -0
- data/ext/ddtrace_profiling_native_extension/time_helpers.h +10 -0
- data/lib/datadog/appsec/assets/blocked.html +98 -3
- data/lib/datadog/appsec/assets/blocked.json +1 -0
- data/lib/datadog/appsec/assets/blocked.text +5 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +1250 -300
- data/lib/datadog/appsec/assets/waf_rules/risky.json +78 -78
- data/lib/datadog/appsec/assets/waf_rules/strict.json +308 -73
- data/lib/datadog/appsec/assets.rb +3 -3
- data/lib/datadog/appsec/autoload.rb +6 -4
- data/lib/datadog/appsec/configuration/settings.rb +55 -19
- data/lib/datadog/appsec/configuration.rb +17 -3
- data/lib/datadog/appsec/contrib/auto_instrument.rb +1 -3
- data/lib/datadog/appsec/contrib/configuration/settings.rb +2 -2
- data/lib/datadog/appsec/contrib/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/patcher.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +3 -3
- data/lib/datadog/appsec/contrib/rack/ext.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +95 -47
- data/lib/datadog/appsec/contrib/rack/integration.rb +5 -4
- data/lib/datadog/appsec/contrib/rack/patcher.rb +2 -3
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +17 -21
- data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +64 -0
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +13 -13
- data/lib/datadog/appsec/contrib/rack/request.rb +27 -1
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +41 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +92 -10
- data/lib/datadog/appsec/contrib/rack/response.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +3 -3
- data/lib/datadog/appsec/contrib/rails/ext.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/framework.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +82 -0
- data/lib/datadog/appsec/contrib/rails/integration.rb +5 -5
- data/lib/datadog/appsec/contrib/rails/patcher.rb +42 -8
- data/lib/datadog/appsec/contrib/rails/reactive/action.rb +68 -0
- data/lib/datadog/appsec/contrib/rails/request.rb +36 -0
- data/lib/datadog/appsec/contrib/rails/request_middleware.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +3 -3
- data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -1
- data/lib/datadog/appsec/contrib/sinatra/framework.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +126 -0
- data/lib/datadog/appsec/contrib/sinatra/integration.rb +4 -4
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +84 -10
- data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +63 -0
- data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +1 -1
- data/lib/datadog/appsec/event.rb +38 -27
- data/lib/datadog/appsec/extensions.rb +43 -26
- data/lib/datadog/appsec/instrumentation/gateway.rb +17 -3
- data/lib/datadog/appsec/processor.rb +86 -13
- data/lib/datadog/appsec/rate_limiter.rb +6 -1
- data/lib/datadog/appsec/reactive/address_hash.rb +1 -1
- data/lib/datadog/appsec/reactive/engine.rb +3 -3
- data/lib/datadog/appsec/reactive/operation.rb +5 -6
- data/lib/datadog/appsec/reactive/subscriber.rb +1 -1
- data/lib/datadog/appsec/response.rb +63 -0
- data/lib/datadog/appsec/utils/http/media_range.rb +201 -0
- data/lib/datadog/appsec/utils/http/media_type.rb +87 -0
- data/lib/datadog/appsec/utils/http.rb +9 -0
- data/lib/datadog/appsec/utils.rb +7 -0
- data/lib/datadog/appsec.rb +6 -6
- 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 +99 -27
- 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 +9 -12
- data/lib/datadog/core/configuration/base.rb +14 -2
- data/lib/datadog/core/configuration/components.rb +123 -54
- data/lib/datadog/core/configuration/ext.rb +26 -0
- data/lib/datadog/core/configuration/option_definition.rb +12 -3
- 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 +79 -251
- data/lib/datadog/core/configuration.rb +16 -11
- data/lib/datadog/core/diagnostics/environment_logger.rb +10 -5
- data/lib/datadog/core/diagnostics/health.rb +5 -23
- data/lib/datadog/core/environment/cgroup.rb +4 -2
- data/lib/datadog/core/environment/container.rb +3 -2
- 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/environment/variable_helpers.rb +83 -11
- data/lib/datadog/core/error.rb +1 -1
- data/lib/datadog/core/extensions.rb +1 -1
- data/lib/datadog/core/header_collection.rb +41 -0
- data/lib/datadog/core/logging/ext.rb +11 -0
- data/lib/datadog/core/metrics/client.rb +25 -14
- data/lib/datadog/core/metrics/ext.rb +0 -2
- data/lib/datadog/core/metrics/options.rb +3 -3
- data/lib/datadog/core/runtime/ext.rb +1 -1
- data/lib/datadog/core/runtime/metrics.rb +7 -7
- data/lib/datadog/core/telemetry/client.rb +79 -0
- data/lib/datadog/core/telemetry/collector.rb +233 -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/compression.rb +5 -1
- 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 +1 -22
- 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 +4 -4
- data/lib/datadog/core/workers/polling.rb +2 -2
- data/lib/datadog/core/workers/runtime_metrics.rb +4 -7
- data/lib/datadog/core.rb +28 -56
- data/lib/datadog/kit/appsec/events.rb +75 -0
- data/lib/datadog/kit/enable_core_dumps.rb +51 -0
- data/lib/datadog/kit/identity.rb +64 -0
- data/lib/datadog/kit.rb +11 -0
- data/lib/datadog/opentelemetry/api/context.rb +187 -0
- data/lib/datadog/opentelemetry/api/trace/span.rb +15 -0
- data/lib/datadog/opentelemetry/sdk/configurator.rb +38 -0
- data/lib/datadog/opentelemetry/sdk/id_generator.rb +27 -0
- data/lib/datadog/opentelemetry/sdk/propagator.rb +91 -0
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +92 -0
- data/lib/datadog/opentelemetry.rb +48 -0
- data/lib/datadog/opentracer/distributed_headers.rb +7 -9
- data/lib/datadog/opentracer/rack_propagator.rb +10 -9
- data/lib/datadog/opentracer/span.rb +1 -1
- data/lib/datadog/opentracer/text_map_propagator.rb +13 -12
- data/lib/datadog/opentracer/thread_local_scope_manager.rb +26 -3
- data/lib/datadog/opentracer/tracer.rb +23 -23
- 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 +43 -0
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +91 -0
- data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +68 -0
- data/lib/datadog/profiling/collectors/old_stack.rb +305 -0
- data/lib/datadog/profiling/collectors/stack.rb +4 -288
- data/lib/datadog/profiling/encoding/profile.rb +8 -13
- data/lib/datadog/profiling/events/stack.rb +1 -1
- data/lib/datadog/profiling/exporter.rb +69 -9
- data/lib/datadog/profiling/ext/forking.rb +41 -42
- data/lib/datadog/profiling/ext.rb +4 -16
- data/lib/datadog/profiling/flush.rb +25 -56
- data/lib/datadog/profiling/http_transport.rb +132 -0
- data/lib/datadog/profiling/load_native_extension.rb +22 -0
- data/lib/datadog/profiling/old_recorder.rb +109 -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/profiler.rb +7 -0
- data/lib/datadog/profiling/scheduler.rb +29 -50
- data/lib/datadog/profiling/stack_recorder.rb +79 -0
- data/lib/datadog/profiling/tag_builder.rb +53 -0
- data/lib/datadog/profiling/tasks/exec.rb +2 -2
- data/lib/datadog/profiling/tasks/setup.rb +8 -13
- data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +2 -2
- data/lib/datadog/profiling/trace_identifiers/helper.rb +1 -1
- data/lib/datadog/profiling.rb +49 -44
- data/lib/datadog/tracing/analytics.rb +1 -1
- data/lib/datadog/tracing/buffer.rb +14 -8
- data/lib/datadog/tracing/client_ip.rb +164 -0
- data/lib/datadog/tracing/configuration/ext.rb +47 -4
- data/lib/datadog/tracing/configuration/settings.rb +433 -0
- 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 -8
- 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 +4 -4
- 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 +3 -3
- data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +1 -1
- 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/notifications/subscription.rb +4 -2
- 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 +6 -3
- data/lib/datadog/tracing/contrib/aws/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +5 -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/aws/services.rb +0 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +10 -3
- 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 +6 -3
- data/lib/datadog/tracing/contrib/dalli/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +8 -5
- data/lib/datadog/tracing/contrib/dalli/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/dalli/patcher.rb +3 -4
- 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 -3
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +7 -4
- data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +32 -0
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +7 -3
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -0
- data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +12 -6
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +47 -9
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +8 -3
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +6 -7
- data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +5 -4
- data/lib/datadog/tracing/contrib/ethon/patcher.rb +3 -4
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +7 -3
- data/lib/datadog/tracing/contrib/excon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/excon/middleware.rb +8 -7
- data/lib/datadog/tracing/contrib/excon/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/ext.rb +25 -0
- data/lib/datadog/tracing/contrib/extensions.rb +5 -5
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +7 -3
- data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +8 -8
- data/lib/datadog/tracing/contrib/faraday/patcher.rb +5 -6
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -7
- data/lib/datadog/tracing/contrib/grape/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/grape/patcher.rb +4 -5
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/graphql/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -4
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +10 -4
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +20 -5
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +17 -17
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +7 -4
- data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +27 -0
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +43 -0
- data/lib/datadog/tracing/contrib/grpc/ext.rb +4 -0
- data/lib/datadog/tracing/contrib/grpc/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/grpc/patcher.rb +3 -6
- data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
- data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +22 -0
- data/lib/datadog/tracing/contrib/hanami/ext.rb +24 -0
- data/lib/datadog/tracing/contrib/hanami/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/hanami/patcher.rb +33 -0
- data/lib/datadog/tracing/contrib/hanami/plugin.rb +23 -0
- data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +41 -0
- data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +44 -0
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +1 -2
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +13 -3
- data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +39 -0
- data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +38 -0
- data/lib/datadog/tracing/contrib/http/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +8 -10
- 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 +13 -3
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +9 -9
- 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 +13 -3
- data/lib/datadog/tracing/contrib/httprb/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +9 -9
- 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/consumer_event.rb +1 -0
- 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 +3 -2
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +3 -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 -4
- data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +2 -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 +7 -3
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +8 -0
- 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 +10 -4
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +18 -3
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +20 -5
- 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 +16 -4
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +50 -0
- data/lib/datadog/tracing/contrib/pg/ext.rb +33 -0
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +168 -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 +6 -3
- data/lib/datadog/tracing/contrib/presto/ext.rb +1 -0
- 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/propagation/sql_comment/comment.rb +43 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +33 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +28 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +47 -0
- 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 -3
- 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 -2
- data/lib/datadog/tracing/contrib/que/tracer.rb +3 -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 +6 -3
- data/lib/datadog/tracing/contrib/racecar/events/consume.rb +2 -2
- data/lib/datadog/tracing/contrib/racecar/events/message.rb +6 -3
- 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 -4
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/rack/header_collection.rb +35 -0
- data/lib/datadog/tracing/contrib/rack/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +129 -61
- 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 +3 -18
- 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 +14 -9
- data/lib/datadog/tracing/contrib/rake/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/rake/patcher.rb +3 -5
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +6 -3
- data/lib/datadog/tracing/contrib/redis/ext.rb +3 -0
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +36 -26
- data/lib/datadog/tracing/contrib/redis/integration.rb +37 -4
- data/lib/datadog/tracing/contrib/redis/patcher.rb +57 -14
- data/lib/datadog/tracing/contrib/redis/quantize.rb +12 -9
- data/lib/datadog/tracing/contrib/redis/tags.rb +12 -10
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +72 -0
- 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 -3
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +5 -4
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +9 -3
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/rest_client/patcher.rb +2 -3
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +7 -6
- data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +2 -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 +3 -1
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +9 -5
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +4 -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 +29 -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 +14 -25
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +7 -3
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +11 -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 +7 -8
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +15 -88
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +20 -16
- 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 -3
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +4 -3
- data/lib/datadog/tracing/contrib/status_code_matcher.rb +2 -2
- data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +33 -0
- data/lib/datadog/tracing/contrib/stripe/ext.rb +26 -0
- data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/stripe/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/stripe/request.rb +67 -0
- 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 -6
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +92 -10
- data/lib/datadog/tracing/contrib.rb +50 -47
- data/lib/datadog/tracing/correlation.rb +1 -1
- data/lib/datadog/{core → tracing}/diagnostics/ext.rb +1 -6
- data/lib/datadog/tracing/diagnostics/health.rb +40 -0
- data/lib/datadog/tracing/distributed/b3_multi.rb +66 -0
- data/lib/datadog/tracing/distributed/b3_single.rb +66 -0
- data/lib/datadog/tracing/distributed/datadog.rb +153 -0
- data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +85 -0
- data/lib/datadog/tracing/distributed/fetcher.rb +30 -0
- data/lib/datadog/tracing/distributed/headers/ext.rb +19 -15
- data/lib/datadog/tracing/distributed/helpers.rb +40 -4
- data/lib/datadog/tracing/distributed/none.rb +19 -0
- data/lib/datadog/tracing/distributed/propagation.rb +127 -0
- data/lib/datadog/tracing/distributed/trace_context.rb +378 -0
- data/lib/datadog/tracing/event.rb +3 -2
- data/lib/datadog/tracing/flush.rb +57 -35
- 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 +28 -1
- data/lib/datadog/tracing/metadata/tagging.rb +23 -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/http.rb +3 -98
- data/lib/datadog/tracing/runtime/metrics.rb +1 -1
- data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
- data/lib/datadog/tracing/sampling/ext.rb +31 -0
- data/lib/datadog/tracing/sampling/priority_sampler.rb +64 -12
- data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +10 -11
- data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +32 -8
- data/lib/datadog/tracing/sampling/rate_limiter.rb +4 -1
- data/lib/datadog/tracing/sampling/rate_sampler.rb +27 -10
- data/lib/datadog/tracing/sampling/rule.rb +15 -9
- data/lib/datadog/tracing/sampling/rule_sampler.rb +11 -12
- data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
- data/lib/datadog/tracing/sampling/span/matcher.rb +89 -0
- data/lib/datadog/tracing/sampling/span/rule.rb +82 -0
- data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
- data/lib/datadog/tracing/sampling/span/sampler.rb +75 -0
- data/lib/datadog/tracing/span.rb +24 -20
- data/lib/datadog/tracing/span_operation.rb +15 -16
- data/lib/datadog/tracing/sync_writer.rb +5 -5
- data/lib/datadog/tracing/trace_digest.rb +88 -2
- data/lib/datadog/tracing/trace_operation.rb +60 -16
- data/lib/datadog/tracing/trace_segment.rb +13 -8
- data/lib/datadog/tracing/tracer.rb +49 -21
- data/lib/datadog/tracing/utils.rb +50 -0
- data/lib/datadog/tracing/workers/trace_writer.rb +9 -9
- data/lib/datadog/tracing/workers.rb +3 -3
- data/lib/datadog/tracing/writer.rb +12 -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 +4 -3
- data/lib/ddtrace/transport/http/response.rb +35 -5
- 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 +5 -3
- 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 +14 -10
- data/lib/ddtrace/transport/traces.rb +8 -6
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace.rb +6 -5
- metadata +160 -44
- data/.editorconfig +0 -22
- data/.gitignore +0 -70
- data/CONTRIBUTING.md +0 -81
- data/ddtrace.gemspec +0 -59
- 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 -2671
- 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/http/api/endpoint.rb +0 -107
- data/lib/datadog/profiling/transport/http/api/instance.rb +0 -38
- data/lib/datadog/profiling/transport/http/api/spec.rb +0 -42
- data/lib/datadog/profiling/transport/http/api.rb +0 -45
- data/lib/datadog/profiling/transport/http/builder.rb +0 -30
- data/lib/datadog/profiling/transport/http/client.rb +0 -35
- data/lib/datadog/profiling/transport/http/response.rb +0 -23
- data/lib/datadog/profiling/transport/http.rb +0 -112
- 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/headers/b3.rb +0 -55
- data/lib/datadog/tracing/distributed/headers/b3_single.rb +0 -67
- data/lib/datadog/tracing/distributed/headers/datadog.rb +0 -52
- data/lib/datadog/tracing/distributed/parser.rb +0 -70
- data/lib/datadog/tracing/propagation/grpc.rb +0 -88
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Core
|
|
3
|
+
module Telemetry
|
|
4
|
+
module V1
|
|
5
|
+
# Describes attributes for host object
|
|
6
|
+
class Host
|
|
7
|
+
attr_reader \
|
|
8
|
+
:container_id,
|
|
9
|
+
:hostname,
|
|
10
|
+
:kernel_name,
|
|
11
|
+
:kernel_release,
|
|
12
|
+
:kernel_version,
|
|
13
|
+
:os_version,
|
|
14
|
+
:os
|
|
15
|
+
|
|
16
|
+
# @param container_id [String] Docker container ID
|
|
17
|
+
# @param hostname [String] uname -n
|
|
18
|
+
# @param kernel_name [String] uname -s
|
|
19
|
+
# @param kernel_release [String] uname -r
|
|
20
|
+
# @param kernel_version [String] uname -v
|
|
21
|
+
# @param os [String] uname -o
|
|
22
|
+
# @param os_version [String] Version of OS running
|
|
23
|
+
def initialize(
|
|
24
|
+
container_id: nil, hostname: nil, kernel_name: nil, kernel_release: nil, kernel_version: nil,
|
|
25
|
+
os_version: nil, os: nil
|
|
26
|
+
)
|
|
27
|
+
@container_id = container_id
|
|
28
|
+
@hostname = hostname
|
|
29
|
+
@kernel_name = kernel_name
|
|
30
|
+
@kernel_release = kernel_release
|
|
31
|
+
@kernel_version = kernel_version
|
|
32
|
+
@os = os
|
|
33
|
+
@os_version = os_version
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def to_h
|
|
37
|
+
{
|
|
38
|
+
container_id: @container_id,
|
|
39
|
+
hostname: @hostname,
|
|
40
|
+
kernel_name: @kernel_name,
|
|
41
|
+
kernel_release: @kernel_release,
|
|
42
|
+
kernel_version: @kernel_version,
|
|
43
|
+
os: @os,
|
|
44
|
+
os_version: @os_version,
|
|
45
|
+
}
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Core
|
|
3
|
+
module Telemetry
|
|
4
|
+
module V1
|
|
5
|
+
# Describes attributes for integration object
|
|
6
|
+
class Integration
|
|
7
|
+
ERROR_NIL_ENABLED_MESSAGE = ':enabled must not be nil'.freeze
|
|
8
|
+
ERROR_NIL_NAME_MESSAGE = ':name must not be nil'.freeze
|
|
9
|
+
|
|
10
|
+
attr_reader \
|
|
11
|
+
:auto_enabled,
|
|
12
|
+
:compatible,
|
|
13
|
+
:enabled,
|
|
14
|
+
:error,
|
|
15
|
+
:name,
|
|
16
|
+
:version
|
|
17
|
+
|
|
18
|
+
# @param enabled [Boolean] Whether integration is enabled at time of request
|
|
19
|
+
# @param name [String] Integration name
|
|
20
|
+
# @param auto_enabled [Boolean] If integration is not enabled by default, but by user choice
|
|
21
|
+
# @param compatible [Boolean] If integration is available, but incompatible
|
|
22
|
+
# @param error [String] Error message if integration fails to load
|
|
23
|
+
# @param version [String] Integration version (if specified in app-started, it should be for other events too)
|
|
24
|
+
def initialize(enabled:, name:, auto_enabled: nil, compatible: nil, error: nil, version: nil)
|
|
25
|
+
validate(enabled: enabled, name: name)
|
|
26
|
+
@auto_enabled = auto_enabled
|
|
27
|
+
@compatible = compatible
|
|
28
|
+
@enabled = enabled
|
|
29
|
+
@error = error
|
|
30
|
+
@name = name
|
|
31
|
+
@version = version
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def to_h
|
|
35
|
+
{
|
|
36
|
+
auto_enabled: @auto_enabled,
|
|
37
|
+
compatible: @compatible,
|
|
38
|
+
enabled: @enabled,
|
|
39
|
+
error: @error,
|
|
40
|
+
name: @name,
|
|
41
|
+
version: @version
|
|
42
|
+
}
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
# Validates all required arguments passed to the class on initialization are not nil
|
|
48
|
+
#
|
|
49
|
+
# @!visibility private
|
|
50
|
+
def validate(enabled:, name:)
|
|
51
|
+
raise ArgumentError, ERROR_NIL_ENABLED_MESSAGE if enabled.nil?
|
|
52
|
+
raise ArgumentError, ERROR_NIL_NAME_MESSAGE if name.nil?
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Core
|
|
3
|
+
module Telemetry
|
|
4
|
+
module V1
|
|
5
|
+
# Describes attributes for products object
|
|
6
|
+
class Product
|
|
7
|
+
attr_reader \
|
|
8
|
+
:appsec,
|
|
9
|
+
:profiler
|
|
10
|
+
|
|
11
|
+
# @param appsec [Telemetry::V1::AppSec] Holds custom information about the appsec product
|
|
12
|
+
# @param profiler [Telemetry::V1::Profiler] Holds custom information about the profiler product
|
|
13
|
+
def initialize(appsec: nil, profiler: nil)
|
|
14
|
+
@appsec = appsec
|
|
15
|
+
@profiler = profiler
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def to_h
|
|
19
|
+
{
|
|
20
|
+
appsec: @appsec,
|
|
21
|
+
profiler: @profiler
|
|
22
|
+
}
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Core
|
|
3
|
+
module Telemetry
|
|
4
|
+
module V1
|
|
5
|
+
# Describes attributes for telemetry API request
|
|
6
|
+
class TelemetryRequest
|
|
7
|
+
ERROR_NIL_API_VERSION_MESSAGE = ':api_version must not be nil'.freeze
|
|
8
|
+
ERROR_NIL_APPLICATION_MESSAGE = ':application must not be nil'.freeze
|
|
9
|
+
ERROR_NIL_HOST_MESSAGE = ':host must not be nil'.freeze
|
|
10
|
+
ERROR_NIL_PAYLOAD_MESSAGE = ':payload must not be nil'.freeze
|
|
11
|
+
ERROR_NIL_REQUEST_TYPE_MESSAGE = ':request_type must not be nil'.freeze
|
|
12
|
+
ERROR_NIL_RUNTIME_ID_MESSAGE = ':runtime_id must not be nil'.freeze
|
|
13
|
+
ERROR_NIL_SEQ_ID_MESSAGE = ':seq_id must not be nil'.freeze
|
|
14
|
+
ERROR_NIL_TRACER_TIME_MESSAGE = ':tracer_time must not be nil'.freeze
|
|
15
|
+
|
|
16
|
+
attr_reader \
|
|
17
|
+
:api_version,
|
|
18
|
+
:application,
|
|
19
|
+
:debug,
|
|
20
|
+
:host,
|
|
21
|
+
:payload,
|
|
22
|
+
:request_type,
|
|
23
|
+
:runtime_id,
|
|
24
|
+
:seq_id,
|
|
25
|
+
:session_id,
|
|
26
|
+
:tracer_time
|
|
27
|
+
|
|
28
|
+
# @param api_version [String] Requested API version, `v1`
|
|
29
|
+
# @param application [Telemetry::V1::Application] Object that contains information about the environment of the
|
|
30
|
+
# application
|
|
31
|
+
# @param host [Telemetry::V1::Host] Object that holds host related information
|
|
32
|
+
# @param payload [Telemetry::V1::AppEvent] The payload of the request, type impacted by :request_type
|
|
33
|
+
# @param request_type [String] Requested API function impacting the Payload type, `app-started`
|
|
34
|
+
# @param runtime_id [String] V4 UUID that represents a tracer session
|
|
35
|
+
# @param seq_id [Integer] Counter that should be auto incremented every time an API call is being made
|
|
36
|
+
# @param tracer_time [Integer] Unix timestamp (in seconds) of when the message is being sent
|
|
37
|
+
# @param debug [Boolean] Flag that enables payload debug mode
|
|
38
|
+
# @param session_id [String] V4 UUID that represents the session of the top level tracer process, often same\
|
|
39
|
+
# as runtime_id
|
|
40
|
+
def initialize(
|
|
41
|
+
api_version:, application:, host:, payload:, request_type:, runtime_id:, seq_id:, tracer_time:,
|
|
42
|
+
debug: nil, session_id: nil
|
|
43
|
+
)
|
|
44
|
+
validate(
|
|
45
|
+
api_version: api_version,
|
|
46
|
+
application: application,
|
|
47
|
+
host: host,
|
|
48
|
+
payload: payload,
|
|
49
|
+
request_type: request_type,
|
|
50
|
+
runtime_id: runtime_id,
|
|
51
|
+
seq_id: seq_id,
|
|
52
|
+
tracer_time: tracer_time
|
|
53
|
+
)
|
|
54
|
+
@api_version = api_version
|
|
55
|
+
@application = application
|
|
56
|
+
@debug = debug
|
|
57
|
+
@host = host
|
|
58
|
+
@payload = payload
|
|
59
|
+
@request_type = request_type
|
|
60
|
+
@runtime_id = runtime_id
|
|
61
|
+
@seq_id = seq_id
|
|
62
|
+
@session_id = session_id
|
|
63
|
+
@tracer_time = tracer_time
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def to_h
|
|
67
|
+
{
|
|
68
|
+
api_version: @api_version,
|
|
69
|
+
application: @application.to_h,
|
|
70
|
+
debug: @debug,
|
|
71
|
+
host: @host.to_h,
|
|
72
|
+
payload: @payload.to_h,
|
|
73
|
+
request_type: @request_type,
|
|
74
|
+
runtime_id: @runtime_id,
|
|
75
|
+
seq_id: @seq_id,
|
|
76
|
+
session_id: @session_id,
|
|
77
|
+
tracer_time: @tracer_time
|
|
78
|
+
}
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
private
|
|
82
|
+
|
|
83
|
+
# Validates all required arguments passed to the class on initialization are not nil
|
|
84
|
+
#
|
|
85
|
+
# @!visibility private
|
|
86
|
+
def validate(api_version:, application:, host:, payload:, request_type:, runtime_id:, seq_id:, tracer_time:)
|
|
87
|
+
raise ArgumentError, ERROR_NIL_API_VERSION_MESSAGE if api_version.nil?
|
|
88
|
+
raise ArgumentError, ERROR_NIL_APPLICATION_MESSAGE if application.nil?
|
|
89
|
+
raise ArgumentError, ERROR_NIL_HOST_MESSAGE if host.nil?
|
|
90
|
+
raise ArgumentError, ERROR_NIL_PAYLOAD_MESSAGE if payload.nil?
|
|
91
|
+
raise ArgumentError, ERROR_NIL_REQUEST_TYPE_MESSAGE if request_type.nil?
|
|
92
|
+
raise ArgumentError, ERROR_NIL_RUNTIME_ID_MESSAGE if runtime_id.nil?
|
|
93
|
+
raise ArgumentError, ERROR_NIL_SEQ_ID_MESSAGE if seq_id.nil?
|
|
94
|
+
raise ArgumentError, ERROR_NIL_TRACER_TIME_MESSAGE if tracer_time.nil?
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -6,10 +6,13 @@ require 'zlib'
|
|
|
6
6
|
module Datadog
|
|
7
7
|
module Core
|
|
8
8
|
module Utils
|
|
9
|
-
#
|
|
9
|
+
# Compression/decompression utility functions.
|
|
10
|
+
#
|
|
11
|
+
# @deprecated This is no longer used by ddtrace and will be removed in 2.0.
|
|
10
12
|
module Compression
|
|
11
13
|
module_function
|
|
12
14
|
|
|
15
|
+
# @deprecated This is no longer used by ddtrace and will be removed in 2.0.
|
|
13
16
|
def gzip(string, level: nil, strategy: nil)
|
|
14
17
|
sio = StringIO.new
|
|
15
18
|
sio.binmode
|
|
@@ -19,6 +22,7 @@ module Datadog
|
|
|
19
22
|
sio.string
|
|
20
23
|
end
|
|
21
24
|
|
|
25
|
+
# @deprecated This is no longer used by ddtrace and will be removed in 2.0.
|
|
22
26
|
def gunzip(string, encoding = ::Encoding::ASCII_8BIT)
|
|
23
27
|
sio = StringIO.new(string)
|
|
24
28
|
gz = Zlib::GzipReader.new(sio, encoding: encoding)
|
|
@@ -6,6 +6,7 @@ module Datadog
|
|
|
6
6
|
# Generates values from a consistent sequence
|
|
7
7
|
class Sequence
|
|
8
8
|
def initialize(seed = 0, &block)
|
|
9
|
+
@seed = seed
|
|
9
10
|
@current = seed
|
|
10
11
|
@next_item = block
|
|
11
12
|
end
|
|
@@ -15,6 +16,10 @@ module Datadog
|
|
|
15
16
|
@current += 1
|
|
16
17
|
next_item
|
|
17
18
|
end
|
|
19
|
+
|
|
20
|
+
def reset!
|
|
21
|
+
@current = @seed
|
|
22
|
+
end
|
|
18
23
|
end
|
|
19
24
|
end
|
|
20
25
|
end
|
|
@@ -36,10 +36,10 @@ module Datadog
|
|
|
36
36
|
define_singleton_method(:now, &block)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
def measure
|
|
40
|
-
before = get_time
|
|
39
|
+
def measure(unit = :float_second)
|
|
40
|
+
before = get_time(unit)
|
|
41
41
|
yield
|
|
42
|
-
after = get_time
|
|
42
|
+
after = get_time(unit)
|
|
43
43
|
after - before
|
|
44
44
|
end
|
|
45
45
|
|
data/lib/datadog/core/utils.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# typed: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require 'datadog/tracing/span'
|
|
3
|
+
require_relative 'utils/forking'
|
|
5
4
|
|
|
6
5
|
module Datadog
|
|
7
6
|
module Core
|
|
@@ -11,26 +10,6 @@ module Datadog
|
|
|
11
10
|
extend Forking
|
|
12
11
|
|
|
13
12
|
EMPTY_STRING = ''.encode(::Encoding::UTF_8).freeze
|
|
14
|
-
# We use a custom random number generator because we want no interference
|
|
15
|
-
# with the default one. Using the default prng, we could break code that
|
|
16
|
-
# would rely on srand/rand sequences.
|
|
17
|
-
|
|
18
|
-
# Return a randomly generated integer, valid as a Span ID or Trace ID.
|
|
19
|
-
# This method is thread-safe and fork-safe.
|
|
20
|
-
def self.next_id
|
|
21
|
-
after_fork! { reset! }
|
|
22
|
-
id_rng.rand(Tracing::Span::RUBY_MAX_ID) # TODO: This should never return zero
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def self.id_rng
|
|
26
|
-
@id_rng ||= Random.new
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def self.reset!
|
|
30
|
-
@id_rng = Random.new
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
private_class_method :id_rng, :reset!
|
|
34
13
|
|
|
35
14
|
# Stringifies `value` and ensures the outcome is
|
|
36
15
|
# string is no longer than `size`.
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
# software license details.
|
|
7
7
|
#++
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
require_relative 'parts'
|
|
10
|
+
require_relative 'composite_read_io'
|
|
11
11
|
require 'securerandom'
|
|
12
12
|
|
|
13
13
|
module Datadog
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
require 'net/http'
|
|
10
10
|
require 'stringio'
|
|
11
11
|
require 'cgi'
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
require_relative '../../../multipart/post/parts'
|
|
13
|
+
require_relative '../../../multipart/post/composite_read_io'
|
|
14
|
+
require_relative '../../../multipart/post/multipartable'
|
|
15
15
|
|
|
16
16
|
module Datadog
|
|
17
17
|
module Core
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# typed: false
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative '../logger'
|
|
4
4
|
|
|
5
5
|
module Datadog
|
|
6
6
|
module Core
|
|
@@ -8,7 +8,6 @@ module Datadog
|
|
|
8
8
|
module Async
|
|
9
9
|
# Adds threading behavior to workers
|
|
10
10
|
# to run tasks asynchronously.
|
|
11
|
-
# rubocop:disable Metrics/ModuleLength
|
|
12
11
|
module Thread
|
|
13
12
|
FORK_POLICY_STOP = :stop
|
|
14
13
|
FORK_POLICY_RESTART = :restart
|
|
@@ -138,7 +137,9 @@ module Datadog
|
|
|
138
137
|
# rubocop:disable Lint/RescueException
|
|
139
138
|
rescue Exception => e
|
|
140
139
|
@error = e
|
|
141
|
-
Datadog.logger.debug(
|
|
140
|
+
Datadog.logger.debug(
|
|
141
|
+
"Worker thread error. Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}"
|
|
142
|
+
)
|
|
142
143
|
raise
|
|
143
144
|
end
|
|
144
145
|
# rubocop:enable Lint/RescueException
|
|
@@ -173,7 +174,6 @@ module Datadog
|
|
|
173
174
|
end
|
|
174
175
|
end
|
|
175
176
|
end
|
|
176
|
-
# rubocop:enable Metrics/ModuleLength
|
|
177
177
|
end
|
|
178
178
|
end
|
|
179
179
|
end
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
# typed: false
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative '../runtime/metrics'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
require 'datadog/core/workers/async'
|
|
9
|
-
require 'datadog/core/workers/polling'
|
|
5
|
+
require_relative '../worker'
|
|
6
|
+
require_relative 'async'
|
|
7
|
+
require_relative 'polling'
|
|
10
8
|
|
|
11
9
|
module Datadog
|
|
12
10
|
module Core
|
|
13
11
|
module Workers
|
|
14
12
|
# Emits runtime metrics asynchronously on a timed loop
|
|
15
13
|
class RuntimeMetrics < Worker
|
|
16
|
-
extend Forwardable
|
|
17
14
|
include Workers::Polling
|
|
18
15
|
|
|
19
16
|
# In seconds
|
data/lib/datadog/core.rb
CHANGED
|
@@ -1,64 +1,36 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# typed: true
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
# Would be better to lazy load these; not
|
|
5
|
-
# all of these components will be used in
|
|
6
|
-
# every application.
|
|
7
|
-
# require 'datadog/core/buffer/cruby'
|
|
8
|
-
# require 'datadog/core/buffer/random'
|
|
9
|
-
# require 'datadog/core/buffer/thread_safe'
|
|
10
|
-
# require 'datadog/core/chunker'
|
|
11
|
-
# require 'datadog/core/configuration'
|
|
12
|
-
# require 'datadog/core/diagnostics/environment_logger'
|
|
13
|
-
# require 'datadog/core/diagnostics/ext'
|
|
14
|
-
# require 'datadog/core/diagnostics/health'
|
|
15
|
-
# require 'datadog/core/encoding'
|
|
16
|
-
# require 'datadog/core/environment/cgroup'
|
|
17
|
-
# require 'datadog/core/environment/class_count'
|
|
18
|
-
# require 'datadog/core/environment/container'
|
|
19
|
-
# require 'datadog/core/environment/ext'
|
|
20
|
-
# require 'datadog/core/environment/gc'
|
|
21
|
-
# require 'datadog/core/environment/identity'
|
|
22
|
-
# require 'datadog/core/environment/socket'
|
|
23
|
-
# require 'datadog/core/environment/thread_count'
|
|
24
|
-
# require 'datadog/core/environment/variable_helpers'
|
|
25
|
-
# require 'datadog/core/environment/vm_cache'
|
|
26
|
-
# require 'datadog/core/error'
|
|
27
|
-
# require 'datadog/core/event'
|
|
28
|
-
# require 'datadog/core/git/ext'
|
|
29
|
-
# require 'datadog/core/logger'
|
|
30
|
-
# require 'datadog/core/metrics/client'
|
|
31
|
-
# require 'datadog/core/metrics/ext'
|
|
32
|
-
# require 'datadog/core/metrics/helpers'
|
|
33
|
-
# require 'datadog/core/metrics/logging'
|
|
34
|
-
# require 'datadog/core/metrics/metric'
|
|
35
|
-
# require 'datadog/core/metrics/options'
|
|
36
|
-
# require 'datadog/core/pin'
|
|
37
|
-
# require 'datadog/core/quantization/hash'
|
|
38
|
-
# require 'datadog/core/quantization/http'
|
|
39
|
-
# require 'datadog/core/runtime/ext'
|
|
40
|
-
# require 'datadog/core/runtime/metrics'
|
|
41
|
-
# require 'datadog/core/utils'
|
|
42
|
-
# require 'datadog/core/utils/compression'
|
|
43
|
-
# require 'datadog/core/utils/database'
|
|
44
|
-
# require 'datadog/core/utils/forking'
|
|
45
|
-
# require 'datadog/core/utils/object_set'
|
|
46
|
-
# require 'datadog/core/utils/only_once'
|
|
47
|
-
# require 'datadog/core/utils/sequence'
|
|
48
|
-
# require 'datadog/core/utils/string_table'
|
|
49
|
-
# require 'datadog/core/utils/time'
|
|
50
|
-
# require 'datadog/core/worker'
|
|
51
|
-
# require 'datadog/core/workers/async'
|
|
52
|
-
# require 'datadog/core/workers/interval_loop'
|
|
53
|
-
# require 'datadog/core/workers/polling'
|
|
54
|
-
# require 'datadog/core/workers/queue'
|
|
55
|
-
# require 'datadog/core/workers/runtime_metrics'
|
|
56
|
-
|
|
57
|
-
require 'datadog/core/extensions'
|
|
4
|
+
require_relative 'core/extensions'
|
|
58
5
|
|
|
59
6
|
# We must load core extensions to make certain global APIs
|
|
60
7
|
# accessible: both for Datadog features and the core itself.
|
|
61
8
|
module Datadog
|
|
9
|
+
# Common, lower level, internal code used (or usable) by two or more
|
|
10
|
+
# products. It is a dependency of each product. Contrast with Datadog::Kit
|
|
11
|
+
# for higher-level features.
|
|
12
|
+
module Core
|
|
13
|
+
class << self
|
|
14
|
+
# Records the occurrence of a deprecated operation in this library.
|
|
15
|
+
#
|
|
16
|
+
# Currently, these operations are logged to `Datadog.logger` at `warn` level.
|
|
17
|
+
#
|
|
18
|
+
# `disallowed_next_major` adds a message informing that the deprecated operation
|
|
19
|
+
# won't be allowed in the next major release.
|
|
20
|
+
#
|
|
21
|
+
# @yieldreturn [String] a String with the lazily evaluated deprecation message.
|
|
22
|
+
# @param [Boolean] disallowed_next_major whether this deprecation will be enforced in the next major release.
|
|
23
|
+
def log_deprecation(disallowed_next_major: true)
|
|
24
|
+
Datadog.logger.warn do
|
|
25
|
+
message = yield
|
|
26
|
+
message += ' This will be enforced in the next major release.' if disallowed_next_major
|
|
27
|
+
message
|
|
28
|
+
end
|
|
29
|
+
nil
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
62
34
|
extend Core::Extensions
|
|
63
35
|
|
|
64
36
|
# Add shutdown hook:
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# typed: false
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require_relative '../identity'
|
|
5
|
+
|
|
6
|
+
module Datadog
|
|
7
|
+
module Kit
|
|
8
|
+
module AppSec
|
|
9
|
+
# Tracking events
|
|
10
|
+
module Events
|
|
11
|
+
LOGIN_SUCCESS_EVENT = 'users.login.success'
|
|
12
|
+
LOGIN_FAILURE_EVENT = 'users.login.failure'
|
|
13
|
+
|
|
14
|
+
# Attach login success event information to the trace
|
|
15
|
+
#
|
|
16
|
+
# This method is experimental and may change in the future.
|
|
17
|
+
#
|
|
18
|
+
# @param trace [TraceOperation] Trace to attach data to.
|
|
19
|
+
# @param user [Hash<Symbol, String>] User information to pass to
|
|
20
|
+
# Datadog::Kit::Identity.set_user. Must contain at least :id as key.
|
|
21
|
+
# @param others [Hash<String || Symbol, String>] Additional free-form
|
|
22
|
+
# event information to attach to the trace.
|
|
23
|
+
def self.track_login_success(trace, user:, **others)
|
|
24
|
+
track(LOGIN_SUCCESS_EVENT, trace, **others)
|
|
25
|
+
|
|
26
|
+
user_options = user.dup
|
|
27
|
+
user_id = user.delete(:id)
|
|
28
|
+
|
|
29
|
+
raise ArgumentError, 'missing required key: :user => { :id }' if user_id.nil?
|
|
30
|
+
|
|
31
|
+
Kit::Identity.set_user(trace, id: user_id, **user_options)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Attach login failure event information to the trace
|
|
35
|
+
#
|
|
36
|
+
# This method is experimental and may change in the future.
|
|
37
|
+
#
|
|
38
|
+
# @param trace [TraceOperation] Trace to attach data to.
|
|
39
|
+
# @param user_id [String] User id that attempted login
|
|
40
|
+
# @param user_exists [bool] Whether the user id that did a login attempt exists.
|
|
41
|
+
# @param others [Hash<String || Symbol, String>] Additional free-form
|
|
42
|
+
# event information to attach to the trace.
|
|
43
|
+
def self.track_login_failure(trace, user_id:, user_exists:, **others)
|
|
44
|
+
track(LOGIN_FAILURE_EVENT, trace, **others)
|
|
45
|
+
|
|
46
|
+
raise ArgumentError, 'user_id cannot be nil' if user_id.nil?
|
|
47
|
+
|
|
48
|
+
trace.set_tag('appsec.events.users.login.failure.usr.id', user_id)
|
|
49
|
+
trace.set_tag('appsec.events.users.login.failure.usr.exists', user_exists)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Attach custom event information to the trace
|
|
53
|
+
#
|
|
54
|
+
# This method is experimental and may change in the future.
|
|
55
|
+
#
|
|
56
|
+
# @param event [String] Mandatory. Event code.
|
|
57
|
+
# @param trace [TraceOperation] Trace to attach data to.
|
|
58
|
+
# @param others [Hash<Symbol, String>] Additional free-form
|
|
59
|
+
# event information to attach to the trace. Key must not
|
|
60
|
+
# be :track.
|
|
61
|
+
def self.track(event, trace, **others)
|
|
62
|
+
trace.set_tag("appsec.events.#{event}.track", 'true')
|
|
63
|
+
|
|
64
|
+
others.each do |k, v|
|
|
65
|
+
raise ArgumentError, 'key cannot be :track' if k.to_sym == :track
|
|
66
|
+
|
|
67
|
+
trace.set_tag("appsec.events.#{event}.#{k}", v) unless v.nil?
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
trace.keep!
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# typed: ignore
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Kit
|
|
6
|
+
# This helper is used to enable core dumps for the current Ruby app. This is useful when debugging native-level
|
|
7
|
+
# crashes.
|
|
8
|
+
#
|
|
9
|
+
# It can be enabled simply by adding `require 'datadog/kit/enable_core_dumps'` to start of the app.
|
|
10
|
+
module EnableCoreDumps
|
|
11
|
+
def self.call
|
|
12
|
+
current_size, maximum_size = Process.getrlimit(:CORE)
|
|
13
|
+
core_pattern =
|
|
14
|
+
begin
|
|
15
|
+
File.read('/proc/sys/kernel/core_pattern').strip
|
|
16
|
+
rescue
|
|
17
|
+
'(Could not open /proc/sys/kernel/core_pattern)'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
if maximum_size <= 0
|
|
21
|
+
Kernel.warn("[DDTRACE] Could not enable core dumps on crash, maximum size is #{maximum_size} (disabled).")
|
|
22
|
+
return
|
|
23
|
+
elsif maximum_size == current_size
|
|
24
|
+
Kernel.warn('[DDTRACE] Core dumps already enabled, nothing to do!')
|
|
25
|
+
return
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
begin
|
|
29
|
+
Process.setrlimit(:CORE, maximum_size)
|
|
30
|
+
rescue => e
|
|
31
|
+
Kernel.warn(
|
|
32
|
+
"[DDTRACE] Failed to enable core dumps. Cause: #{e.class.name} #{e.message} " \
|
|
33
|
+
"Location: #{Array(e.backtrace).first}"
|
|
34
|
+
)
|
|
35
|
+
return
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
if current_size == 0
|
|
39
|
+
Kernel.warn("[DDTRACE] Enabled core dumps. Maximum size: #{maximum_size} Output pattern: '#{core_pattern}'")
|
|
40
|
+
else
|
|
41
|
+
Kernel.warn(
|
|
42
|
+
"[DDTRACE] Raised core dump limit. Old size: #{current_size} " \
|
|
43
|
+
"Maximum size: #{maximum_size} Output pattern: '#{core_pattern}'"
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
Datadog::Kit::EnableCoreDumps.call
|