opentelemetry-instrumentation-rack 0.19.3 → 0.20.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac4a58d7625183e4c21d3e46db230f33a7cbffba733cfce9458750c1eaf0cd1f
|
4
|
+
data.tar.gz: 9d2328bea5c516b009b82d8fcfd4bba1ccce2a106fa1bdfae353053264b5794f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64387f52f98e5fb157640f3a5ec1fe6a47a2df397b8c28436f15dbcfadb1a35dc82f3f3f1102d1a81fa3d97088a8a7754c3d12a49375c265965f0c940f28876f
|
7
|
+
data.tar.gz: d7ce5b0ad0453f929abf40b0ccca1634270b3b2048f6e8eff9de6d301a82344120963f99e9f811156abda172b0a10c50380f9f8094f7b8b9e3e65dcd51744297
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,25 @@
|
|
1
1
|
# Release History: opentelemetry-instrumentation-rack
|
2
2
|
|
3
|
+
### v0.20.2 / 2022-05-02
|
4
|
+
|
5
|
+
* FIXED: Update server instrumentation to not reflect 400 status as error
|
6
|
+
|
7
|
+
### v0.20.1 / 2021-12-01
|
8
|
+
|
9
|
+
* FIXED: [Instruentation Rack] Log content type http header
|
10
|
+
* FIXED: Use monotonic clock where possible
|
11
|
+
* FIXED: Rack to stop using api env getter
|
12
|
+
|
13
|
+
### v0.20.0 / 2021-10-06
|
14
|
+
|
15
|
+
* FIXED: Prevent high cardinality rack span name as a default [#973](https://github.com/open-telemetry/opentelemetry-ruby/pull/973)
|
16
|
+
|
17
|
+
The default was to set the span name as the path of the request, we have
|
18
|
+
corrected this as it was not adhering to the spec requirement using low
|
19
|
+
cardinality span names. You can restore the previous behaviour of high
|
20
|
+
cardinality span names by passing in a url quantization function that
|
21
|
+
forwards the uri path. More details on this is available in the readme.
|
22
|
+
|
3
23
|
### v0.19.3 / 2021-09-29
|
4
24
|
|
5
25
|
* (No significant changes)
|
data/README.md
CHANGED
@@ -29,6 +29,25 @@ OpenTelemetry::SDK.configure do |c|
|
|
29
29
|
c.use_all
|
30
30
|
end
|
31
31
|
```
|
32
|
+
## Controlling span name cardinality
|
33
|
+
|
34
|
+
By default we will set the rack span name to match the format "HTTP #{method}" (ie. HTTP GET). There are different ways to control span names with this instrumentation.
|
35
|
+
|
36
|
+
### Enriching rack spans
|
37
|
+
|
38
|
+
We surface a hook to easily retrieve the rack span within the context of a request so that you can add information to or rename your server span.
|
39
|
+
|
40
|
+
This is how the rails controller instrumentation is able to rename the span names to match the controller and action that process the request. See https://github.com/open-telemetry/opentelemetry-ruby/blob/f6fb025bef69f839078748f56516ce38c7d51eb8/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/patches/action_controller/metal.rb#L15-L16 for an example.
|
41
|
+
|
42
|
+
### High cardinality example
|
43
|
+
|
44
|
+
You can pass in an url quantization lambda that simply uses the URL path, the result is you will end up with high cardinality span names, however this may be acceptable in your deployment and is easy configurable using the following example.
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
OpenTelemetry::SDK.configure do |c|
|
48
|
+
c.use 'OpenTelemetry::Instrumentation::Rack', { url_quantization: ->(path, _env) { path.to_s } }
|
49
|
+
end
|
50
|
+
```
|
32
51
|
|
33
52
|
## Examples
|
34
53
|
|
@@ -50,4 +69,4 @@ The `opentelemetry-instrumentation-rack` gem is distributed under the Apache 2.0
|
|
50
69
|
[license-github]: https://github.com/open-telemetry/opentelemetry-ruby/blob/main/LICENSE
|
51
70
|
[ruby-sig]: https://github.com/open-telemetry/community#ruby-sig
|
52
71
|
[community-meetings]: https://github.com/open-telemetry/community#community-meetings
|
53
|
-
[discussions-url]: https://github.com/open-telemetry/opentelemetry-ruby/discussions
|
72
|
+
[discussions-url]: https://github.com/open-telemetry/opentelemetry-ruby/discussions
|
@@ -18,7 +18,13 @@ module OpenTelemetry
|
|
18
18
|
class << self
|
19
19
|
def allowed_rack_request_headers
|
20
20
|
@allowed_rack_request_headers ||= Array(config[:allowed_request_headers]).each_with_object({}) do |header, memo|
|
21
|
-
|
21
|
+
key = header.to_s.upcase.gsub(/[-\s]/, '_')
|
22
|
+
case key
|
23
|
+
when 'CONTENT_TYPE', 'CONTENT_LENGTH'
|
24
|
+
memo[key] = build_attribute_name('http.request.headers.', header)
|
25
|
+
else
|
26
|
+
memo["HTTP_#{key}"] = build_attribute_name('http.request.headers.', header)
|
27
|
+
end
|
22
28
|
end
|
23
29
|
end
|
24
30
|
|
@@ -58,10 +64,11 @@ module OpenTelemetry
|
|
58
64
|
return @app.call(env)
|
59
65
|
end
|
60
66
|
end
|
67
|
+
|
61
68
|
original_env = env.dup
|
62
69
|
extracted_context = OpenTelemetry.propagation.extract(
|
63
70
|
env,
|
64
|
-
getter: OpenTelemetry::
|
71
|
+
getter: OpenTelemetry::Common::Propagation.rack_env_getter
|
65
72
|
)
|
66
73
|
frontend_context = create_frontend_span(env, extracted_context)
|
67
74
|
|
@@ -100,9 +107,7 @@ module OpenTelemetry
|
|
100
107
|
|
101
108
|
span = tracer.start_span('http_server.proxy',
|
102
109
|
with_parent: extracted_context,
|
103
|
-
|
104
|
-
'start_time' => request_start_time.to_f
|
105
|
-
},
|
110
|
+
start_timestamp: request_start_time,
|
106
111
|
kind: :server)
|
107
112
|
|
108
113
|
OpenTelemetry::Trace.context_with_span(span, parent_context: extracted_context)
|
@@ -141,12 +146,12 @@ module OpenTelemetry
|
|
141
146
|
if (implementation = config[:url_quantization])
|
142
147
|
implementation.call(request_uri_or_path_info, env)
|
143
148
|
else
|
144
|
-
|
149
|
+
"HTTP #{env['REQUEST_METHOD']}"
|
145
150
|
end
|
146
151
|
end
|
147
152
|
|
148
153
|
def set_attributes_after_request(span, status, headers, _response)
|
149
|
-
span.status = OpenTelemetry::Trace::Status.error unless (100..
|
154
|
+
span.status = OpenTelemetry::Trace::Status.error unless (100..499).include?(status.to_i)
|
150
155
|
span.set_attribute('http.status_code', status)
|
151
156
|
|
152
157
|
# NOTE: if data is available, it would be good to do this:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opentelemetry-instrumentation-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.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:
|
11
|
+
date: 2022-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opentelemetry-api
|
@@ -24,20 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: opentelemetry-common
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.19.3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.19.3
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: opentelemetry-instrumentation-base
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
47
|
+
version: 0.20.0
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
54
|
+
version: 0.20.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: appraisal
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -228,10 +242,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
|
|
228
242
|
licenses:
|
229
243
|
- Apache-2.0
|
230
244
|
metadata:
|
231
|
-
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-rack/v0.
|
245
|
+
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-rack/v0.20.2/file.CHANGELOG.html
|
232
246
|
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/instrumentation/rack
|
233
247
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
|
234
|
-
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-rack/v0.
|
248
|
+
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-rack/v0.20.2
|
235
249
|
post_install_message:
|
236
250
|
rdoc_options: []
|
237
251
|
require_paths:
|