datadog 2.23.0 → 2.24.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.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -2
  3. data/ext/datadog_profiling_native_extension/collectors_stack.c +17 -5
  4. data/ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c +239 -0
  5. data/ext/datadog_profiling_native_extension/extconf.rb +4 -1
  6. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +12 -0
  7. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +4 -0
  8. data/ext/datadog_profiling_native_extension/profiling.c +2 -0
  9. data/lib/datadog/appsec/context.rb +2 -1
  10. data/lib/datadog/appsec/remote.rb +1 -9
  11. data/lib/datadog/appsec/security_engine/result.rb +2 -1
  12. data/lib/datadog/core/configuration/config_helper.rb +1 -1
  13. data/lib/datadog/core/configuration/deprecations.rb +2 -2
  14. data/lib/datadog/core/configuration/option_definition.rb +4 -2
  15. data/lib/datadog/core/configuration/options.rb +8 -5
  16. data/lib/datadog/core/configuration/settings.rb +14 -3
  17. data/lib/datadog/core/configuration/supported_configurations.rb +2 -1
  18. data/lib/datadog/core/environment/cgroup.rb +52 -25
  19. data/lib/datadog/core/environment/container.rb +140 -46
  20. data/lib/datadog/core/environment/ext.rb +1 -0
  21. data/lib/datadog/core/environment/process.rb +9 -1
  22. data/lib/datadog/core/rate_limiter.rb +9 -1
  23. data/lib/datadog/core/remote/client.rb +14 -6
  24. data/lib/datadog/core/remote/component.rb +6 -4
  25. data/lib/datadog/core/remote/configuration/content.rb +15 -2
  26. data/lib/datadog/core/remote/configuration/digest.rb +14 -7
  27. data/lib/datadog/core/remote/configuration/repository.rb +1 -1
  28. data/lib/datadog/core/remote/configuration/target.rb +13 -6
  29. data/lib/datadog/core/remote/transport/config.rb +3 -16
  30. data/lib/datadog/core/remote/transport/http/config.rb +4 -44
  31. data/lib/datadog/core/remote/transport/http/negotiation.rb +0 -39
  32. data/lib/datadog/core/remote/transport/http.rb +13 -24
  33. data/lib/datadog/core/remote/transport/negotiation.rb +7 -16
  34. data/lib/datadog/core/telemetry/component.rb +52 -13
  35. data/lib/datadog/core/telemetry/event/app_started.rb +34 -0
  36. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +27 -4
  37. data/lib/datadog/core/telemetry/metrics_manager.rb +9 -0
  38. data/lib/datadog/core/telemetry/request.rb +17 -3
  39. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +2 -32
  40. data/lib/datadog/core/telemetry/transport/http.rb +21 -16
  41. data/lib/datadog/core/telemetry/transport/telemetry.rb +3 -10
  42. data/lib/datadog/core/telemetry/worker.rb +88 -32
  43. data/lib/datadog/core/transport/ext.rb +2 -0
  44. data/lib/datadog/core/transport/http/api/endpoint.rb +9 -4
  45. data/lib/datadog/core/transport/http/api/instance.rb +4 -21
  46. data/lib/datadog/core/transport/http/builder.rb +9 -5
  47. data/lib/datadog/core/transport/http/client.rb +19 -8
  48. data/lib/datadog/core/transport/http.rb +22 -19
  49. data/lib/datadog/core/transport/response.rb +9 -0
  50. data/lib/datadog/core/transport/transport.rb +90 -0
  51. data/lib/datadog/core/utils/only_once_successful.rb +2 -0
  52. data/lib/datadog/core/utils/time.rb +1 -1
  53. data/lib/datadog/core/workers/async.rb +10 -1
  54. data/lib/datadog/core/workers/interval_loop.rb +44 -3
  55. data/lib/datadog/core/workers/polling.rb +2 -0
  56. data/lib/datadog/core/workers/queue.rb +100 -1
  57. data/lib/datadog/data_streams/processor.rb +1 -1
  58. data/lib/datadog/data_streams/transport/http/stats.rb +1 -36
  59. data/lib/datadog/data_streams/transport/http.rb +5 -6
  60. data/lib/datadog/data_streams/transport/stats.rb +3 -17
  61. data/lib/datadog/di/contrib/active_record.rb +31 -5
  62. data/lib/datadog/di/el/compiler.rb +8 -4
  63. data/lib/datadog/di/error.rb +5 -0
  64. data/lib/datadog/di/instrumenter.rb +17 -4
  65. data/lib/datadog/di/probe_builder.rb +2 -1
  66. data/lib/datadog/di/probe_manager.rb +37 -31
  67. data/lib/datadog/di/probe_notification_builder.rb +15 -2
  68. data/lib/datadog/di/remote.rb +89 -84
  69. data/lib/datadog/di/transport/diagnostics.rb +7 -35
  70. data/lib/datadog/di/transport/http/diagnostics.rb +1 -31
  71. data/lib/datadog/di/transport/http/input.rb +1 -31
  72. data/lib/datadog/di/transport/http.rb +28 -17
  73. data/lib/datadog/di/transport/input.rb +7 -34
  74. data/lib/datadog/di.rb +61 -5
  75. data/lib/datadog/open_feature/evaluation_engine.rb +2 -1
  76. data/lib/datadog/open_feature/remote.rb +3 -10
  77. data/lib/datadog/open_feature/transport.rb +9 -11
  78. data/lib/datadog/opentelemetry/api/baggage.rb +1 -1
  79. data/lib/datadog/opentelemetry/configuration/settings.rb +2 -2
  80. data/lib/datadog/opentelemetry/metrics.rb +21 -14
  81. data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +5 -8
  82. data/lib/datadog/profiling/collectors/code_provenance.rb +27 -2
  83. data/lib/datadog/profiling/collectors/info.rb +2 -1
  84. data/lib/datadog/profiling/component.rb +12 -11
  85. data/lib/datadog/profiling/http_transport.rb +4 -1
  86. data/lib/datadog/tracing/contrib/extensions.rb +10 -2
  87. data/lib/datadog/tracing/contrib/karafka/patcher.rb +31 -32
  88. data/lib/datadog/tracing/contrib/status_range_matcher.rb +2 -1
  89. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +3 -1
  90. data/lib/datadog/tracing/contrib/waterdrop/patcher.rb +6 -3
  91. data/lib/datadog/tracing/diagnostics/environment_logger.rb +1 -1
  92. data/lib/datadog/tracing/remote.rb +1 -9
  93. data/lib/datadog/tracing/span_event.rb +2 -2
  94. data/lib/datadog/tracing/span_operation.rb +9 -4
  95. data/lib/datadog/tracing/trace_operation.rb +44 -6
  96. data/lib/datadog/tracing/tracer.rb +42 -16
  97. data/lib/datadog/tracing/transport/http/traces.rb +2 -50
  98. data/lib/datadog/tracing/transport/http.rb +15 -9
  99. data/lib/datadog/tracing/transport/io/client.rb +1 -1
  100. data/lib/datadog/tracing/transport/traces.rb +6 -66
  101. data/lib/datadog/tracing/workers/trace_writer.rb +5 -0
  102. data/lib/datadog/tracing/writer.rb +1 -0
  103. data/lib/datadog/version.rb +2 -2
  104. metadata +7 -13
  105. data/lib/datadog/core/remote/transport/http/api.rb +0 -53
  106. data/lib/datadog/core/telemetry/transport/http/api.rb +0 -43
  107. data/lib/datadog/core/transport/http/api/spec.rb +0 -36
  108. data/lib/datadog/data_streams/transport/http/api.rb +0 -33
  109. data/lib/datadog/data_streams/transport/http/client.rb +0 -21
  110. data/lib/datadog/di/transport/http/api.rb +0 -42
  111. data/lib/datadog/opentelemetry/api/baggage.rbs +0 -26
  112. data/lib/datadog/tracing/transport/http/api.rb +0 -44
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../encoding'
4
- require_relative '../../../transport/http/api/map'
5
- require_relative '../../../transport/http/api/instance'
6
- require_relative '../../../transport/http/api/spec'
7
- require_relative 'negotiation'
8
- require_relative 'config'
9
-
10
- module Datadog
11
- module Core
12
- module Remote
13
- module Transport
14
- module HTTP
15
- # Namespace for API components
16
- module API
17
- # Default API versions
18
- ROOT = 'root'
19
- V7 = 'v0.7'
20
-
21
- module_function
22
-
23
- def defaults
24
- Core::Transport::HTTP::API::Map[
25
- ROOT => Spec.new do |s|
26
- s.info = Negotiation::API::Endpoint.new(
27
- '/info',
28
- )
29
- end,
30
- V7 => Spec.new do |s|
31
- s.config = Config::API::Endpoint.new(
32
- '/v0.7/config',
33
- Core::Encoding::JSONEncoder,
34
- )
35
- end,
36
- ]
37
- end
38
-
39
- class Instance < Core::Transport::HTTP::API::Instance
40
- include Config::API::Instance
41
- include Negotiation::API::Instance
42
- end
43
-
44
- class Spec < Core::Transport::HTTP::API::Spec
45
- include Config::API::Spec
46
- include Negotiation::API::Spec
47
- end
48
- end
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../encoding'
4
- require_relative '../../../transport/http/api/map'
5
- require_relative '../../../transport/http/api/instance'
6
- require_relative '../../../transport/http/api/spec'
7
- require_relative 'telemetry'
8
-
9
- module Datadog
10
- module Core
11
- module Telemetry
12
- module Transport
13
- module HTTP
14
- # Namespace for API components
15
- module API
16
- # Default API versions
17
- AGENT_TELEMETRY = 'agent_telemetry'
18
- AGENTLESS_TELEMETRY = 'agentless_telemetry'
19
-
20
- module_function
21
-
22
- def defaults
23
- Datadog::Core::Transport::HTTP::API::Map[
24
- AGENT_TELEMETRY => Telemetry::API::Spec.new do |s|
25
- s.telemetry = Telemetry::API::Endpoint.new(
26
- '/telemetry/proxy/api/v2/apmtelemetry',
27
- Core::Encoding::JSONEncoder,
28
- )
29
- end,
30
- AGENTLESS_TELEMETRY => Telemetry::API::Spec.new do |s|
31
- s.telemetry = Telemetry::API::Endpoint.new(
32
- '/api/v2/apmtelemetry',
33
- Core::Encoding::JSONEncoder,
34
- )
35
- end,
36
- ]
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Datadog
4
- module Core
5
- module Transport
6
- module HTTP
7
- module API
8
- # Specification for an HTTP API
9
- # Defines behaviors without specific configuration details.
10
- class Spec
11
- # Raised when an endpoint is invoked on an API that did not
12
- # define that endpoint.
13
- class EndpointNotDefinedError < StandardError
14
- attr_reader :spec, :endpoint_name
15
-
16
- def initialize(endpoint_name, spec)
17
- @spec = spec
18
- @endpoint_name = endpoint_name
19
-
20
- super(message)
21
- end
22
-
23
- def message
24
- "No #{endpoint_name} endpoint is defined for API specification!"
25
- end
26
- end
27
-
28
- def initialize
29
- yield(self) if block_given?
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../core/transport/http/api/map'
4
- require_relative '../../../core/transport/http/api/instance'
5
- require_relative '../../../core/transport/http/api/spec'
6
- require_relative '../../../core/transport/http/api/endpoint'
7
- require_relative 'stats'
8
-
9
- module Datadog
10
- module DataStreams
11
- module Transport
12
- module HTTP
13
- # Namespace for API components
14
- module API
15
- # API version
16
- V01 = 'v0.1'
17
-
18
- module_function
19
-
20
- def defaults
21
- Core::Transport::HTTP::API::Map[
22
- V01 => Stats::API::Spec.new do |s|
23
- s.stats = Stats::API::Endpoint.new(
24
- '/v0.1/pipeline_stats'
25
- )
26
- end
27
- ]
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../core/transport/http/client'
4
-
5
- module Datadog
6
- module DataStreams
7
- module Transport
8
- module HTTP
9
- # HTTP client for Data Streams Monitoring
10
- class Client < Core::Transport::HTTP::Client
11
- def send_stats_payload(request)
12
- send_request(request) do |api, env|
13
- # TODO how to make api have the derived type for steep?
14
- api.send_stats(env) # steep:ignore
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../core/encoding'
4
- require_relative '../../../core/transport/http/api/map'
5
- require_relative '../../../core/transport/http/api/instance'
6
- require_relative '../../../core/transport/http/api/spec'
7
- require_relative 'diagnostics'
8
- require_relative 'input'
9
-
10
- module Datadog
11
- module DI
12
- module Transport
13
- module HTTP
14
- # Namespace for API components
15
- module API
16
- # Default API versions
17
- DIAGNOSTICS = 'diagnostics'
18
- INPUT = 'input'
19
-
20
- module_function
21
-
22
- def defaults
23
- Datadog::Core::Transport::HTTP::API::Map[
24
- DIAGNOSTICS => Diagnostics::API::Spec.new do |s|
25
- s.diagnostics = Diagnostics::API::Endpoint.new(
26
- '/debugger/v1/diagnostics',
27
- Core::Encoding::JSONEncoder,
28
- )
29
- end,
30
- INPUT => Input::API::Spec.new do |s|
31
- s.input = Input::API::Endpoint.new(
32
- '/debugger/v1/input',
33
- Core::Encoding::JSONEncoder,
34
- )
35
- end,
36
- ]
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Datadog
4
- module OpenTelemetry
5
- module API
6
- module Baggage
7
- def initialize: (?trace: Datadog::Tracing::TraceOperation?) -> void
8
-
9
- # Returns a new context with empty baggage
10
- def clear: (?context: OpenTelemetry::Context) -> OpenTelemetry::Context
11
-
12
- # Returns the corresponding value for key
13
- def value: (String key, ?context: OpenTelemetry::Context) -> String?
14
-
15
- # Returns all baggage values
16
- def values: (?context: OpenTelemetry::Context) -> Hash[String, String]
17
-
18
- # Returns a new context with key-value pair
19
- def set_value: (String key, String value, ?metadata: String?, ?context: OpenTelemetry::Context) -> OpenTelemetry::Context
20
-
21
- # Returns a new context with value at key removed
22
- def remove_value: (String key, ?context: OpenTelemetry::Context) -> OpenTelemetry::Context
23
- end
24
- end
25
- end
26
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../core/encoding'
4
-
5
- require_relative '../../../core/transport/http/api/map'
6
- require_relative '../../../core/transport/http/api/instance'
7
- require_relative '../../../core/transport/http/api/spec'
8
-
9
- require_relative 'traces'
10
-
11
- module Datadog
12
- module Tracing
13
- module Transport
14
- module HTTP
15
- # Namespace for API components
16
- module API
17
- # Default API versions
18
- V4 = 'v0.4'
19
- V3 = 'v0.3'
20
-
21
- module_function
22
-
23
- def defaults
24
- Core::Transport::HTTP::API::Map[
25
- V4 => Traces::API::Spec.new do |s|
26
- s.traces = Traces::API::Endpoint.new(
27
- '/v0.4/traces',
28
- Core::Encoding::MsgpackEncoder,
29
- service_rates: true
30
- )
31
- end,
32
- V3 => Traces::API::Spec.new do |s|
33
- s.traces = Traces::API::Endpoint.new(
34
- '/v0.3/traces',
35
- Core::Encoding::MsgpackEncoder
36
- )
37
- end,
38
- ].with_fallbacks(V4 => V3)
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end