ddtrace 1.13.0 → 1.13.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -1
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +9 -5
- data/lib/datadog/core/configuration/settings.rb +25 -2
- data/lib/datadog/core/environment/execution.rb +55 -0
- data/lib/datadog/profiling/http_transport.rb +9 -2
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +5 -2
- 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.rb +1 -0
- data/lib/ddtrace/version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77f5ce82c1888cc91b59b92651e262367f416298b668da0ed48ff06ec6f6fb49
|
4
|
+
data.tar.gz: 17857f0840b31f08f505661bf07764c79a507e670ef6d378e8bc2688b6be13eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbfce752c4991fe0d71df92527eb3774483dbd4a669d6ff21e3483e2e4dd5caeb0da2a350fb09fd074639c9bdf032dfc166e2e1f60c8493eb98a45e14cf6d523
|
7
|
+
data.tar.gz: 83de702f81507366ac6afdc37b26df8e1b2df8e283a195e5e8ed5088871e0b3f7ab3035519c3cebd1f15e09935c54119e6093e3d3da010429468a6ecb4710841
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,18 @@
|
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
4
|
|
5
|
+
## [1.13.1] - 2023-08-14
|
6
|
+
|
7
|
+
### Fixed
|
8
|
+
|
9
|
+
* Tracing: `net/http` instrumentation excludes query string for `http.url` tag ([#3045][])
|
10
|
+
* Tracing: Remove `log_tags` warning when given hash for log injection ([#3022][])
|
11
|
+
* Tracing: Fix OpenSearch integration loading ([#3019][])
|
12
|
+
* Core: Fix default hostname/port when mixing http and uds configuration ([#3037][])
|
13
|
+
* Core: Disable Telemetry and Remote Configuration in development environments ([#3039][])
|
14
|
+
* Profiling: Improve `Datadog::Profiling::HttpTransport` error logging ([#3038][])
|
15
|
+
* Docs: Document known issues with hanging Resque workers ([#3033][])
|
16
|
+
|
5
17
|
## [1.13.0] - 2023-07-31
|
6
18
|
|
7
19
|
### Added
|
@@ -2503,7 +2515,8 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
|
|
2503
2515
|
|
2504
2516
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
2505
2517
|
|
2506
|
-
[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v1.13.
|
2518
|
+
[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v1.13.1...master
|
2519
|
+
[1.13.1]: https://github.com/DataDog/dd-trace-rb/compare/v1.13.0...1.13.1
|
2507
2520
|
[1.13.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.12.1...v1.13.0
|
2508
2521
|
[1.12.1]: https://github.com/DataDog/dd-trace-rb/compare/v1.12.0...v1.12.1
|
2509
2522
|
[1.12.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.11.1...v1.12.0
|
@@ -3638,6 +3651,13 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
|
3638
3651
|
[#3005]: https://github.com/DataDog/dd-trace-rb/issues/3005
|
3639
3652
|
[#3007]: https://github.com/DataDog/dd-trace-rb/issues/3007
|
3640
3653
|
[#3011]: https://github.com/DataDog/dd-trace-rb/issues/3011
|
3654
|
+
[#3019]: https://github.com/DataDog/dd-trace-rb/issues/3019
|
3655
|
+
[#3022]: https://github.com/DataDog/dd-trace-rb/issues/3022
|
3656
|
+
[#3033]: https://github.com/DataDog/dd-trace-rb/issues/3033
|
3657
|
+
[#3037]: https://github.com/DataDog/dd-trace-rb/issues/3037
|
3658
|
+
[#3038]: https://github.com/DataDog/dd-trace-rb/issues/3038
|
3659
|
+
[#3039]: https://github.com/DataDog/dd-trace-rb/issues/3039
|
3660
|
+
[#3045]: https://github.com/DataDog/dd-trace-rb/issues/3045
|
3641
3661
|
[@AdrianLC]: https://github.com/AdrianLC
|
3642
3662
|
[@Azure7111]: https://github.com/Azure7111
|
3643
3663
|
[@BabyGroot]: https://github.com/BabyGroot
|
@@ -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
|
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Datadog
|
4
|
+
module Core
|
5
|
+
module Environment
|
6
|
+
# Provides information about the execution environment on the current process.
|
7
|
+
module Execution
|
8
|
+
class << self
|
9
|
+
# Is this process running in a development environment?
|
10
|
+
# This can be used to make decisions about when to enable
|
11
|
+
# background systems like worker threads or telemetry.
|
12
|
+
def development?
|
13
|
+
!!(repl? || test?)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
# Is this process running a test?
|
19
|
+
def test?
|
20
|
+
rspec? || minitest?
|
21
|
+
end
|
22
|
+
|
23
|
+
# Is this process running inside on a Read–eval–print loop?
|
24
|
+
# DEV: REPLs always set the program name to the exact REPL name.
|
25
|
+
def repl?
|
26
|
+
REPL_PROGRAM_NAMES.include?($PROGRAM_NAME)
|
27
|
+
end
|
28
|
+
|
29
|
+
REPL_PROGRAM_NAMES = %w[irb pry].freeze
|
30
|
+
private_constant :REPL_PROGRAM_NAMES
|
31
|
+
|
32
|
+
# RSpec always runs using the `rspec` file https://github.com/rspec/rspec-core/blob/main/exe/rspec
|
33
|
+
def rspec?
|
34
|
+
$PROGRAM_NAME.end_with?(RSPEC_PROGRAM_NAME)
|
35
|
+
end
|
36
|
+
|
37
|
+
RSPEC_PROGRAM_NAME = '/rspec'
|
38
|
+
private_constant :RSPEC_PROGRAM_NAME
|
39
|
+
|
40
|
+
# Check if Minitest is present and installed to run.
|
41
|
+
def minitest?
|
42
|
+
# Minitest >= 5
|
43
|
+
(defined?(::Minitest) &&
|
44
|
+
::Minitest.class_variable_defined?(:@@installed_at_exit) &&
|
45
|
+
::Minitest.class_variable_get(:@@installed_at_exit)) ||
|
46
|
+
# Minitest < 5
|
47
|
+
(defined?(::Minitest::Unit) &&
|
48
|
+
::Minitest::Unit.class_variable_defined?(:@@installed_at_exit) &&
|
49
|
+
::Minitest::Unit.class_variable_get(:@@installed_at_exit))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -48,11 +48,14 @@ module Datadog
|
|
48
48
|
Datadog.logger.debug('Successfully reported profiling data')
|
49
49
|
true
|
50
50
|
else
|
51
|
-
Datadog.logger.error(
|
51
|
+
Datadog.logger.error(
|
52
|
+
"Failed to report profiling data (#{config_without_api_key}): " \
|
53
|
+
"server returned unexpected HTTP #{result} status code"
|
54
|
+
)
|
52
55
|
false
|
53
56
|
end
|
54
57
|
else
|
55
|
-
Datadog.logger.error("Failed to report profiling data: #{result}")
|
58
|
+
Datadog.logger.error("Failed to report profiling data (#{config_without_api_key}): #{result}")
|
56
59
|
false
|
57
60
|
end
|
58
61
|
end
|
@@ -128,6 +131,10 @@ module Datadog
|
|
128
131
|
internal_metadata_json,
|
129
132
|
)
|
130
133
|
end
|
134
|
+
|
135
|
+
def config_without_api_key
|
136
|
+
[@exporter_configuration[0..1]].to_h
|
137
|
+
end
|
131
138
|
end
|
132
139
|
end
|
133
140
|
end
|
@@ -3,6 +3,7 @@ require 'uri'
|
|
3
3
|
require_relative '../../metadata/ext'
|
4
4
|
require_relative '../analytics'
|
5
5
|
require_relative '../http_annotation_helper'
|
6
|
+
require_relative '../utils/quantization/http'
|
6
7
|
|
7
8
|
module Datadog
|
8
9
|
module Tracing
|
@@ -79,8 +80,10 @@ module Datadog
|
|
79
80
|
|
80
81
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
81
82
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_REQUEST)
|
82
|
-
|
83
|
-
|
83
|
+
span.set_tag(
|
84
|
+
Tracing::Metadata::Ext::HTTP::TAG_URL,
|
85
|
+
Contrib::Utils::Quantization::HTTP.url(request.path, { query: { exclude: :all } })
|
86
|
+
)
|
84
87
|
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request.method)
|
85
88
|
|
86
89
|
host, port = host_and_port(request)
|
@@ -8,9 +8,12 @@ module Datadog
|
|
8
8
|
module_function
|
9
9
|
|
10
10
|
# Use `app.config.log_tags` to inject propagation tags into the default Rails logger.
|
11
|
-
def configure_log_tags(
|
12
|
-
|
13
|
-
|
11
|
+
def configure_log_tags(app_config)
|
12
|
+
# When using SemanticLogger, app_config.log_tags could be a Hash and should not be modified here
|
13
|
+
return unless app_config.log_tags.nil? || app_config.log_tags.respond_to?(:<<)
|
14
|
+
|
15
|
+
app_config.log_tags ||= [] # Can be nil, we initialized it if so
|
16
|
+
app_config.log_tags << proc { Tracing.log_correlation if Datadog.configuration.tracing.log_injection }
|
14
17
|
rescue StandardError => e
|
15
18
|
Datadog.logger.warn(
|
16
19
|
"Unable to add Datadog Trace context to ActiveSupport::TaggedLogging: #{e.class.name} #{e.message}"
|
@@ -41,7 +41,7 @@ module Datadog
|
|
41
41
|
# Sometimes we don't want to activate middleware e.g. OpenTracing, etc.
|
42
42
|
add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware]
|
43
43
|
|
44
|
-
Rails::LogInjection.configure_log_tags(app)
|
44
|
+
Rails::LogInjection.configure_log_tags(app.config)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -58,6 +58,7 @@ require_relative 'contrib/kafka/integration'
|
|
58
58
|
require_relative 'contrib/lograge/integration'
|
59
59
|
require_relative 'contrib/mongodb/integration'
|
60
60
|
require_relative 'contrib/mysql2/integration'
|
61
|
+
require_relative 'contrib/opensearch/integration'
|
61
62
|
require_relative 'contrib/pg/integration'
|
62
63
|
require_relative 'contrib/presto/integration'
|
63
64
|
require_relative 'contrib/qless/integration'
|
data/lib/ddtrace/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddtrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.13.
|
4
|
+
version: 1.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -244,6 +244,7 @@ files:
|
|
244
244
|
- lib/datadog/core/environment/cgroup.rb
|
245
245
|
- lib/datadog/core/environment/class_count.rb
|
246
246
|
- lib/datadog/core/environment/container.rb
|
247
|
+
- lib/datadog/core/environment/execution.rb
|
247
248
|
- lib/datadog/core/environment/ext.rb
|
248
249
|
- lib/datadog/core/environment/gc.rb
|
249
250
|
- lib/datadog/core/environment/identity.rb
|
@@ -892,7 +893,7 @@ licenses:
|
|
892
893
|
metadata:
|
893
894
|
allowed_push_host: https://rubygems.org
|
894
895
|
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md
|
895
|
-
post_install_message:
|
896
|
+
post_install_message:
|
896
897
|
rdoc_options: []
|
897
898
|
require_paths:
|
898
899
|
- lib
|
@@ -910,8 +911,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
910
911
|
- !ruby/object:Gem::Version
|
911
912
|
version: 2.0.0
|
912
913
|
requirements: []
|
913
|
-
rubygems_version: 3.4.
|
914
|
-
signing_key:
|
914
|
+
rubygems_version: 3.4.10
|
915
|
+
signing_key:
|
915
916
|
specification_version: 4
|
916
917
|
summary: Datadog tracing code for your Ruby applications
|
917
918
|
test_files: []
|