opentelemetry-exporter-otlp 0.26.1 → 0.26.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb071dc1c0134311f132447de543f3ca59c2f0180f1fce9e5a944649626b0afc
4
- data.tar.gz: 67bbd4fcfdb43ff12e0634de1c2fb1894de132cf5ebab5d52f78762a007f266c
3
+ metadata.gz: f511b15fd3e7e4d1452f58f852d9e29c97bff2743b520c080b187c657801b1bc
4
+ data.tar.gz: 52b9151d21904c685e026a813323415ef6b2be589e208b3a2307ad22fe5bead0
5
5
  SHA512:
6
- metadata.gz: 64cbdfa923fd9c836a4d315d44798df650b74b31936024300562e3d65a688166e5ce3c8e518db6047f908f1411bb9ebb00ce3fa9246c1cae0fcf24b7ccaea968
7
- data.tar.gz: 1a47dabce4a7ae7f623ee533fa8e99287efcc12e873153f6fe1966039cde385df7d38ba90472694843aaccdf6bcabea13cf76c36d4f1c6dd6e57a72d1494ec63
6
+ metadata.gz: 5d7c6101418e338123fa98b097028e819a94297a45d5c693ddea11226f9e984026f5951ad74076453636fcb6aee478b57721287d5c6807f8caa112a66f2786ed
7
+ data.tar.gz: 17a6022b2146e6b94cbae099cf47b3e86bb825c1a49a6e77548febdef93ddded862fa1685a9601c22235cb2996493a1f68db49e8b1399684482ab2bb3cd06cfd
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Release History: opentelemetry-exporter-otlp
2
2
 
3
+ ### v0.26.2 / 2024-01-23
4
+
5
+ * FIXED: Align endpoint environment variable handling with spec
6
+ * FIXED: Require csv for ruby-3.4 compatibility
7
+ * FIXED: Add context to metrics reporting of buffer-full events
8
+
3
9
  ### v0.26.1 / 2023-07-29
4
10
 
5
11
  * FIXED: Regenerate v0.20.0 protos
@@ -7,7 +7,6 @@
7
7
  require 'opentelemetry/common'
8
8
  require 'opentelemetry/sdk'
9
9
  require 'net/http'
10
- require 'csv'
11
10
  require 'zlib'
12
11
 
13
12
  require 'google/rpc/status_pb'
@@ -47,21 +46,16 @@ module OpenTelemetry
47
46
  end
48
47
  end
49
48
 
50
- def initialize(endpoint: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', 'OTEL_EXPORTER_OTLP_ENDPOINT', default: 'http://localhost:4318/v1/traces'),
49
+ def initialize(endpoint: nil,
51
50
  certificate_file: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE', 'OTEL_EXPORTER_OTLP_CERTIFICATE'),
52
51
  ssl_verify_mode: Exporter.ssl_verify_mode,
53
52
  headers: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_HEADERS', 'OTEL_EXPORTER_OTLP_HEADERS', default: {}),
54
53
  compression: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_COMPRESSION', 'OTEL_EXPORTER_OTLP_COMPRESSION', default: 'gzip'),
55
54
  timeout: OpenTelemetry::Common::Utilities.config_opt('OTEL_EXPORTER_OTLP_TRACES_TIMEOUT', 'OTEL_EXPORTER_OTLP_TIMEOUT', default: 10),
56
55
  metrics_reporter: nil)
57
- raise ArgumentError, "invalid url for OTLP::Exporter #{endpoint}" unless OpenTelemetry::Common::Utilities.valid_url?(endpoint)
58
- raise ArgumentError, "unsupported compression key #{compression}" unless compression.nil? || %w[gzip none].include?(compression)
56
+ @uri = prepare_endpoint(endpoint)
59
57
 
60
- @uri = if endpoint == ENV['OTEL_EXPORTER_OTLP_ENDPOINT']
61
- URI.join(endpoint, 'v1/traces')
62
- else
63
- URI(endpoint)
64
- end
58
+ raise ArgumentError, "unsupported compression key #{compression}" unless compression.nil? || %w[gzip none].include?(compression)
65
59
 
66
60
  @http = http_connection(@uri, ssl_verify_mode, certificate_file)
67
61
 
@@ -172,8 +166,7 @@ module OpenTelemetry
172
166
  redo if backoff?(retry_count: retry_count += 1, reason: response.code)
173
167
  FAILURE
174
168
  when Net::HTTPNotFound
175
- OpenTelemetry.handle_error(message: "OTLP exporter received http.code=404 for uri: '#{@path}'")
176
- @metrics_reporter.add_to_counter('otel.otlp_exporter.failure', labels: { 'reason' => response.code })
169
+ log_request_failure(response.code)
177
170
  FAILURE
178
171
  when Net::HTTPBadRequest, Net::HTTPClientError, Net::HTTPServerError
179
172
  log_status(response.body)
@@ -185,6 +178,7 @@ module OpenTelemetry
185
178
  redo if backoff?(retry_after: 0, retry_count: retry_count += 1, reason: response.code)
186
179
  else
187
180
  @http.finish
181
+ log_request_failure(response.code)
188
182
  FAILURE
189
183
  end
190
184
  rescue Net::OpenTimeout, Net::ReadTimeout
@@ -227,11 +221,16 @@ module OpenTelemetry
227
221
  klass_or_nil = ::Google::Protobuf::DescriptorPool.generated_pool.lookup(detail.type_name).msgclass
228
222
  detail.unpack(klass_or_nil) if klass_or_nil
229
223
  end.compact
230
- OpenTelemetry.handle_error(message: "OTLP exporter received rpc.Status{message=#{status.message}, details=#{details}}")
224
+ OpenTelemetry.handle_error(message: "OTLP exporter received rpc.Status{message=#{status.message}, details=#{details}} for uri=#{@uri}")
231
225
  rescue StandardError => e
232
226
  OpenTelemetry.handle_error(exception: e, message: 'unexpected error decoding rpc.Status in OTLP::Exporter#log_status')
233
227
  end
234
228
 
229
+ def log_request_failure(response_code)
230
+ OpenTelemetry.handle_error(message: "OTLP exporter received http.code=#{response_code} for uri='#{@uri}' in OTLP::Exporter#send_bytes")
231
+ @metrics_reporter.add_to_counter('otel.otlp_exporter.failure', labels: { 'reason' => response_code })
232
+ end
233
+
235
234
  def measure_request_duration
236
235
  start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
237
236
  begin
@@ -246,7 +245,7 @@ module OpenTelemetry
246
245
  end
247
246
 
248
247
  def backoff?(retry_count:, reason:, retry_after: nil) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
249
- @metrics_reporter.add_to_counter('otel.otlp_exporter.failure', labels: { 'reason' => reason })
248
+ log_request_failure(reason)
250
249
  return false if retry_count > RETRY_COUNT
251
250
 
252
251
  sleep_interval = nil
@@ -386,6 +385,21 @@ module OpenTelemetry
386
385
  result
387
386
  end
388
387
 
388
+ def prepare_endpoint(endpoint)
389
+ endpoint ||= ENV['OTEL_EXPORTER_OTLP_TRACES_ENDPOINT']
390
+ if endpoint.nil?
391
+ endpoint = ENV['OTEL_EXPORTER_OTLP_ENDPOINT'] || 'http://localhost:4318'
392
+ endpoint += '/' unless endpoint.end_with?('/')
393
+ URI.join(endpoint, 'v1/traces')
394
+ elsif endpoint.strip.empty?
395
+ raise ArgumentError, "invalid url for OTLP::Exporter #{endpoint}"
396
+ else
397
+ URI(endpoint)
398
+ end
399
+ rescue URI::InvalidURIError
400
+ raise ArgumentError, "invalid url for OTLP::Exporter #{endpoint}"
401
+ end
402
+
389
403
  def prepare_headers(config_headers)
390
404
  headers = case config_headers
391
405
  when String then parse_headers(config_headers)
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module Exporter
9
9
  module OTLP
10
10
  ## Current OpenTelemetry OTLP exporter version
11
- VERSION = '0.26.1'
11
+ VERSION = '0.26.2'
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.26.1
4
+ version: 0.26.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-01 00:00:00.000000000 Z
11
+ date: 2024-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: googleapis-common-protos-types
@@ -289,10 +289,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
289
289
  licenses:
290
290
  - Apache-2.0
291
291
  metadata:
292
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.26.1/file.CHANGELOG.html
292
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.26.2/file.CHANGELOG.html
293
293
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/exporter/otlp
294
294
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
295
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.26.1
295
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp/v0.26.2
296
296
  post_install_message:
297
297
  rdoc_options: []
298
298
  require_paths: