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 +4 -4
- data/CHANGELOG.md +13 -0
- data/README.md +1 -1
- data/lib/opentelemetry/exporter/otlp/exporter.rb +22 -28
- data/lib/opentelemetry/exporter/otlp/version.rb +1 -1
- metadata +51 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fb745d3f75cb361d8921375fac3d93c4ba439b04f6e1b88a16a3e1d37c0718b
|
4
|
+
data.tar.gz: c03ac82d66dba1f2d18c15c33e58067fc634d17dac61a390e92f965f1a3aed8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
-
|
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: '
|
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}"
|
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
|
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
|
-
|
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
|
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.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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
295
|
+
version: 2.6.0
|
254
296
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
255
297
|
requirements:
|
256
298
|
- - ">="
|