cw-datadog 2.23.0.2
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/CHANGELOG.md +5142 -0
- data/LICENSE +6 -0
- data/LICENSE-3rdparty.csv +7 -0
- data/LICENSE.Apache +200 -0
- data/LICENSE.BSD3 +24 -0
- data/NOTICE +4 -0
- data/README.md +24 -0
- data/bin/ddprofrb +15 -0
- data/ext/LIBDATADOG_DEVELOPMENT.md +3 -0
- data/ext/datadog_profiling_native_extension/NativeExtensionDesign.md +156 -0
- data/ext/datadog_profiling_native_extension/clock_id.h +23 -0
- data/ext/datadog_profiling_native_extension/clock_id_from_pthread.c +55 -0
- data/ext/datadog_profiling_native_extension/clock_id_noop.c +21 -0
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +1423 -0
- data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +447 -0
- data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h +131 -0
- data/ext/datadog_profiling_native_extension/collectors_dynamic_sampling_rate.c +150 -0
- data/ext/datadog_profiling_native_extension/collectors_dynamic_sampling_rate.h +18 -0
- data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.c +156 -0
- data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.h +5 -0
- data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +248 -0
- data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.h +3 -0
- data/ext/datadog_profiling_native_extension/collectors_stack.c +659 -0
- data/ext/datadog_profiling_native_extension/collectors_stack.h +44 -0
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +2221 -0
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +31 -0
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +80 -0
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +63 -0
- data/ext/datadog_profiling_native_extension/encoded_profile.c +79 -0
- data/ext/datadog_profiling_native_extension/encoded_profile.h +8 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +321 -0
- data/ext/datadog_profiling_native_extension/gvl_profiling_helper.c +52 -0
- data/ext/datadog_profiling_native_extension/gvl_profiling_helper.h +67 -0
- data/ext/datadog_profiling_native_extension/heap_recorder.c +998 -0
- data/ext/datadog_profiling_native_extension/heap_recorder.h +177 -0
- data/ext/datadog_profiling_native_extension/helpers.h +12 -0
- data/ext/datadog_profiling_native_extension/http_transport.c +280 -0
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +84 -0
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +28 -0
- data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +244 -0
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +881 -0
- data/ext/datadog_profiling_native_extension/private_vm_api_access.h +81 -0
- data/ext/datadog_profiling_native_extension/profiling.c +284 -0
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +235 -0
- data/ext/datadog_profiling_native_extension/ruby_helpers.h +88 -0
- data/ext/datadog_profiling_native_extension/setup_signal_handler.c +115 -0
- data/ext/datadog_profiling_native_extension/setup_signal_handler.h +12 -0
- data/ext/datadog_profiling_native_extension/stack_recorder.c +1145 -0
- data/ext/datadog_profiling_native_extension/stack_recorder.h +31 -0
- data/ext/datadog_profiling_native_extension/time_helpers.c +38 -0
- data/ext/datadog_profiling_native_extension/time_helpers.h +56 -0
- data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.c +47 -0
- data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.h +31 -0
- data/ext/libdatadog_api/crashtracker.c +125 -0
- data/ext/libdatadog_api/crashtracker.h +5 -0
- data/ext/libdatadog_api/datadog_ruby_common.c +80 -0
- data/ext/libdatadog_api/datadog_ruby_common.h +63 -0
- data/ext/libdatadog_api/ddsketch.c +106 -0
- data/ext/libdatadog_api/extconf.rb +110 -0
- data/ext/libdatadog_api/init.c +18 -0
- data/ext/libdatadog_api/library_config.c +172 -0
- data/ext/libdatadog_api/library_config.h +25 -0
- data/ext/libdatadog_api/process_discovery.c +118 -0
- data/ext/libdatadog_api/process_discovery.h +5 -0
- data/ext/libdatadog_extconf_helpers.rb +140 -0
- data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +89 -0
- data/lib/datadog/appsec/actions_handler.rb +49 -0
- data/lib/datadog/appsec/anonymizer.rb +16 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +26 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +59 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +29 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +26 -0
- data/lib/datadog/appsec/api_security/endpoint_collection.rb +10 -0
- data/lib/datadog/appsec/api_security/route_extractor.rb +77 -0
- data/lib/datadog/appsec/api_security/sampler.rb +60 -0
- data/lib/datadog/appsec/api_security.rb +23 -0
- data/lib/datadog/appsec/assets/blocked.html +99 -0
- 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/README.md +46 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +10504 -0
- data/lib/datadog/appsec/assets/waf_rules/strict.json +3066 -0
- data/lib/datadog/appsec/assets.rb +46 -0
- data/lib/datadog/appsec/autoload.rb +13 -0
- data/lib/datadog/appsec/component.rb +89 -0
- data/lib/datadog/appsec/compressed_json.rb +40 -0
- data/lib/datadog/appsec/configuration/settings.rb +409 -0
- data/lib/datadog/appsec/configuration.rb +11 -0
- data/lib/datadog/appsec/context.rb +97 -0
- data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +94 -0
- data/lib/datadog/appsec/contrib/active_record/integration.rb +41 -0
- data/lib/datadog/appsec/contrib/active_record/patcher.rb +101 -0
- data/lib/datadog/appsec/contrib/auto_instrument.rb +25 -0
- data/lib/datadog/appsec/contrib/devise/configuration.rb +52 -0
- data/lib/datadog/appsec/contrib/devise/data_extractor.rb +78 -0
- data/lib/datadog/appsec/contrib/devise/ext.rb +35 -0
- data/lib/datadog/appsec/contrib/devise/integration.rb +41 -0
- data/lib/datadog/appsec/contrib/devise/patcher.rb +63 -0
- data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +103 -0
- data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +70 -0
- data/lib/datadog/appsec/contrib/devise/patches/skip_signin_tracking_patch.rb +21 -0
- data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +106 -0
- data/lib/datadog/appsec/contrib/excon/integration.rb +41 -0
- data/lib/datadog/appsec/contrib/excon/patcher.rb +28 -0
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +42 -0
- data/lib/datadog/appsec/contrib/faraday/connection_patch.rb +22 -0
- data/lib/datadog/appsec/contrib/faraday/integration.rb +42 -0
- data/lib/datadog/appsec/contrib/faraday/patcher.rb +53 -0
- data/lib/datadog/appsec/contrib/faraday/rack_builder_patch.rb +22 -0
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +42 -0
- data/lib/datadog/appsec/contrib/graphql/appsec_trace.rb +29 -0
- data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +109 -0
- data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +56 -0
- data/lib/datadog/appsec/contrib/graphql/integration.rb +54 -0
- data/lib/datadog/appsec/contrib/graphql/patcher.rb +34 -0
- data/lib/datadog/appsec/contrib/integration.rb +37 -0
- data/lib/datadog/appsec/contrib/rack/ext.rb +47 -0
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +101 -0
- data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +141 -0
- data/lib/datadog/appsec/contrib/rack/integration.rb +44 -0
- data/lib/datadog/appsec/contrib/rack/patcher.rb +31 -0
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +43 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +218 -0
- data/lib/datadog/appsec/contrib/rails/ext.rb +13 -0
- data/lib/datadog/appsec/contrib/rails/framework.rb +16 -0
- data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +78 -0
- data/lib/datadog/appsec/contrib/rails/integration.rb +43 -0
- data/lib/datadog/appsec/contrib/rails/patcher.rb +171 -0
- data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
- data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
- data/lib/datadog/appsec/contrib/rails/request.rb +36 -0
- data/lib/datadog/appsec/contrib/rails/request_middleware.rb +20 -0
- data/lib/datadog/appsec/contrib/rest_client/integration.rb +45 -0
- data/lib/datadog/appsec/contrib/rest_client/patcher.rb +28 -0
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +39 -0
- data/lib/datadog/appsec/contrib/sinatra/framework.rb +20 -0
- data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
- data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +105 -0
- data/lib/datadog/appsec/contrib/sinatra/integration.rb +43 -0
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +132 -0
- data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
- data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +20 -0
- data/lib/datadog/appsec/event.rb +139 -0
- data/lib/datadog/appsec/ext.rb +23 -0
- data/lib/datadog/appsec/extensions.rb +16 -0
- data/lib/datadog/appsec/instrumentation/gateway/argument.rb +43 -0
- data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +24 -0
- data/lib/datadog/appsec/instrumentation/gateway.rb +59 -0
- data/lib/datadog/appsec/instrumentation.rb +9 -0
- data/lib/datadog/appsec/metrics/collector.rb +58 -0
- data/lib/datadog/appsec/metrics/exporter.rb +35 -0
- data/lib/datadog/appsec/metrics/telemetry.rb +23 -0
- data/lib/datadog/appsec/metrics/telemetry_exporter.rb +29 -0
- data/lib/datadog/appsec/metrics.rb +14 -0
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +85 -0
- data/lib/datadog/appsec/monitor.rb +11 -0
- data/lib/datadog/appsec/processor/rule_loader.rb +119 -0
- data/lib/datadog/appsec/rate_limiter.rb +45 -0
- data/lib/datadog/appsec/remote.rb +119 -0
- data/lib/datadog/appsec/response.rb +99 -0
- data/lib/datadog/appsec/sample_rate.rb +21 -0
- data/lib/datadog/appsec/security_engine/engine.rb +176 -0
- data/lib/datadog/appsec/security_engine/result.rb +102 -0
- data/lib/datadog/appsec/security_engine/runner.rb +111 -0
- data/lib/datadog/appsec/security_engine.rb +9 -0
- data/lib/datadog/appsec/security_event.rb +37 -0
- data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
- data/lib/datadog/appsec/trace_keeper.rb +24 -0
- data/lib/datadog/appsec/utils/hash_coercion.rb +23 -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 +11 -0
- data/lib/datadog/appsec/utils.rb +9 -0
- data/lib/datadog/appsec.rb +65 -0
- data/lib/datadog/auto_instrument.rb +19 -0
- data/lib/datadog/auto_instrument_base.rb +9 -0
- data/lib/datadog/core/buffer/cruby.rb +55 -0
- data/lib/datadog/core/buffer/random.rb +150 -0
- data/lib/datadog/core/buffer/thread_safe.rb +58 -0
- data/lib/datadog/core/chunker.rb +35 -0
- data/lib/datadog/core/cloudwise/IMPLEMENTATION_V2.md +517 -0
- data/lib/datadog/core/cloudwise/QUICKSTART.md +398 -0
- data/lib/datadog/core/cloudwise/README.md +722 -0
- data/lib/datadog/core/cloudwise/app_registration_worker.rb +90 -0
- data/lib/datadog/core/cloudwise/client.rb +490 -0
- data/lib/datadog/core/cloudwise/component.rb +351 -0
- data/lib/datadog/core/cloudwise/heartbeat_worker.rb +137 -0
- data/lib/datadog/core/cloudwise/host_id_worker.rb +85 -0
- data/lib/datadog/core/cloudwise/license_worker.rb +108 -0
- data/lib/datadog/core/cloudwise/probe_state.rb +160 -0
- data/lib/datadog/core/configuration/agent_settings.rb +52 -0
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +339 -0
- data/lib/datadog/core/configuration/agentless_settings_resolver.rb +176 -0
- data/lib/datadog/core/configuration/base.rb +91 -0
- data/lib/datadog/core/configuration/components.rb +386 -0
- data/lib/datadog/core/configuration/components_state.rb +23 -0
- data/lib/datadog/core/configuration/config_helper.rb +100 -0
- data/lib/datadog/core/configuration/deprecations.rb +36 -0
- data/lib/datadog/core/configuration/ext.rb +49 -0
- data/lib/datadog/core/configuration/option.rb +368 -0
- data/lib/datadog/core/configuration/option_definition.rb +158 -0
- data/lib/datadog/core/configuration/options.rb +134 -0
- data/lib/datadog/core/configuration/settings.rb +1087 -0
- data/lib/datadog/core/configuration/stable_config.rb +32 -0
- data/lib/datadog/core/configuration/supported_configurations.rb +347 -0
- data/lib/datadog/core/configuration.rb +328 -0
- data/lib/datadog/core/contrib/rails/utils.rb +24 -0
- data/lib/datadog/core/crashtracking/component.rb +105 -0
- data/lib/datadog/core/crashtracking/tag_builder.rb +21 -0
- data/lib/datadog/core/ddsketch.rb +19 -0
- data/lib/datadog/core/deprecations.rb +58 -0
- data/lib/datadog/core/diagnostics/environment_logger.rb +170 -0
- data/lib/datadog/core/diagnostics/health.rb +19 -0
- data/lib/datadog/core/encoding.rb +90 -0
- data/lib/datadog/core/environment/agent_info.rb +78 -0
- data/lib/datadog/core/environment/cgroup.rb +51 -0
- data/lib/datadog/core/environment/class_count.rb +21 -0
- data/lib/datadog/core/environment/container.rb +89 -0
- data/lib/datadog/core/environment/execution.rb +103 -0
- data/lib/datadog/core/environment/ext.rb +45 -0
- data/lib/datadog/core/environment/gc.rb +20 -0
- data/lib/datadog/core/environment/git.rb +26 -0
- data/lib/datadog/core/environment/identity.rb +84 -0
- data/lib/datadog/core/environment/platform.rb +46 -0
- data/lib/datadog/core/environment/socket.rb +24 -0
- data/lib/datadog/core/environment/thread_count.rb +20 -0
- data/lib/datadog/core/environment/variable_helpers.rb +53 -0
- data/lib/datadog/core/environment/vm_cache.rb +64 -0
- data/lib/datadog/core/environment/yjit.rb +69 -0
- data/lib/datadog/core/error.rb +102 -0
- data/lib/datadog/core/extensions.rb +16 -0
- data/lib/datadog/core/git/ext.rb +16 -0
- data/lib/datadog/core/header_collection.rb +43 -0
- data/lib/datadog/core/logger.rb +45 -0
- data/lib/datadog/core/logging/ext.rb +13 -0
- data/lib/datadog/core/metrics/client.rb +206 -0
- data/lib/datadog/core/metrics/ext.rb +18 -0
- data/lib/datadog/core/metrics/helpers.rb +25 -0
- data/lib/datadog/core/metrics/logging.rb +44 -0
- data/lib/datadog/core/metrics/metric.rb +14 -0
- data/lib/datadog/core/metrics/options.rb +52 -0
- data/lib/datadog/core/pin.rb +71 -0
- data/lib/datadog/core/process_discovery/tracer_memfd.rb +13 -0
- data/lib/datadog/core/process_discovery.rb +61 -0
- data/lib/datadog/core/rate_limiter.rb +185 -0
- data/lib/datadog/core/remote/client/capabilities.rb +70 -0
- data/lib/datadog/core/remote/client.rb +245 -0
- data/lib/datadog/core/remote/component.rb +161 -0
- data/lib/datadog/core/remote/configuration/content.rb +111 -0
- data/lib/datadog/core/remote/configuration/digest.rb +62 -0
- data/lib/datadog/core/remote/configuration/path.rb +90 -0
- data/lib/datadog/core/remote/configuration/repository.rb +307 -0
- data/lib/datadog/core/remote/configuration/target.rb +74 -0
- data/lib/datadog/core/remote/configuration.rb +18 -0
- data/lib/datadog/core/remote/dispatcher.rb +59 -0
- data/lib/datadog/core/remote/ext.rb +13 -0
- data/lib/datadog/core/remote/negotiation.rb +70 -0
- data/lib/datadog/core/remote/tie/tracing.rb +39 -0
- data/lib/datadog/core/remote/tie.rb +29 -0
- data/lib/datadog/core/remote/transport/config.rb +61 -0
- data/lib/datadog/core/remote/transport/http/api.rb +53 -0
- data/lib/datadog/core/remote/transport/http/client.rb +49 -0
- data/lib/datadog/core/remote/transport/http/config.rb +252 -0
- data/lib/datadog/core/remote/transport/http/negotiation.rb +103 -0
- data/lib/datadog/core/remote/transport/http.rb +83 -0
- data/lib/datadog/core/remote/transport/negotiation.rb +75 -0
- data/lib/datadog/core/remote/worker.rb +105 -0
- data/lib/datadog/core/remote.rb +24 -0
- data/lib/datadog/core/runtime/ext.rb +40 -0
- data/lib/datadog/core/runtime/metrics.rb +202 -0
- data/lib/datadog/core/semaphore.rb +35 -0
- data/lib/datadog/core/tag_builder.rb +52 -0
- data/lib/datadog/core/telemetry/component.rb +206 -0
- data/lib/datadog/core/telemetry/emitter.rb +56 -0
- data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +66 -0
- data/lib/datadog/core/telemetry/event/app_closing.rb +18 -0
- data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +33 -0
- data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +30 -0
- data/lib/datadog/core/telemetry/event/app_heartbeat.rb +18 -0
- data/lib/datadog/core/telemetry/event/app_integrations_change.rb +58 -0
- data/lib/datadog/core/telemetry/event/app_started.rb +287 -0
- data/lib/datadog/core/telemetry/event/base.rb +40 -0
- data/lib/datadog/core/telemetry/event/distributions.rb +18 -0
- data/lib/datadog/core/telemetry/event/generate_metrics.rb +43 -0
- data/lib/datadog/core/telemetry/event/log.rb +76 -0
- data/lib/datadog/core/telemetry/event/message_batch.rb +42 -0
- data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +43 -0
- data/lib/datadog/core/telemetry/event.rb +37 -0
- data/lib/datadog/core/telemetry/ext.rb +20 -0
- data/lib/datadog/core/telemetry/http/adapters/net.rb +26 -0
- data/lib/datadog/core/telemetry/logger.rb +52 -0
- data/lib/datadog/core/telemetry/logging.rb +71 -0
- data/lib/datadog/core/telemetry/metric.rb +189 -0
- data/lib/datadog/core/telemetry/metrics_collection.rb +81 -0
- data/lib/datadog/core/telemetry/metrics_manager.rb +81 -0
- data/lib/datadog/core/telemetry/request.rb +71 -0
- data/lib/datadog/core/telemetry/transport/http/api.rb +43 -0
- data/lib/datadog/core/telemetry/transport/http/client.rb +49 -0
- data/lib/datadog/core/telemetry/transport/http/telemetry.rb +92 -0
- data/lib/datadog/core/telemetry/transport/http.rb +63 -0
- data/lib/datadog/core/telemetry/transport/telemetry.rb +51 -0
- data/lib/datadog/core/telemetry/worker.rb +276 -0
- data/lib/datadog/core/transport/ext.rb +44 -0
- data/lib/datadog/core/transport/http/adapters/net.rb +175 -0
- data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
- data/lib/datadog/core/transport/http/adapters/test.rb +90 -0
- data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
- data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
- data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
- data/lib/datadog/core/transport/http/api/instance.rb +54 -0
- data/lib/datadog/core/transport/http/api/map.rb +18 -0
- data/lib/datadog/core/transport/http/api/spec.rb +36 -0
- data/lib/datadog/core/transport/http/builder.rb +184 -0
- data/lib/datadog/core/transport/http/env.rb +70 -0
- data/lib/datadog/core/transport/http/response.rb +60 -0
- data/lib/datadog/core/transport/http.rb +75 -0
- data/lib/datadog/core/transport/parcel.rb +22 -0
- data/lib/datadog/core/transport/request.rb +17 -0
- data/lib/datadog/core/transport/response.rb +71 -0
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +102 -0
- data/lib/datadog/core/utils/base64.rb +22 -0
- data/lib/datadog/core/utils/duration.rb +52 -0
- data/lib/datadog/core/utils/forking.rb +63 -0
- data/lib/datadog/core/utils/hash.rb +79 -0
- data/lib/datadog/core/utils/lru_cache.rb +45 -0
- data/lib/datadog/core/utils/network.rb +142 -0
- data/lib/datadog/core/utils/only_once.rb +42 -0
- data/lib/datadog/core/utils/only_once_successful.rb +87 -0
- data/lib/datadog/core/utils/safe_dup.rb +40 -0
- data/lib/datadog/core/utils/sequence.rb +26 -0
- data/lib/datadog/core/utils/time.rb +84 -0
- data/lib/datadog/core/utils/truncation.rb +21 -0
- data/lib/datadog/core/utils/url.rb +25 -0
- data/lib/datadog/core/utils.rb +101 -0
- data/lib/datadog/core/vendor/multipart-post/LICENSE +11 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +118 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +59 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +137 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +11 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +10 -0
- data/lib/datadog/core/vendor/multipart-post/multipart.rb +14 -0
- data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +34 -0
- data/lib/datadog/core/worker.rb +24 -0
- data/lib/datadog/core/workers/async.rb +202 -0
- data/lib/datadog/core/workers/interval_loop.rb +134 -0
- data/lib/datadog/core/workers/polling.rb +59 -0
- data/lib/datadog/core/workers/queue.rb +44 -0
- data/lib/datadog/core/workers/runtime_metrics.rb +62 -0
- data/lib/datadog/core.rb +38 -0
- data/lib/datadog/data_streams/configuration/settings.rb +49 -0
- data/lib/datadog/data_streams/configuration.rb +11 -0
- data/lib/datadog/data_streams/ext.rb +11 -0
- data/lib/datadog/data_streams/extensions.rb +16 -0
- data/lib/datadog/data_streams/pathway_context.rb +169 -0
- data/lib/datadog/data_streams/processor.rb +509 -0
- data/lib/datadog/data_streams/transport/http/api.rb +33 -0
- data/lib/datadog/data_streams/transport/http/client.rb +49 -0
- data/lib/datadog/data_streams/transport/http/stats.rb +87 -0
- data/lib/datadog/data_streams/transport/http.rb +41 -0
- data/lib/datadog/data_streams/transport/stats.rb +60 -0
- data/lib/datadog/data_streams.rb +100 -0
- data/lib/datadog/di/base.rb +115 -0
- data/lib/datadog/di/boot.rb +43 -0
- data/lib/datadog/di/code_tracker.rb +204 -0
- data/lib/datadog/di/component.rb +122 -0
- data/lib/datadog/di/configuration/settings.rb +212 -0
- data/lib/datadog/di/configuration.rb +11 -0
- data/lib/datadog/di/context.rb +70 -0
- data/lib/datadog/di/contrib/active_record.rb +12 -0
- data/lib/datadog/di/contrib/railtie.rb +15 -0
- data/lib/datadog/di/contrib.rb +28 -0
- data/lib/datadog/di/el/compiler.rb +164 -0
- data/lib/datadog/di/el/evaluator.rb +159 -0
- data/lib/datadog/di/el/expression.rb +42 -0
- data/lib/datadog/di/el.rb +5 -0
- data/lib/datadog/di/error.rb +82 -0
- data/lib/datadog/di/extensions.rb +16 -0
- data/lib/datadog/di/instrumenter.rb +566 -0
- data/lib/datadog/di/logger.rb +30 -0
- data/lib/datadog/di/preload.rb +18 -0
- data/lib/datadog/di/probe.rb +231 -0
- data/lib/datadog/di/probe_builder.rb +86 -0
- data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
- data/lib/datadog/di/probe_file_loader.rb +82 -0
- data/lib/datadog/di/probe_manager.rb +261 -0
- data/lib/datadog/di/probe_notification_builder.rb +236 -0
- data/lib/datadog/di/probe_notifier_worker.rb +305 -0
- data/lib/datadog/di/proc_responder.rb +32 -0
- data/lib/datadog/di/redactor.rb +187 -0
- data/lib/datadog/di/remote.rb +145 -0
- data/lib/datadog/di/serializer.rb +422 -0
- data/lib/datadog/di/transport/diagnostics.rb +62 -0
- data/lib/datadog/di/transport/http/api.rb +42 -0
- data/lib/datadog/di/transport/http/client.rb +47 -0
- data/lib/datadog/di/transport/http/diagnostics.rb +65 -0
- data/lib/datadog/di/transport/http/input.rb +77 -0
- data/lib/datadog/di/transport/http.rb +57 -0
- data/lib/datadog/di/transport/input.rb +70 -0
- data/lib/datadog/di/utils.rb +142 -0
- data/lib/datadog/di.rb +36 -0
- data/lib/datadog/error_tracking/collector.rb +87 -0
- data/lib/datadog/error_tracking/component.rb +167 -0
- data/lib/datadog/error_tracking/configuration/settings.rb +63 -0
- data/lib/datadog/error_tracking/configuration.rb +11 -0
- data/lib/datadog/error_tracking/ext.rb +18 -0
- data/lib/datadog/error_tracking/extensions.rb +16 -0
- data/lib/datadog/error_tracking/filters.rb +77 -0
- data/lib/datadog/error_tracking.rb +18 -0
- data/lib/datadog/kit/appsec/events/v2.rb +196 -0
- data/lib/datadog/kit/appsec/events.rb +180 -0
- data/lib/datadog/kit/enable_core_dumps.rb +49 -0
- data/lib/datadog/kit/identity.rb +114 -0
- data/lib/datadog/kit.rb +11 -0
- data/lib/datadog/opentelemetry/api/baggage.rb +90 -0
- data/lib/datadog/opentelemetry/api/baggage.rbs +26 -0
- data/lib/datadog/opentelemetry/api/context.rb +208 -0
- data/lib/datadog/opentelemetry/api/trace/span.rb +14 -0
- data/lib/datadog/opentelemetry/sdk/configurator.rb +37 -0
- data/lib/datadog/opentelemetry/sdk/id_generator.rb +26 -0
- data/lib/datadog/opentelemetry/sdk/propagator.rb +89 -0
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +169 -0
- data/lib/datadog/opentelemetry/sdk/trace/span.rb +182 -0
- data/lib/datadog/opentelemetry/trace.rb +59 -0
- data/lib/datadog/opentelemetry.rb +52 -0
- data/lib/datadog/profiling/collectors/code_provenance.rb +150 -0
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +147 -0
- data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +14 -0
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +69 -0
- data/lib/datadog/profiling/collectors/info.rb +156 -0
- data/lib/datadog/profiling/collectors/stack.rb +13 -0
- data/lib/datadog/profiling/collectors/thread_context.rb +102 -0
- data/lib/datadog/profiling/component.rb +445 -0
- data/lib/datadog/profiling/encoded_profile.rb +11 -0
- data/lib/datadog/profiling/exporter.rb +111 -0
- data/lib/datadog/profiling/ext/dir_monkey_patches.rb +410 -0
- data/lib/datadog/profiling/ext.rb +22 -0
- data/lib/datadog/profiling/flush.rb +40 -0
- data/lib/datadog/profiling/http_transport.rb +67 -0
- data/lib/datadog/profiling/load_native_extension.rb +9 -0
- data/lib/datadog/profiling/native_extension.rb +20 -0
- data/lib/datadog/profiling/preload.rb +5 -0
- data/lib/datadog/profiling/profiler.rb +70 -0
- data/lib/datadog/profiling/scheduler.rb +153 -0
- data/lib/datadog/profiling/sequence_tracker.rb +44 -0
- data/lib/datadog/profiling/stack_recorder.rb +104 -0
- data/lib/datadog/profiling/tag_builder.rb +59 -0
- data/lib/datadog/profiling/tasks/exec.rb +50 -0
- data/lib/datadog/profiling/tasks/help.rb +18 -0
- data/lib/datadog/profiling/tasks/setup.rb +43 -0
- data/lib/datadog/profiling.rb +167 -0
- data/lib/datadog/single_step_instrument.rb +21 -0
- data/lib/datadog/tracing/analytics.rb +25 -0
- data/lib/datadog/tracing/buffer.rb +129 -0
- data/lib/datadog/tracing/client_ip.rb +61 -0
- data/lib/datadog/tracing/component.rb +216 -0
- data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
- data/lib/datadog/tracing/configuration/dynamic.rb +100 -0
- data/lib/datadog/tracing/configuration/ext.rb +118 -0
- data/lib/datadog/tracing/configuration/http.rb +74 -0
- data/lib/datadog/tracing/configuration/settings.rb +579 -0
- data/lib/datadog/tracing/context.rb +68 -0
- data/lib/datadog/tracing/context_provider.rb +82 -0
- data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +39 -0
- data/lib/datadog/tracing/contrib/action_cable/event.rb +71 -0
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +58 -0
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +63 -0
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +59 -0
- data/lib/datadog/tracing/contrib/action_cable/events.rb +37 -0
- data/lib/datadog/tracing/contrib/action_cable/ext.rb +33 -0
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +86 -0
- data/lib/datadog/tracing/contrib/action_cable/integration.rb +53 -0
- data/lib/datadog/tracing/contrib/action_cable/patcher.rb +31 -0
- data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +43 -0
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +50 -0
- data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +65 -0
- data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +48 -0
- data/lib/datadog/tracing/contrib/action_mailer/events.rb +34 -0
- data/lib/datadog/tracing/contrib/action_mailer/ext.rb +34 -0
- data/lib/datadog/tracing/contrib/action_mailer/integration.rb +54 -0
- data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +158 -0
- data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +85 -0
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb +33 -0
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +40 -0
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +25 -0
- data/lib/datadog/tracing/contrib/action_pack/integration.rb +54 -0
- data/lib/datadog/tracing/contrib/action_pack/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/action_pack/utils.rb +39 -0
- data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +43 -0
- data/lib/datadog/tracing/contrib/action_view/event.rb +35 -0
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +50 -0
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +57 -0
- data/lib/datadog/tracing/contrib/action_view/events.rb +34 -0
- data/lib/datadog/tracing/contrib/action_view/ext.rb +25 -0
- data/lib/datadog/tracing/contrib/action_view/integration.rb +61 -0
- data/lib/datadog/tracing/contrib/action_view/patcher.rb +34 -0
- data/lib/datadog/tracing/contrib/action_view/utils.rb +36 -0
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +39 -0
- data/lib/datadog/tracing/contrib/active_job/event.rb +58 -0
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +50 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +49 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +49 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +51 -0
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +49 -0
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +50 -0
- data/lib/datadog/tracing/contrib/active_job/events.rb +42 -0
- data/lib/datadog/tracing/contrib/active_job/ext.rb +40 -0
- data/lib/datadog/tracing/contrib/active_job/integration.rb +53 -0
- data/lib/datadog/tracing/contrib/active_job/log_injection.rb +38 -0
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +40 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +68 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +45 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +47 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +34 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +25 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +32 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +36 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +152 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +48 -0
- data/lib/datadog/tracing/contrib/active_record/event.rb +30 -0
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +60 -0
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +80 -0
- data/lib/datadog/tracing/contrib/active_record/events.rb +34 -0
- data/lib/datadog/tracing/contrib/active_record/ext.rb +30 -0
- data/lib/datadog/tracing/contrib/active_record/integration.rb +71 -0
- data/lib/datadog/tracing/contrib/active_record/patcher.rb +27 -0
- data/lib/datadog/tracing/contrib/active_record/utils.rb +128 -0
- data/lib/datadog/tracing/contrib/active_support/cache/event.rb +32 -0
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +171 -0
- data/lib/datadog/tracing/contrib/active_support/cache/events.rb +34 -0
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +225 -0
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +57 -0
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +60 -0
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +70 -0
- data/lib/datadog/tracing/contrib/active_support/ext.rb +32 -0
- data/lib/datadog/tracing/contrib/active_support/integration.rb +55 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +95 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +83 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +166 -0
- data/lib/datadog/tracing/contrib/active_support/patcher.rb +27 -0
- data/lib/datadog/tracing/contrib/analytics.rb +33 -0
- data/lib/datadog/tracing/contrib/auto_instrument.rb +53 -0
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +53 -0
- data/lib/datadog/tracing/contrib/aws/ext.rb +50 -0
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +136 -0
- data/lib/datadog/tracing/contrib/aws/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +70 -0
- data/lib/datadog/tracing/contrib/aws/patcher.rb +61 -0
- data/lib/datadog/tracing/contrib/aws/service/base.rb +17 -0
- data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +22 -0
- data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +22 -0
- data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +32 -0
- data/lib/datadog/tracing/contrib/aws/service/s3.rb +22 -0
- data/lib/datadog/tracing/contrib/aws/service/sns.rb +30 -0
- data/lib/datadog/tracing/contrib/aws/service/sqs.rb +27 -0
- data/lib/datadog/tracing/contrib/aws/service/states.rb +40 -0
- data/lib/datadog/tracing/contrib/aws/services.rb +139 -0
- data/lib/datadog/tracing/contrib/cloudwise/propagation.rb +315 -0
- data/lib/datadog/tracing/contrib/component.rb +41 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +20 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +24 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +53 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +16 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +20 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +47 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +49 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
- data/lib/datadog/tracing/contrib/configurable.rb +102 -0
- data/lib/datadog/tracing/contrib/configuration/resolver.rb +128 -0
- data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +43 -0
- data/lib/datadog/tracing/contrib/configuration/settings.rb +43 -0
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +58 -0
- data/lib/datadog/tracing/contrib/dalli/ext.rb +41 -0
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +75 -0
- data/lib/datadog/tracing/contrib/dalli/integration.rb +52 -0
- data/lib/datadog/tracing/contrib/dalli/patcher.rb +28 -0
- data/lib/datadog/tracing/contrib/dalli/quantize.rb +26 -0
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +49 -0
- data/lib/datadog/tracing/contrib/delayed_job/ext.rb +29 -0
- data/lib/datadog/tracing/contrib/delayed_job/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +37 -0
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +108 -0
- data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +34 -0
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +61 -0
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +35 -0
- data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +172 -0
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +87 -0
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +56 -0
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +229 -0
- data/lib/datadog/tracing/contrib/ethon/ext.rb +33 -0
- data/lib/datadog/tracing/contrib/ethon/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +102 -0
- data/lib/datadog/tracing/contrib/ethon/patcher.rb +30 -0
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +82 -0
- data/lib/datadog/tracing/contrib/excon/ext.rb +31 -0
- data/lib/datadog/tracing/contrib/excon/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/excon/middleware.rb +201 -0
- data/lib/datadog/tracing/contrib/excon/patcher.rb +31 -0
- data/lib/datadog/tracing/contrib/ext.rb +70 -0
- data/lib/datadog/tracing/contrib/extensions.rb +255 -0
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +81 -0
- data/lib/datadog/tracing/contrib/faraday/connection.rb +22 -0
- data/lib/datadog/tracing/contrib/faraday/ext.rb +31 -0
- data/lib/datadog/tracing/contrib/faraday/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +128 -0
- data/lib/datadog/tracing/contrib/faraday/patcher.rb +56 -0
- data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +22 -0
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +59 -0
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +316 -0
- data/lib/datadog/tracing/contrib/grape/ext.rb +30 -0
- data/lib/datadog/tracing/contrib/grape/instrumentation.rb +37 -0
- data/lib/datadog/tracing/contrib/grape/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/grape/patcher.rb +33 -0
- data/lib/datadog/tracing/contrib/graphql/configuration/error_extension_env_parser.rb +21 -0
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +73 -0
- data/lib/datadog/tracing/contrib/graphql/ext.rb +26 -0
- data/lib/datadog/tracing/contrib/graphql/integration.rb +56 -0
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +58 -0
- data/lib/datadog/tracing/contrib/graphql/trace_patcher.rb +24 -0
- data/lib/datadog/tracing/contrib/graphql/tracing_patcher.rb +28 -0
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +297 -0
- data/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb +31 -0
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +58 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +123 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +96 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +107 -0
- data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +26 -0
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +49 -0
- data/lib/datadog/tracing/contrib/grpc/ext.rb +29 -0
- data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
- data/lib/datadog/tracing/contrib/grpc/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +53 -0
- data/lib/datadog/tracing/contrib/grpc/patcher.rb +34 -0
- data/lib/datadog/tracing/contrib/grpc.rb +45 -0
- data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +47 -0
- data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +23 -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 +42 -0
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +34 -0
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +77 -0
- data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +38 -0
- data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +48 -0
- data/lib/datadog/tracing/contrib/http/ext.rb +30 -0
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +152 -0
- data/lib/datadog/tracing/contrib/http/integration.rb +52 -0
- data/lib/datadog/tracing/contrib/http/patcher.rb +30 -0
- data/lib/datadog/tracing/contrib/http.rb +45 -0
- data/lib/datadog/tracing/contrib/http_annotation_helper.rb +17 -0
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +76 -0
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +31 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +132 -0
- data/lib/datadog/tracing/contrib/httpclient/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/httpclient/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +76 -0
- data/lib/datadog/tracing/contrib/httprb/ext.rb +30 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +146 -0
- data/lib/datadog/tracing/contrib/httprb/integration.rb +51 -0
- data/lib/datadog/tracing/contrib/httprb/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/integration.rb +78 -0
- data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +39 -0
- data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +19 -0
- data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +18 -0
- data/lib/datadog/tracing/contrib/kafka/event.rb +53 -0
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +42 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +49 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +47 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +47 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +37 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +37 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +37 -0
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +41 -0
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +44 -0
- data/lib/datadog/tracing/contrib/kafka/events.rb +48 -0
- data/lib/datadog/tracing/contrib/kafka/ext.rb +55 -0
- data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +66 -0
- data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +66 -0
- data/lib/datadog/tracing/contrib/kafka/integration.rb +47 -0
- data/lib/datadog/tracing/contrib/kafka/patcher.rb +43 -0
- data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +27 -0
- data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +48 -0
- data/lib/datadog/tracing/contrib/karafka/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/karafka/integration.rb +45 -0
- data/lib/datadog/tracing/contrib/karafka/monitor.rb +77 -0
- data/lib/datadog/tracing/contrib/karafka/patcher.rb +89 -0
- data/lib/datadog/tracing/contrib/karafka.rb +37 -0
- data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +24 -0
- data/lib/datadog/tracing/contrib/lograge/ext.rb +15 -0
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +31 -0
- data/lib/datadog/tracing/contrib/lograge/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +46 -0
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +64 -0
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +39 -0
- data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +47 -0
- data/lib/datadog/tracing/contrib/mongodb/integration.rb +51 -0
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +49 -0
- data/lib/datadog/tracing/contrib/mongodb/patcher.rb +34 -0
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +160 -0
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +69 -0
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +28 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +109 -0
- data/lib/datadog/tracing/contrib/mysql2/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/mysql2/patcher.rb +31 -0
- data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +71 -0
- data/lib/datadog/tracing/contrib/opensearch/ext.rb +48 -0
- data/lib/datadog/tracing/contrib/opensearch/integration.rb +46 -0
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +144 -0
- data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
- data/lib/datadog/tracing/contrib/patchable.rb +109 -0
- data/lib/datadog/tracing/contrib/patcher.rb +87 -0
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +69 -0
- data/lib/datadog/tracing/contrib/pg/ext.rb +35 -0
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +214 -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 +52 -0
- data/lib/datadog/tracing/contrib/presto/ext.rb +38 -0
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +138 -0
- data/lib/datadog/tracing/contrib/presto/integration.rb +46 -0
- data/lib/datadog/tracing/contrib/presto/patcher.rb +25 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +41 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +61 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +32 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +67 -0
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +55 -0
- data/lib/datadog/tracing/contrib/que/ext.rb +33 -0
- data/lib/datadog/tracing/contrib/que/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/que/patcher.rb +26 -0
- data/lib/datadog/tracing/contrib/que/tracer.rb +63 -0
- data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +47 -0
- data/lib/datadog/tracing/contrib/racecar/event.rb +81 -0
- data/lib/datadog/tracing/contrib/racecar/events/batch.rb +38 -0
- data/lib/datadog/tracing/contrib/racecar/events/consume.rb +35 -0
- data/lib/datadog/tracing/contrib/racecar/events/message.rb +38 -0
- data/lib/datadog/tracing/contrib/racecar/events.rb +36 -0
- data/lib/datadog/tracing/contrib/racecar/ext.rb +33 -0
- data/lib/datadog/tracing/contrib/racecar/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/racecar/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +59 -0
- data/lib/datadog/tracing/contrib/rack/ext.rb +30 -0
- data/lib/datadog/tracing/contrib/rack/header_collection.rb +50 -0
- data/lib/datadog/tracing/contrib/rack/header_tagging.rb +63 -0
- data/lib/datadog/tracing/contrib/rack/integration.rb +50 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +475 -0
- data/lib/datadog/tracing/contrib/rack/patcher.rb +119 -0
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +49 -0
- data/lib/datadog/tracing/contrib/rack/route_inference.rb +53 -0
- data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +58 -0
- data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +10 -0
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +76 -0
- data/lib/datadog/tracing/contrib/rails/ext.rb +33 -0
- data/lib/datadog/tracing/contrib/rails/framework.rb +148 -0
- data/lib/datadog/tracing/contrib/rails/integration.rb +52 -0
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +29 -0
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +46 -0
- data/lib/datadog/tracing/contrib/rails/patcher.rb +98 -0
- data/lib/datadog/tracing/contrib/rails/railtie.rb +19 -0
- data/lib/datadog/tracing/contrib/rails/runner.rb +117 -0
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +55 -0
- data/lib/datadog/tracing/contrib/rake/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +103 -0
- data/lib/datadog/tracing/contrib/rake/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/rake/patcher.rb +33 -0
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +49 -0
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +57 -0
- data/lib/datadog/tracing/contrib/redis/ext.rb +36 -0
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +53 -0
- data/lib/datadog/tracing/contrib/redis/integration.rb +80 -0
- data/lib/datadog/tracing/contrib/redis/patcher.rb +92 -0
- data/lib/datadog/tracing/contrib/redis/quantize.rb +80 -0
- data/lib/datadog/tracing/contrib/redis/tags.rb +72 -0
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +85 -0
- data/lib/datadog/tracing/contrib/redis/vendor/LICENSE +20 -0
- data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +160 -0
- data/lib/datadog/tracing/contrib/registerable.rb +50 -0
- data/lib/datadog/tracing/contrib/registry.rb +52 -0
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +42 -0
- data/lib/datadog/tracing/contrib/resque/ext.rb +22 -0
- data/lib/datadog/tracing/contrib/resque/integration.rb +48 -0
- data/lib/datadog/tracing/contrib/resque/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +106 -0
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +55 -0
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +29 -0
- data/lib/datadog/tracing/contrib/rest_client/integration.rb +46 -0
- data/lib/datadog/tracing/contrib/rest_client/patcher.rb +28 -0
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +137 -0
- data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +38 -0
- data/lib/datadog/tracing/contrib/roda/ext.rb +19 -0
- data/lib/datadog/tracing/contrib/roda/instrumentation.rb +78 -0
- data/lib/datadog/tracing/contrib/roda/integration.rb +45 -0
- data/lib/datadog/tracing/contrib/roda/patcher.rb +30 -0
- data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +24 -0
- data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +15 -0
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +35 -0
- data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +52 -0
- data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +29 -0
- data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/sequel/database.rb +62 -0
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +67 -0
- data/lib/datadog/tracing/contrib/sequel/ext.rb +23 -0
- data/lib/datadog/tracing/contrib/sequel/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/sequel/patcher.rb +37 -0
- data/lib/datadog/tracing/contrib/sequel/utils.rb +90 -0
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +43 -0
- data/lib/datadog/tracing/contrib/shoryuken/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/shoryuken/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +28 -0
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +65 -0
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +67 -0
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +47 -0
- data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +49 -0
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +45 -0
- data/lib/datadog/tracing/contrib/sidekiq/integration.rb +61 -0
- data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +90 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +61 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +36 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +34 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +57 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +34 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +91 -0
- data/lib/datadog/tracing/contrib/sidekiq/utils.rb +44 -0
- data/lib/datadog/tracing/contrib/sidekiq.rb +37 -0
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +46 -0
- data/lib/datadog/tracing/contrib/sinatra/env.rb +38 -0
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +31 -0
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +116 -0
- data/lib/datadog/tracing/contrib/sinatra/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/sinatra/patcher.rb +75 -0
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +90 -0
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +109 -0
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +43 -0
- data/lib/datadog/tracing/contrib/sneakers/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/sneakers/patcher.rb +27 -0
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +60 -0
- data/lib/datadog/tracing/contrib/span_attribute_schema.rb +97 -0
- data/lib/datadog/tracing/contrib/status_range_env_parser.rb +33 -0
- data/lib/datadog/tracing/contrib/status_range_matcher.rb +32 -0
- data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +37 -0
- data/lib/datadog/tracing/contrib/stripe/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/stripe/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/stripe/patcher.rb +28 -0
- data/lib/datadog/tracing/contrib/stripe/request.rb +68 -0
- data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +39 -0
- data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +28 -0
- data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +28 -0
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +104 -0
- data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +35 -0
- data/lib/datadog/tracing/contrib/support.rb +28 -0
- data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +63 -0
- data/lib/datadog/tracing/contrib/trilogy/ext.rb +27 -0
- data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +97 -0
- data/lib/datadog/tracing/contrib/trilogy/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/trilogy/patcher.rb +31 -0
- data/lib/datadog/tracing/contrib/utils/database.rb +31 -0
- data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +111 -0
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +179 -0
- data/lib/datadog/tracing/contrib.rb +82 -0
- data/lib/datadog/tracing/correlation.rb +113 -0
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +163 -0
- data/lib/datadog/tracing/diagnostics/ext.rb +36 -0
- data/lib/datadog/tracing/diagnostics/health.rb +40 -0
- data/lib/datadog/tracing/distributed/b3_multi.rb +73 -0
- data/lib/datadog/tracing/distributed/b3_single.rb +71 -0
- data/lib/datadog/tracing/distributed/baggage.rb +196 -0
- data/lib/datadog/tracing/distributed/datadog.rb +201 -0
- data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +82 -0
- data/lib/datadog/tracing/distributed/fetcher.rb +21 -0
- data/lib/datadog/tracing/distributed/helpers.rb +65 -0
- data/lib/datadog/tracing/distributed/none.rb +20 -0
- data/lib/datadog/tracing/distributed/propagation.rb +187 -0
- data/lib/datadog/tracing/distributed/propagation_policy.rb +42 -0
- data/lib/datadog/tracing/distributed/trace_context.rb +444 -0
- data/lib/datadog/tracing/event.rb +74 -0
- data/lib/datadog/tracing/flush.rb +96 -0
- data/lib/datadog/tracing/metadata/analytics.rb +26 -0
- data/lib/datadog/tracing/metadata/errors.rb +32 -0
- data/lib/datadog/tracing/metadata/ext.rb +213 -0
- data/lib/datadog/tracing/metadata/metastruct.rb +36 -0
- data/lib/datadog/tracing/metadata/metastruct_tagging.rb +42 -0
- data/lib/datadog/tracing/metadata/tagging.rb +131 -0
- data/lib/datadog/tracing/metadata.rb +22 -0
- data/lib/datadog/tracing/pipeline/span_filter.rb +48 -0
- data/lib/datadog/tracing/pipeline/span_processor.rb +41 -0
- data/lib/datadog/tracing/pipeline.rb +63 -0
- data/lib/datadog/tracing/remote.rb +85 -0
- data/lib/datadog/tracing/runtime/metrics.rb +17 -0
- data/lib/datadog/tracing/sampling/all_sampler.rb +24 -0
- data/lib/datadog/tracing/sampling/ext.rb +58 -0
- data/lib/datadog/tracing/sampling/matcher.rb +119 -0
- data/lib/datadog/tracing/sampling/priority_sampler.rb +160 -0
- data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +87 -0
- data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +63 -0
- data/lib/datadog/tracing/sampling/rate_sampler.rb +59 -0
- data/lib/datadog/tracing/sampling/rule.rb +86 -0
- data/lib/datadog/tracing/sampling/rule_sampler.rb +172 -0
- data/lib/datadog/tracing/sampling/sampler.rb +32 -0
- data/lib/datadog/tracing/sampling/span/ext.rb +25 -0
- data/lib/datadog/tracing/sampling/span/matcher.rb +61 -0
- data/lib/datadog/tracing/sampling/span/rule.rb +77 -0
- data/lib/datadog/tracing/sampling/span/rule_parser.rb +104 -0
- data/lib/datadog/tracing/sampling/span/sampler.rb +70 -0
- data/lib/datadog/tracing/span.rb +236 -0
- data/lib/datadog/tracing/span_event.rb +161 -0
- data/lib/datadog/tracing/span_link.rb +92 -0
- data/lib/datadog/tracing/span_operation.rb +561 -0
- data/lib/datadog/tracing/sync_writer.rb +71 -0
- data/lib/datadog/tracing/trace_digest.rb +190 -0
- data/lib/datadog/tracing/trace_operation.rb +556 -0
- data/lib/datadog/tracing/trace_segment.rb +227 -0
- data/lib/datadog/tracing/tracer.rb +644 -0
- data/lib/datadog/tracing/transport/http/api.rb +44 -0
- data/lib/datadog/tracing/transport/http/client.rb +59 -0
- data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
- data/lib/datadog/tracing/transport/http/traces.rb +155 -0
- data/lib/datadog/tracing/transport/http.rb +44 -0
- data/lib/datadog/tracing/transport/io/client.rb +90 -0
- data/lib/datadog/tracing/transport/io/response.rb +27 -0
- data/lib/datadog/tracing/transport/io/traces.rb +101 -0
- data/lib/datadog/tracing/transport/io.rb +30 -0
- data/lib/datadog/tracing/transport/serializable_trace.rb +155 -0
- data/lib/datadog/tracing/transport/statistics.rb +77 -0
- data/lib/datadog/tracing/transport/trace_formatter.rb +276 -0
- data/lib/datadog/tracing/transport/traces.rb +258 -0
- data/lib/datadog/tracing/utils.rb +99 -0
- data/lib/datadog/tracing/workers/trace_writer.rb +199 -0
- data/lib/datadog/tracing/workers.rb +126 -0
- data/lib/datadog/tracing/writer.rb +190 -0
- data/lib/datadog/tracing.rb +214 -0
- data/lib/datadog/version.rb +27 -0
- data/lib/datadog.rb +20 -0
- metadata +1074 -0
|
@@ -0,0 +1,1087 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'logger'
|
|
4
|
+
|
|
5
|
+
require_relative 'base'
|
|
6
|
+
require_relative 'ext'
|
|
7
|
+
require_relative '../environment/execution'
|
|
8
|
+
require_relative '../environment/ext'
|
|
9
|
+
require_relative '../runtime/ext'
|
|
10
|
+
require_relative '../telemetry/ext'
|
|
11
|
+
require_relative '../remote/ext'
|
|
12
|
+
require_relative '../../profiling/ext'
|
|
13
|
+
|
|
14
|
+
require_relative '../../tracing/configuration/settings'
|
|
15
|
+
|
|
16
|
+
module Datadog
|
|
17
|
+
module Core
|
|
18
|
+
module Configuration
|
|
19
|
+
# Global configuration settings for the Datadog library.
|
|
20
|
+
# @public_api
|
|
21
|
+
# standard:disable Metrics/BlockLength
|
|
22
|
+
class Settings
|
|
23
|
+
include Base
|
|
24
|
+
|
|
25
|
+
# @!visibility private
|
|
26
|
+
def initialize(*_)
|
|
27
|
+
super
|
|
28
|
+
|
|
29
|
+
# WORKAROUND: The values for services, version, and env can get set either directly OR as a side effect of
|
|
30
|
+
# accessing tags (reading or writing). This is of course really confusing and error-prone, e.g. in an app
|
|
31
|
+
# WITHOUT this workaround where you define `DD_TAGS=env:envenvtag,service:envservicetag,version:envversiontag`
|
|
32
|
+
# and do:
|
|
33
|
+
#
|
|
34
|
+
# puts Datadog.configuration.instance_exec { "#{service} #{env} #{version}" }
|
|
35
|
+
# Datadog.configuration.tags
|
|
36
|
+
# puts Datadog.configuration.instance_exec { "#{service} #{env} #{version}" }
|
|
37
|
+
#
|
|
38
|
+
# the output will be:
|
|
39
|
+
#
|
|
40
|
+
# [empty]
|
|
41
|
+
# envservicetag envenvtag envversiontag
|
|
42
|
+
#
|
|
43
|
+
# That is -- the proper values for service/env/version are only set AFTER something accidentally or not triggers
|
|
44
|
+
# the resolution of the tags.
|
|
45
|
+
# This is really confusing, error prone, etc, so calling tags here is a really hacky but effective way to
|
|
46
|
+
# avoid this. I could not think of a better way of fixing this issue without massive refactoring of tags parsing
|
|
47
|
+
# (so that the individual service/env/version get correctly set even from their tags values, not as a side
|
|
48
|
+
# effect). Sorry :(
|
|
49
|
+
tags
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# {https://docs.datadoghq.com/agent/ Datadog Agent} configuration.
|
|
53
|
+
# @public_api
|
|
54
|
+
settings :agent do
|
|
55
|
+
# Agent hostname or IP.
|
|
56
|
+
# @default `DD_AGENT_HOST` environment variable, otherwise `127.0.0.1`
|
|
57
|
+
# @return [String,nil]
|
|
58
|
+
option :host
|
|
59
|
+
|
|
60
|
+
# Agent APM TCP port.
|
|
61
|
+
# @see https://docs.datadoghq.com/getting_started/tracing/#datadog-apm
|
|
62
|
+
# @default `DD_TRACE_AGENT_PORT` environment variable, otherwise `8126`
|
|
63
|
+
# @return [String,nil]
|
|
64
|
+
option :port
|
|
65
|
+
|
|
66
|
+
# Agent APM SSL.
|
|
67
|
+
# @see https://docs.datadoghq.com/getting_started/tracing/#datadog-apm
|
|
68
|
+
# @default defined as part of `DD_TRACE_AGENT_URL` environment variable, otherwise `false`
|
|
69
|
+
# Only applies to http connections.
|
|
70
|
+
# @return [Boolean,nil]
|
|
71
|
+
option :use_ssl
|
|
72
|
+
|
|
73
|
+
# Agent APM Timeout.
|
|
74
|
+
# @see https://docs.datadoghq.com/getting_started/tracing/#datadog-apm
|
|
75
|
+
# @default `DD_TRACE_AGENT_TIMEOUT_SECONDS` environment variable, otherwise `30` for http, '1' for UDS
|
|
76
|
+
# @return [Integer,nil]
|
|
77
|
+
option :timeout_seconds
|
|
78
|
+
|
|
79
|
+
# Agent unix domain socket path.
|
|
80
|
+
# @default defined in `DD_TRACE_AGENT_URL` environment variable, otherwise '/var/run/datadog/apm.socket'
|
|
81
|
+
# Agent connects via HTTP by default, but will use UDS if this is set or if unix scheme defined in
|
|
82
|
+
# DD_TRACE_AGENT_URL.
|
|
83
|
+
# @return [String,nil]
|
|
84
|
+
option :uds_path
|
|
85
|
+
|
|
86
|
+
# TODO: add declarative statsd configuration. Currently only usable via an environment variable.
|
|
87
|
+
# Statsd configuration for agent access.
|
|
88
|
+
# @public_api
|
|
89
|
+
# settings :statsd do
|
|
90
|
+
# # Agent Statsd UDP port.
|
|
91
|
+
# # @configure_with {Datadog::Statsd}
|
|
92
|
+
# # @default `DD_AGENT_HOST` environment variable, otherwise `8125`
|
|
93
|
+
# # @return [String,nil]
|
|
94
|
+
# option :port
|
|
95
|
+
# end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Datadog API key.
|
|
99
|
+
#
|
|
100
|
+
# For internal use only.
|
|
101
|
+
#
|
|
102
|
+
# @default `DD_API_KEY` environment variable, otherwise `nil`
|
|
103
|
+
# @return [String,nil]
|
|
104
|
+
option :api_key do |o|
|
|
105
|
+
o.type :string, nilable: true
|
|
106
|
+
o.env Core::Environment::Ext::ENV_API_KEY
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Datadog diagnostic settings.
|
|
110
|
+
#
|
|
111
|
+
# Enabling these surfaces debug information that can be helpful to
|
|
112
|
+
# diagnose issues related to Datadog internals.
|
|
113
|
+
# @public_api
|
|
114
|
+
settings :diagnostics do
|
|
115
|
+
# Outputs all spans created by the host application to `Datadog.logger`.
|
|
116
|
+
#
|
|
117
|
+
# **This option is very verbose!** It's only recommended for non-production
|
|
118
|
+
# environments.
|
|
119
|
+
#
|
|
120
|
+
# This option is helpful when trying to understand what information the
|
|
121
|
+
# Datadog features are sending to the Agent or backend.
|
|
122
|
+
# @default `DD_TRACE_DEBUG` environment variable, otherwise `false`
|
|
123
|
+
# @return [Boolean]
|
|
124
|
+
option :debug do |o|
|
|
125
|
+
# Note: Alias (OTEL_LOG_LEVEL) defined in supported-configurations.json
|
|
126
|
+
o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_DEBUG_ENABLED
|
|
127
|
+
o.default false
|
|
128
|
+
o.type :bool
|
|
129
|
+
o.env_parser do |value|
|
|
130
|
+
if value
|
|
131
|
+
value = value.strip.downcase
|
|
132
|
+
# Debug is enabled when DD_TRACE_DEBUG is true or 1 OR
|
|
133
|
+
# when OTEL_LOG_LEVEL is set to debug
|
|
134
|
+
['true', '1', 'debug'].include?(value)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
o.after_set do |enabled|
|
|
138
|
+
# Enable rich debug print statements.
|
|
139
|
+
# We do not need to unnecessarily load 'pp' unless in debugging mode.
|
|
140
|
+
require 'pp' if enabled # standard:disable Lint/RedundantRequireStatement
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Tracer startup debug log statement configuration.
|
|
145
|
+
# @public_api
|
|
146
|
+
settings :startup_logs do
|
|
147
|
+
# Enable startup logs collection.
|
|
148
|
+
#
|
|
149
|
+
# If `nil`, defaults to logging startup logs when `datadog` detects that the application
|
|
150
|
+
# is *not* running in a development environment.
|
|
151
|
+
#
|
|
152
|
+
# @default `DD_TRACE_STARTUP_LOGS` environment variable, otherwise `nil`
|
|
153
|
+
# @return [Boolean, nil]
|
|
154
|
+
option :enabled do |o|
|
|
155
|
+
o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_STARTUP_LOGS_ENABLED
|
|
156
|
+
# Defaults to nil as we want to know when the default value is being used
|
|
157
|
+
o.type :bool, nilable: true
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# The `env` tag in Datadog. Use it to separate out your staging, development, and production environments.
|
|
163
|
+
# @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
|
|
164
|
+
# @default `DD_ENV` environment variable, otherwise `nil`
|
|
165
|
+
# @return [String,nil]
|
|
166
|
+
option :env do |o|
|
|
167
|
+
o.type :string, nilable: true
|
|
168
|
+
# NOTE: env also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
|
|
169
|
+
o.env Core::Environment::Ext::ENV_ENVIRONMENT
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Internal {Datadog::Statsd} metrics collection.
|
|
173
|
+
#
|
|
174
|
+
# @public_api
|
|
175
|
+
settings :health_metrics do
|
|
176
|
+
# Enable health metrics collection.
|
|
177
|
+
#
|
|
178
|
+
# @default `DD_HEALTH_METRICS_ENABLED` environment variable, otherwise `false`
|
|
179
|
+
# @return [Boolean]
|
|
180
|
+
option :enabled do |o|
|
|
181
|
+
o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_HEALTH_METRICS_ENABLED
|
|
182
|
+
o.default false
|
|
183
|
+
o.type :bool
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# {Datadog::Statsd} instance to collect health metrics.
|
|
187
|
+
#
|
|
188
|
+
# If `nil`, health metrics creates a new {Datadog::Statsd} client with default agent configuration.
|
|
189
|
+
#
|
|
190
|
+
# @default `nil`
|
|
191
|
+
# @return [Datadog::Statsd,nil] a custom {Datadog::Statsd} instance
|
|
192
|
+
# @return [nil] an instance with default agent configuration will be lazily created
|
|
193
|
+
option :statsd
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# Internal `Datadog.logger` configuration.
|
|
197
|
+
#
|
|
198
|
+
# This logger instance is only used internally by the gem.
|
|
199
|
+
# @public_api
|
|
200
|
+
settings :logger do
|
|
201
|
+
# The `Datadog.logger` object.
|
|
202
|
+
#
|
|
203
|
+
# Can be overwritten with a custom logger object that respects the
|
|
204
|
+
# [built-in Ruby Logger](https://ruby-doc.org/stdlib-3.0.1/libdoc/logger/rdoc/Logger.html)
|
|
205
|
+
# interface.
|
|
206
|
+
#
|
|
207
|
+
# @return Logger::Severity
|
|
208
|
+
option :instance do |o|
|
|
209
|
+
o.after_set { |value| set_option(:level, value.level) unless value.nil? }
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
# Log level for `Datadog.logger`.
|
|
213
|
+
# @see Logger::Severity
|
|
214
|
+
# @return Logger::Severity
|
|
215
|
+
# TODO: Add environment variable for this `DD_TRACE_LOG_LEVEL`
|
|
216
|
+
option :level, default: ::Logger::INFO
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Datadog Profiler-specific configurations.
|
|
220
|
+
#
|
|
221
|
+
# @see https://docs.datadoghq.com/tracing/profiler/
|
|
222
|
+
# @public_api
|
|
223
|
+
settings :profiling do
|
|
224
|
+
# Enable profiling.
|
|
225
|
+
#
|
|
226
|
+
# @default `DD_PROFILING_ENABLED` environment variable, otherwise `false`
|
|
227
|
+
# @return [Boolean]
|
|
228
|
+
option :enabled do |o|
|
|
229
|
+
o.env Profiling::Ext::ENV_ENABLED
|
|
230
|
+
o.default false
|
|
231
|
+
o.type :bool
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
# @public_api
|
|
235
|
+
settings :exporter do
|
|
236
|
+
option :transport
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Can be used to enable/disable collection of allocation profiles.
|
|
240
|
+
#
|
|
241
|
+
# This feature is disabled by default
|
|
242
|
+
#
|
|
243
|
+
# @warn Due to bugs in Ruby we only recommend enabling this feature in
|
|
244
|
+
# Ruby versions 2.x, 3.1.4+, 3.2.3+ and 3.3.0+
|
|
245
|
+
# (more details in {Datadog::Profiling::Component.enable_allocation_profiling?})
|
|
246
|
+
#
|
|
247
|
+
# @default `DD_PROFILING_ALLOCATION_ENABLED` environment variable as a boolean, otherwise `false`
|
|
248
|
+
option :allocation_enabled do |o|
|
|
249
|
+
o.type :bool
|
|
250
|
+
o.env 'DD_PROFILING_ALLOCATION_ENABLED'
|
|
251
|
+
o.default false
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# @public_api
|
|
255
|
+
settings :advanced do
|
|
256
|
+
# Controls the maximum number of frames for each thread sampled. Can be tuned to avoid omitted frames in the
|
|
257
|
+
# produced profiles. Increasing this may increase the overhead of profiling.
|
|
258
|
+
#
|
|
259
|
+
# @default `DD_PROFILING_MAX_FRAMES` environment variable, otherwise 400
|
|
260
|
+
option :max_frames do |o|
|
|
261
|
+
o.type :int
|
|
262
|
+
o.env Profiling::Ext::ENV_MAX_FRAMES
|
|
263
|
+
o.default 400
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
# @public_api
|
|
267
|
+
settings :endpoint do
|
|
268
|
+
settings :collection do
|
|
269
|
+
# When using profiling together with tracing, this controls if endpoint names
|
|
270
|
+
# are gathered and reported together with profiles.
|
|
271
|
+
#
|
|
272
|
+
# @default `DD_PROFILING_ENDPOINT_COLLECTION_ENABLED` environment variable, otherwise `true`
|
|
273
|
+
# @return [Boolean]
|
|
274
|
+
option :enabled do |o|
|
|
275
|
+
o.env Profiling::Ext::ENV_ENDPOINT_COLLECTION_ENABLED
|
|
276
|
+
o.default true
|
|
277
|
+
o.type :bool
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
# Can be used to disable the gathering of names and versions of gems in use by the service, used to power
|
|
283
|
+
# grouping and categorization of stack traces.
|
|
284
|
+
option :code_provenance_enabled do |o|
|
|
285
|
+
o.type :bool
|
|
286
|
+
o.default true
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
# Can be used to enable/disable garbage collection profiling.
|
|
290
|
+
#
|
|
291
|
+
# @warn To avoid https://bugs.ruby-lang.org/issues/18464 even when enabled, GC profiling is only started
|
|
292
|
+
# for Ruby versions 2.x, 3.1.4+, 3.2.3+ and 3.3.0+
|
|
293
|
+
# (more details in {Datadog::Profiling::Component.enable_gc_profiling?})
|
|
294
|
+
#
|
|
295
|
+
# @warn Due to a VM bug in the Ractor implementation (https://bugs.ruby-lang.org/issues/19112) this feature
|
|
296
|
+
# stops working when Ractors get garbage collected.
|
|
297
|
+
#
|
|
298
|
+
# @default `DD_PROFILING_GC_ENABLED` environment variable, otherwise `true`
|
|
299
|
+
option :gc_enabled do |o|
|
|
300
|
+
o.type :bool
|
|
301
|
+
o.env 'DD_PROFILING_GC_ENABLED'
|
|
302
|
+
o.default true
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
# Can be used to enable/disable the Datadog::Profiling.allocation_count feature.
|
|
306
|
+
#
|
|
307
|
+
# Requires allocation profiling to be enabled.
|
|
308
|
+
#
|
|
309
|
+
# @default false
|
|
310
|
+
option :allocation_counting_enabled do |o|
|
|
311
|
+
o.type :bool
|
|
312
|
+
o.default false
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
# Can be used to enable/disable the collection of heap profiles.
|
|
316
|
+
#
|
|
317
|
+
# This feature is in preview and disabled by default. Requires Ruby 3.1+.
|
|
318
|
+
#
|
|
319
|
+
# @warn To enable heap profiling you are required to also enable allocation profiling.
|
|
320
|
+
#
|
|
321
|
+
# @default `DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED` environment variable as a boolean, otherwise `false`
|
|
322
|
+
option :experimental_heap_enabled do |o|
|
|
323
|
+
o.type :bool
|
|
324
|
+
o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_ENABLED'
|
|
325
|
+
o.default false
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
# Can be used to enable/disable the collection of heap size profiles.
|
|
329
|
+
#
|
|
330
|
+
# This feature is in preview and by default is enabled whenever heap profiling is enabled.
|
|
331
|
+
#
|
|
332
|
+
# @warn Heap size profiling depends on allocation and heap profiling, so they must be enabled as well.
|
|
333
|
+
#
|
|
334
|
+
# @default `DD_PROFILING_EXPERIMENTAL_HEAP_SIZE_ENABLED` environment variable as a boolean, otherwise it
|
|
335
|
+
# follows the value of `experimental_heap_enabled`.
|
|
336
|
+
option :experimental_heap_size_enabled do |o|
|
|
337
|
+
o.type :bool
|
|
338
|
+
o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_SIZE_ENABLED'
|
|
339
|
+
o.default true # This gets ANDed with experimental_heap_enabled in the profiler component.
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
# Can be used to configure the heap sampling rate: a heap sample will be collected for every x allocation
|
|
343
|
+
# samples.
|
|
344
|
+
#
|
|
345
|
+
# The higher the value, the less accuracy in heap tracking but the smaller the overhead.
|
|
346
|
+
#
|
|
347
|
+
# If you needed to tweak this, please tell us why on <https://github.com/DataDog/dd-trace-rb/issues/new>,
|
|
348
|
+
# so we can fix it!
|
|
349
|
+
#
|
|
350
|
+
# The effective heap sampling rate in terms of allocations (not allocation samples) can be calculated via
|
|
351
|
+
# effective_heap_sample_rate = allocation_sample_rate * heap_sample_rate.
|
|
352
|
+
#
|
|
353
|
+
# @default `DD_PROFILING_EXPERIMENTAL_HEAP_SAMPLE_RATE` environment variable, otherwise `1`.
|
|
354
|
+
option :experimental_heap_sample_rate do |o|
|
|
355
|
+
o.type :int
|
|
356
|
+
o.env 'DD_PROFILING_EXPERIMENTAL_HEAP_SAMPLE_RATE'
|
|
357
|
+
o.default 1
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
# Can be used to disable checking which version of `libmysqlclient` is being used by the `mysql2` gem.
|
|
361
|
+
#
|
|
362
|
+
# This setting is only used when the `mysql2` gem is installed.
|
|
363
|
+
#
|
|
364
|
+
# @default `DD_PROFILING_SKIP_MYSQL2_CHECK` environment variable, otherwise `false`
|
|
365
|
+
option :skip_mysql2_check do |o|
|
|
366
|
+
o.type :bool
|
|
367
|
+
o.env 'DD_PROFILING_SKIP_MYSQL2_CHECK'
|
|
368
|
+
o.default false
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
# Controls data collection for the timeline feature.
|
|
372
|
+
#
|
|
373
|
+
# If you needed to disable this, please tell us why on <https://github.com/DataDog/dd-trace-rb/issues/new>,
|
|
374
|
+
# so we can fix it!
|
|
375
|
+
#
|
|
376
|
+
# @default `DD_PROFILING_TIMELINE_ENABLED` environment variable as a boolean, otherwise `true`
|
|
377
|
+
option :timeline_enabled do |o|
|
|
378
|
+
o.type :bool
|
|
379
|
+
o.env 'DD_PROFILING_TIMELINE_ENABLED'
|
|
380
|
+
o.default true
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
# The profiler gathers data by sending `SIGPROF` unix signals to Ruby application threads.
|
|
384
|
+
#
|
|
385
|
+
# Sending `SIGPROF` is a common profiling approach, and may cause system calls from native
|
|
386
|
+
# extensions/libraries to be interrupted with a system
|
|
387
|
+
# [EINTR error code.](https://man7.org/linux/man-pages/man7/signal.7.html#:~:text=Interruption%20of%20system%20calls%20and%20library%20functions%20by%20signal%20handlers)
|
|
388
|
+
# Rarely, native extensions or libraries called by them may have missing or incorrect error handling for the
|
|
389
|
+
# `EINTR` error code.
|
|
390
|
+
#
|
|
391
|
+
# The "no signals" workaround, when enabled, enables an alternative mode for the profiler where it does not
|
|
392
|
+
# send `SIGPROF` unix signals. The downside of this approach is that the profiler data will have lower
|
|
393
|
+
# quality.
|
|
394
|
+
#
|
|
395
|
+
# This workaround is automatically enabled when gems that are known to have issues handling
|
|
396
|
+
# `EINTR` error codes are detected. If you suspect you may be seeing an issue due to the profiler's use of
|
|
397
|
+
# signals, you can try manually enabling this mode as a fallback.
|
|
398
|
+
# Please also report these issues to us on <https://github.com/DataDog/dd-trace-rb/issues/new>, so we can
|
|
399
|
+
# work with the gem authors to fix them!
|
|
400
|
+
#
|
|
401
|
+
# @default `DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED` environment variable as a boolean, otherwise `:auto`
|
|
402
|
+
option :no_signals_workaround_enabled do |o|
|
|
403
|
+
o.env 'DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED'
|
|
404
|
+
o.default :auto
|
|
405
|
+
o.env_parser do |value|
|
|
406
|
+
if value
|
|
407
|
+
value = value.strip.downcase
|
|
408
|
+
['true', '1'].include?(value)
|
|
409
|
+
end
|
|
410
|
+
end
|
|
411
|
+
end
|
|
412
|
+
|
|
413
|
+
# The profiler gathers data by sending `SIGPROF` unix signals to Ruby application threads.
|
|
414
|
+
#
|
|
415
|
+
# We've discovered that this can trigger a bug in a number of Ruby APIs in the `Dir` class, as
|
|
416
|
+
# described in https://bugs.ruby-lang.org/issues/20586 .
|
|
417
|
+
# This was fixed for Ruby 3.4+, and this setting is a no-op for those versions.
|
|
418
|
+
#
|
|
419
|
+
# @default `DD_PROFILING_DIR_INTERRUPTION_WORKAROUND_ENABLED` environment variable as a boolean,
|
|
420
|
+
# otherwise `true`
|
|
421
|
+
option :dir_interruption_workaround_enabled do |o|
|
|
422
|
+
o.env 'DD_PROFILING_DIR_INTERRUPTION_WORKAROUND_ENABLED'
|
|
423
|
+
o.type :bool
|
|
424
|
+
o.default true
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
# Configures how much wall-time overhead the profiler targets. The profiler will dynamically adjust the
|
|
428
|
+
# interval between samples it takes so as to try and maintain the property that it spends no longer than
|
|
429
|
+
# this amount of wall-clock time profiling. For example, with the default value of 2%, the profiler will
|
|
430
|
+
# try and cause no more than 1.2 seconds per minute of overhead. Decreasing this value will reduce the
|
|
431
|
+
# accuracy of the data collected. Increasing will impact the application.
|
|
432
|
+
#
|
|
433
|
+
# We do not recommend tweaking this value.
|
|
434
|
+
#
|
|
435
|
+
# This value should be a percentage i.e. a number between 0 and 100, not 0 and 1.
|
|
436
|
+
#
|
|
437
|
+
# @default `DD_PROFILING_OVERHEAD_TARGET_PERCENTAGE` as a float, otherwise 2.0
|
|
438
|
+
option :overhead_target_percentage do |o|
|
|
439
|
+
o.type :float
|
|
440
|
+
o.env 'DD_PROFILING_OVERHEAD_TARGET_PERCENTAGE'
|
|
441
|
+
o.default 2.0
|
|
442
|
+
end
|
|
443
|
+
|
|
444
|
+
# Controls how often the profiler reports data, in seconds. Cannot be lower than 60 seconds.
|
|
445
|
+
#
|
|
446
|
+
# We do not recommend tweaking this value.
|
|
447
|
+
#
|
|
448
|
+
# @default `DD_PROFILING_UPLOAD_PERIOD` environment variable, otherwise 60
|
|
449
|
+
option :upload_period_seconds do |o|
|
|
450
|
+
o.type :int
|
|
451
|
+
o.env 'DD_PROFILING_UPLOAD_PERIOD'
|
|
452
|
+
o.default 60
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
# DEV-3.0: Remove `experimental_crash_tracking_enabled` option
|
|
456
|
+
option :experimental_crash_tracking_enabled do |o|
|
|
457
|
+
o.after_set do |_, _, precedence|
|
|
458
|
+
unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
|
|
459
|
+
Core.log_deprecation(key: :experimental_crash_tracking_enabled) do
|
|
460
|
+
'The profiling.advanced.experimental_crash_tracking_enabled setting has been deprecated for removal ' \
|
|
461
|
+
'and no longer does anything. Please remove it from your Datadog.configure block.'
|
|
462
|
+
end
|
|
463
|
+
end
|
|
464
|
+
end
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
# @deprecated Use {:gvl_enabled} instead.
|
|
468
|
+
option :preview_gvl_enabled do |o|
|
|
469
|
+
o.type :bool
|
|
470
|
+
o.default false
|
|
471
|
+
o.after_set do |_, _, precedence|
|
|
472
|
+
unless precedence == Datadog::Core::Configuration::Option::Precedence::DEFAULT
|
|
473
|
+
Datadog.logger.warn(
|
|
474
|
+
'The profiling.advanced.preview_gvl_enabled setting has been deprecated for removal and ' \
|
|
475
|
+
'no longer does anything. Please remove it from your Datadog.configure block. ' \
|
|
476
|
+
'GVL profiling is now controlled by the profiling.advanced.gvl_enabled setting instead.'
|
|
477
|
+
)
|
|
478
|
+
end
|
|
479
|
+
end
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
# Controls GVL profiling. This will show when threads are waiting for GVL in the timeline view.
|
|
483
|
+
#
|
|
484
|
+
# This feature requires Ruby 3.2+.
|
|
485
|
+
#
|
|
486
|
+
# @default `DD_PROFILING_GVL_ENABLED` environment variable as a boolean, otherwise `true`
|
|
487
|
+
option :gvl_enabled do |o|
|
|
488
|
+
o.type :bool
|
|
489
|
+
# Note: Deprecated alias (DD_PROFILING_PREVIEW_GVL_ENABLED) defined in supported-configurations.json
|
|
490
|
+
o.env 'DD_PROFILING_GVL_ENABLED'
|
|
491
|
+
o.default true
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
# Controls the smallest time period the profiler will report a thread waiting for the GVL.
|
|
495
|
+
#
|
|
496
|
+
# The default value was set to minimize overhead. Periods smaller than the set value will not be reported (e.g.
|
|
497
|
+
# the thread will be reported as whatever it was doing before it waited for the GVL).
|
|
498
|
+
#
|
|
499
|
+
# We do not recommend setting this to less than 1ms. Tweaking this value can increase application latency and
|
|
500
|
+
# memory use.
|
|
501
|
+
#
|
|
502
|
+
# @default 10_000_000 (10ms)
|
|
503
|
+
option :waiting_for_gvl_threshold_ns do |o|
|
|
504
|
+
o.type :int
|
|
505
|
+
o.default 10_000_000
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
# Controls if the profiler should attempt to read context from the otel library
|
|
509
|
+
#
|
|
510
|
+
# @default false
|
|
511
|
+
option :preview_otel_context_enabled do |o|
|
|
512
|
+
o.env 'DD_PROFILING_PREVIEW_OTEL_CONTEXT_ENABLED'
|
|
513
|
+
o.default false
|
|
514
|
+
o.env_parser do |value|
|
|
515
|
+
if value
|
|
516
|
+
value = value.strip.downcase
|
|
517
|
+
if ['only', 'both'].include?(value)
|
|
518
|
+
value
|
|
519
|
+
elsif ['true', '1'].include?(value)
|
|
520
|
+
'both'
|
|
521
|
+
else
|
|
522
|
+
'false'
|
|
523
|
+
end
|
|
524
|
+
end
|
|
525
|
+
end
|
|
526
|
+
o.setter do |value|
|
|
527
|
+
if value == true
|
|
528
|
+
:both
|
|
529
|
+
elsif ['only', 'both', :only, :both].include?(value)
|
|
530
|
+
value.to_sym
|
|
531
|
+
else
|
|
532
|
+
false
|
|
533
|
+
end
|
|
534
|
+
end
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
# Controls if the heap profiler should attempt to clean young objects after GC, rather than just at
|
|
538
|
+
# serialization time. This lowers memory usage and high percentile latency.
|
|
539
|
+
#
|
|
540
|
+
# Only has effect when used together with `gc_enabled: true` and `experimental_heap_enabled: true`.
|
|
541
|
+
#
|
|
542
|
+
# @default true
|
|
543
|
+
option :heap_clean_after_gc_enabled do |o|
|
|
544
|
+
o.type :bool
|
|
545
|
+
o.env 'DD_PROFILING_HEAP_CLEAN_AFTER_GC_ENABLED'
|
|
546
|
+
o.default true
|
|
547
|
+
end
|
|
548
|
+
|
|
549
|
+
# Controls if the profiler should use native filenames for frames in stack traces for functions implemented using
|
|
550
|
+
# native code. Setting to `false` will make the profiler fall back to default Ruby stack trace behavior (only show .rb files).
|
|
551
|
+
#
|
|
552
|
+
# @default true
|
|
553
|
+
option :native_filenames_enabled do |o|
|
|
554
|
+
o.type :bool
|
|
555
|
+
o.env 'DD_PROFILING_NATIVE_FILENAMES_ENABLED'
|
|
556
|
+
o.default true
|
|
557
|
+
end
|
|
558
|
+
|
|
559
|
+
# Controls if the profiler should sample directly from the signal handler.
|
|
560
|
+
# Sampling directly from the signal handler improves accuracy of the data collected.
|
|
561
|
+
#
|
|
562
|
+
# We recommend using this setting with Ruby 3.2.5+ / Ruby 3.3.4+ and above
|
|
563
|
+
# as they include additional safety measures added in https://github.com/ruby/ruby/pull/11036.
|
|
564
|
+
# We have not validated it thoroughly with earlier versions, but in practice it should work on Ruby 3.0+
|
|
565
|
+
# (the key change was https://github.com/ruby/ruby/pull/3296).
|
|
566
|
+
#
|
|
567
|
+
# Enabling this on Ruby 2 is not recommended as it may cause VM crashes and/or incorrect data.
|
|
568
|
+
#
|
|
569
|
+
# @default true on Ruby 3.2.5+ / Ruby 3.3.4+, false on older Rubies
|
|
570
|
+
option :sighandler_sampling_enabled do |o|
|
|
571
|
+
o.type :bool
|
|
572
|
+
o.env 'DD_PROFILING_SIGHANDLER_SAMPLING_ENABLED'
|
|
573
|
+
o.default do
|
|
574
|
+
Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.2.5') &&
|
|
575
|
+
!(RUBY_VERSION.start_with?('3.3.') && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.3.4'))
|
|
576
|
+
end
|
|
577
|
+
end
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
# @public_api
|
|
581
|
+
settings :upload do
|
|
582
|
+
# Network timeout for reporting profiling data to Datadog.
|
|
583
|
+
#
|
|
584
|
+
# @default `DD_PROFILING_UPLOAD_TIMEOUT` environment variable, otherwise `30.0`
|
|
585
|
+
option :timeout_seconds do |o|
|
|
586
|
+
o.type :float
|
|
587
|
+
o.env Profiling::Ext::ENV_UPLOAD_TIMEOUT
|
|
588
|
+
o.default 30.0
|
|
589
|
+
end
|
|
590
|
+
end
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
# [Runtime Metrics](https://docs.datadoghq.com/tracing/runtime_metrics/)
|
|
594
|
+
# are StatsD metrics collected by the tracer to gain additional insights into an application's performance.
|
|
595
|
+
# @public_api
|
|
596
|
+
settings :runtime_metrics do
|
|
597
|
+
# Enable runtime metrics.
|
|
598
|
+
# @default `DD_RUNTIME_METRICS_ENABLED` environment variable, otherwise `false`
|
|
599
|
+
# @return [Boolean]
|
|
600
|
+
option :enabled do |o|
|
|
601
|
+
o.env Core::Runtime::Ext::Metrics::ENV_ENABLED
|
|
602
|
+
o.default false
|
|
603
|
+
o.type :bool
|
|
604
|
+
end
|
|
605
|
+
|
|
606
|
+
option :experimental_runtime_id_enabled do |o|
|
|
607
|
+
o.type :bool
|
|
608
|
+
# Note: Alias (DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED) defined in supported-configurations.json
|
|
609
|
+
o.env 'DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED'
|
|
610
|
+
o.default false
|
|
611
|
+
end
|
|
612
|
+
|
|
613
|
+
option :opts, default: {}, type: :hash
|
|
614
|
+
option :statsd
|
|
615
|
+
end
|
|
616
|
+
|
|
617
|
+
# The `service` tag in Datadog. Use it to group related traces into a service.
|
|
618
|
+
# @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
|
|
619
|
+
# @default `DD_SERVICE` environment variable, otherwise the program name (e.g. `'ruby'`, `'rails'`, `'pry'`)
|
|
620
|
+
# @return [String]
|
|
621
|
+
option :service do |o|
|
|
622
|
+
o.type :string, nilable: true
|
|
623
|
+
|
|
624
|
+
# NOTE: service also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
|
|
625
|
+
# Note: Alias (OTEL_SERVICE_NAME) defined in supported-configurations.json
|
|
626
|
+
o.env Core::Environment::Ext::ENV_SERVICE
|
|
627
|
+
o.default Core::Environment::Ext::FALLBACK_SERVICE_NAME
|
|
628
|
+
|
|
629
|
+
# There's a few cases where we don't want to use the fallback service name, so this helper allows us to get a
|
|
630
|
+
# nil instead so that one can do
|
|
631
|
+
# nice_service_name = Datadog.configuration.service_without_fallback || nice_service_name_default
|
|
632
|
+
o.helper(:service_without_fallback) do
|
|
633
|
+
service_name = service
|
|
634
|
+
service_name unless service_name.equal?(Core::Environment::Ext::FALLBACK_SERVICE_NAME)
|
|
635
|
+
end
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
# The Datadog site host to send data to.
|
|
639
|
+
# By default, data is sent to the Datadog US site: `app.datadoghq.com`.
|
|
640
|
+
#
|
|
641
|
+
# If your organization is on another site, you must update this value to the new site.
|
|
642
|
+
#
|
|
643
|
+
# For internal use only.
|
|
644
|
+
#
|
|
645
|
+
# @see https://docs.datadoghq.com/agent/troubleshooting/site/
|
|
646
|
+
# @default `DD_SITE` environment variable, otherwise `nil` which sends data to `app.datadoghq.com`
|
|
647
|
+
# @return [String,nil]
|
|
648
|
+
option :site do |o|
|
|
649
|
+
o.type :string, nilable: true
|
|
650
|
+
o.env Core::Environment::Ext::ENV_SITE
|
|
651
|
+
end
|
|
652
|
+
|
|
653
|
+
# Default tags
|
|
654
|
+
#
|
|
655
|
+
# These tags are used by all Datadog products, when applicable.
|
|
656
|
+
# e.g. trace spans, profiles, etc.
|
|
657
|
+
# @default `DD_TAGS` environment variable (in the format `'tag1:value1,tag2:value2'`), otherwise `{}`
|
|
658
|
+
# @return [Hash<String,String>]
|
|
659
|
+
option :tags do |o|
|
|
660
|
+
o.type :hash, nilable: true
|
|
661
|
+
# Note: Alias (OTEL_RESOURCE_ATTRIBUTES) defined in supported-configurations.json
|
|
662
|
+
o.env Core::Environment::Ext::ENV_TAGS
|
|
663
|
+
o.env_parser do |env_value|
|
|
664
|
+
# Parses a string containing key-value pairs and returns a hash.
|
|
665
|
+
# Key-value pairs are delimited by ':' OR `=`, and pairs are separated by whitespace, comma, OR BOTH.
|
|
666
|
+
result = {}
|
|
667
|
+
unless env_value.nil? || env_value.empty?
|
|
668
|
+
# falling back to comma as separator
|
|
669
|
+
sep = env_value.include?(',') ? ',' : ' '
|
|
670
|
+
# split by separator
|
|
671
|
+
env_value.split(sep).each do |tag|
|
|
672
|
+
tag.strip!
|
|
673
|
+
next if tag.empty?
|
|
674
|
+
|
|
675
|
+
# tag by : or = (for OpenTelemetry)
|
|
676
|
+
key, val = tag.split(/[:=]/, 2).map(&:strip)
|
|
677
|
+
val ||= ''
|
|
678
|
+
# maps OpenTelemetry semantic attributes to Datadog tags
|
|
679
|
+
key = case key.downcase
|
|
680
|
+
when 'deployment.environment' then 'env'
|
|
681
|
+
when 'service.version' then 'version'
|
|
682
|
+
when 'service.name' then 'service'
|
|
683
|
+
else key
|
|
684
|
+
end
|
|
685
|
+
result[key] = val unless key.empty?
|
|
686
|
+
end
|
|
687
|
+
end
|
|
688
|
+
result
|
|
689
|
+
end
|
|
690
|
+
o.setter do |new_value, old_value|
|
|
691
|
+
raw_tags = new_value || {}
|
|
692
|
+
|
|
693
|
+
env_value = env
|
|
694
|
+
version_value = version
|
|
695
|
+
service_name = service_without_fallback
|
|
696
|
+
|
|
697
|
+
# Override tags if defined
|
|
698
|
+
raw_tags[Core::Environment::Ext::TAG_ENV] = env_value unless env_value.nil?
|
|
699
|
+
raw_tags[Core::Environment::Ext::TAG_VERSION] = version_value unless version_value.nil?
|
|
700
|
+
|
|
701
|
+
# Coerce keys to strings
|
|
702
|
+
string_tags = raw_tags.collect { |k, v| [k.to_s, v] }.to_h
|
|
703
|
+
|
|
704
|
+
# Cross-populate tag values with other settings
|
|
705
|
+
if env_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_ENV)
|
|
706
|
+
self.env = string_tags[Core::Environment::Ext::TAG_ENV]
|
|
707
|
+
end
|
|
708
|
+
|
|
709
|
+
if version_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_VERSION)
|
|
710
|
+
self.version = string_tags[Core::Environment::Ext::TAG_VERSION]
|
|
711
|
+
end
|
|
712
|
+
|
|
713
|
+
if service_name.nil? && string_tags.key?(Core::Environment::Ext::TAG_SERVICE)
|
|
714
|
+
self.service = string_tags[Core::Environment::Ext::TAG_SERVICE]
|
|
715
|
+
end
|
|
716
|
+
|
|
717
|
+
# Merge with previous tags
|
|
718
|
+
(old_value || {}).merge(string_tags)
|
|
719
|
+
end
|
|
720
|
+
end
|
|
721
|
+
|
|
722
|
+
# The time provider used by Datadog. It must respect the interface of [Time](https://ruby-doc.org/core-3.0.1/Time.html).
|
|
723
|
+
#
|
|
724
|
+
# When testing, it can be helpful to use a different time provider.
|
|
725
|
+
#
|
|
726
|
+
# For [Timecop](https://rubygems.org/gems/timecop), for example, `->{ Time.now_without_mock_time }`
|
|
727
|
+
# allows Datadog features to use the real wall time when time is frozen.
|
|
728
|
+
#
|
|
729
|
+
# @default `->{ Time.now }`
|
|
730
|
+
# @return [Proc<Time>]
|
|
731
|
+
option :time_now_provider do |o|
|
|
732
|
+
o.default_proc { ::Time.now }
|
|
733
|
+
o.type :proc
|
|
734
|
+
|
|
735
|
+
o.after_set do |time_provider|
|
|
736
|
+
Core::Utils::Time.now_provider = time_provider
|
|
737
|
+
end
|
|
738
|
+
|
|
739
|
+
o.resetter do |_value|
|
|
740
|
+
# TODO: Resetter needs access to the default value
|
|
741
|
+
# TODO: to help reduce duplication.
|
|
742
|
+
-> { ::Time.now }.tap do |default|
|
|
743
|
+
Core::Utils::Time.now_provider = default
|
|
744
|
+
end
|
|
745
|
+
end
|
|
746
|
+
end
|
|
747
|
+
|
|
748
|
+
# The monotonic clock time provider used by Datadog. This option is internal and is used by `datadog-ci`
|
|
749
|
+
# gem to avoid traces' durations being skewed by timecop.
|
|
750
|
+
#
|
|
751
|
+
# It must respect the interface of [Datadog::Core::Utils::Time#get_time] method.
|
|
752
|
+
#
|
|
753
|
+
# For [Timecop](https://rubygems.org/gems/timecop), for example,
|
|
754
|
+
# `->(unit = :float_second) { ::Process.clock_gettime_without_mock(::Process::CLOCK_MONOTONIC, unit) }`
|
|
755
|
+
# allows Datadog features to use the real monotonic time when time is frozen with
|
|
756
|
+
# `Timecop.mock_process_clock = true`.
|
|
757
|
+
#
|
|
758
|
+
# @default `->(unit = :float_second) { ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, unit)}`
|
|
759
|
+
# @return [Proc<Numeric>]
|
|
760
|
+
option :get_time_provider do |o|
|
|
761
|
+
o.default_proc { |unit = :float_second| ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, unit) }
|
|
762
|
+
o.type :proc
|
|
763
|
+
|
|
764
|
+
o.after_set do |get_time_provider|
|
|
765
|
+
Core::Utils::Time.get_time_provider = get_time_provider
|
|
766
|
+
end
|
|
767
|
+
|
|
768
|
+
o.resetter do |_value|
|
|
769
|
+
->(unit = :float_second) { ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, unit) }.tap do |default|
|
|
770
|
+
Core::Utils::Time.get_time_provider = default
|
|
771
|
+
end
|
|
772
|
+
end
|
|
773
|
+
end
|
|
774
|
+
|
|
775
|
+
# The `version` tag in Datadog. Use it to enable [Deployment Tracking](https://docs.datadoghq.com/tracing/deployment_tracking/).
|
|
776
|
+
# @see https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging
|
|
777
|
+
# @default `DD_VERSION` environment variable, otherwise `nils`
|
|
778
|
+
# @return [String,nil]
|
|
779
|
+
option :version do |o|
|
|
780
|
+
# NOTE: version also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
|
|
781
|
+
o.type :string, nilable: true
|
|
782
|
+
o.env Core::Environment::Ext::ENV_VERSION
|
|
783
|
+
end
|
|
784
|
+
|
|
785
|
+
# Client-side telemetry configuration
|
|
786
|
+
# @public_api
|
|
787
|
+
settings :telemetry do
|
|
788
|
+
# Whether the bundled Ruby gems as reported through telemetry.
|
|
789
|
+
#
|
|
790
|
+
# @default `DD_TELEMETRY_DEPENDENCY_COLLECTION_ENABLED` environment variable, otherwise `true`.
|
|
791
|
+
# @return [Boolean]
|
|
792
|
+
option :dependency_collection do |o|
|
|
793
|
+
o.type :bool
|
|
794
|
+
o.env Core::Telemetry::Ext::ENV_DEPENDENCY_COLLECTION
|
|
795
|
+
o.default true
|
|
796
|
+
end
|
|
797
|
+
|
|
798
|
+
# Enable telemetry collection. This allows telemetry events to be emitted to the telemetry API.
|
|
799
|
+
#
|
|
800
|
+
# @default `DD_INSTRUMENTATION_TELEMETRY_ENABLED` environment variable, otherwise `true`.
|
|
801
|
+
# Can be disabled as documented [here](https://docs.datadoghq.com/tracing/configure_data_security/#telemetry-collection).
|
|
802
|
+
# By default, telemetry is disabled in development environments.
|
|
803
|
+
# @return [Boolean]
|
|
804
|
+
option :enabled do |o|
|
|
805
|
+
o.env Core::Telemetry::Ext::ENV_ENABLED
|
|
806
|
+
o.default do
|
|
807
|
+
if Datadog::Core::Environment::Execution.development?
|
|
808
|
+
Datadog.logger.debug do
|
|
809
|
+
'Development environment detected, disabling Telemetry. ' \
|
|
810
|
+
'You can enable it with DD_INSTRUMENTATION_TELEMETRY_ENABLED=true.'
|
|
811
|
+
end
|
|
812
|
+
false
|
|
813
|
+
else
|
|
814
|
+
false #使用cloudwise 心跳
|
|
815
|
+
end
|
|
816
|
+
end
|
|
817
|
+
o.type :bool
|
|
818
|
+
end
|
|
819
|
+
|
|
820
|
+
# Enable agentless mode for telemetry: submit telemetry events directly to the intake without Datadog Agent.
|
|
821
|
+
#
|
|
822
|
+
# @return [Boolean]
|
|
823
|
+
# @!visibility private
|
|
824
|
+
option :agentless_enabled do |o|
|
|
825
|
+
o.type :bool
|
|
826
|
+
o.default false
|
|
827
|
+
end
|
|
828
|
+
|
|
829
|
+
# Overrides agentless telemetry URL. To be used internally for testing purposes only.
|
|
830
|
+
#
|
|
831
|
+
# @return [String]
|
|
832
|
+
# @!visibility private
|
|
833
|
+
option :agentless_url_override do |o|
|
|
834
|
+
o.type :string, nilable: true
|
|
835
|
+
o.env Core::Telemetry::Ext::ENV_AGENTLESS_URL_OVERRIDE
|
|
836
|
+
end
|
|
837
|
+
|
|
838
|
+
# Enable metrics collection for telemetry. Metrics collection only works when telemetry is enabled and
|
|
839
|
+
# metrics are enabled.
|
|
840
|
+
# @default `DD_TELEMETRY_METRICS_ENABLED` environment variable, otherwise `true`.
|
|
841
|
+
# @return [Boolean]
|
|
842
|
+
option :metrics_enabled do |o|
|
|
843
|
+
o.type :bool
|
|
844
|
+
o.env Core::Telemetry::Ext::ENV_METRICS_ENABLED
|
|
845
|
+
o.default true
|
|
846
|
+
end
|
|
847
|
+
|
|
848
|
+
# The interval in seconds when telemetry must be sent.
|
|
849
|
+
#
|
|
850
|
+
# This method is used internally, for testing purposes only.
|
|
851
|
+
#
|
|
852
|
+
# @default `DD_TELEMETRY_HEARTBEAT_INTERVAL` environment variable, otherwise `60`.
|
|
853
|
+
# @return [Float]
|
|
854
|
+
# @!visibility private
|
|
855
|
+
option :heartbeat_interval_seconds do |o|
|
|
856
|
+
o.type :float
|
|
857
|
+
o.env Core::Telemetry::Ext::ENV_HEARTBEAT_INTERVAL
|
|
858
|
+
o.default 60.0
|
|
859
|
+
end
|
|
860
|
+
|
|
861
|
+
# The interval in seconds when telemetry metrics are aggregated.
|
|
862
|
+
# Should be a denominator of `heartbeat_interval_seconds`.
|
|
863
|
+
#
|
|
864
|
+
# This method is used internally, for testing purposes only.
|
|
865
|
+
# @default `DD_TELEMETRY_METRICS_AGGREGATION_INTERVAL` environment variable, otherwise `10`.
|
|
866
|
+
# @return [Float]
|
|
867
|
+
# @!visibility private
|
|
868
|
+
option :metrics_aggregation_interval_seconds do |o|
|
|
869
|
+
o.type :float
|
|
870
|
+
o.env Core::Telemetry::Ext::ENV_METRICS_AGGREGATION_INTERVAL
|
|
871
|
+
o.default 10.0
|
|
872
|
+
end
|
|
873
|
+
|
|
874
|
+
# The install id of the application.
|
|
875
|
+
#
|
|
876
|
+
# This method is used internally, by library injection.
|
|
877
|
+
#
|
|
878
|
+
# @default `DD_INSTRUMENTATION_INSTALL_ID` environment variable, otherwise `nil`.
|
|
879
|
+
# @return [String,nil]
|
|
880
|
+
# @!visibility private
|
|
881
|
+
option :install_id do |o|
|
|
882
|
+
o.type :string, nilable: true
|
|
883
|
+
o.env Core::Telemetry::Ext::ENV_INSTALL_ID
|
|
884
|
+
end
|
|
885
|
+
|
|
886
|
+
# The install type of the application.
|
|
887
|
+
#
|
|
888
|
+
# This method is used internally, by library injection.
|
|
889
|
+
#
|
|
890
|
+
# @default `DD_INSTRUMENTATION_INSTALL_TYPE` environment variable, otherwise `nil`.
|
|
891
|
+
# @return [String,nil]
|
|
892
|
+
# @!visibility private
|
|
893
|
+
option :install_type do |o|
|
|
894
|
+
o.type :string, nilable: true
|
|
895
|
+
o.env Core::Telemetry::Ext::ENV_INSTALL_TYPE
|
|
896
|
+
end
|
|
897
|
+
|
|
898
|
+
# The install time of the application.
|
|
899
|
+
#
|
|
900
|
+
# This method is used internally, by library injection.
|
|
901
|
+
#
|
|
902
|
+
# @default `DD_INSTRUMENTATION_INSTALL_TIME` environment variable, otherwise `nil`.
|
|
903
|
+
# @return [String,nil]
|
|
904
|
+
# @!visibility private
|
|
905
|
+
option :install_time do |o|
|
|
906
|
+
o.type :string, nilable: true
|
|
907
|
+
o.env Core::Telemetry::Ext::ENV_INSTALL_TIME
|
|
908
|
+
end
|
|
909
|
+
|
|
910
|
+
# Telemetry shutdown timeout in seconds
|
|
911
|
+
#
|
|
912
|
+
# @!visibility private
|
|
913
|
+
option :shutdown_timeout_seconds do |o|
|
|
914
|
+
o.type :float
|
|
915
|
+
o.default 1.0
|
|
916
|
+
end
|
|
917
|
+
|
|
918
|
+
# Enable log collection for telemetry. Log collection only works when telemetry is enabled and
|
|
919
|
+
# logs are enabled.
|
|
920
|
+
# @default `DD_TELEMETRY_LOG_COLLECTION_ENABLED` environment variable, otherwise `true`.
|
|
921
|
+
# @return [Boolean]
|
|
922
|
+
option :log_collection_enabled do |o|
|
|
923
|
+
o.type :bool
|
|
924
|
+
o.env Core::Telemetry::Ext::ENV_LOG_COLLECTION
|
|
925
|
+
o.default true
|
|
926
|
+
end
|
|
927
|
+
|
|
928
|
+
# For internal use only.
|
|
929
|
+
# Enables telemetry debugging through the Datadog platform.
|
|
930
|
+
#
|
|
931
|
+
# @default `false`.
|
|
932
|
+
# @return [Boolean]
|
|
933
|
+
option :debug do |o|
|
|
934
|
+
o.type :bool
|
|
935
|
+
o.default false
|
|
936
|
+
end
|
|
937
|
+
end
|
|
938
|
+
|
|
939
|
+
# Remote configuration
|
|
940
|
+
# @public_api
|
|
941
|
+
settings :remote do
|
|
942
|
+
# Enable remote configuration. This allows fetching of remote configuration for live updates.
|
|
943
|
+
#
|
|
944
|
+
# @default `DD_REMOTE_CONFIGURATION_ENABLED` environment variable, otherwise `true`.
|
|
945
|
+
# By default, remote configuration is disabled in development environments.
|
|
946
|
+
# @return [Boolean]
|
|
947
|
+
option :enabled do |o|
|
|
948
|
+
o.env Core::Remote::Ext::ENV_ENABLED
|
|
949
|
+
o.default do
|
|
950
|
+
if Datadog::Core::Environment::Execution.development?
|
|
951
|
+
Datadog.logger.debug do
|
|
952
|
+
'Development environment detected, disabling Remote Configuration. ' \
|
|
953
|
+
'You can enable it with DD_REMOTE_CONFIGURATION_ENABLED=true.'
|
|
954
|
+
end
|
|
955
|
+
false
|
|
956
|
+
else
|
|
957
|
+
true
|
|
958
|
+
end
|
|
959
|
+
end
|
|
960
|
+
o.type :bool
|
|
961
|
+
end
|
|
962
|
+
|
|
963
|
+
# Tune remote configuration polling interval.
|
|
964
|
+
# This is a private setting. Do not use outside of Datadog. It might change at any point in time.
|
|
965
|
+
#
|
|
966
|
+
# @default `DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS` environment variable, otherwise `5.0` seconds.
|
|
967
|
+
# @return [Float]
|
|
968
|
+
# @!visibility private
|
|
969
|
+
option :poll_interval_seconds do |o|
|
|
970
|
+
o.env Core::Remote::Ext::ENV_POLL_INTERVAL_SECONDS
|
|
971
|
+
o.type :float
|
|
972
|
+
o.default 5.0
|
|
973
|
+
end
|
|
974
|
+
|
|
975
|
+
# Tune remote configuration boot timeout.
|
|
976
|
+
# Early operations such as requests are blocked until RC is ready. In
|
|
977
|
+
# order to not block the application indefinitely a timeout is
|
|
978
|
+
# enforced allowing requests to proceed with the local configuration.
|
|
979
|
+
#
|
|
980
|
+
# @default `DD_REMOTE_CONFIG_BOOT_TIMEOUT` environment variable, otherwise `1.0` seconds.
|
|
981
|
+
# @return [Float]
|
|
982
|
+
option :boot_timeout_seconds do |o|
|
|
983
|
+
o.env Core::Remote::Ext::ENV_BOOT_TIMEOUT_SECONDS
|
|
984
|
+
o.type :float
|
|
985
|
+
o.default 1.0
|
|
986
|
+
end
|
|
987
|
+
|
|
988
|
+
# Declare service name to bind to remote configuration. Use when
|
|
989
|
+
# DD_SERVICE does not match the correct integration for which remote
|
|
990
|
+
# configuration applies.
|
|
991
|
+
#
|
|
992
|
+
# @default `nil`.
|
|
993
|
+
# @return [String,nil]
|
|
994
|
+
option :service
|
|
995
|
+
end
|
|
996
|
+
|
|
997
|
+
settings :crashtracking do
|
|
998
|
+
# Enables reporting of information when Ruby VM crashes.
|
|
999
|
+
option :enabled do |o|
|
|
1000
|
+
o.type :bool
|
|
1001
|
+
o.default true
|
|
1002
|
+
o.env 'DD_CRASHTRACKING_ENABLED'
|
|
1003
|
+
end
|
|
1004
|
+
end
|
|
1005
|
+
|
|
1006
|
+
# Cloudwise integration configuration
|
|
1007
|
+
# Uses DD_SERVICE for server_name and DD_AGENT_HOST/DD_AGENT_PORT for API URL
|
|
1008
|
+
# @public_api
|
|
1009
|
+
settings :cloudwise do
|
|
1010
|
+
# Enable Cloudwise integration
|
|
1011
|
+
# @default `DD_CLOUDWISE_ENABLED` environment variable, otherwise `false`
|
|
1012
|
+
# @return [Boolean]
|
|
1013
|
+
option :enabled do |o|
|
|
1014
|
+
o.type :bool
|
|
1015
|
+
o.env 'DD_CLOUDWISE_ENABLED'
|
|
1016
|
+
o.default true
|
|
1017
|
+
end
|
|
1018
|
+
|
|
1019
|
+
# License key for Cloudwise
|
|
1020
|
+
# @default `DD_CLOUDWISE_LICENSE_KEY` environment variable
|
|
1021
|
+
# @return [String,nil]
|
|
1022
|
+
option :license_key do |o|
|
|
1023
|
+
o.type :string, nilable: true
|
|
1024
|
+
o.env 'DD_CLOUDWISE_LICENSE_KEY'
|
|
1025
|
+
o.default nil
|
|
1026
|
+
end
|
|
1027
|
+
|
|
1028
|
+
# Heartbeat interval in seconds
|
|
1029
|
+
# @default `DD_CLOUDWISE_HEARTBEAT_INTERVAL` environment variable, otherwise `30`
|
|
1030
|
+
# @return [Integer]
|
|
1031
|
+
option :heartbeat_interval do |o|
|
|
1032
|
+
o.type :int
|
|
1033
|
+
o.env 'DD_CLOUDWISE_HEARTBEAT_INTERVAL'
|
|
1034
|
+
o.default 30
|
|
1035
|
+
end
|
|
1036
|
+
|
|
1037
|
+
# License check interval in seconds (5 minutes)
|
|
1038
|
+
# @default `DD_CLOUDWISE_LICENSE_CHECK_INTERVAL` environment variable, otherwise `300`
|
|
1039
|
+
# @return [Integer]
|
|
1040
|
+
option :license_check_interval do |o|
|
|
1041
|
+
o.type :int
|
|
1042
|
+
o.env 'DD_CLOUDWISE_LICENSE_CHECK_INTERVAL'
|
|
1043
|
+
o.default 300
|
|
1044
|
+
end
|
|
1045
|
+
|
|
1046
|
+
# Application registration interval in seconds (3 minutes)
|
|
1047
|
+
# @default `DD_CLOUDWISE_APP_REGISTRATION_INTERVAL` environment variable, otherwise `180`
|
|
1048
|
+
# @return [Integer]
|
|
1049
|
+
option :app_registration_interval do |o|
|
|
1050
|
+
o.type :int
|
|
1051
|
+
o.env 'DD_CLOUDWISE_APP_REGISTRATION_INTERVAL'
|
|
1052
|
+
o.default 180
|
|
1053
|
+
end
|
|
1054
|
+
end
|
|
1055
|
+
|
|
1056
|
+
# Tracer specific configuration starting with APM (e.g. DD_APM_TRACING_ENABLED).
|
|
1057
|
+
# @public_api
|
|
1058
|
+
settings :apm do
|
|
1059
|
+
# Tracing as a transport
|
|
1060
|
+
# @public_api
|
|
1061
|
+
settings :tracing do
|
|
1062
|
+
# Enables tracing as transport.
|
|
1063
|
+
# Disabling it will set sampling priority to -1 (FORCE_DROP) on most traces,
|
|
1064
|
+
# (which tells to the agent to drop these traces)
|
|
1065
|
+
# except heartbeat ones (1 per minute) and manually kept ones (sampling priority to 2) (e.g. appsec events)
|
|
1066
|
+
#
|
|
1067
|
+
# This is different than `DD_TRACE_ENABLED`, which completely disables tracing (sends no trace at all),
|
|
1068
|
+
# while this will send heartbeat traces (1 per minute) so that the service is considered alive in the backend.
|
|
1069
|
+
#
|
|
1070
|
+
# @default `DD_APM_TRACING_ENABLED` environment variable, otherwise `true`
|
|
1071
|
+
# @return [Boolean]
|
|
1072
|
+
option :enabled do |o|
|
|
1073
|
+
o.env Configuration::Ext::APM::ENV_TRACING_ENABLED
|
|
1074
|
+
o.default true
|
|
1075
|
+
o.type :bool
|
|
1076
|
+
end
|
|
1077
|
+
end
|
|
1078
|
+
end
|
|
1079
|
+
|
|
1080
|
+
# TODO: Tracing should manage its own settings.
|
|
1081
|
+
# Keep this extension here for now to keep things working.
|
|
1082
|
+
extend Datadog::Tracing::Configuration::Settings
|
|
1083
|
+
end
|
|
1084
|
+
# standard:enable Metrics/BlockLength
|
|
1085
|
+
end
|
|
1086
|
+
end
|
|
1087
|
+
end
|