opentelemetry-exporter-otlp 0.21.1 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1125e045d20dd0fabd71e7c17dbd72783646eb4f5596123140403dbdb04fad11
4
- data.tar.gz: ee5cc3b0c99fce1361ed5eb365e64032962e679de436a351aa8d85f967681213
3
+ metadata.gz: 5fb745d3f75cb361d8921375fac3d93c4ba439b04f6e1b88a16a3e1d37c0718b
4
+ data.tar.gz: c03ac82d66dba1f2d18c15c33e58067fc634d17dac61a390e92f965f1a3aed8c
5
5
  SHA512:
6
- metadata.gz: a9b535ed10f4a74f5ac73cf8e8170dc494df016ae7ca2ef41c51ee664deff9db48d50f7f198624748ecee6a042ac65737e6cbb347701a9edc3994f0f1fceb493
7
- data.tar.gz: cb66d52453aabfad2e2bd1a3f98fe5d8ed12bbd9ba51de8619743b8d050719564e10beff3f641eeff321687af357c17e5a1580be6959733f0307bf0d08db5647
6
+ metadata.gz: 1a215680796d45dacf04484864b07f1552f1cae9f1b4c9e73ffc5392bfb8e370a3bca9abea9155cd53b14bb9ad9d923ce9b8659fdec21dbbdceb4bef05832258
7
+ data.tar.gz: 5261a436acd2d12465c3b18100e0b6202f66bdfd633ba19f7c244a1dc38a67deca69a4c6a6110f473f286e39ed4392b908f9414dd4c84217abf9582a08392ec2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Release History: opentelemetry-exporter-otlp
2
2
 
3
+ ### v0.22.0 / 2022-06-09
4
+
5
+ * ADDED: Otlp grpc
6
+
7
+ ### v0.21.3 / 2022-05-12
8
+
9
+ * (No significant changes)
10
+
11
+ ### v0.21.2 / 2022-01-19
12
+
13
+ * FIXED: Default scheme for OTLP endpoint
14
+ * FIXED: Remove TIMEOUT status from OTLP exporter (#1087)
15
+
3
16
  ### v0.21.1 / 2021-12-31
4
17
 
5
18
  * FIXED: Allow OTLP Exporter compression value of `none`
data/README.md CHANGED
@@ -78,7 +78,7 @@ The collector exporter can be configured explicitly in code, or via environment
78
78
  | `ssl_verify_mode:` | `OTEL_RUBY_EXPORTER_OTLP_SSL_VERIFY_PEER` or | `OpenSSL::SSL:VERIFY_PEER` |
79
79
  | | `OTEL_RUBY_EXPORTER_OTLP_SSL_VERIFY_NONE` | |
80
80
 
81
- `ssl_verify_mode:` parameter values should be flags for server certificate verification: `OpenSSL::SSL:VERIFY_PEER` and `OpenSSL::SSL:VERIFY_NONE` are acceptable. These values can also be set using the appropriately named environment variables as shown where `VERIFY_PEER` will take precedence over `VERIFY_NONE`. Please see [the Net::HTTP docs](https://ruby-doc.org/stdlib-2.5.1/libdoc/net/http/rdoc/Net/HTTP.html#verify_mode) for more information about these flags.
81
+ `ssl_verify_mode:` parameter values should be flags for server certificate verification: `OpenSSL::SSL:VERIFY_PEER` and `OpenSSL::SSL:VERIFY_NONE` are acceptable. These values can also be set using the appropriately named environment variables as shown where `VERIFY_PEER` will take precedence over `VERIFY_NONE`. Please see [the Net::HTTP docs](https://ruby-doc.org/stdlib-2.7.6/libdoc/net/http/rdoc/Net/HTTP.html#verify_mode) for more information about these flags.
82
82
 
83
83
  ## How can I get involved?
84
84
 
@@ -10,6 +10,8 @@ require 'net/http'
10
10
  require 'csv'
11
11
  require 'zlib'
12
12
 
13
+ require 'google/rpc/status_pb'
14
+
13
15
  require 'opentelemetry/proto/common/v1/common_pb'
14
16
  require 'opentelemetry/proto/resource/v1/resource_pb'
15
17
  require 'opentelemetry/proto/trace/v1/trace_pb'
@@ -22,8 +24,7 @@ module OpenTelemetry
22
24
  class Exporter # rubocop:disable Metrics/ClassLength
23
25
  SUCCESS = OpenTelemetry::SDK::Trace::Export::SUCCESS
24
26
  FAILURE = OpenTelemetry::SDK::Trace::Export::FAILURE
25
- TIMEOUT = OpenTelemetry::SDK::Trace::Export::TIMEOUT
26
- private_constant(:SUCCESS, :FAILURE, :TIMEOUT)
27
+ private_constant(:SUCCESS, :FAILURE)
27
28
 
28
29
  # Default timeouts in seconds.
29
30
  KEEP_ALIVE_TIMEOUT = 30
@@ -44,14 +45,14 @@ module OpenTelemetry
44
45
  end
45
46
  end
46
47
 
47
- def initialize(endpoint: config_opt('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', 'OTEL_EXPORTER_OTLP_ENDPOINT', default: 'https://localhost:4318/v1/traces'), # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
48
- certificate_file: config_opt('OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE', 'OTEL_EXPORTER_OTLP_CERTIFICATE'),
48
+ def initialize(endpoint: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', 'OTEL_EXPORTER_OTLP_ENDPOINT', default: 'http://localhost:4318/v1/traces'), # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
49
+ certificate_file: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE', 'OTEL_EXPORTER_OTLP_CERTIFICATE'),
49
50
  ssl_verify_mode: Exporter.ssl_verify_mode,
50
- headers: config_opt('OTEL_EXPORTER_OTLP_TRACES_HEADERS', 'OTEL_EXPORTER_OTLP_HEADERS', default: {}),
51
- compression: config_opt('OTEL_EXPORTER_OTLP_TRACES_COMPRESSION', 'OTEL_EXPORTER_OTLP_COMPRESSION', default: 'gzip'),
52
- timeout: config_opt('OTEL_EXPORTER_OTLP_TRACES_TIMEOUT', 'OTEL_EXPORTER_OTLP_TIMEOUT', default: 10),
51
+ headers: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_HEADERS', 'OTEL_EXPORTER_OTLP_HEADERS', default: {}),
52
+ compression: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_COMPRESSION', 'OTEL_EXPORTER_OTLP_COMPRESSION', default: 'gzip'),
53
+ timeout: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_TIMEOUT', 'OTEL_EXPORTER_OTLP_TIMEOUT', default: 10),
53
54
  metrics_reporter: nil)
54
- raise ArgumentError, "invalid url for OTLP::Exporter #{endpoint}" if invalid_url?(endpoint)
55
+ raise ArgumentError, "invalid url for OTLP::Exporter #{endpoint}" unless OpenTelemetry::Common::Utilities.valid_url?(endpoint)
55
56
  raise ArgumentError, "unsupported compression key #{compression}" unless compression.nil? || %w[gzip none].include?(compression)
56
57
 
57
58
  @uri = if endpoint == ENV['OTEL_EXPORTER_OTLP_ENDPOINT']
@@ -119,23 +120,6 @@ module OpenTelemetry
119
120
  http
120
121
  end
121
122
 
122
- def config_opt(*env_vars, default: nil)
123
- env_vars.each do |env_var|
124
- val = ENV[env_var]
125
- return val unless val.nil?
126
- end
127
- default
128
- end
129
-
130
- def invalid_url?(url)
131
- return true if url.nil? || url.strip.empty?
132
-
133
- URI(url)
134
- false
135
- rescue URI::InvalidURIError
136
- true
137
- end
138
-
139
123
  # The around_request is a private method that provides an extension
140
124
  # point for the exporters network calls. The default behaviour
141
125
  # is to not trace these operations.
@@ -165,7 +149,7 @@ module OpenTelemetry
165
149
  @headers.each { |key, value| request.add_field(key, value) }
166
150
 
167
151
  remaining_timeout = OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time)
168
- return TIMEOUT if remaining_timeout.zero?
152
+ return FAILURE if remaining_timeout.zero?
169
153
 
170
154
  @http.open_timeout = remaining_timeout
171
155
  @http.read_timeout = remaining_timeout
@@ -186,8 +170,7 @@ module OpenTelemetry
186
170
  redo if backoff?(retry_count: retry_count += 1, reason: response.code)
187
171
  FAILURE
188
172
  when Net::HTTPBadRequest, Net::HTTPClientError, Net::HTTPServerError
189
- # TODO: decode the body as a google.rpc.Status Protobuf-encoded message when https://github.com/open-telemetry/opentelemetry-collector/issues/1357 is fixed.
190
- response.body # Read and discard body
173
+ log_status(response.body)
191
174
  @metrics_reporter.add_to_counter('otel.otlp_exporter.failure', labels: { 'reason' => response.code })
192
175
  FAILURE
193
176
  when Net::HTTPRedirection
@@ -232,6 +215,17 @@ module OpenTelemetry
232
215
  # TODO: figure out destination and reinitialize @http and @path
233
216
  end
234
217
 
218
+ def log_status(body)
219
+ status = Google::Rpc::Status.decode(body)
220
+ details = status.details.map do |detail|
221
+ klass_or_nil = ::Google::Protobuf::DescriptorPool.generated_pool.lookup(detail.type_name).msgclass
222
+ detail.unpack(klass_or_nil) if klass_or_nil
223
+ end.compact
224
+ OpenTelemetry.handle_error(message: "OTLP exporter received rpc.Status{message=#{status.message}, details=#{details}}")
225
+ rescue StandardError => e
226
+ OpenTelemetry.handle_error(exception: e, message: 'unexpected error decoding rpc.Status in OTLP::Exporter#log_status')
227
+ end
228
+
235
229
  def measure_request_duration
236
230
  start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
237
231
  begin
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module Exporter
9
9
  module OTLP
10
10
  ## Current OpenTelemetry OTLP exporter version
11
- VERSION = '0.21.1'
11
+ VERSION = '0.22.0'
12
12
  end
13
13
  end
14
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-exporter-otlp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.1
4
+ version: 0.22.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: 2022-01-05 00:00:00.000000000 Z
11
+ date: 2022-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.7'
19
+ version: '3.19'
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: '3.7'
26
+ version: '3.19'
27
+ - !ruby/object:Gem::Dependency
28
+ name: googleapis-common-protos-types
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: opentelemetry-api
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +58,14 @@ dependencies:
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 0.19.3
61
+ version: 0.19.6
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 0.19.3
68
+ version: 0.19.6
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: opentelemetry-sdk
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,20 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: opentelemetry-semantic_conventions
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: bundler
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +136,20 @@ dependencies:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
138
  version: '5.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: opentelemetry-test-helpers
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
111
153
  - !ruby/object:Gem::Dependency
112
154
  name: pry-byebug
113
155
  requirement: !ruby/object:Gem::Requirement
@@ -238,10 +280,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
238
280
  licenses:
239
281
  - Apache-2.0
240
282
  metadata:
241
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.21.1/file.CHANGELOG.html
283
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.22.0/file.CHANGELOG.html
242
284
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/exporter/otlp
243
285
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
244
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.21.1
286
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.22.0
245
287
  post_install_message:
246
288
  rdoc_options: []
247
289
  require_paths:
@@ -250,7 +292,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
250
292
  requirements:
251
293
  - - ">="
252
294
  - !ruby/object:Gem::Version
253
- version: 2.5.0
295
+ version: 2.6.0
254
296
  required_rubygems_version: !ruby/object:Gem::Requirement
255
297
  requirements:
256
298
  - - ">="