opentelemetry-instrumentation-http 0.21.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
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