opentelemetry-instrumentation-rack 0.10.1 → 0.15.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: 0c079f65d4e53d8d3089785f6c6e6cfdb71ddc0236d3b82f2b6f344b762b283f
4
- data.tar.gz: c83a43d564760aeaba8e7f0870941a94cc6afcd387ca5e2bd1caec1e3496b77f
3
+ metadata.gz: ad21d239ad4a5008e97531f80a7e66bc4b994b9723257921a5762b4141423099
4
+ data.tar.gz: 415138c23cdd98cc069a19ebb0aefa6d5be613517b7bf7ab9392a641cae503bd
5
5
  SHA512:
6
- metadata.gz: 01fe4134ce9315800e6e448398d1bd4c27c75b32032d64a01d3423201b6939ebdc99f284ccdfddc98aa711d17689dd616be30e81978caa53ca1177ef3c924b4d
7
- data.tar.gz: efbd8de523f9ad3406c4fc8871c440181e782f616fb6ca924ef216f55b0ca046ea61639f662377b950931cd204ed25b6a13220210db227d9bfb845e6e9d1331e
6
+ metadata.gz: 3dee2f0c3eb4f16d4c23e0d15d33d287b73c3a1767fa312583f1165d2f2b704cfd9a279f3309b06604a4cf364036f7dbd0bd0465c8ba0beb27c4db18f8bca918
7
+ data.tar.gz: 64174578aeb8e18bdffc0cd7a92074708d9cdba56713b96d4a94e058a9e5399a26033bca846945c96d6d509c5dcfbbe3ba5c1f4c941086269a1855b2e4314ccc
data/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Release History: opentelemetry-instrumentation-rack
2
2
 
3
+ ### v0.15.0 / 2021-02-18
4
+
5
+ * ADDED: Add instrumentation config validation
6
+
7
+ ### v0.14.0 / 2021-02-03
8
+
9
+ * BREAKING CHANGE: Replace getter and setter callables and remove rack specific propagators
10
+
11
+ * ADDED: Replace getter and setter callables and remove rack specific propagators
12
+ * ADDED: Add untraced endpoints config to rack middleware
13
+
14
+ ### v0.13.0 / 2021-01-29
15
+
16
+ * FIXED: Only include user agent when present
17
+
18
+ ### v0.12.0 / 2020-12-24
19
+
20
+ * (No significant changes)
21
+
22
+ ### v0.11.0 / 2020-12-11
23
+
24
+ * FIXED: Copyright comments to not reference year
25
+
3
26
  ### v0.10.1 / 2020-12-09
4
27
 
5
28
  * FIXED: Rack current_span
data/LICENSE CHANGED
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2020 OpenTelemetry Authors
189
+ Copyright The OpenTelemetry Authors
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
data/README.md CHANGED
@@ -32,7 +32,7 @@ end
32
32
 
33
33
  ## Examples
34
34
 
35
- Example usage can be seen in the `./example/trace_demonstration.rb` file [here](https://github.com/open-telemetry/opentelemetry-ruby/blob/master/instrumentation/rack/example/trace_demonstration.rb)
35
+ Example usage can be seen in the `./example/trace_demonstration.rb` file [here](https://github.com/open-telemetry/opentelemetry-ruby/blob/main/instrumentation/rack/example/trace_demonstration.rb)
36
36
 
37
37
  ## How can I get involved?
38
38
 
@@ -47,7 +47,7 @@ The `opentelemetry-instrumentation-rack` gem is distributed under the Apache 2.0
47
47
  [rack-home]: https://github.com/rack/rack
48
48
  [bundler-home]: https://bundler.io
49
49
  [repo-github]: https://github.com/open-telemetry/opentelemetry-ruby
50
- [license-github]: https://github.com/open-telemetry/opentelemetry-ruby/blob/master/LICENSE
50
+ [license-github]: https://github.com/open-telemetry/opentelemetry-ruby/blob/main/LICENSE
51
51
  [ruby-sig]: https://github.com/open-telemetry/community#ruby-sig
52
52
  [community-meetings]: https://github.com/open-telemetry/community#community-meetings
53
53
  [ruby-gitter]: https://gitter.im/open-telemetry/opentelemetry-ruby
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -22,6 +22,14 @@ module OpenTelemetry
22
22
  defined?(::Rack)
23
23
  end
24
24
 
25
+ option :allowed_request_headers, default: [], validate: :array
26
+ option :allowed_response_headers, default: [], validate: :array
27
+ option :application, default: nil, validate: :callable
28
+ option :record_frontend_span, default: false, validate: :boolean
29
+ option :retain_middleware_names, default: false, validate: :boolean
30
+ option :untraced_endpoints, default: [], validate: :array
31
+ option :url_quantization, default: nil, validate: :callable
32
+
25
33
  private
26
34
 
27
35
  def require_dependencies
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -49,11 +49,20 @@ module OpenTelemetry
49
49
 
50
50
  def initialize(app)
51
51
  @app = app
52
+ @untraced_endpoints = config[:untraced_endpoints]
52
53
  end
53
54
 
54
- def call(env) # rubocop:disable Metrics/AbcSize
55
+ def call(env) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
56
+ if untraced_request?(env)
57
+ OpenTelemetry::Common::Utilities.untraced do
58
+ return @app.call(env)
59
+ end
60
+ end
55
61
  original_env = env.dup
56
- extracted_context = OpenTelemetry.propagation.http.extract(env)
62
+ extracted_context = OpenTelemetry.propagation.extract(
63
+ env,
64
+ getter: OpenTelemetry::Context::Propagation.rack_env_getter
65
+ )
57
66
  frontend_context = create_frontend_span(env, extracted_context)
58
67
 
59
68
  # restore extracted context in this process:
@@ -76,6 +85,10 @@ module OpenTelemetry
76
85
 
77
86
  private
78
87
 
88
+ def untraced_request?(env)
89
+ @untraced_endpoints.include?(env['PATH_INFO'])
90
+ end
91
+
79
92
  # return Context with the frontend span as the current span
80
93
  def create_frontend_span(env, extracted_context)
81
94
  request_start_time = OpenTelemetry::Instrumentation::Rack::Util::QueueTime.get_request_start(env)
@@ -101,13 +114,14 @@ module OpenTelemetry
101
114
  end
102
115
 
103
116
  def request_span_attributes(env:)
104
- {
117
+ attributes = {
105
118
  'http.method' => env['REQUEST_METHOD'],
106
119
  'http.host' => env['HTTP_HOST'] || 'unknown',
107
120
  'http.scheme' => env['rack.url_scheme'],
108
- 'http.target' => fullpath(env),
109
- 'http.user_agent' => env['HTTP_USER_AGENT']
110
- }.merge(allowed_request_headers(env))
121
+ 'http.target' => fullpath(env)
122
+ }
123
+ attributes['http.user_agent'] = env['HTTP_USER_AGENT'] if env['HTTP_USER_AGENT']
124
+ attributes.merge(allowed_request_headers(env))
111
125
  end
112
126
 
113
127
  # e.g., "/webshop/articles/4?s=1":
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Rack
10
- VERSION = '0.10.1'
10
+ VERSION = '0.15.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-rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.15.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: 2020-12-09 00:00:00.000000000 Z
11
+ date: 2021-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.10.0
19
+ version: 0.15.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.10.0
26
+ version: 0.15.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: appraisal
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -214,10 +214,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
214
214
  licenses:
215
215
  - Apache-2.0
216
216
  metadata:
217
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-rack/v0.10.1/file.CHANGELOG.html
218
- source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/instrumentation/rack
217
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-rack/v0.15.0/file.CHANGELOG.html
218
+ source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/instrumentation/rack
219
219
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
220
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-rack/v0.10.1
220
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-rack/v0.15.0
221
221
  post_install_message:
222
222
  rdoc_options: []
223
223
  require_paths: