opentelemetry-instrumentation-http 0.21.0 → 0.23.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8cd043fd9acb7b66a4d3101812278f657b4ee5910132ff40459db8b89e4374f2
4
- data.tar.gz: c0e8cb5ed8821bf06192c86233e2535cf133f2484ae45b8679ee6174fe2ed9f2
3
+ metadata.gz: 7520e68ea064b0f26bd7b375c3570cc3bce18d049afc55fa3ceb01595bda8393
4
+ data.tar.gz: 7d7a46cdbeb076c0aace30742d8800754c2badfb379b36602f83a6d3a262b145
5
5
  SHA512:
6
- metadata.gz: 6bff2371c6833d187a0255e978fbb438f20aed398361f4d2e9dbea096fb98e44aa880ffe38551732515327c746c1f7ec8c5d63fbc1c67e29ba168f20d00bbbb0
7
- data.tar.gz: 9a9668cedf4b71ad5622644e61a761020ec2d0687ba8691d74257630ca46d9e60e22b6d8bc9cf66472839be489af8316abf3d8c0a08f79efa3eaa36e04894ec9
6
+ metadata.gz: 15b98fc0bb58a37e67d04bc8d8984c4a39ec1fb71f3df5d8a74d572bf5fa41ccffafdbd291b2362a1273c7358a5fa1cfa5da29cfb8c074a19d39b48b5a13f565
7
+ data.tar.gz: 4b8f049396a292cb47cdd276a7d1dfae09ea90c6031029d4aebbadcc0d697662b25fa7045af9994f2babd3d8b32c52602a2a284520ccc0979f74a47a4454e93b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Release History: opentelemetry-instrumentation-http
2
2
 
3
+ ### v0.23.0 / 2023-05-15
4
+
5
+ * ADDED: Add span_preprocessor hook
6
+
7
+ ### v0.22.0 / 2023-04-17
8
+
9
+ * BREAKING CHANGE: Drop support for EoL Ruby 2.7
10
+
11
+ * ADDED: Drop support for EoL Ruby 2.7
12
+
3
13
  ### v0.21.0 / 2023-01-14
4
14
 
5
15
  * ADDED: Add request/response hooks to more http clients
data/README.md CHANGED
@@ -30,6 +30,18 @@ OpenTelemetry::SDK.configure do |c|
30
30
  end
31
31
  ```
32
32
 
33
+ ## Enriching http span names
34
+
35
+ We surface a hook to easily rename your span.
36
+
37
+ The lambda accepts as arguments (request_method, request_path) and returns a string that is set as the span name.
38
+
39
+ ```ruby
40
+ OpenTelemetry::SDK.configure do |c|
41
+ c.use 'OpenTelemetry::Instrumentation::Rack', { span_name_formatter: ->(request_method, request_path) { "HTTP #{request_method} #{request_path}" }
42
+ end
43
+ ```
44
+
33
45
  ## Examples
34
46
 
35
47
  Example usage can be seen in the `./example/trace_demonstration.rb` file [here](https://github.com/open-telemetry/opentelemetry-ruby-contrib/blob/main/instrumentation/http/example/trace_demonstration.rb)
@@ -18,6 +18,8 @@ module OpenTelemetry
18
18
  !(defined?(::HTTP::Client).nil? || defined?(::HTTP::Connection).nil?)
19
19
  end
20
20
 
21
+ option :span_name_formatter, default: nil, validate: :callable
22
+
21
23
  def patch
22
24
  ::HTTP::Client.prepend(Patches::Client)
23
25
  ::HTTP::Connection.prepend(Patches::Connection)
@@ -13,6 +13,7 @@ module OpenTelemetry
13
13
  def perform(req, options)
14
14
  uri = req.uri
15
15
  request_method = req.verb.to_s.upcase
16
+ span_name = create_request_span_name(request_method, uri.path)
16
17
 
17
18
  attributes = {
18
19
  'http.method' => request_method,
@@ -23,7 +24,7 @@ module OpenTelemetry
23
24
  'net.peer.port' => uri.port
24
25
  }.merge!(OpenTelemetry::Common::HTTP::ClientContext.attributes)
25
26
 
26
- tracer.in_span("HTTP #{request_method}", attributes: attributes, kind: :client) do |span|
27
+ tracer.in_span(span_name, attributes: attributes, kind: :client) do |span|
27
28
  OpenTelemetry.propagation.inject(req.headers)
28
29
  super.tap do |response|
29
30
  annotate_span_with_response!(span, response)
@@ -33,6 +34,10 @@ module OpenTelemetry
33
34
 
34
35
  private
35
36
 
37
+ def config
38
+ OpenTelemetry::Instrumentation::HTTP::Instrumentation.instance.config
39
+ end
40
+
36
41
  def annotate_span_with_response!(span, response)
37
42
  return unless response&.status
38
43
 
@@ -41,6 +46,17 @@ module OpenTelemetry
41
46
  span.status = OpenTelemetry::Trace::Status.error unless (100..399).include?(status_code.to_i)
42
47
  end
43
48
 
49
+ def create_request_span_name(request_method, request_path)
50
+ if (implementation = config[:span_name_formatter])
51
+ updated_span_name = implementation.call(request_method, request_path)
52
+ updated_span_name.is_a?(String) ? updated_span_name : "HTTP #{request_method}"
53
+ else
54
+ "HTTP #{request_method}"
55
+ end
56
+ rescue StandardError
57
+ "HTTP #{request_method}"
58
+ end
59
+
44
60
  def tracer
45
61
  HTTP::Instrumentation.instance.tracer
46
62
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module HTTP
10
- VERSION = '0.21.0'
10
+ VERSION = '0.23.0'
11
11
  end
12
12
  end
13
13
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-instrumentation-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-14 00:00:00.000000000 Z
11
+ date: 2023-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.21.0
33
+ version: 0.22.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.21.0
40
+ version: 0.22.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: appraisal
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -112,16 +112,16 @@ dependencies:
112
112
  name: opentelemetry-test-helpers
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: '0.3'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: '0.3'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rake
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.41.1
159
+ version: 1.50.2
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 1.41.1
166
+ version: 1.50.2
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: simplecov
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -242,10 +242,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
242
242
  licenses:
243
243
  - Apache-2.0
244
244
  metadata:
245
- changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-http/0.21.0/file/CHANGELOG.md
245
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-http/0.23.0/file/CHANGELOG.md
246
246
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/http
247
247
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
248
- documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-http/0.21.0
248
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-http/0.23.0
249
249
  post_install_message:
250
250
  rdoc_options: []
251
251
  require_paths:
@@ -254,14 +254,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
254
254
  requirements:
255
255
  - - ">="
256
256
  - !ruby/object:Gem::Version
257
- version: 2.6.0
257
+ version: '3.0'
258
258
  required_rubygems_version: !ruby/object:Gem::Requirement
259
259
  requirements:
260
260
  - - ">="
261
261
  - !ruby/object:Gem::Version
262
262
  version: '0'
263
263
  requirements: []
264
- rubygems_version: 3.1.6
264
+ rubygems_version: 3.2.33
265
265
  signing_key:
266
266
  specification_version: 4
267
267
  summary: HTTP instrumentation for the OpenTelemetry framework