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 +4 -4
- data/CHANGELOG.md +8 -0
- data/LICENSE +1 -1
- data/lib/opentelemetry/exporter/otlp/exporter.rb +27 -10
- data/lib/opentelemetry/exporter/otlp/version.rb +2 -2
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d07dd6897e62a261598a0ca5319d678e6d996b800f3fc73f2467bcc0c6fa899b
|
4
|
+
data.tar.gz: b0dbee8a937d627bc025c650dfe8013cac4e92a78a382523cc796ca996b20676
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b847b754f84f5c488b9cf0dde660f4f4fc8c14938f07ae0eadc420b95691a4c7fe304cfb7cc43e56a57c496882167cb1b53136ea64b203bfbb7ed072a9e8ad24
|
7
|
+
data.tar.gz: 67654cd2493a263bf804a30ff4edba3834ba312d27c003baa93e630b59f004b355668af65d687849ff395380183af0b70c918e628789eec3e80f290fe2fbd9ae
|
data/CHANGELOG.md
CHANGED
@@ -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
|
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
|
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
|
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.
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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:
|