datadog 2.14.0 → 2.16.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 +67 -1
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +7 -6
- 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 +69 -0
- data/ext/datadog_profiling_native_extension/encoded_profile.h +7 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +3 -0
- data/ext/datadog_profiling_native_extension/heap_recorder.c +8 -1
- data/ext/datadog_profiling_native_extension/http_transport.c +25 -32
- data/ext/datadog_profiling_native_extension/profiling.c +2 -0
- data/ext/datadog_profiling_native_extension/stack_recorder.c +22 -21
- data/ext/libdatadog_api/crashtracker.c +1 -9
- 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/init.c +15 -0
- data/ext/libdatadog_api/library_config.c +122 -0
- data/ext/libdatadog_api/library_config.h +19 -0
- data/ext/libdatadog_api/process_discovery.c +117 -0
- data/ext/libdatadog_api/process_discovery.h +5 -0
- data/lib/datadog/appsec/actions_handler.rb +3 -2
- data/lib/datadog/appsec/assets/waf_rules/README.md +50 -5
- data/lib/datadog/appsec/assets/waf_rules/processors.json +239 -10
- data/lib/datadog/appsec/assets/waf_rules/scanners.json +926 -17
- data/lib/datadog/appsec/autoload.rb +1 -1
- data/lib/datadog/appsec/component.rb +29 -20
- data/lib/datadog/appsec/compressed_json.rb +40 -0
- data/lib/datadog/appsec/configuration/settings.rb +31 -18
- data/lib/datadog/appsec/context.rb +1 -1
- 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/devise/data_extractor.rb +2 -3
- data/lib/datadog/appsec/contrib/devise/ext.rb +1 -0
- data/lib/datadog/appsec/contrib/devise/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/devise/patcher.rb +3 -5
- data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +17 -4
- 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/gateway/watcher.rb +22 -32
- data/lib/datadog/appsec/contrib/rack/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +16 -16
- 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 +95 -134
- data/lib/datadog/appsec/instrumentation/gateway/argument.rb +5 -2
- data/lib/datadog/appsec/metrics/telemetry.rb +1 -1
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +42 -12
- data/lib/datadog/appsec/processor/rule_loader.rb +26 -28
- data/lib/datadog/appsec/processor/rule_merger.rb +5 -5
- data/lib/datadog/appsec/processor.rb +1 -1
- data/lib/datadog/appsec/remote.rb +16 -11
- data/lib/datadog/appsec/response.rb +6 -6
- data/lib/datadog/appsec/security_engine/runner.rb +1 -1
- data/lib/datadog/appsec/security_event.rb +39 -0
- data/lib/datadog/appsec.rb +1 -1
- data/lib/datadog/core/configuration/agentless_settings_resolver.rb +176 -0
- data/lib/datadog/core/configuration/components.rb +19 -10
- data/lib/datadog/core/configuration/option.rb +61 -25
- data/lib/datadog/core/configuration/settings.rb +10 -0
- data/lib/datadog/core/configuration/stable_config.rb +23 -0
- data/lib/datadog/core/configuration.rb +24 -0
- data/lib/datadog/core/crashtracking/component.rb +1 -9
- data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
- data/lib/datadog/core/environment/git.rb +1 -0
- data/lib/datadog/core/environment/variable_helpers.rb +1 -1
- data/lib/datadog/core/metrics/client.rb +8 -7
- data/lib/datadog/core/process_discovery.rb +32 -0
- data/lib/datadog/core/remote/client.rb +7 -0
- data/lib/datadog/core/runtime/metrics.rb +1 -1
- data/lib/datadog/core/telemetry/component.rb +60 -50
- data/lib/datadog/core/telemetry/emitter.rb +17 -11
- data/lib/datadog/core/telemetry/event.rb +7 -4
- data/lib/datadog/core/telemetry/http/adapters/net.rb +12 -97
- data/lib/datadog/core/telemetry/metric.rb +5 -5
- 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 +52 -0
- data/lib/datadog/core/telemetry/worker.rb +45 -0
- data/lib/datadog/core/utils/time.rb +12 -0
- data/lib/datadog/core/workers/async.rb +20 -2
- 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/probe_notification_builder.rb +1 -1
- data/lib/datadog/di/remote.rb +2 -0
- data/lib/datadog/di/transport/http/diagnostics.rb +0 -1
- data/lib/datadog/di/transport/http/input.rb +0 -1
- data/lib/datadog/di/transport/http.rb +0 -6
- data/lib/datadog/di.rb +5 -32
- 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/identity.rb +1 -1
- data/lib/datadog/profiling/collectors/info.rb +3 -0
- data/lib/datadog/profiling/encoded_profile.rb +11 -0
- data/lib/datadog/profiling/exporter.rb +3 -4
- data/lib/datadog/profiling/ext.rb +0 -1
- data/lib/datadog/profiling/flush.rb +4 -7
- data/lib/datadog/profiling/http_transport.rb +10 -59
- data/lib/datadog/profiling/stack_recorder.rb +4 -4
- data/lib/datadog/profiling.rb +1 -0
- data/lib/datadog/tracing/analytics.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/karafka/monitor.rb +1 -1
- 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/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/rack/request_queue.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +1 -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/datadog.rb +2 -2
- data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -1
- data/lib/datadog/tracing/span_event.rb +1 -1
- data/lib/datadog/tracing/span_operation.rb +38 -14
- data/lib/datadog/tracing/trace_operation.rb +15 -7
- data/lib/datadog/tracing/tracer.rb +7 -3
- data/lib/datadog/tracing/utils.rb +1 -1
- data/lib/datadog/version.rb +1 -1
- data/lib/datadog.rb +2 -3
- metadata +40 -10
- 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
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datadog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -31,6 +31,9 @@ dependencies:
|
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '3.4'
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 3.4.1
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -38,20 +41,23 @@ dependencies:
|
|
38
41
|
- - "~>"
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '3.4'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 3.4.1
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: libddwaf
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
53
|
+
version: 1.22.0.0.2
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
60
|
+
version: 1.22.0.0.2
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: libdatadog
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -120,6 +126,8 @@ files:
|
|
120
126
|
- ext/datadog_profiling_native_extension/collectors_thread_context.h
|
121
127
|
- ext/datadog_profiling_native_extension/datadog_ruby_common.c
|
122
128
|
- ext/datadog_profiling_native_extension/datadog_ruby_common.h
|
129
|
+
- ext/datadog_profiling_native_extension/encoded_profile.c
|
130
|
+
- ext/datadog_profiling_native_extension/encoded_profile.h
|
123
131
|
- ext/datadog_profiling_native_extension/extconf.rb
|
124
132
|
- ext/datadog_profiling_native_extension/gvl_profiling_helper.c
|
125
133
|
- ext/datadog_profiling_native_extension/gvl_profiling_helper.h
|
@@ -144,10 +152,16 @@ files:
|
|
144
152
|
- ext/datadog_profiling_native_extension/unsafe_api_calls_check.c
|
145
153
|
- ext/datadog_profiling_native_extension/unsafe_api_calls_check.h
|
146
154
|
- ext/libdatadog_api/crashtracker.c
|
155
|
+
- ext/libdatadog_api/crashtracker.h
|
147
156
|
- ext/libdatadog_api/datadog_ruby_common.c
|
148
157
|
- ext/libdatadog_api/datadog_ruby_common.h
|
149
158
|
- ext/libdatadog_api/extconf.rb
|
159
|
+
- ext/libdatadog_api/init.c
|
160
|
+
- ext/libdatadog_api/library_config.c
|
161
|
+
- ext/libdatadog_api/library_config.h
|
150
162
|
- ext/libdatadog_api/macos_development.md
|
163
|
+
- ext/libdatadog_api/process_discovery.c
|
164
|
+
- ext/libdatadog_api/process_discovery.h
|
151
165
|
- ext/libdatadog_extconf_helpers.rb
|
152
166
|
- lib/datadog.rb
|
153
167
|
- lib/datadog/appsec.rb
|
@@ -165,6 +179,7 @@ files:
|
|
165
179
|
- lib/datadog/appsec/assets/waf_rules/strict.json
|
166
180
|
- lib/datadog/appsec/autoload.rb
|
167
181
|
- lib/datadog/appsec/component.rb
|
182
|
+
- lib/datadog/appsec/compressed_json.rb
|
168
183
|
- lib/datadog/appsec/configuration.rb
|
169
184
|
- lib/datadog/appsec/configuration/settings.rb
|
170
185
|
- lib/datadog/appsec/context.rb
|
@@ -244,6 +259,7 @@ files:
|
|
244
259
|
- lib/datadog/appsec/security_engine.rb
|
245
260
|
- lib/datadog/appsec/security_engine/result.rb
|
246
261
|
- lib/datadog/appsec/security_engine/runner.rb
|
262
|
+
- lib/datadog/appsec/security_event.rb
|
247
263
|
- lib/datadog/appsec/utils.rb
|
248
264
|
- lib/datadog/appsec/utils/http.rb
|
249
265
|
- lib/datadog/appsec/utils/http/media_range.rb
|
@@ -257,6 +273,7 @@ files:
|
|
257
273
|
- lib/datadog/core/chunker.rb
|
258
274
|
- lib/datadog/core/configuration.rb
|
259
275
|
- lib/datadog/core/configuration/agent_settings_resolver.rb
|
276
|
+
- lib/datadog/core/configuration/agentless_settings_resolver.rb
|
260
277
|
- lib/datadog/core/configuration/base.rb
|
261
278
|
- lib/datadog/core/configuration/components.rb
|
262
279
|
- lib/datadog/core/configuration/ext.rb
|
@@ -264,6 +281,7 @@ files:
|
|
264
281
|
- lib/datadog/core/configuration/option_definition.rb
|
265
282
|
- lib/datadog/core/configuration/options.rb
|
266
283
|
- lib/datadog/core/configuration/settings.rb
|
284
|
+
- lib/datadog/core/configuration/stable_config.rb
|
267
285
|
- lib/datadog/core/contrib/rails/utils.rb
|
268
286
|
- lib/datadog/core/crashtracking/component.rb
|
269
287
|
- lib/datadog/core/crashtracking/tag_builder.rb
|
@@ -299,6 +317,7 @@ files:
|
|
299
317
|
- lib/datadog/core/metrics/metric.rb
|
300
318
|
- lib/datadog/core/metrics/options.rb
|
301
319
|
- lib/datadog/core/pin.rb
|
320
|
+
- lib/datadog/core/process_discovery.rb
|
302
321
|
- lib/datadog/core/rate_limiter.rb
|
303
322
|
- lib/datadog/core/remote.rb
|
304
323
|
- lib/datadog/core/remote/client.rb
|
@@ -331,16 +350,17 @@ files:
|
|
331
350
|
- lib/datadog/core/telemetry/event.rb
|
332
351
|
- lib/datadog/core/telemetry/ext.rb
|
333
352
|
- lib/datadog/core/telemetry/http/adapters/net.rb
|
334
|
-
- lib/datadog/core/telemetry/http/env.rb
|
335
|
-
- lib/datadog/core/telemetry/http/ext.rb
|
336
|
-
- lib/datadog/core/telemetry/http/response.rb
|
337
|
-
- lib/datadog/core/telemetry/http/transport.rb
|
338
353
|
- lib/datadog/core/telemetry/logger.rb
|
339
354
|
- lib/datadog/core/telemetry/logging.rb
|
340
355
|
- lib/datadog/core/telemetry/metric.rb
|
341
356
|
- lib/datadog/core/telemetry/metrics_collection.rb
|
342
357
|
- lib/datadog/core/telemetry/metrics_manager.rb
|
343
358
|
- lib/datadog/core/telemetry/request.rb
|
359
|
+
- lib/datadog/core/telemetry/transport/http.rb
|
360
|
+
- lib/datadog/core/telemetry/transport/http/api.rb
|
361
|
+
- lib/datadog/core/telemetry/transport/http/client.rb
|
362
|
+
- lib/datadog/core/telemetry/transport/http/telemetry.rb
|
363
|
+
- lib/datadog/core/telemetry/transport/telemetry.rb
|
344
364
|
- lib/datadog/core/telemetry/worker.rb
|
345
365
|
- lib/datadog/core/transport/ext.rb
|
346
366
|
- lib/datadog/core/transport/http.rb
|
@@ -388,6 +408,7 @@ files:
|
|
388
408
|
- lib/datadog/core/workers/runtime_metrics.rb
|
389
409
|
- lib/datadog/di.rb
|
390
410
|
- lib/datadog/di/base.rb
|
411
|
+
- lib/datadog/di/boot.rb
|
391
412
|
- lib/datadog/di/code_tracker.rb
|
392
413
|
- lib/datadog/di/component.rb
|
393
414
|
- lib/datadog/di/configuration.rb
|
@@ -416,6 +437,14 @@ files:
|
|
416
437
|
- lib/datadog/di/transport/http/input.rb
|
417
438
|
- lib/datadog/di/transport/input.rb
|
418
439
|
- lib/datadog/di/utils.rb
|
440
|
+
- lib/datadog/error_tracking.rb
|
441
|
+
- lib/datadog/error_tracking/collector.rb
|
442
|
+
- lib/datadog/error_tracking/component.rb
|
443
|
+
- lib/datadog/error_tracking/configuration.rb
|
444
|
+
- lib/datadog/error_tracking/configuration/settings.rb
|
445
|
+
- lib/datadog/error_tracking/ext.rb
|
446
|
+
- lib/datadog/error_tracking/extensions.rb
|
447
|
+
- lib/datadog/error_tracking/filters.rb
|
419
448
|
- lib/datadog/kit.rb
|
420
449
|
- lib/datadog/kit/appsec/events.rb
|
421
450
|
- lib/datadog/kit/enable_core_dumps.rb
|
@@ -440,6 +469,7 @@ files:
|
|
440
469
|
- lib/datadog/profiling/collectors/stack.rb
|
441
470
|
- lib/datadog/profiling/collectors/thread_context.rb
|
442
471
|
- lib/datadog/profiling/component.rb
|
472
|
+
- lib/datadog/profiling/encoded_profile.rb
|
443
473
|
- lib/datadog/profiling/exporter.rb
|
444
474
|
- lib/datadog/profiling/ext.rb
|
445
475
|
- lib/datadog/profiling/ext/dir_monkey_patches.rb
|
@@ -944,8 +974,8 @@ licenses:
|
|
944
974
|
- Apache-2.0
|
945
975
|
metadata:
|
946
976
|
allowed_push_host: https://rubygems.org
|
947
|
-
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.
|
948
|
-
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.
|
977
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.16.0/CHANGELOG.md
|
978
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.16.0
|
949
979
|
post_install_message:
|
950
980
|
rdoc_options: []
|
951
981
|
require_paths:
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Datadog
|
4
|
-
module Core
|
5
|
-
module Telemetry
|
6
|
-
module Http
|
7
|
-
# Data structure for an HTTP request
|
8
|
-
class Env
|
9
|
-
attr_accessor :path, :body
|
10
|
-
|
11
|
-
attr_writer :headers
|
12
|
-
|
13
|
-
def headers
|
14
|
-
@headers ||= {}
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Datadog
|
4
|
-
module Core
|
5
|
-
module Telemetry
|
6
|
-
module Http
|
7
|
-
module Ext
|
8
|
-
HEADER_DD_API_KEY = 'DD-API-KEY'
|
9
|
-
HEADER_CONTENT_TYPE = 'Content-Type'
|
10
|
-
HEADER_CONTENT_LENGTH = 'Content-Length'
|
11
|
-
HEADER_DD_TELEMETRY_API_VERSION = 'DD-Telemetry-API-Version'
|
12
|
-
HEADER_DD_TELEMETRY_REQUEST_TYPE = 'DD-Telemetry-Request-Type'
|
13
|
-
HEADER_TELEMETRY_DEBUG_ENABLED = 'DD-Telemetry-Debug-Enabled'
|
14
|
-
HEADER_CLIENT_LIBRARY_LANGUAGE = 'DD-Client-Library-Language'
|
15
|
-
HEADER_CLIENT_LIBRARY_VERSION = 'DD-Client-Library-Version'
|
16
|
-
|
17
|
-
CONTENT_TYPE_APPLICATION_JSON = 'application/json'
|
18
|
-
API_VERSION = 'v2'
|
19
|
-
|
20
|
-
AGENTLESS_HOST_PREFIX = 'instrumentation-telemetry-intake'
|
21
|
-
|
22
|
-
AGENT_ENDPOINT = '/telemetry/proxy/api/v2/apmtelemetry'
|
23
|
-
AGENTLESS_ENDPOINT = '/api/v2/apmtelemetry'
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Datadog
|
4
|
-
module Core
|
5
|
-
module Telemetry
|
6
|
-
module Http
|
7
|
-
# Module for base HTTP response
|
8
|
-
module Response
|
9
|
-
def payload
|
10
|
-
nil
|
11
|
-
end
|
12
|
-
|
13
|
-
def ok?
|
14
|
-
nil
|
15
|
-
end
|
16
|
-
|
17
|
-
def unsupported?
|
18
|
-
nil
|
19
|
-
end
|
20
|
-
|
21
|
-
def not_found?
|
22
|
-
nil
|
23
|
-
end
|
24
|
-
|
25
|
-
def client_error?
|
26
|
-
nil
|
27
|
-
end
|
28
|
-
|
29
|
-
def server_error?
|
30
|
-
nil
|
31
|
-
end
|
32
|
-
|
33
|
-
def internal_error?
|
34
|
-
nil
|
35
|
-
end
|
36
|
-
|
37
|
-
def code
|
38
|
-
nil
|
39
|
-
end
|
40
|
-
|
41
|
-
def inspect
|
42
|
-
"#{self.class} ok?:#{ok?} unsupported?:#{unsupported?}, " \
|
43
|
-
"not_found?:#{not_found?}, client_error?:#{client_error?}, " \
|
44
|
-
"server_error?:#{server_error?}, internal_error?:#{internal_error?}, " \
|
45
|
-
"payload:#{payload}"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
# A generic error response for internal errors
|
50
|
-
class InternalErrorResponse
|
51
|
-
include Response
|
52
|
-
|
53
|
-
attr_reader :error
|
54
|
-
|
55
|
-
def initialize(error)
|
56
|
-
@error = error
|
57
|
-
end
|
58
|
-
|
59
|
-
def internal_error?
|
60
|
-
true
|
61
|
-
end
|
62
|
-
|
63
|
-
def inspect
|
64
|
-
"#{super}, error_type:#{error.class} error:#{error}"
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../../configuration/settings'
|
4
|
-
require_relative '../../environment/ext'
|
5
|
-
require_relative '../../transport/ext'
|
6
|
-
require_relative 'env'
|
7
|
-
require_relative 'ext'
|
8
|
-
require_relative 'adapters/net'
|
9
|
-
|
10
|
-
module Datadog
|
11
|
-
module Core
|
12
|
-
module Telemetry
|
13
|
-
module Http
|
14
|
-
# Class to send telemetry data to Telemetry API
|
15
|
-
# Currently only supports the HTTP protocol.
|
16
|
-
class Transport
|
17
|
-
def self.build_agent_transport(agent_settings)
|
18
|
-
Transport.new(
|
19
|
-
host: agent_settings.hostname,
|
20
|
-
port: agent_settings.port,
|
21
|
-
path: Http::Ext::AGENT_ENDPOINT
|
22
|
-
)
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.build_agentless_transport(api_key:, dd_site:, url_override: nil)
|
26
|
-
url = url_override || "https://#{Http::Ext::AGENTLESS_HOST_PREFIX}.#{dd_site}:443"
|
27
|
-
|
28
|
-
uri = URI.parse(url)
|
29
|
-
raise "Invalid agentless mode URL: #{url}" if uri.host.nil?
|
30
|
-
|
31
|
-
Transport.new(
|
32
|
-
host: uri.host,
|
33
|
-
port: uri.port || 80,
|
34
|
-
path: Http::Ext::AGENTLESS_ENDPOINT,
|
35
|
-
ssl: uri.scheme == 'https' || uri.port == 443,
|
36
|
-
api_key: api_key
|
37
|
-
)
|
38
|
-
end
|
39
|
-
|
40
|
-
attr_reader \
|
41
|
-
:host,
|
42
|
-
:port,
|
43
|
-
:ssl,
|
44
|
-
:path,
|
45
|
-
:api_key
|
46
|
-
|
47
|
-
def initialize(host:, port:, path:, ssl: false, api_key: nil)
|
48
|
-
@host = host
|
49
|
-
@port = port
|
50
|
-
@ssl = ssl
|
51
|
-
@path = path
|
52
|
-
@api_key = api_key
|
53
|
-
end
|
54
|
-
|
55
|
-
def request(request_type:, payload:)
|
56
|
-
env = Http::Env.new
|
57
|
-
env.path = @path
|
58
|
-
env.body = payload
|
59
|
-
env.headers = headers(request_type: request_type)
|
60
|
-
adapter.post(env)
|
61
|
-
end
|
62
|
-
|
63
|
-
private
|
64
|
-
|
65
|
-
def headers(request_type:, api_version: Http::Ext::API_VERSION)
|
66
|
-
result = {
|
67
|
-
Core::Transport::Ext::HTTP::HEADER_DD_INTERNAL_UNTRACED_REQUEST => '1',
|
68
|
-
Ext::HEADER_CONTENT_TYPE => Http::Ext::CONTENT_TYPE_APPLICATION_JSON,
|
69
|
-
Ext::HEADER_DD_TELEMETRY_API_VERSION => api_version,
|
70
|
-
Ext::HEADER_DD_TELEMETRY_REQUEST_TYPE => request_type,
|
71
|
-
Ext::HEADER_CLIENT_LIBRARY_LANGUAGE => Core::Environment::Ext::LANG,
|
72
|
-
Ext::HEADER_CLIENT_LIBRARY_VERSION => Core::Environment::Identity.gem_datadog_version_semver2,
|
73
|
-
|
74
|
-
# Enable debug mode for telemetry
|
75
|
-
# HEADER_TELEMETRY_DEBUG_ENABLED => 'true',
|
76
|
-
}
|
77
|
-
|
78
|
-
result[Ext::HEADER_DD_API_KEY] = api_key unless api_key.nil?
|
79
|
-
|
80
|
-
result
|
81
|
-
end
|
82
|
-
|
83
|
-
def adapter
|
84
|
-
@adapter ||= Http::Adapters::Net.new(hostname: @host, port: @port, ssl: @ssl)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|