datadog 2.0.0.beta1 → 2.0.0.rc1
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 +181 -1
- data/ext/datadog_profiling_native_extension/NativeExtensionDesign.md +1 -1
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +40 -32
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +23 -12
- data/ext/datadog_profiling_native_extension/crashtracker.c +108 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +9 -23
- data/ext/datadog_profiling_native_extension/heap_recorder.c +81 -4
- data/ext/datadog_profiling_native_extension/heap_recorder.h +12 -1
- data/ext/datadog_profiling_native_extension/http_transport.c +1 -94
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +86 -0
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +4 -0
- data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +2 -12
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +25 -86
- data/ext/datadog_profiling_native_extension/profiling.c +2 -0
- data/ext/datadog_profiling_native_extension/ruby_helpers.h +3 -5
- data/ext/datadog_profiling_native_extension/stack_recorder.c +161 -62
- data/lib/datadog/appsec/contrib/devise/tracking.rb +8 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +43 -13
- data/lib/datadog/appsec/event.rb +2 -2
- data/lib/datadog/core/configuration/components.rb +2 -1
- data/lib/datadog/core/configuration/option.rb +7 -5
- data/lib/datadog/core/configuration/settings.rb +34 -79
- data/lib/datadog/core/configuration.rb +20 -4
- data/lib/datadog/core/environment/platform.rb +7 -1
- data/lib/datadog/core/remote/client/capabilities.rb +2 -1
- data/lib/datadog/core/remote/client.rb +1 -5
- data/lib/datadog/core/remote/configuration/repository.rb +1 -1
- data/lib/datadog/core/remote/dispatcher.rb +3 -3
- data/lib/datadog/core/remote/transport/http/config.rb +5 -5
- data/lib/datadog/core/telemetry/client.rb +18 -10
- data/lib/datadog/core/telemetry/emitter.rb +9 -13
- data/lib/datadog/core/telemetry/event.rb +247 -57
- data/lib/datadog/core/telemetry/ext.rb +1 -0
- data/lib/datadog/core/telemetry/heartbeat.rb +1 -3
- data/lib/datadog/core/telemetry/http/ext.rb +4 -1
- data/lib/datadog/core/telemetry/http/response.rb +4 -0
- data/lib/datadog/core/telemetry/http/transport.rb +9 -4
- data/lib/datadog/core/telemetry/request.rb +59 -0
- data/lib/datadog/core/utils/base64.rb +22 -0
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +19 -2
- data/lib/datadog/opentelemetry/sdk/trace/span.rb +3 -17
- data/lib/datadog/profiling/collectors/code_provenance.rb +10 -4
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +25 -0
- data/lib/datadog/profiling/component.rb +49 -17
- data/lib/datadog/profiling/crashtracker.rb +91 -0
- data/lib/datadog/profiling/exporter.rb +6 -3
- data/lib/datadog/profiling/http_transport.rb +7 -11
- data/lib/datadog/profiling/load_native_extension.rb +14 -1
- data/lib/datadog/profiling/profiler.rb +9 -2
- data/lib/datadog/profiling/stack_recorder.rb +6 -2
- data/lib/datadog/profiling.rb +12 -0
- data/lib/datadog/tracing/component.rb +5 -1
- data/lib/datadog/tracing/configuration/dynamic.rb +39 -1
- data/lib/datadog/tracing/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/action_view/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/integration.rb +11 -1
- data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/configuration/resolver.rb +43 -0
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +43 -5
- data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +1 -1
- data/lib/datadog/tracing/correlation.rb +3 -4
- data/lib/datadog/tracing/remote.rb +5 -1
- data/lib/datadog/tracing/sampling/ext.rb +5 -1
- data/lib/datadog/tracing/sampling/matcher.rb +75 -26
- data/lib/datadog/tracing/sampling/rule.rb +27 -4
- data/lib/datadog/tracing/sampling/rule_sampler.rb +19 -1
- data/lib/datadog/tracing/sampling/span/matcher.rb +13 -41
- data/lib/datadog/tracing/span.rb +7 -2
- data/lib/datadog/tracing/span_link.rb +92 -0
- data/lib/datadog/tracing/span_operation.rb +6 -4
- data/lib/datadog/tracing/trace_operation.rb +12 -0
- data/lib/datadog/tracing/tracer.rb +4 -3
- data/lib/datadog/tracing/transport/serializable_trace.rb +3 -1
- data/lib/datadog/tracing/utils.rb +16 -0
- data/lib/datadog/version.rb +1 -1
- metadata +10 -31
- data/lib/datadog/core/telemetry/collector.rb +0 -248
- data/lib/datadog/core/telemetry/v1/app_event.rb +0 -59
- data/lib/datadog/core/telemetry/v1/application.rb +0 -94
- data/lib/datadog/core/telemetry/v1/configuration.rb +0 -27
- data/lib/datadog/core/telemetry/v1/dependency.rb +0 -45
- data/lib/datadog/core/telemetry/v1/host.rb +0 -59
- data/lib/datadog/core/telemetry/v1/install_signature.rb +0 -38
- data/lib/datadog/core/telemetry/v1/integration.rb +0 -66
- data/lib/datadog/core/telemetry/v1/product.rb +0 -36
- data/lib/datadog/core/telemetry/v1/telemetry_request.rb +0 -108
- data/lib/datadog/core/telemetry/v2/app_client_configuration_change.rb +0 -41
- data/lib/datadog/core/telemetry/v2/request.rb +0 -29
@@ -1,66 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../../utils/hash'
|
4
|
-
|
5
|
-
module Datadog
|
6
|
-
module Core
|
7
|
-
module Telemetry
|
8
|
-
module V1
|
9
|
-
# Describes attributes for integration object
|
10
|
-
class Integration
|
11
|
-
using Core::Utils::Hash::Refinement
|
12
|
-
|
13
|
-
ERROR_NIL_ENABLED_MESSAGE = ':enabled must not be nil'
|
14
|
-
ERROR_NIL_NAME_MESSAGE = ':name must not be nil'
|
15
|
-
|
16
|
-
attr_reader \
|
17
|
-
:auto_enabled,
|
18
|
-
:compatible,
|
19
|
-
:enabled,
|
20
|
-
:error,
|
21
|
-
:name,
|
22
|
-
:version
|
23
|
-
|
24
|
-
# @param enabled [Boolean] Whether integration is enabled at time of request
|
25
|
-
# @param name [String] Integration name
|
26
|
-
# @param auto_enabled [Boolean] If integration is not enabled by default, but by user choice
|
27
|
-
# @param compatible [Boolean] If integration is available, but incompatible
|
28
|
-
# @param error [String] Error message if integration fails to load
|
29
|
-
# @param version [String] Integration version (if specified in app-started, it should be for other events too)
|
30
|
-
def initialize(enabled:, name:, auto_enabled: nil, compatible: nil, error: nil, version: nil)
|
31
|
-
validate(enabled: enabled, name: name)
|
32
|
-
@auto_enabled = auto_enabled
|
33
|
-
@compatible = compatible
|
34
|
-
@enabled = enabled
|
35
|
-
@error = error
|
36
|
-
@name = name
|
37
|
-
@version = version
|
38
|
-
end
|
39
|
-
|
40
|
-
def to_h
|
41
|
-
hash = {
|
42
|
-
auto_enabled: @auto_enabled,
|
43
|
-
compatible: @compatible,
|
44
|
-
enabled: @enabled,
|
45
|
-
error: @error,
|
46
|
-
name: @name,
|
47
|
-
version: @version
|
48
|
-
}
|
49
|
-
hash.compact!
|
50
|
-
hash
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
# Validates all required arguments passed to the class on initialization are not nil
|
56
|
-
#
|
57
|
-
# @!visibility private
|
58
|
-
def validate(enabled:, name:)
|
59
|
-
raise ArgumentError, ERROR_NIL_ENABLED_MESSAGE if enabled.nil?
|
60
|
-
raise ArgumentError, ERROR_NIL_NAME_MESSAGE if name.nil?
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../../utils/hash'
|
4
|
-
|
5
|
-
module Datadog
|
6
|
-
module Core
|
7
|
-
module Telemetry
|
8
|
-
module V1
|
9
|
-
# Describes attributes for products object
|
10
|
-
class Product
|
11
|
-
using Core::Utils::Hash::Refinement
|
12
|
-
|
13
|
-
attr_reader \
|
14
|
-
:appsec,
|
15
|
-
:profiler
|
16
|
-
|
17
|
-
# @param appsec [Telemetry::V1::AppSec] Holds custom information about the appsec product
|
18
|
-
# @param profiler [Telemetry::V1::Profiler] Holds custom information about the profiler product
|
19
|
-
def initialize(appsec: nil, profiler: nil)
|
20
|
-
@appsec = appsec
|
21
|
-
@profiler = profiler
|
22
|
-
end
|
23
|
-
|
24
|
-
def to_h
|
25
|
-
hash = {
|
26
|
-
appsec: @appsec,
|
27
|
-
profiler: @profiler
|
28
|
-
}
|
29
|
-
hash.compact!
|
30
|
-
hash
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,108 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../../utils/hash'
|
4
|
-
|
5
|
-
module Datadog
|
6
|
-
module Core
|
7
|
-
module Telemetry
|
8
|
-
module V1
|
9
|
-
# Describes attributes for telemetry API request
|
10
|
-
class TelemetryRequest
|
11
|
-
using Core::Utils::Hash::Refinement
|
12
|
-
|
13
|
-
ERROR_NIL_API_VERSION_MESSAGE = ':api_version must not be nil'
|
14
|
-
ERROR_NIL_APPLICATION_MESSAGE = ':application must not be nil'
|
15
|
-
ERROR_NIL_HOST_MESSAGE = ':host must not be nil'
|
16
|
-
ERROR_NIL_PAYLOAD_MESSAGE = ':payload must not be nil'
|
17
|
-
ERROR_NIL_REQUEST_TYPE_MESSAGE = ':request_type must not be nil'
|
18
|
-
ERROR_NIL_RUNTIME_ID_MESSAGE = ':runtime_id must not be nil'
|
19
|
-
ERROR_NIL_SEQ_ID_MESSAGE = ':seq_id must not be nil'
|
20
|
-
ERROR_NIL_TRACER_TIME_MESSAGE = ':tracer_time must not be nil'
|
21
|
-
|
22
|
-
attr_reader \
|
23
|
-
:api_version,
|
24
|
-
:application,
|
25
|
-
:debug,
|
26
|
-
:host,
|
27
|
-
:payload,
|
28
|
-
:request_type,
|
29
|
-
:runtime_id,
|
30
|
-
:seq_id,
|
31
|
-
:session_id,
|
32
|
-
:tracer_time
|
33
|
-
|
34
|
-
# @param api_version [String] Requested API version, `v1`
|
35
|
-
# @param application [Telemetry::V1::Application] Object that contains information about the environment of the
|
36
|
-
# application
|
37
|
-
# @param host [Telemetry::V1::Host] Object that holds host related information
|
38
|
-
# @param payload [Telemetry::V1::AppEvent] The payload of the request, type impacted by :request_type
|
39
|
-
# @param request_type [String] Requested API function impacting the Payload type, `app-started`
|
40
|
-
# @param runtime_id [String] V4 UUID that represents a tracer session
|
41
|
-
# @param seq_id [Integer] Counter that should be auto incremented every time an API call is being made
|
42
|
-
# @param tracer_time [Integer] Unix timestamp (in seconds) of when the message is being sent
|
43
|
-
# @param debug [Boolean] Flag that enables payload debug mode
|
44
|
-
# @param session_id [String] V4 UUID that represents the session of the top level tracer process, often same\
|
45
|
-
# as runtime_id
|
46
|
-
def initialize(
|
47
|
-
api_version:, application:, host:, payload:, request_type:, runtime_id:, seq_id:, tracer_time:,
|
48
|
-
debug: nil, session_id: nil
|
49
|
-
)
|
50
|
-
validate(
|
51
|
-
api_version: api_version,
|
52
|
-
application: application,
|
53
|
-
host: host,
|
54
|
-
payload: payload,
|
55
|
-
request_type: request_type,
|
56
|
-
runtime_id: runtime_id,
|
57
|
-
seq_id: seq_id,
|
58
|
-
tracer_time: tracer_time
|
59
|
-
)
|
60
|
-
@api_version = api_version
|
61
|
-
@application = application
|
62
|
-
@debug = debug
|
63
|
-
@host = host
|
64
|
-
@payload = payload
|
65
|
-
@request_type = request_type
|
66
|
-
@runtime_id = runtime_id
|
67
|
-
@seq_id = seq_id
|
68
|
-
@session_id = session_id
|
69
|
-
@tracer_time = tracer_time
|
70
|
-
end
|
71
|
-
|
72
|
-
def to_h
|
73
|
-
hash = {
|
74
|
-
api_version: @api_version,
|
75
|
-
application: @application.to_h,
|
76
|
-
debug: @debug,
|
77
|
-
host: @host.to_h,
|
78
|
-
payload: @payload.to_h,
|
79
|
-
request_type: @request_type,
|
80
|
-
runtime_id: @runtime_id,
|
81
|
-
seq_id: @seq_id,
|
82
|
-
session_id: @session_id,
|
83
|
-
tracer_time: @tracer_time
|
84
|
-
}
|
85
|
-
hash.compact!
|
86
|
-
hash
|
87
|
-
end
|
88
|
-
|
89
|
-
private
|
90
|
-
|
91
|
-
# Validates all required arguments passed to the class on initialization are not nil
|
92
|
-
#
|
93
|
-
# @!visibility private
|
94
|
-
def validate(api_version:, application:, host:, payload:, request_type:, runtime_id:, seq_id:, tracer_time:)
|
95
|
-
raise ArgumentError, ERROR_NIL_API_VERSION_MESSAGE if api_version.nil?
|
96
|
-
raise ArgumentError, ERROR_NIL_APPLICATION_MESSAGE if application.nil?
|
97
|
-
raise ArgumentError, ERROR_NIL_HOST_MESSAGE if host.nil?
|
98
|
-
raise ArgumentError, ERROR_NIL_PAYLOAD_MESSAGE if payload.nil?
|
99
|
-
raise ArgumentError, ERROR_NIL_REQUEST_TYPE_MESSAGE if request_type.nil?
|
100
|
-
raise ArgumentError, ERROR_NIL_RUNTIME_ID_MESSAGE if runtime_id.nil?
|
101
|
-
raise ArgumentError, ERROR_NIL_SEQ_ID_MESSAGE if seq_id.nil?
|
102
|
-
raise ArgumentError, ERROR_NIL_TRACER_TIME_MESSAGE if tracer_time.nil?
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'request'
|
4
|
-
|
5
|
-
module Datadog
|
6
|
-
module Core
|
7
|
-
module Telemetry
|
8
|
-
module V2
|
9
|
-
# Telemetry 'app-client-configuration-change' event.
|
10
|
-
# This request should contain client library configuration that have changes since the app-started event.
|
11
|
-
class AppClientConfigurationChange < Request
|
12
|
-
def initialize(configuration_changes, origin: 'unknown')
|
13
|
-
super('app-client-configuration-change')
|
14
|
-
|
15
|
-
@configuration_changes = configuration_changes
|
16
|
-
@origin = origin
|
17
|
-
end
|
18
|
-
|
19
|
-
# @see [Request#to_h]
|
20
|
-
def to_h
|
21
|
-
super.merge(payload: payload)
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def payload
|
27
|
-
{
|
28
|
-
configuration: @configuration_changes.map do |name, value|
|
29
|
-
{
|
30
|
-
name: name,
|
31
|
-
value: value,
|
32
|
-
origin: @origin,
|
33
|
-
}
|
34
|
-
end
|
35
|
-
}
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Datadog
|
4
|
-
module Core
|
5
|
-
module Telemetry
|
6
|
-
module V2
|
7
|
-
# Base request object for Telemetry V2.
|
8
|
-
#
|
9
|
-
# `#to_h` is the main API, which returns a Ruby
|
10
|
-
# Hash that will be serialized as JSON.
|
11
|
-
class Request
|
12
|
-
# @param [String] request_type the Telemetry request type, which dictates how the Hash payload should be processed
|
13
|
-
def initialize(request_type)
|
14
|
-
@request_type = request_type
|
15
|
-
end
|
16
|
-
|
17
|
-
# Converts this request to a Hash that will
|
18
|
-
# be serialized as JSON.
|
19
|
-
# @return [Hash]
|
20
|
-
def to_h
|
21
|
-
{
|
22
|
-
request_type: @request_type
|
23
|
-
}
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|