ddtrace 1.13.0 → 1.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +50 -1
- data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +15 -0
- data/lib/datadog/appsec/configuration/settings.rb +7 -1
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +9 -5
- data/lib/datadog/core/configuration/components.rb +2 -0
- data/lib/datadog/core/configuration/settings.rb +25 -2
- data/lib/datadog/core/diagnostics/environment_logger.rb +130 -234
- data/lib/datadog/core/environment/execution.rb +65 -0
- data/lib/datadog/core/telemetry/collector.rb +10 -2
- data/lib/datadog/profiling/component.rb +14 -4
- data/lib/datadog/profiling/diagnostics/environment_logger.rb +39 -0
- data/lib/datadog/profiling/exporter.rb +4 -4
- data/lib/datadog/profiling/flush.rb +2 -4
- data/lib/datadog/profiling/http_transport.rb +9 -2
- data/lib/datadog/profiling.rb +1 -0
- data/lib/datadog/tracing/component.rb +2 -1
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +18 -11
- data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +99 -102
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +5 -2
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -17
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +6 -3
- data/lib/datadog/tracing/contrib/rails/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +3 -20
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +9 -9
- data/lib/datadog/tracing/contrib.rb +1 -0
- data/lib/datadog/tracing/correlation.rb +20 -0
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +159 -0
- data/lib/datadog/tracing/workers/trace_writer.rb +1 -1
- data/lib/ddtrace/version.rb +1 -1
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae7238650b45da9d8bf8f5834af2a29153081e798c2c8733c9bffb8768b6c430
|
4
|
+
data.tar.gz: b9bc8f36d37b91d18754892bd8dbc92cd515b9e38caf8561e23b665f14ee5e9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b4cdffa9d4ee39e6763be4a87dbdf3e351fd29915d4eaea45dc9c800543c65c8eb21375138422280cfed5715d8f23e95e58190752af6631c14453d39b29b263
|
7
|
+
data.tar.gz: fbc970e48e5e5038775368618e672ab7b2405cd6ea9b899136b34e9ae776f26a92436087fb0810ef7d66574c2f694cdea03197cf980b08dc35a9defcf4c3dc74
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,37 @@
|
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
4
|
|
5
|
+
## [1.14.0] - 2023-08-24
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
* Cucumber 8.0.0 support, test CI visibility with cucumber versions 6-8 ([#3061][])
|
10
|
+
* Tracing: Add `ddsource` to #to_log_format ([#3025][])
|
11
|
+
* Core: include peer service configurations in telemetry payload ([#3056][])
|
12
|
+
* Tracing: Improve quantization ([#3041][])
|
13
|
+
|
14
|
+
### Changed
|
15
|
+
|
16
|
+
* Profiling: Disable profiler on Ruby 3.3 due to incompatibility ([#3054][])
|
17
|
+
* Core: EnvironmentLogger adjustments ([#3020][], [#3057][])
|
18
|
+
|
19
|
+
### Fixed
|
20
|
+
|
21
|
+
* Appsec: Fix ASM setting for automated user events. ([#3070][])
|
22
|
+
* Tracing: Fix ActiveRecord adapter name for Rails 7 ([#3051][])
|
23
|
+
|
24
|
+
## [1.13.1] - 2023-08-14
|
25
|
+
|
26
|
+
### Fixed
|
27
|
+
|
28
|
+
* Tracing: `net/http` instrumentation excludes query string for `http.url` tag ([#3045][])
|
29
|
+
* Tracing: Remove `log_tags` warning when given hash for log injection ([#3022][])
|
30
|
+
* Tracing: Fix OpenSearch integration loading ([#3019][])
|
31
|
+
* Core: Fix default hostname/port when mixing http and uds configuration ([#3037][])
|
32
|
+
* Core: Disable Telemetry and Remote Configuration in development environments ([#3039][])
|
33
|
+
* Profiling: Improve `Datadog::Profiling::HttpTransport` error logging ([#3038][])
|
34
|
+
* Docs: Document known issues with hanging Resque workers ([#3033][])
|
35
|
+
|
5
36
|
## [1.13.0] - 2023-07-31
|
6
37
|
|
7
38
|
### Added
|
@@ -2503,7 +2534,9 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
|
|
2503
2534
|
|
2504
2535
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
2505
2536
|
|
2506
|
-
[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v1.
|
2537
|
+
[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v1.14.0...master
|
2538
|
+
[1.14.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.13.1...1.14.0
|
2539
|
+
[1.13.1]: https://github.com/DataDog/dd-trace-rb/compare/v1.13.0...1.13.1
|
2507
2540
|
[1.13.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.12.1...v1.13.0
|
2508
2541
|
[1.12.1]: https://github.com/DataDog/dd-trace-rb/compare/v1.12.0...v1.12.1
|
2509
2542
|
[1.12.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.11.1...v1.12.0
|
@@ -3638,6 +3671,22 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
|
3638
3671
|
[#3005]: https://github.com/DataDog/dd-trace-rb/issues/3005
|
3639
3672
|
[#3007]: https://github.com/DataDog/dd-trace-rb/issues/3007
|
3640
3673
|
[#3011]: https://github.com/DataDog/dd-trace-rb/issues/3011
|
3674
|
+
[#3019]: https://github.com/DataDog/dd-trace-rb/issues/3019
|
3675
|
+
[#3020]: https://github.com/DataDog/dd-trace-rb/issues/3020
|
3676
|
+
[#3022]: https://github.com/DataDog/dd-trace-rb/issues/3022
|
3677
|
+
[#3025]: https://github.com/DataDog/dd-trace-rb/issues/3025
|
3678
|
+
[#3033]: https://github.com/DataDog/dd-trace-rb/issues/3033
|
3679
|
+
[#3037]: https://github.com/DataDog/dd-trace-rb/issues/3037
|
3680
|
+
[#3038]: https://github.com/DataDog/dd-trace-rb/issues/3038
|
3681
|
+
[#3039]: https://github.com/DataDog/dd-trace-rb/issues/3039
|
3682
|
+
[#3041]: https://github.com/DataDog/dd-trace-rb/issues/3041
|
3683
|
+
[#3045]: https://github.com/DataDog/dd-trace-rb/issues/3045
|
3684
|
+
[#3051]: https://github.com/DataDog/dd-trace-rb/issues/3051
|
3685
|
+
[#3054]: https://github.com/DataDog/dd-trace-rb/issues/3054
|
3686
|
+
[#3056]: https://github.com/DataDog/dd-trace-rb/issues/3056
|
3687
|
+
[#3057]: https://github.com/DataDog/dd-trace-rb/issues/3057
|
3688
|
+
[#3061]: https://github.com/DataDog/dd-trace-rb/issues/3061
|
3689
|
+
[#3070]: https://github.com/DataDog/dd-trace-rb/issues/3070
|
3641
3690
|
[@AdrianLC]: https://github.com/AdrianLC
|
3642
3691
|
[@Azure7111]: https://github.com/Azure7111
|
3643
3692
|
[@BabyGroot]: https://github.com/BabyGroot
|
@@ -87,6 +87,7 @@ module Datadog
|
|
87
87
|
on_unknown_os? ||
|
88
88
|
on_unsupported_cpu_arch? ||
|
89
89
|
on_unsupported_ruby_version? ||
|
90
|
+
on_ruby_3_3? ||
|
90
91
|
expected_to_use_mjit_but_mjit_is_disabled? ||
|
91
92
|
libdatadog_not_available? ||
|
92
93
|
libdatadog_not_usable?
|
@@ -269,6 +270,20 @@ module Datadog
|
|
269
270
|
ruby_version_not_supported if RUBY_VERSION.start_with?('2.1.', '2.2.')
|
270
271
|
end
|
271
272
|
|
273
|
+
private_class_method def self.on_ruby_3_3?
|
274
|
+
incompatible_with_3_3 = explain_issue(
|
275
|
+
'the profiler in the current version of ddtrace does not yet support',
|
276
|
+
'Ruby version 3.3.',
|
277
|
+
'(See https://github.com/datadog/dd-trace-rb/issues/3053 for details).',
|
278
|
+
suggested: [
|
279
|
+
'Try upgrading to the latest ddtrace, as this issue may have been',
|
280
|
+
'fixed by now.',
|
281
|
+
] + CONTACT_SUPPORT,
|
282
|
+
)
|
283
|
+
|
284
|
+
incompatible_with_3_3 if RUBY_VERSION.start_with?('3.3.')
|
285
|
+
end
|
286
|
+
|
272
287
|
# On some Rubies, we require the mjit header to be present. If Ruby was installed without MJIT support, we also skip
|
273
288
|
# building the extension.
|
274
289
|
private_class_method def self.expected_to_use_mjit_but_mjit_is_disabled?
|
@@ -15,6 +15,10 @@ module Datadog
|
|
15
15
|
'safe',
|
16
16
|
'extended'
|
17
17
|
].freeze
|
18
|
+
APPSEC_VALID_TRACK_USER_EVENTS_ENABLED_VALUES = [
|
19
|
+
'1',
|
20
|
+
'true'
|
21
|
+
].concat(APPSEC_VALID_TRACK_USER_EVENTS_MODE).freeze
|
18
22
|
|
19
23
|
def self.extended(base)
|
20
24
|
base = base.singleton_class unless base.is_a?(Class)
|
@@ -100,7 +104,7 @@ module Datadog
|
|
100
104
|
if env_value == 'disabled'
|
101
105
|
false
|
102
106
|
else
|
103
|
-
|
107
|
+
APPSEC_VALID_TRACK_USER_EVENTS_ENABLED_VALUES.include?(env_value.strip.downcase)
|
104
108
|
end
|
105
109
|
end
|
106
110
|
end
|
@@ -112,6 +116,8 @@ module Datadog
|
|
112
116
|
o.setter do |v|
|
113
117
|
if APPSEC_VALID_TRACK_USER_EVENTS_MODE.include?(v)
|
114
118
|
v
|
119
|
+
elsif v == 'disabled'
|
120
|
+
'safe'
|
115
121
|
else
|
116
122
|
Datadog.logger.warn(
|
117
123
|
'The appsec.track_user_events.mode value provided is not supported.' \
|
@@ -95,7 +95,7 @@ module Datadog
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def adapter
|
98
|
-
if should_use_uds?
|
98
|
+
if should_use_uds?
|
99
99
|
Datadog::Transport::Ext::UnixSocket::ADAPTER
|
100
100
|
else
|
101
101
|
Datadog::Transport::Ext::HTTP::ADAPTER
|
@@ -222,6 +222,10 @@ module Datadog
|
|
222
222
|
end
|
223
223
|
|
224
224
|
def should_use_uds?
|
225
|
+
can_use_uds? && !mixed_http_and_uds?
|
226
|
+
end
|
227
|
+
|
228
|
+
def can_use_uds?
|
225
229
|
parsed_url && unix_scheme?(parsed_url) ||
|
226
230
|
# If no agent settings have been provided, we try to connect using a local unix socket.
|
227
231
|
# We only do so if the socket is present when `ddtrace` runs.
|
@@ -272,7 +276,7 @@ module Datadog
|
|
272
276
|
'Configuration mismatch: values differ between ' \
|
273
277
|
"#{detected_configurations_in_priority_order
|
274
278
|
.map { |config| "#{config.friendly_name} (#{config.value.inspect})" }.join(' and ')}" \
|
275
|
-
". Using #{detected_configurations_in_priority_order.first.value.inspect}."
|
279
|
+
". Using #{detected_configurations_in_priority_order.first.value.inspect} and ignoring other configuration."
|
276
280
|
)
|
277
281
|
end
|
278
282
|
|
@@ -297,18 +301,18 @@ module Datadog
|
|
297
301
|
def mixed_http_and_uds?
|
298
302
|
return @mixed_http_and_uds if defined?(@mixed_http_and_uds)
|
299
303
|
|
300
|
-
@mixed_http_and_uds = (configured_hostname || configured_port) &&
|
304
|
+
@mixed_http_and_uds = (configured_hostname || configured_port) && can_use_uds?
|
301
305
|
|
302
306
|
if @mixed_http_and_uds
|
303
307
|
warn_if_configuration_mismatch(
|
304
308
|
[
|
305
309
|
DetectedConfiguration.new(
|
306
310
|
friendly_name: 'configuration of hostname/port for http/https use',
|
307
|
-
value: "hostname: '#{
|
311
|
+
value: "hostname: '#{hostname}', port: '#{port}'",
|
308
312
|
),
|
309
313
|
DetectedConfiguration.new(
|
310
314
|
friendly_name: 'configuration for unix domain socket',
|
311
|
-
value:
|
315
|
+
value: parsed_url.to_s,
|
312
316
|
),
|
313
317
|
]
|
314
318
|
)
|
@@ -2,6 +2,7 @@ require 'logger'
|
|
2
2
|
|
3
3
|
require_relative 'base'
|
4
4
|
require_relative 'ext'
|
5
|
+
require_relative '../environment/execution'
|
5
6
|
require_relative '../environment/ext'
|
6
7
|
require_relative '../runtime/ext'
|
7
8
|
require_relative '../telemetry/ext'
|
@@ -559,10 +560,21 @@ module Datadog
|
|
559
560
|
#
|
560
561
|
# @default `DD_INSTRUMENTATION_TELEMETRY_ENABLED` environment variable, otherwise `true`.
|
561
562
|
# Can be disabled as documented [here](https://docs.datadoghq.com/tracing/configure_data_security/#telemetry-collection).
|
563
|
+
# By default, telemetry is disabled in development environments.
|
562
564
|
# @return [Boolean]
|
563
565
|
option :enabled do |o|
|
564
566
|
o.env Core::Telemetry::Ext::ENV_ENABLED
|
565
|
-
o.default
|
567
|
+
o.default do
|
568
|
+
if Datadog::Core::Environment::Execution.development?
|
569
|
+
Datadog.logger.debug do
|
570
|
+
'Development environment detected, disabling Telemetry. ' \
|
571
|
+
'You can enable it with DD_INSTRUMENTATION_TELEMETRY_ENABLED=true.'
|
572
|
+
end
|
573
|
+
false
|
574
|
+
else
|
575
|
+
true
|
576
|
+
end
|
577
|
+
end
|
566
578
|
o.type :bool
|
567
579
|
end
|
568
580
|
|
@@ -586,10 +598,21 @@ module Datadog
|
|
586
598
|
# Enable remote configuration. This allows fetching of remote configuration for live updates.
|
587
599
|
#
|
588
600
|
# @default `DD_REMOTE_CONFIGURATION_ENABLED` environment variable, otherwise `true`.
|
601
|
+
# By default, remote configuration is disabled in development environments.
|
589
602
|
# @return [Boolean]
|
590
603
|
option :enabled do |o|
|
591
604
|
o.env Core::Remote::Ext::ENV_ENABLED
|
592
|
-
o.default
|
605
|
+
o.default do
|
606
|
+
if Datadog::Core::Environment::Execution.development?
|
607
|
+
Datadog.logger.debug do
|
608
|
+
'Development environment detected, disabling Remote Configuration. ' \
|
609
|
+
'You can enable it with DD_REMOTE_CONFIGURATION_ENABLED=true.'
|
610
|
+
end
|
611
|
+
false
|
612
|
+
else
|
613
|
+
true
|
614
|
+
end
|
615
|
+
end
|
593
616
|
o.type :bool
|
594
617
|
end
|
595
618
|
|