opentelemetry-instrumentation-action_pack 0.2.1 → 0.3.2

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: c2fe93205bd6919c07ee1c8bcffcc4da51ef45c44ae35e43e5d9706d8bc5ec69
4
- data.tar.gz: 434bb0a50a54867c3d125736763678660ed36155b208c2daba71866d36f12cbb
3
+ metadata.gz: 99be35d64f5fd7d823eb70e181f5632085271225dfa5bbc10adb997f287581a8
4
+ data.tar.gz: b4df430eb2003fa5e5863ae9203bf77d4c8f34234579c7fbd11267d51f4e8b01
5
5
  SHA512:
6
- metadata.gz: 61254f1ee327721f3acd8da527f9f3d43f844c68fcb818a864f2f1df71d66201059f5248f2c1b70c8a3895fb1877be2de6d7466bfb31fb50422963cda21b3185
7
- data.tar.gz: bdfb5be311c901208a38228673db73c1500b7f687705e3bee6e6db6fffa09c34742211af6883cae375a793a6e2e6d30d52b5f560b6ad268c93662eb4a4cafed2
6
+ metadata.gz: d13b693131f8b6e64fead4308d30c67ad5b2a13320083a68abfba66c2d9cb235ac9e411eb9678df14616e4706e6920b6c55fcb706c7aae6487da66a55ab509a8
7
+ data.tar.gz: 8f6f5faf8b5466e2e745461636bdfb800f1adb134d9174790d94e2ef1ec8d832bf500c4699782de0e869de3be98d50b5f4fd0a1af485e128ae04d0b645b52ce5
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Release History: opentelemetry-instrumentation-action_pack
2
2
 
3
+ ### v0.3.2 / 2022-11-16
4
+
5
+ * * FIXED: Loosen dependency on Rack
6
+
7
+ ### v0.3.1 / 2022-10-27
8
+
9
+ * FIXED: Declare span_naming option in action_pack instrumentation
10
+
11
+ ### v0.3.0 / 2022-10-14
12
+
13
+ * ADDED: Name ActionPack spans with the HTTP method and route
14
+
3
15
  ### v0.2.1 / 2022-10-04
4
16
 
5
17
  * FIXED: Ensures the correct route is add to http.route span attribute
data/README.md CHANGED
@@ -32,11 +32,18 @@ end
32
32
 
33
33
  ### Configuration options
34
34
 
35
- The `http.route` attribute is disabled by default because we use [.recognize](https://github.com/rails/rails/blob/v6.1.3/actionpack/lib/action_dispatch/journey/router.rb#L65)
35
+ | Name | Default | Description |
36
+ | ----- | ------- | ----------- |
37
+ | `span_naming` | `:rails_route` | Configures the name for the Rack span. `:rails_route` is in the format of `HTTP_METHOD /rails/route(.:format)`, for example `GET /users/:id(.:format)`. `:controller_action` is in the format of `Controller#action`, for example `UsersController#show` |
38
+ | `enable_recognize_route` | `true` | Enables or disables adding the `http.route` attribute. |
39
+
40
+ The default configuration uses a [method from Rails to obtain the route for the request](https://github.com/rails/rails/blob/v6.1.3/actionpack/lib/action_dispatch/journey/router.rb#L65). The options above allow this behaviour to be opted out of if you have performance issues. If you wish to avoid using this method then set `span_naming: :controller_action, enable_recognize_route: false`.
41
+
36
42
  ```ruby
37
43
  OpenTelemetry::SDK.configure do |c|
38
44
  c.use 'OpenTelemetry::Instrumentation::ActionPack', {
39
- enable_recognize_route: true
45
+ span_naming: :controller_action,
46
+ enable_recognize_route: false
40
47
  }
41
48
  end
42
49
  ```
@@ -25,7 +25,8 @@ module OpenTelemetry
25
25
  gem_version >= MINIMUM_VERSION
26
26
  end
27
27
 
28
- option :enable_recognize_route, default: false, validate: :boolean
28
+ option :enable_recognize_route, default: true, validate: :boolean
29
+ option :span_naming, default: :rails_route, validate: %i[controller_action rails_route]
29
30
 
30
31
  private
31
32
 
@@ -14,11 +14,20 @@ module OpenTelemetry
14
14
  def dispatch(name, request, response)
15
15
  rack_span = OpenTelemetry::Instrumentation::Rack.current_span
16
16
  if rack_span.recording?
17
- rack_span.name = "#{self.class.name}##{name}" unless request.env['action_dispatch.exception']
18
-
19
- add_rails_route(rack_span, request) if instrumentation_config[:enable_recognize_route]
20
-
21
- rack_span.set_attribute('http.target', request.filtered_path) if request.filtered_path != request.fullpath
17
+ unless request.env['action_dispatch.exception']
18
+ rack_span.name = case instrumentation_config[:span_naming]
19
+ when :controller_action then "#{self.class.name}##{name}"
20
+ else "#{request.method} #{rails_route(request)}"
21
+ end
22
+ end
23
+
24
+ attributes_to_append = {
25
+ OpenTelemetry::SemanticConventions::Trace::CODE_NAMESPACE => self.class.name,
26
+ OpenTelemetry::SemanticConventions::Trace::CODE_FUNCTION => name
27
+ }
28
+ attributes_to_append[OpenTelemetry::SemanticConventions::Trace::HTTP_ROUTE] = rails_route(request) if instrumentation_config[:enable_recognize_route]
29
+ attributes_to_append[OpenTelemetry::SemanticConventions::Trace::HTTP_TARGET] = request.filtered_path if request.filtered_path != request.fullpath
30
+ rack_span.add_attributes(attributes_to_append)
22
31
  end
23
32
 
24
33
  super(name, request, response)
@@ -26,11 +35,10 @@ module OpenTelemetry
26
35
 
27
36
  private
28
37
 
29
- def add_rails_route(rack_span, request)
30
- ::Rails.application.routes.router.recognize(request) do |route, _params|
31
- rack_span.set_attribute('http.route', route.path.spec.to_s)
38
+ def rails_route(request)
39
+ @rails_route ||= ::Rails.application.routes.router.recognize(request) do |route, _params|
40
+ return route.path.spec.to_s
32
41
  # Rails will match on the first route - see https://guides.rubyonrails.org/routing.html#crud-verbs-and-actions
33
- break
34
42
  end
35
43
  end
36
44
 
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module ActionPack
10
- VERSION = '0.2.1'
10
+ VERSION = '0.3.2'
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-action_pack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-04 00:00:00.000000000 Z
11
+ date: 2022-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.21.0
47
+ version: '0.21'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.21.0
54
+ version: '0.21'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: appraisal
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -242,10 +242,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-contrib
242
242
  licenses:
243
243
  - Apache-2.0
244
244
  metadata:
245
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby-contrib/opentelemetry-instrumentation-action_pack/v0.2.1/file.CHANGELOG.html
245
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby-contrib/opentelemetry-instrumentation-action_pack/v0.3.2/file.CHANGELOG.html
246
246
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/action_pack
247
247
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
248
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby-contrib/opentelemetry-instrumentation-action_pack/v0.2.1
248
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby-contrib/opentelemetry-instrumentation-action_pack/v0.3.2
249
249
  post_install_message:
250
250
  rdoc_options: []
251
251
  require_paths: