solarwinds_apm 7.0.1 → 7.1.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/README.md +1 -0
- data/lib/solarwinds_apm/api/transaction_name.rb +7 -6
- data/lib/solarwinds_apm/config.rb +31 -12
- data/lib/solarwinds_apm/opentelemetry/otlp_processor.rb +32 -19
- data/lib/solarwinds_apm/opentelemetry/solarwinds_propagator.rb +8 -2
- data/lib/solarwinds_apm/opentelemetry/solarwinds_response_propagator.rb +5 -15
- data/lib/solarwinds_apm/opentelemetry.rb +3 -0
- data/lib/solarwinds_apm/otel_config.rb +3 -2
- data/lib/solarwinds_apm/sampling/dice.rb +1 -1
- data/lib/solarwinds_apm/sampling/http_sampler.rb +17 -10
- data/lib/solarwinds_apm/sampling/json_sampler.rb +27 -12
- data/lib/solarwinds_apm/sampling/oboe_sampler.rb +50 -57
- data/lib/solarwinds_apm/sampling/sampler.rb +46 -58
- data/lib/solarwinds_apm/sampling/sampling_constants.rb +4 -3
- data/lib/solarwinds_apm/sampling/settings.rb +2 -0
- data/lib/solarwinds_apm/sampling/token_bucket.rb +12 -3
- data/lib/solarwinds_apm/sampling/trace_options.rb +33 -16
- data/lib/solarwinds_apm/sampling.rb +0 -1
- data/lib/solarwinds_apm/support/resource_detector.rb +11 -16
- data/lib/solarwinds_apm/support/transaction_settings.rb +12 -5
- data/lib/solarwinds_apm/version.rb +2 -2
- metadata +44 -2
|
@@ -64,9 +64,7 @@ module SolarWindsAPM
|
|
|
64
64
|
|
|
65
65
|
response = nil
|
|
66
66
|
::OpenTelemetry::Common::Utilities.untraced do
|
|
67
|
-
|
|
68
|
-
request = Net::HTTP::Get.new(url)
|
|
69
|
-
response = http.request(request)
|
|
67
|
+
response = Net::HTTP.get_response(url)
|
|
70
68
|
end
|
|
71
69
|
|
|
72
70
|
raise 'Response returned non-200 status code' unless response&.code.to_i == 200
|
|
@@ -152,26 +150,23 @@ module SolarWindsAPM
|
|
|
152
150
|
end
|
|
153
151
|
|
|
154
152
|
def self.detect_ec2
|
|
155
|
-
|
|
156
|
-
SolarWindsAPM.logger.debug { "#{self.class}/#{__method__}] retrieved resource_attributes: #{attribute.instance_variable_get(:@attributes)}" }
|
|
157
|
-
attribute
|
|
158
|
-
rescue StandardError
|
|
159
|
-
::OpenTelemetry::SDK::Resources::Resource.create({})
|
|
153
|
+
run_opentelemetry_detector(::OpenTelemetry::Resource::Detector::AWS::EC2)
|
|
160
154
|
end
|
|
161
155
|
|
|
162
156
|
def self.detect_azure
|
|
163
|
-
|
|
164
|
-
SolarWindsAPM.logger.debug { "#{self.class}/#{__method__}] retrieved resource_attributes: #{attribute.instance_variable_get(:@attributes)}" }
|
|
165
|
-
attribute
|
|
166
|
-
rescue StandardError
|
|
167
|
-
::OpenTelemetry::SDK::Resources::Resource.create({})
|
|
157
|
+
run_opentelemetry_detector(::OpenTelemetry::Resource::Detector::Azure)
|
|
168
158
|
end
|
|
169
159
|
|
|
170
160
|
def self.detect_container
|
|
171
|
-
|
|
172
|
-
|
|
161
|
+
run_opentelemetry_detector(::OpenTelemetry::Resource::Detector::Container)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def self.run_opentelemetry_detector(detector_class)
|
|
165
|
+
attribute = detector_class.detect
|
|
166
|
+
SolarWindsAPM.logger.debug { "[#{self.class}/#{__method__}] Detector #{detector_class} retrieved: #{attribute.instance_variable_get(:@attributes)}" }
|
|
173
167
|
attribute
|
|
174
|
-
rescue StandardError
|
|
168
|
+
rescue StandardError => e
|
|
169
|
+
SolarWindsAPM.logger.error { "[#{self.class}/#{__method__}] Detector #{detector_class} failed. Error: #{e.message}." }
|
|
175
170
|
::OpenTelemetry::SDK::Resources::Resource.create({})
|
|
176
171
|
end
|
|
177
172
|
|
|
@@ -37,17 +37,24 @@ module SolarWindsAPM
|
|
|
37
37
|
SolarWindsAPM.logger.debug { "[#{self.class}/#{__method__}] enabled_regexps: #{enabled_regexps&.inspect}" }
|
|
38
38
|
SolarWindsAPM.logger.debug { "[#{self.class}/#{__method__}] disabled_regexps: #{disabled_regexps&.inspect}" }
|
|
39
39
|
|
|
40
|
-
return false if
|
|
41
|
-
return true
|
|
42
|
-
return false if
|
|
43
|
-
return true
|
|
40
|
+
return false if matches_any?(disabled_regexps, @url_path)
|
|
41
|
+
return true if matches_any?(enabled_regexps, @url_path)
|
|
42
|
+
return false if matches_any?(disabled_regexps, span_layer)
|
|
43
|
+
return true if matches_any?(enabled_regexps, span_layer)
|
|
44
44
|
|
|
45
45
|
true
|
|
46
46
|
rescue StandardError => e
|
|
47
47
|
SolarWindsAPM.logger.warn do
|
|
48
|
-
"[#{self.class}/#{__method__}] Could not determine tracing status for #{kind}. #{e.inspect}. transaction_settings regexps/extensions igonred/unfiltered."
|
|
48
|
+
"[#{self.class}/#{__method__}] Could not determine tracing status for #{@kind}. #{e.inspect}. transaction_settings regexps/extensions igonred/unfiltered."
|
|
49
49
|
end
|
|
50
50
|
true
|
|
51
51
|
end
|
|
52
|
+
|
|
53
|
+
# Checks if a given string matches any regex in a list.
|
|
54
|
+
def matches_any?(regex_list, string_to_match)
|
|
55
|
+
return false unless regex_list.is_a?(Array)
|
|
56
|
+
|
|
57
|
+
regex_list.any? { |regex| regex.match?(string_to_match) }
|
|
58
|
+
end
|
|
52
59
|
end
|
|
53
60
|
end
|
|
@@ -12,8 +12,8 @@ module SolarWindsAPM
|
|
|
12
12
|
# solarwinds_apm.gemspec during gem build process
|
|
13
13
|
module Version
|
|
14
14
|
MAJOR = 7 # breaking,
|
|
15
|
-
MINOR =
|
|
16
|
-
PATCH =
|
|
15
|
+
MINOR = 1 # feature,
|
|
16
|
+
PATCH = 0 # fix => BFF
|
|
17
17
|
PRE = nil
|
|
18
18
|
|
|
19
19
|
STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: solarwinds_apm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 7.0
|
|
4
|
+
version: 7.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Maia Engeli
|
|
@@ -11,7 +11,7 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date: 2025-
|
|
14
|
+
date: 2025-10-21 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: opentelemetry-exporter-otlp
|
|
@@ -27,6 +27,20 @@ dependencies:
|
|
|
27
27
|
- - ">="
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
29
|
version: 0.29.1
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: opentelemetry-exporter-otlp-logs
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
requirements:
|
|
34
|
+
- - ">="
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: 0.2.1
|
|
37
|
+
type: :runtime
|
|
38
|
+
prerelease: false
|
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
40
|
+
requirements:
|
|
41
|
+
- - ">="
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
version: 0.2.1
|
|
30
44
|
- !ruby/object:Gem::Dependency
|
|
31
45
|
name: opentelemetry-exporter-otlp-metrics
|
|
32
46
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -55,6 +69,34 @@ dependencies:
|
|
|
55
69
|
- - ">="
|
|
56
70
|
- !ruby/object:Gem::Version
|
|
57
71
|
version: 0.31.0
|
|
72
|
+
- !ruby/object:Gem::Dependency
|
|
73
|
+
name: opentelemetry-instrumentation-logger
|
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
|
75
|
+
requirements:
|
|
76
|
+
- - ">="
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: 0.1.0
|
|
79
|
+
type: :runtime
|
|
80
|
+
prerelease: false
|
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
82
|
+
requirements:
|
|
83
|
+
- - ">="
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: 0.1.0
|
|
86
|
+
- !ruby/object:Gem::Dependency
|
|
87
|
+
name: opentelemetry-logs-sdk
|
|
88
|
+
requirement: !ruby/object:Gem::Requirement
|
|
89
|
+
requirements:
|
|
90
|
+
- - ">="
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
version: 0.4.0
|
|
93
|
+
type: :runtime
|
|
94
|
+
prerelease: false
|
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
96
|
+
requirements:
|
|
97
|
+
- - ">="
|
|
98
|
+
- !ruby/object:Gem::Version
|
|
99
|
+
version: 0.4.0
|
|
58
100
|
- !ruby/object:Gem::Dependency
|
|
59
101
|
name: opentelemetry-metrics-sdk
|
|
60
102
|
requirement: !ruby/object:Gem::Requirement
|