opentelemetry-exporter-otlp 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|