opentelemetry-exporter-otlp 0.10.0 → 0.11.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: c38c079d7055f8842353fe02c763eaebef34fef5cb2c985eeb7e9027871911aa
4
- data.tar.gz: 47baa5fc026fdca6dba142486283ce11f240ee20dad154d7fe72687f21112fba
3
+ metadata.gz: d07dd6897e62a261598a0ca5319d678e6d996b800f3fc73f2467bcc0c6fa899b
4
+ data.tar.gz: b0dbee8a937d627bc025c650dfe8013cac4e92a78a382523cc796ca996b20676
5
5
  SHA512:
6
- metadata.gz: a55043aeb84da4fa813e8820f4623bbf52b3b4d35712149c0e50eb3240a4309b450879a1fad88635abf8742b05861b49247cc0bbfeb87206b41f8c1d71dba8e0
7
- data.tar.gz: ebf431657653d10763d30b3b77873f6e9733e17c4d0da4ca0513a7f93c99227c7be75976536fca1bae0f2ff1b7fee9ba296fd536aaccdb4f2cf2398cf338e280
6
+ metadata.gz: b847b754f84f5c488b9cf0dde660f4f4fc8c14938f07ae0eadc420b95691a4c7fe304cfb7cc43e56a57c496882167cb1b53136ea64b203bfbb7ed072a9e8ad24
7
+ data.tar.gz: 67654cd2493a263bf804a30ff4edba3834ba312d27c003baa93e630b59f004b355668af65d687849ff395380183af0b70c918e628789eec3e80f290fe2fbd9ae
@@ -1,5 +1,13 @@
1
1
  # Release History: opentelemetry-exporter-otlp
2
2
 
3
+ ### v0.11.0 / 2020-12-11
4
+
5
+ * BREAKING CHANGE: Implement tracestate
6
+
7
+ * ADDED: Implement tracestate
8
+ * ADDED: Metrics reporting from trace export
9
+ * FIXED: Copyright comments to not reference year
10
+
3
11
  ### v0.10.0 / 2020-12-03
4
12
 
5
13
  * (No significant changes)
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.
@@ -31,12 +31,13 @@ module OpenTelemetry
31
31
  WRITE_TIMEOUT_SUPPORTED = Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.6')
32
32
  private_constant(:KEEP_ALIVE_TIMEOUT, :RETRY_COUNT, :WRITE_TIMEOUT_SUPPORTED)
33
33
 
34
- def initialize(endpoint: config_opt('OTEL_EXPORTER_OTLP_SPAN_ENDPOINT', 'OTEL_EXPORTER_OTLP_ENDPOINT', default: 'localhost:55681/v1/trace'), # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
34
+ def initialize(endpoint: config_opt('OTEL_EXPORTER_OTLP_SPAN_ENDPOINT', 'OTEL_EXPORTER_OTLP_ENDPOINT', default: 'localhost:55681/v1/trace'), # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
35
35
  insecure: config_opt('OTEL_EXPORTER_OTLP_SPAN_INSECURE', 'OTEL_EXPORTER_OTLP_INSECURE', default: false),
36
36
  certificate_file: config_opt('OTEL_EXPORTER_OTLP_SPAN_CERTIFICATE', 'OTEL_EXPORTER_OTLP_CERTIFICATE'),
37
37
  headers: config_opt('OTEL_EXPORTER_OTLP_SPAN_HEADERS', 'OTEL_EXPORTER_OTLP_HEADERS'), # TODO: what format is expected here?
38
38
  compression: config_opt('OTEL_EXPORTER_OTLP_SPAN_COMPRESSION', 'OTEL_EXPORTER_OTLP_COMPRESSION'),
39
- timeout: config_opt('OTEL_EXPORTER_OTLP_SPAN_TIMEOUT', 'OTEL_EXPORTER_OTLP_TIMEOUT', default: 10))
39
+ timeout: config_opt('OTEL_EXPORTER_OTLP_SPAN_TIMEOUT', 'OTEL_EXPORTER_OTLP_TIMEOUT', default: 10),
40
+ metrics_reporter: nil)
40
41
  raise ArgumentError, "invalid url for OTLP::Exporter #{endpoint}" if invalid_url?("http://#{endpoint}")
41
42
  raise ArgumentError, "unsupported compression key #{compression}" unless compression.nil? || compression == 'gzip'
42
43
  raise ArgumentError, 'headers must be comma-separated k:v pairs or a Hash' unless valid_headers?(headers)
@@ -54,6 +55,7 @@ module OpenTelemetry
54
55
  end
55
56
  @timeout = timeout.to_f # TODO: use this as a default timeout when we implement timeouts in https://github.com/open-telemetry/opentelemetry-ruby/pull/341
56
57
  @compression = compression
58
+ @metrics_reporter = metrics_reporter || OpenTelemetry::SDK::Trace::Export::MetricsReporter
57
59
 
58
60
  @shutdown = false
59
61
  end
@@ -132,7 +134,7 @@ module OpenTelemetry
132
134
  @http.read_timeout = remaining_timeout
133
135
  @http.write_timeout = remaining_timeout if WRITE_TIMEOUT_SUPPORTED
134
136
  @http.start unless @http.started?
135
- response = @http.request(request)
137
+ response = measure_request_duration { @http.request(request) }
136
138
 
137
139
  case response
138
140
  when Net::HTTPOK
@@ -140,11 +142,11 @@ module OpenTelemetry
140
142
  SUCCESS
141
143
  when Net::HTTPServiceUnavailable, Net::HTTPTooManyRequests
142
144
  response.body # Read and discard body
143
- redo if backoff?(retry_after: response['Retry-After'], retry_count: retry_count += 1)
145
+ redo if backoff?(retry_after: response['Retry-After'], retry_count: retry_count += 1, reason: response.code)
144
146
  FAILURE
145
147
  when Net::HTTPRequestTimeOut, Net::HTTPGatewayTimeOut, Net::HTTPBadGateway
146
148
  response.body # Read and discard body
147
- redo if backoff?(retry_count: retry_count += 1)
149
+ redo if backoff?(retry_count: retry_count += 1, reason: response.code)
148
150
  FAILURE
149
151
  when Net::HTTPBadRequest, Net::HTTPClientError, Net::HTTPServerError
150
152
  # TODO: decode the body as a google.rpc.Status Protobuf-encoded message when https://github.com/open-telemetry/opentelemetry-collector/issues/1357 is fixed.
@@ -153,13 +155,13 @@ module OpenTelemetry
153
155
  when Net::HTTPRedirection
154
156
  @http.finish
155
157
  handle_redirect(response['location'])
156
- redo if backoff?(retry_after: 0, retry_count: retry_count += 1)
158
+ redo if backoff?(retry_after: 0, retry_count: retry_count += 1, reason: response.code)
157
159
  else
158
160
  @http.finish
159
161
  FAILURE
160
162
  end
161
163
  rescue Net::OpenTimeout, Net::ReadTimeout
162
- retry if backoff?(retry_count: retry_count += 1)
164
+ retry if backoff?(retry_count: retry_count += 1, reason: 'timeout')
163
165
  return FAILURE
164
166
  end
165
167
  ensure
@@ -177,9 +179,24 @@ module OpenTelemetry
177
179
  OpenTelemetry::Trace.with_span(OpenTelemetry::Trace::Span.new) { yield }
178
180
  end
179
181
 
180
- def backoff?(retry_after: nil, retry_count:)
182
+ def measure_request_duration
183
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
184
+ begin
185
+ response = yield
186
+ ensure
187
+ stop = Process.clock_gettime(Process::CLOCK_MONOTONIC)
188
+ duration_ms = 1000.0 * (stop - start)
189
+ @metrics_reporter.record_value('otel.otlp_exporter.request_duration',
190
+ value: duration_ms,
191
+ labels: { 'status' => response&.code || 'unknown' })
192
+ end
193
+ end
194
+
195
+ def backoff?(retry_after: nil, retry_count:, reason:)
181
196
  return false if retry_count > RETRY_COUNT
182
197
 
198
+ @metrics_reporter.add_to_counter('otel.otlp_exporter.failure', labels: { 'reason' => reason })
199
+
183
200
  sleep_interval = nil
184
201
  unless retry_after.nil?
185
202
  sleep_interval =
@@ -233,7 +250,7 @@ module OpenTelemetry
233
250
  Opentelemetry::Proto::Trace::V1::Span.new(
234
251
  trace_id: span_data.trace_id,
235
252
  span_id: span_data.span_id,
236
- trace_state: span_data.tracestate,
253
+ trace_state: span_data.tracestate.to_s,
237
254
  parent_span_id: span_data.parent_span_id == OpenTelemetry::Trace::INVALID_SPAN_ID ? nil : span_data.parent_span_id,
238
255
  name: span_data.name,
239
256
  kind: as_otlp_span_kind(span_data.kind),
@@ -254,7 +271,7 @@ module OpenTelemetry
254
271
  Opentelemetry::Proto::Trace::V1::Span::Link.new(
255
272
  trace_id: link.span_context.trace_id,
256
273
  span_id: link.span_context.span_id,
257
- trace_state: link.span_context.tracestate,
274
+ trace_state: link.span_context.tracestate.to_s,
258
275
  attributes: link.attributes&.map { |k, v| as_otlp_key_value(k, v) }
259
276
  # TODO: track dropped_attributes_count in Span#trim_links
260
277
  )
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module Exporter
9
9
  module OTLP
10
10
  ## Current OpenTelemetry OTLP exporter version
11
- VERSION = '0.10.0'
11
+ VERSION = '0.11.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.10.0
4
+ version: 0.11.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-03 00:00:00.000000000 Z
11
+ date: 2020-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -36,28 +36,28 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.10.0
39
+ version: 0.11.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 0.10.0
46
+ version: 0.11.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: opentelemetry-common
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 0.10.0
53
+ version: 0.11.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 0.10.0
60
+ version: 0.11.0
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: bundler
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -207,10 +207,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
207
207
  licenses:
208
208
  - Apache-2.0
209
209
  metadata:
210
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.10.0/file.CHANGELOG.html
210
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.11.0/file.CHANGELOG.html
211
211
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/exporter/otlp
212
212
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
213
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.10.0
213
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.11.0
214
214
  post_install_message:
215
215
  rdoc_options: []
216
216
  require_paths: