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 +4 -4
- data/CHANGELOG.md +12 -0
- data/README.md +9 -2
- data/lib/opentelemetry/instrumentation/action_pack/instrumentation.rb +2 -1
- data/lib/opentelemetry/instrumentation/action_pack/patches/action_controller/metal.rb +17 -9
- data/lib/opentelemetry/instrumentation/action_pack/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99be35d64f5fd7d823eb70e181f5632085271225dfa5bbc10adb997f287581a8
|
4
|
+
data.tar.gz: b4df430eb2003fa5e5863ae9203bf77d4c8f34234579c7fbd11267d51f4e8b01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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:
|
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
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
30
|
-
::Rails.application.routes.router.recognize(request) do |route, _params|
|
31
|
-
|
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
|
|
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
|
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-
|
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
|
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
|
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
|
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
|
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:
|