datadog 2.12.1 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +243 -2
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +63 -56
- data/ext/datadog_profiling_native_extension/collectors_stack.c +263 -76
- data/ext/datadog_profiling_native_extension/collectors_stack.h +20 -3
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +78 -26
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -0
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +1 -4
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +10 -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 +10 -0
- data/ext/datadog_profiling_native_extension/heap_recorder.c +247 -364
- data/ext/datadog_profiling_native_extension/heap_recorder.h +4 -6
- data/ext/datadog_profiling_native_extension/http_transport.c +60 -94
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +22 -0
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +8 -5
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +41 -21
- data/ext/datadog_profiling_native_extension/private_vm_api_access.h +6 -4
- data/ext/datadog_profiling_native_extension/profiling.c +2 -0
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +1 -13
- data/ext/datadog_profiling_native_extension/ruby_helpers.h +3 -11
- data/ext/datadog_profiling_native_extension/stack_recorder.c +173 -76
- data/ext/libdatadog_api/crashtracker.c +11 -12
- data/ext/libdatadog_api/crashtracker.h +5 -0
- data/ext/libdatadog_api/datadog_ruby_common.c +1 -4
- data/ext/libdatadog_api/datadog_ruby_common.h +10 -0
- data/ext/libdatadog_api/extconf.rb +2 -2
- data/ext/libdatadog_api/init.c +15 -0
- data/ext/libdatadog_api/library_config.c +164 -0
- data/ext/libdatadog_api/library_config.h +25 -0
- data/ext/libdatadog_api/macos_development.md +3 -3
- data/ext/libdatadog_api/process_discovery.c +112 -0
- data/ext/libdatadog_api/process_discovery.h +5 -0
- data/ext/libdatadog_extconf_helpers.rb +2 -2
- data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +89 -0
- data/lib/datadog/appsec/actions_handler.rb +24 -2
- data/lib/datadog/appsec/anonymizer.rb +16 -0
- data/lib/datadog/appsec/api_security/lru_cache.rb +56 -0
- data/lib/datadog/appsec/api_security/route_extractor.rb +71 -0
- data/lib/datadog/appsec/api_security/sampler.rb +59 -0
- data/lib/datadog/appsec/api_security.rb +23 -0
- data/lib/datadog/appsec/assets/waf_rules/README.md +50 -5
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +257 -85
- data/lib/datadog/appsec/assets/waf_rules/strict.json +10 -78
- data/lib/datadog/appsec/autoload.rb +1 -1
- data/lib/datadog/appsec/component.rb +46 -61
- data/lib/datadog/appsec/compressed_json.rb +40 -0
- data/lib/datadog/appsec/configuration/settings.rb +153 -30
- data/lib/datadog/appsec/context.rb +7 -7
- data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +10 -12
- data/lib/datadog/appsec/contrib/active_record/integration.rb +2 -2
- data/lib/datadog/appsec/contrib/active_record/patcher.rb +22 -22
- data/lib/datadog/appsec/contrib/auto_instrument.rb +1 -1
- data/lib/datadog/appsec/contrib/devise/configuration.rb +7 -31
- data/lib/datadog/appsec/contrib/devise/data_extractor.rb +78 -0
- data/lib/datadog/appsec/contrib/devise/ext.rb +22 -0
- data/lib/datadog/appsec/contrib/devise/integration.rb +1 -2
- data/lib/datadog/appsec/contrib/devise/patcher.rb +34 -23
- data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +102 -0
- data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +69 -0
- data/lib/datadog/appsec/contrib/devise/{patcher/rememberable_patch.rb → patches/skip_signin_tracking_patch.rb} +2 -2
- data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +106 -0
- data/lib/datadog/appsec/contrib/excon/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +9 -10
- data/lib/datadog/appsec/contrib/faraday/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +8 -9
- data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +8 -9
- data/lib/datadog/appsec/contrib/graphql/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/ext.rb +34 -0
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +49 -32
- data/lib/datadog/appsec/contrib/rack/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +42 -30
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +11 -13
- data/lib/datadog/appsec/contrib/rails/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/patcher.rb +21 -21
- data/lib/datadog/appsec/contrib/rest_client/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +10 -11
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +17 -23
- data/lib/datadog/appsec/contrib/sinatra/integration.rb +1 -1
- data/lib/datadog/appsec/event.rb +96 -135
- data/lib/datadog/appsec/ext.rb +4 -2
- data/lib/datadog/appsec/instrumentation/gateway/argument.rb +7 -2
- data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +24 -0
- data/lib/datadog/appsec/instrumentation/gateway.rb +17 -22
- data/lib/datadog/appsec/metrics/telemetry.rb +1 -1
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +49 -14
- data/lib/datadog/appsec/processor/rule_loader.rb +30 -33
- data/lib/datadog/appsec/remote.rb +31 -59
- data/lib/datadog/appsec/response.rb +6 -6
- data/lib/datadog/appsec/security_engine/engine.rb +194 -0
- data/lib/datadog/appsec/security_engine/runner.rb +13 -14
- data/lib/datadog/appsec/security_event.rb +39 -0
- data/lib/datadog/appsec/utils.rb +0 -2
- data/lib/datadog/appsec.rb +5 -8
- data/lib/datadog/core/buffer/random.rb +18 -2
- data/lib/datadog/core/configuration/agent_settings.rb +52 -0
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +4 -46
- data/lib/datadog/core/configuration/agentless_settings_resolver.rb +176 -0
- data/lib/datadog/core/configuration/components.rb +48 -31
- data/lib/datadog/core/configuration/components_state.rb +23 -0
- data/lib/datadog/core/configuration/ext.rb +4 -0
- data/lib/datadog/core/configuration/option.rb +81 -45
- data/lib/datadog/core/configuration/option_definition.rb +4 -4
- data/lib/datadog/core/configuration/options.rb +3 -3
- data/lib/datadog/core/configuration/settings.rb +109 -44
- data/lib/datadog/core/configuration/stable_config.rb +22 -0
- data/lib/datadog/core/configuration.rb +40 -16
- data/lib/datadog/core/crashtracking/component.rb +3 -10
- data/lib/datadog/core/crashtracking/tag_builder.rb +4 -22
- data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
- data/lib/datadog/core/encoding.rb +1 -1
- data/lib/datadog/core/environment/agent_info.rb +4 -3
- data/lib/datadog/core/environment/cgroup.rb +10 -12
- data/lib/datadog/core/environment/container.rb +38 -40
- data/lib/datadog/core/environment/ext.rb +6 -6
- data/lib/datadog/core/environment/git.rb +1 -0
- data/lib/datadog/core/environment/identity.rb +3 -3
- data/lib/datadog/core/environment/platform.rb +3 -3
- data/lib/datadog/core/environment/variable_helpers.rb +1 -1
- data/lib/datadog/core/error.rb +11 -9
- data/lib/datadog/core/logger.rb +2 -2
- data/lib/datadog/core/metrics/client.rb +20 -21
- data/lib/datadog/core/metrics/logging.rb +5 -5
- data/lib/datadog/core/process_discovery/tracer_memfd.rb +15 -0
- data/lib/datadog/core/process_discovery.rb +36 -0
- data/lib/datadog/core/rate_limiter.rb +4 -2
- data/lib/datadog/core/remote/client.rb +40 -32
- data/lib/datadog/core/remote/component.rb +6 -9
- data/lib/datadog/core/remote/configuration/digest.rb +7 -7
- data/lib/datadog/core/remote/configuration/path.rb +1 -1
- data/lib/datadog/core/remote/configuration/repository.rb +14 -1
- data/lib/datadog/core/remote/negotiation.rb +9 -9
- data/lib/datadog/core/remote/transport/config.rb +4 -3
- data/lib/datadog/core/remote/transport/http/client.rb +5 -4
- data/lib/datadog/core/remote/transport/http/config.rb +27 -37
- data/lib/datadog/core/remote/transport/http/negotiation.rb +7 -33
- data/lib/datadog/core/remote/transport/http.rb +22 -57
- data/lib/datadog/core/remote/transport/negotiation.rb +4 -3
- data/lib/datadog/core/runtime/metrics.rb +12 -5
- data/lib/datadog/core/tag_builder.rb +56 -0
- data/lib/datadog/core/telemetry/component.rb +81 -52
- data/lib/datadog/core/telemetry/emitter.rb +23 -11
- 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_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 +17 -472
- data/lib/datadog/core/telemetry/http/adapters/net.rb +12 -97
- data/lib/datadog/core/telemetry/logger.rb +5 -4
- data/lib/datadog/core/telemetry/logging.rb +11 -5
- data/lib/datadog/core/telemetry/metric.rb +8 -8
- data/lib/datadog/core/telemetry/request.rb +4 -4
- 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 +90 -24
- data/lib/datadog/core/transport/http/adapters/net.rb +17 -2
- data/lib/datadog/core/transport/http/adapters/test.rb +2 -1
- data/lib/datadog/core/transport/http/api/instance.rb +17 -0
- data/lib/datadog/core/transport/http/api/spec.rb +17 -0
- data/lib/datadog/core/transport/http/builder.rb +19 -17
- data/lib/datadog/core/transport/http/env.rb +8 -0
- data/lib/datadog/core/transport/http.rb +39 -2
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +6 -6
- data/lib/datadog/core/utils/duration.rb +32 -32
- data/lib/datadog/core/utils/forking.rb +2 -2
- data/lib/datadog/core/utils/network.rb +6 -6
- data/lib/datadog/core/utils/only_once_successful.rb +16 -5
- data/lib/datadog/core/utils/time.rb +20 -0
- data/lib/datadog/core/utils/truncation.rb +21 -0
- data/lib/datadog/core/utils.rb +7 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -1
- data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +8 -8
- data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +7 -7
- data/lib/datadog/core/worker.rb +1 -1
- data/lib/datadog/core/workers/async.rb +29 -12
- data/lib/datadog/core/workers/interval_loop.rb +12 -1
- data/lib/datadog/core/workers/runtime_metrics.rb +2 -2
- data/lib/datadog/core.rb +8 -0
- data/lib/datadog/di/boot.rb +34 -0
- data/lib/datadog/di/component.rb +0 -2
- data/lib/datadog/di/instrumenter.rb +48 -5
- data/lib/datadog/di/probe_notification_builder.rb +38 -43
- data/lib/datadog/di/probe_notifier_worker.rb +25 -17
- data/lib/datadog/di/remote.rb +2 -0
- data/lib/datadog/di/serializer.rb +10 -2
- data/lib/datadog/di/transport/diagnostics.rb +4 -3
- data/lib/datadog/di/transport/http/api.rb +2 -12
- data/lib/datadog/di/transport/http/client.rb +4 -3
- data/lib/datadog/di/transport/http/diagnostics.rb +7 -34
- data/lib/datadog/di/transport/http/input.rb +18 -35
- data/lib/datadog/di/transport/http.rb +14 -62
- data/lib/datadog/di/transport/input.rb +14 -5
- data/lib/datadog/di/utils.rb +5 -0
- data/lib/datadog/di.rb +0 -33
- 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 +195 -0
- data/lib/datadog/kit/appsec/events.rb +12 -0
- data/lib/datadog/kit/identity.rb +5 -1
- 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 +16 -2
- data/lib/datadog/opentelemetry/sdk/trace/span.rb +1 -1
- data/lib/datadog/opentelemetry.rb +2 -1
- data/lib/datadog/profiling/collectors/code_provenance.rb +18 -9
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +6 -0
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -0
- data/lib/datadog/profiling/collectors/info.rb +44 -0
- data/lib/datadog/profiling/collectors/thread_context.rb +17 -2
- data/lib/datadog/profiling/component.rb +8 -9
- data/lib/datadog/profiling/encoded_profile.rb +11 -0
- data/lib/datadog/profiling/exporter.rb +12 -7
- data/lib/datadog/profiling/ext.rb +0 -14
- data/lib/datadog/profiling/flush.rb +5 -8
- data/lib/datadog/profiling/http_transport.rb +7 -61
- data/lib/datadog/profiling/profiler.rb +2 -0
- data/lib/datadog/profiling/scheduler.rb +10 -2
- data/lib/datadog/profiling/sequence_tracker.rb +44 -0
- data/lib/datadog/profiling/stack_recorder.rb +9 -9
- data/lib/datadog/profiling/tag_builder.rb +7 -41
- data/lib/datadog/profiling/tasks/setup.rb +2 -0
- data/lib/datadog/profiling.rb +7 -2
- data/lib/datadog/single_step_instrument.rb +9 -0
- data/lib/datadog/tracing/analytics.rb +1 -1
- data/lib/datadog/tracing/component.rb +15 -12
- data/lib/datadog/tracing/configuration/ext.rb +7 -1
- data/lib/datadog/tracing/configuration/settings.rb +18 -2
- data/lib/datadog/tracing/context_provider.rb +1 -1
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +15 -0
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +19 -12
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +11 -2
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +33 -0
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -0
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +2 -4
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +10 -0
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +5 -1
- data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +4 -5
- data/lib/datadog/tracing/contrib/excon/middleware.rb +5 -3
- data/lib/datadog/tracing/contrib/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +5 -3
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +7 -1
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +3 -0
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +0 -15
- data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +4 -1
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +6 -10
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +6 -16
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +7 -15
- 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 +66 -0
- data/lib/datadog/tracing/contrib/karafka/patcher.rb +71 -0
- data/lib/datadog/tracing/contrib/karafka.rb +37 -0
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +4 -2
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +8 -0
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +18 -1
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +16 -6
- data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +17 -0
- data/lib/datadog/tracing/contrib/opensearch/ext.rb +9 -0
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +5 -1
- data/lib/datadog/tracing/contrib/patcher.rb +5 -2
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -1
- data/lib/datadog/tracing/contrib/rails/runner.rb +61 -40
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -3
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +6 -1
- data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +3 -0
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -2
- data/lib/datadog/tracing/contrib/support.rb +28 -0
- data/lib/datadog/tracing/contrib.rb +1 -0
- data/lib/datadog/tracing/correlation.rb +9 -2
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +3 -1
- data/lib/datadog/tracing/distributed/b3_multi.rb +1 -1
- data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
- data/lib/datadog/tracing/distributed/baggage.rb +131 -0
- data/lib/datadog/tracing/distributed/datadog.rb +4 -2
- data/lib/datadog/tracing/distributed/propagation.rb +25 -4
- data/lib/datadog/tracing/distributed/propagation_policy.rb +42 -0
- data/lib/datadog/tracing/metadata/errors.rb +4 -4
- data/lib/datadog/tracing/metadata/ext.rb +5 -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.rb +2 -0
- data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -1
- data/lib/datadog/tracing/sampling/span/rule.rb +0 -1
- data/lib/datadog/tracing/span.rb +10 -1
- data/lib/datadog/tracing/span_event.rb +2 -2
- data/lib/datadog/tracing/span_operation.rb +68 -16
- data/lib/datadog/tracing/sync_writer.rb +2 -3
- data/lib/datadog/tracing/trace_digest.rb +9 -2
- data/lib/datadog/tracing/trace_operation.rb +55 -27
- data/lib/datadog/tracing/trace_segment.rb +6 -4
- data/lib/datadog/tracing/tracer.rb +51 -7
- data/lib/datadog/tracing/transport/http/api.rb +2 -10
- data/lib/datadog/tracing/transport/http/client.rb +5 -4
- data/lib/datadog/tracing/transport/http/traces.rb +13 -41
- data/lib/datadog/tracing/transport/http.rb +11 -44
- data/lib/datadog/tracing/transport/serializable_trace.rb +3 -1
- data/lib/datadog/tracing/transport/trace_formatter.rb +7 -0
- data/lib/datadog/tracing/transport/traces.rb +26 -9
- data/lib/datadog/tracing/utils.rb +1 -1
- data/lib/datadog/tracing/workers/trace_writer.rb +2 -6
- data/lib/datadog/tracing/writer.rb +2 -6
- data/lib/datadog/tracing.rb +16 -3
- data/lib/datadog/version.rb +2 -2
- data/lib/datadog.rb +8 -2
- metadata +88 -23
- data/lib/datadog/appsec/assets/waf_rules/processors.json +0 -92
- data/lib/datadog/appsec/assets/waf_rules/scanners.json +0 -114
- data/lib/datadog/appsec/contrib/devise/event.rb +0 -54
- data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +0 -72
- data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +0 -47
- data/lib/datadog/appsec/contrib/devise/resource.rb +0 -35
- data/lib/datadog/appsec/contrib/devise/tracking.rb +0 -57
- data/lib/datadog/appsec/processor/rule_merger.rb +0 -170
- data/lib/datadog/appsec/processor.rb +0 -107
- data/lib/datadog/appsec/utils/trace_operation.rb +0 -15
- data/lib/datadog/core/telemetry/http/env.rb +0 -20
- data/lib/datadog/core/telemetry/http/ext.rb +0 -28
- data/lib/datadog/core/telemetry/http/response.rb +0 -70
- data/lib/datadog/core/telemetry/http/transport.rb +0 -90
@@ -4,6 +4,7 @@ require 'uri'
|
|
4
4
|
|
5
5
|
require_relative 'settings'
|
6
6
|
require_relative 'ext'
|
7
|
+
require_relative 'agent_settings'
|
7
8
|
require_relative '../transport/ext'
|
8
9
|
|
9
10
|
module Datadog
|
@@ -19,49 +20,6 @@ module Datadog
|
|
19
20
|
# Whenever there is a conflict (different configurations are provided in different orders), it MUST warn the users
|
20
21
|
# about it and pick a value based on the following priority: code > environment variable > defaults.
|
21
22
|
class AgentSettingsResolver
|
22
|
-
# Immutable container for the resulting settings
|
23
|
-
class AgentSettings
|
24
|
-
attr_reader :adapter, :ssl, :hostname, :port, :uds_path, :timeout_seconds
|
25
|
-
|
26
|
-
def initialize(adapter: nil, ssl: nil, hostname: nil, port: nil, uds_path: nil, timeout_seconds: nil)
|
27
|
-
@adapter = adapter
|
28
|
-
@ssl = ssl
|
29
|
-
@hostname = hostname
|
30
|
-
@port = port
|
31
|
-
@uds_path = uds_path
|
32
|
-
@timeout_seconds = timeout_seconds
|
33
|
-
freeze
|
34
|
-
end
|
35
|
-
|
36
|
-
def url
|
37
|
-
case adapter
|
38
|
-
when Datadog::Core::Configuration::Ext::Agent::HTTP::ADAPTER
|
39
|
-
hostname = self.hostname
|
40
|
-
hostname = "[#{hostname}]" if hostname =~ IPV6_REGEXP
|
41
|
-
"#{ssl ? 'https' : 'http'}://#{hostname}:#{port}/"
|
42
|
-
when Datadog::Core::Configuration::Ext::Agent::UnixSocket::ADAPTER
|
43
|
-
"unix://#{uds_path}"
|
44
|
-
else
|
45
|
-
raise ArgumentError, "Unexpected adapter: #{adapter}"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def ==(other)
|
50
|
-
self.class == other.class &&
|
51
|
-
adapter == other.adapter &&
|
52
|
-
ssl == other.ssl &&
|
53
|
-
hostname == other.hostname &&
|
54
|
-
port == other.port &&
|
55
|
-
uds_path == other.uds_path &&
|
56
|
-
timeout_seconds == other.timeout_seconds
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
# IPv6 regular expression from
|
61
|
-
# https://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses
|
62
|
-
# Does not match IPv4 addresses.
|
63
|
-
IPV6_REGEXP = /\A(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\z)/.freeze # rubocop:disable Layout/LineLength
|
64
|
-
|
65
23
|
def self.call(settings, logger: Datadog.logger)
|
66
24
|
new(settings, logger: logger).send(:call)
|
67
25
|
end
|
@@ -158,7 +116,7 @@ module Datadog
|
|
158
116
|
value: settings.agent.timeout_seconds,
|
159
117
|
),
|
160
118
|
try_parsing_as_integer(
|
161
|
-
friendly_name: "#{Datadog::Core::Configuration::Ext::Agent::ENV_DEFAULT_TIMEOUT_SECONDS} "\
|
119
|
+
friendly_name: "#{Datadog::Core::Configuration::Ext::Agent::ENV_DEFAULT_TIMEOUT_SECONDS} " \
|
162
120
|
'environment variable',
|
163
121
|
value: ENV[Datadog::Core::Configuration::Ext::Agent::ENV_DEFAULT_TIMEOUT_SECONDS],
|
164
122
|
)
|
@@ -338,13 +296,13 @@ module Datadog
|
|
338
296
|
log_warning(
|
339
297
|
'Configuration mismatch: values differ between ' \
|
340
298
|
"#{detected_configurations_in_priority_order
|
341
|
-
.map { |config| "#{config.friendly_name} (#{config.value.inspect})" }.join(
|
299
|
+
.map { |config| "#{config.friendly_name} (#{config.value.inspect})" }.join(" and ")}" \
|
342
300
|
". Using #{detected_configurations_in_priority_order.first.value.inspect} and ignoring other configuration."
|
343
301
|
)
|
344
302
|
end
|
345
303
|
|
346
304
|
def log_warning(message)
|
347
|
-
logger
|
305
|
+
logger&.warn(message)
|
348
306
|
end
|
349
307
|
|
350
308
|
def http_scheme?(uri)
|
@@ -0,0 +1,176 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# rubocop:disable Style/*
|
4
|
+
|
5
|
+
require 'uri'
|
6
|
+
|
7
|
+
require_relative 'agent_settings_resolver'
|
8
|
+
|
9
|
+
module Datadog
|
10
|
+
module Core
|
11
|
+
module Configuration
|
12
|
+
# Agent settings resolver for agentless operations (currently, telemetry
|
13
|
+
# in agentless mode).
|
14
|
+
#
|
15
|
+
# The terminology gets a little confusing here, but transports communicate
|
16
|
+
# with servers which are - for most components in the tracer - the
|
17
|
+
# (local) agent. Hence, "agent settings" to refer to where the server
|
18
|
+
# is located. Telemetry supports sending to the local agent but also
|
19
|
+
# implements agentless mode where it sends directly to Datadog intake
|
20
|
+
# endpoints. The agentless mode is configured using different settings,
|
21
|
+
# and this class produces AgentSettings instances when in agentless mode.
|
22
|
+
#
|
23
|
+
# Agentless settings resolver uses the following configuration sources:
|
24
|
+
#
|
25
|
+
# 1. url_override constructor parameter, if provided
|
26
|
+
# 2. Built-in default host/port/TLS settings for the backend
|
27
|
+
# intake endpoint
|
28
|
+
#
|
29
|
+
# The agentless resolver does NOT use agent settings (since it is
|
30
|
+
# for agentless operation), specifically it ignores:
|
31
|
+
#
|
32
|
+
# - c.agent.host
|
33
|
+
# - DD_AGENT_HOST
|
34
|
+
# - c.agent.port
|
35
|
+
# - DD_AGENT_PORT
|
36
|
+
#
|
37
|
+
# However, agentless resolver does respect the timeout specified via
|
38
|
+
# c.agent.timeout_seconds or DD_TRACE_AGENT_TIMEOUT_SECONDS.
|
39
|
+
class AgentlessSettingsResolver < AgentSettingsResolver
|
40
|
+
# To avoid coupling this class to telemetry, the URL override is
|
41
|
+
# taken here as a parameter instead of being read out of
|
42
|
+
# c.telemetry.agentless_url_override. For the same reason, the
|
43
|
+
# +url_override_source+ parameter should be set to the string
|
44
|
+
# "c.telemetry.agentless_url_override".
|
45
|
+
def self.call(settings, host_prefix:, url_override: nil, url_override_source: nil, logger: Datadog.logger)
|
46
|
+
new(
|
47
|
+
settings,
|
48
|
+
host_prefix: host_prefix,
|
49
|
+
url_override: url_override,
|
50
|
+
url_override_source: url_override_source,
|
51
|
+
logger: logger
|
52
|
+
).send(:call)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
attr_reader \
|
58
|
+
:host_prefix,
|
59
|
+
:url_override,
|
60
|
+
:url_override_source
|
61
|
+
|
62
|
+
def initialize(settings, host_prefix:, url_override: nil, url_override_source: nil, logger: Datadog.logger)
|
63
|
+
if url_override && url_override_source.nil?
|
64
|
+
raise ArgumentError, 'url_override_source must be provided when url_override is provided'
|
65
|
+
end
|
66
|
+
|
67
|
+
super(settings, logger: logger)
|
68
|
+
|
69
|
+
@host_prefix = host_prefix
|
70
|
+
@url_override = url_override
|
71
|
+
@url_override_source = url_override_source
|
72
|
+
end
|
73
|
+
|
74
|
+
def hostname
|
75
|
+
if should_use_uds?
|
76
|
+
nil
|
77
|
+
else
|
78
|
+
configured_hostname || "#{host_prefix}.#{settings.site}"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def configured_hostname
|
83
|
+
return @configured_hostname if defined?(@configured_hostname)
|
84
|
+
|
85
|
+
if should_use_uds?
|
86
|
+
nil
|
87
|
+
else
|
88
|
+
@configured_hostname = (parsed_url.hostname if parsed_url)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def configured_port
|
93
|
+
return @configured_port if defined?(@configured_port)
|
94
|
+
|
95
|
+
@configured_port = (parsed_url.port if parsed_url)
|
96
|
+
end
|
97
|
+
|
98
|
+
# Note that this method should always return true or false
|
99
|
+
def ssl?
|
100
|
+
if configured_hostname
|
101
|
+
configured_ssl || false
|
102
|
+
else
|
103
|
+
if should_use_uds?
|
104
|
+
false
|
105
|
+
else
|
106
|
+
# If no hostname is specified, we are communicating with the
|
107
|
+
# default Datadog intake, which uses TLS.
|
108
|
+
true
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
# Note that this method can return nil
|
114
|
+
def configured_ssl
|
115
|
+
return @configured_ssl if defined?(@configured_ssl)
|
116
|
+
|
117
|
+
@configured_ssl = (parsed_url_ssl? if parsed_url)
|
118
|
+
end
|
119
|
+
|
120
|
+
def port
|
121
|
+
if configured_port
|
122
|
+
configured_port
|
123
|
+
else
|
124
|
+
if should_use_uds?
|
125
|
+
nil
|
126
|
+
else
|
127
|
+
# If no hostname is specified, we are communicating with the
|
128
|
+
# default Datadog intake, which exists on port 443.
|
129
|
+
443
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def mixed_http_and_uds
|
135
|
+
false
|
136
|
+
end
|
137
|
+
|
138
|
+
def configured_uds_path
|
139
|
+
return @configured_uds_path if defined?(@configured_uds_path)
|
140
|
+
|
141
|
+
parsed_url_uds_path
|
142
|
+
end
|
143
|
+
|
144
|
+
def can_use_uds?
|
145
|
+
# While in theory agentless transport could communicate via UDS,
|
146
|
+
# in practice "agentless" means we are communicating with Datadog
|
147
|
+
# infrastructure which is always remote.
|
148
|
+
# Permit UDS for proxy usage?
|
149
|
+
!configured_uds_path.nil?
|
150
|
+
end
|
151
|
+
|
152
|
+
def parsed_url
|
153
|
+
return @parsed_url if defined?(@parsed_url)
|
154
|
+
|
155
|
+
@parsed_url =
|
156
|
+
if @url_override
|
157
|
+
parsed = URI.parse(@url_override)
|
158
|
+
|
159
|
+
# Agentless URL should never refer to a UDS?
|
160
|
+
if http_scheme?(parsed) || unix_scheme?(parsed)
|
161
|
+
parsed
|
162
|
+
else
|
163
|
+
log_warning(
|
164
|
+
"Invalid URI scheme '#{parsed.scheme}' for #{url_override_source}. " \
|
165
|
+
"Ignoring the contents of #{url_override_source}."
|
166
|
+
)
|
167
|
+
nil
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
# rubocop:enable Style/*
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'agent_settings_resolver'
|
4
|
+
require_relative 'components_state'
|
4
5
|
require_relative 'ext'
|
5
6
|
require_relative '../diagnostics/environment_logger'
|
6
7
|
require_relative '../diagnostics/health'
|
@@ -8,15 +9,15 @@ require_relative '../logger'
|
|
8
9
|
require_relative '../runtime/metrics'
|
9
10
|
require_relative '../telemetry/component'
|
10
11
|
require_relative '../workers/runtime_metrics'
|
11
|
-
|
12
12
|
require_relative '../remote/component'
|
13
13
|
require_relative '../../tracing/component'
|
14
14
|
require_relative '../../profiling/component'
|
15
15
|
require_relative '../../appsec/component'
|
16
16
|
require_relative '../../di/component'
|
17
|
+
require_relative '../../error_tracking/component'
|
17
18
|
require_relative '../crashtracking/component'
|
18
|
-
|
19
19
|
require_relative '../environment/agent_info'
|
20
|
+
require_relative '../process_discovery'
|
20
21
|
|
21
22
|
module Datadog
|
22
23
|
module Core
|
@@ -26,12 +27,12 @@ module Datadog
|
|
26
27
|
class << self
|
27
28
|
include Datadog::Tracing::Component
|
28
29
|
|
29
|
-
def build_health_metrics(settings, logger)
|
30
|
+
def build_health_metrics(settings, logger, telemetry)
|
30
31
|
settings = settings.health_metrics
|
31
|
-
options = {
|
32
|
+
options = {enabled: settings.enabled}
|
32
33
|
options[:statsd] = settings.statsd unless settings.statsd.nil?
|
33
34
|
|
34
|
-
Core::Diagnostics::Health::Metrics.new(logger: logger, **options)
|
35
|
+
Core::Diagnostics::Health::Metrics.new(telemetry: telemetry, logger: logger, **options)
|
35
36
|
end
|
36
37
|
|
37
38
|
def build_logger(settings)
|
@@ -41,23 +42,24 @@ module Datadog
|
|
41
42
|
logger
|
42
43
|
end
|
43
44
|
|
44
|
-
def build_runtime_metrics(settings, logger)
|
45
|
-
options = {
|
45
|
+
def build_runtime_metrics(settings, logger, telemetry)
|
46
|
+
options = {enabled: settings.runtime_metrics.enabled}
|
46
47
|
options[:statsd] = settings.runtime_metrics.statsd unless settings.runtime_metrics.statsd.nil?
|
47
48
|
options[:services] = [settings.service] unless settings.service.nil?
|
49
|
+
options[:experimental_runtime_id_enabled] = settings.runtime_metrics.experimental_runtime_id_enabled
|
48
50
|
|
49
|
-
Core::Runtime::Metrics.new(logger: logger, **options)
|
51
|
+
Core::Runtime::Metrics.new(logger: logger, telemetry: telemetry, **options)
|
50
52
|
end
|
51
53
|
|
52
|
-
def build_runtime_metrics_worker(settings, logger)
|
54
|
+
def build_runtime_metrics_worker(settings, logger, telemetry)
|
53
55
|
# NOTE: Should we just ignore building the worker if its not enabled?
|
54
56
|
options = settings.runtime_metrics.opts.merge(
|
55
57
|
enabled: settings.runtime_metrics.enabled,
|
56
|
-
metrics: build_runtime_metrics(settings, logger),
|
58
|
+
metrics: build_runtime_metrics(settings, logger, telemetry),
|
57
59
|
logger: logger,
|
58
60
|
)
|
59
61
|
|
60
|
-
Core::Workers::RuntimeMetrics.new(options)
|
62
|
+
Core::Workers::RuntimeMetrics.new(telemetry: telemetry, **options)
|
61
63
|
end
|
62
64
|
|
63
65
|
def build_telemetry(settings, agent_settings, logger)
|
@@ -67,7 +69,7 @@ module Datadog
|
|
67
69
|
def build_crashtracker(settings, agent_settings, logger:)
|
68
70
|
return unless settings.crashtracking.enabled
|
69
71
|
|
70
|
-
if (libdatadog_api_failure = Datadog::Core::
|
72
|
+
if (libdatadog_api_failure = Datadog::Core::LIBDATADOG_API_FAILURE)
|
71
73
|
logger.debug("Cannot enable crashtracking: #{libdatadog_api_failure}")
|
72
74
|
return
|
73
75
|
end
|
@@ -87,6 +89,7 @@ module Datadog
|
|
87
89
|
:telemetry,
|
88
90
|
:tracer,
|
89
91
|
:crashtracker,
|
92
|
+
:error_tracking,
|
90
93
|
:dynamic_instrumentation,
|
91
94
|
:appsec,
|
92
95
|
:agent_info
|
@@ -101,7 +104,7 @@ module Datadog
|
|
101
104
|
agent_settings = AgentSettingsResolver.call(settings, logger: @logger)
|
102
105
|
|
103
106
|
# Exposes agent capability information for detection by any components
|
104
|
-
@agent_info = Core::Environment::AgentInfo.new(agent_settings)
|
107
|
+
@agent_info = Core::Environment::AgentInfo.new(agent_settings, logger: @logger)
|
105
108
|
|
106
109
|
@telemetry = self.class.build_telemetry(settings, agent_settings, @logger)
|
107
110
|
|
@@ -117,17 +120,21 @@ module Datadog
|
|
117
120
|
)
|
118
121
|
@environment_logger_extra.merge!(profiler_logger_extra) if profiler_logger_extra
|
119
122
|
|
120
|
-
@runtime_metrics = self.class.build_runtime_metrics_worker(settings, @logger)
|
121
|
-
@health_metrics = self.class.build_health_metrics(settings, @logger)
|
123
|
+
@runtime_metrics = self.class.build_runtime_metrics_worker(settings, @logger, telemetry)
|
124
|
+
@health_metrics = self.class.build_health_metrics(settings, @logger, telemetry)
|
122
125
|
@appsec = Datadog::AppSec::Component.build_appsec_component(settings, telemetry: telemetry)
|
123
126
|
@dynamic_instrumentation = Datadog::DI::Component.build(settings, agent_settings, @logger, telemetry: telemetry)
|
127
|
+
@error_tracking = Datadog::ErrorTracking::Component.build(settings, @tracer, @logger)
|
124
128
|
@environment_logger_extra[:dynamic_instrumentation_enabled] = !!@dynamic_instrumentation
|
129
|
+
@process_discovery_fd = Core::ProcessDiscovery.get_and_store_metadata(settings, @logger)
|
125
130
|
|
126
131
|
self.class.configure_tracing(settings)
|
127
132
|
end
|
128
133
|
|
129
134
|
# Starts up components
|
130
135
|
def startup!(settings, old_state: nil)
|
136
|
+
telemetry.start(old_state&.telemetry_enabled?)
|
137
|
+
|
131
138
|
if settings.profiling.enabled
|
132
139
|
if profiler
|
133
140
|
profiler.start
|
@@ -138,7 +145,7 @@ module Datadog
|
|
138
145
|
end
|
139
146
|
end
|
140
147
|
|
141
|
-
if settings.remote.enabled && old_state&.
|
148
|
+
if settings.remote.enabled && old_state&.remote_started?
|
142
149
|
# The library was reconfigured and previously it already started
|
143
150
|
# the remote component (i.e., it received at least one request
|
144
151
|
# through the installed Rack middleware which started the remote).
|
@@ -156,20 +163,20 @@ module Datadog
|
|
156
163
|
# and avoid tearing down parts still in use.
|
157
164
|
def shutdown!(replacement = nil)
|
158
165
|
# Shutdown remote configuration
|
159
|
-
remote
|
166
|
+
remote&.shutdown!
|
160
167
|
|
161
168
|
# Shutdown DI after remote, since remote config triggers DI operations.
|
162
169
|
dynamic_instrumentation&.shutdown!
|
163
170
|
|
164
171
|
# Decommission AppSec
|
165
|
-
appsec
|
172
|
+
appsec&.shutdown!
|
166
173
|
|
167
174
|
# Shutdown the old tracer, unless it's still being used.
|
168
175
|
# (e.g. a custom tracer instance passed in.)
|
169
|
-
tracer.shutdown! unless replacement && tracer
|
176
|
+
tracer.shutdown! unless replacement && tracer.equal?(replacement.tracer)
|
170
177
|
|
171
178
|
# Shutdown old profiler
|
172
|
-
profiler
|
179
|
+
profiler&.shutdown!
|
173
180
|
|
174
181
|
# Shutdown workers
|
175
182
|
runtime_metrics.stop(true, close_metrics: false)
|
@@ -187,21 +194,31 @@ module Datadog
|
|
187
194
|
health_metrics.statsd
|
188
195
|
].compact.uniq
|
189
196
|
|
190
|
-
new_statsd =
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
197
|
+
new_statsd = if replacement
|
198
|
+
[
|
199
|
+
replacement.runtime_metrics.metrics.statsd,
|
200
|
+
replacement.health_metrics.statsd
|
201
|
+
].compact.uniq
|
202
|
+
else
|
203
|
+
[]
|
204
|
+
end
|
198
205
|
|
199
206
|
unused_statsd = (old_statsd - (old_statsd & new_statsd))
|
200
207
|
unused_statsd.each(&:close)
|
201
208
|
|
202
|
-
# enqueue closing event before stopping telemetry so it will be
|
203
|
-
telemetry.emit_closing! unless replacement
|
204
|
-
telemetry.
|
209
|
+
# enqueue closing event before stopping telemetry so it will be sent out on shutdown
|
210
|
+
telemetry.emit_closing! unless replacement&.telemetry&.enabled
|
211
|
+
telemetry.shutdown!
|
212
|
+
|
213
|
+
@process_discovery_fd&.shutdown!
|
214
|
+
end
|
215
|
+
|
216
|
+
# Returns the current state of various components.
|
217
|
+
def state
|
218
|
+
ComponentsState.new(
|
219
|
+
telemetry_enabled: telemetry.enabled,
|
220
|
+
remote_started: remote&.started?,
|
221
|
+
)
|
205
222
|
end
|
206
223
|
end
|
207
224
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Datadog
|
4
|
+
module Core
|
5
|
+
module Configuration
|
6
|
+
# Stores the state of component tree when replacing the tree.
|
7
|
+
class ComponentsState
|
8
|
+
def initialize(telemetry_enabled:, remote_started:)
|
9
|
+
@telemetry_enabled = !!telemetry_enabled
|
10
|
+
@remote_started = !!remote_started
|
11
|
+
end
|
12
|
+
|
13
|
+
def telemetry_enabled?
|
14
|
+
@telemetry_enabled
|
15
|
+
end
|
16
|
+
|
17
|
+
def remote_started?
|
18
|
+
@remote_started
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -18,6 +18,10 @@ module Datadog
|
|
18
18
|
ENV_DEFAULT_PORT = 'DD_METRIC_AGENT_PORT'
|
19
19
|
end
|
20
20
|
|
21
|
+
module APM
|
22
|
+
ENV_TRACING_ENABLED = 'DD_APM_TRACING_ENABLED'
|
23
|
+
end
|
24
|
+
|
21
25
|
module Agent
|
22
26
|
ENV_DEFAULT_HOST = 'DD_AGENT_HOST'
|
23
27
|
# Some env vars have "trace" in them, but they apply to all products
|