opentelemetry-exporter-otlp 0.34.1 → 0.35.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: e7110e46c777f22a84841b10eb21fd7e5c0dc71eb01dc8bb8a5524e305011af4
4
- data.tar.gz: 305573c2b760c777edf01cf192a37173b67f856183a8563ca35cb984875f5948
3
+ metadata.gz: 8a70dac4077778d7509007cb05dbee8be6a986fd42922989774a63d9fcae2c12
4
+ data.tar.gz: 505e121828f48cb6422cc50a65dc3da7034af89a122d28a3aa69ef2c2a5748d7
5
5
  SHA512:
6
- metadata.gz: fd9f2d219fba03bda24d4ee5d59658f2972e7361a7edbd170ec728a10fdb20658a7f875cf91187829b6ca956aa1e712053da8c1a16961346649ada4a987551b9
7
- data.tar.gz: d591f875c29c4e817cff8f86d62710f59a3011249a799a9ad548354e3000207b7602bc745613bdb2522cc7c6e56ab1bd0f383a9eef6df4c7fabc8bdb4aac61bd
6
+ metadata.gz: be9417b211b89cfc33cb3d121d78c2016761ddbfa4df0a18b6e9431f6b35e6ad6bf40c1c9742f5077c136ab6b33e8e01e51817a6f72334c9fa88724d7a429db0
7
+ data.tar.gz: 57c79d67e71d2dc46bc78b6deb504e6fb0fab260b16a57098534b51804b6a2132f344978af29cd689e0d480c74acc5c079057a7e9b153ff42a9468c827699190
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Release History: opentelemetry-exporter-otlp
2
2
 
3
+ ### v0.35.0 / 2026-09-01
4
+
5
+ * ADDED: Use common conversion including supporting flags (#2250)
6
+
3
7
  ### v0.34.1 / 2026-07-08
4
8
 
5
9
  * DOCS: Update source for gemspec links to RubyDoc (#2123)
@@ -5,6 +5,7 @@
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
7
  require 'opentelemetry/common'
8
+ require 'opentelemetry/exporter/otlp/common'
8
9
  require 'opentelemetry/sdk'
9
10
  require 'net/http'
10
11
  require 'zlib'
@@ -105,26 +106,6 @@ module OpenTelemetry
105
106
 
106
107
  private
107
108
 
108
- # Builds span flags based on whether the parent span context is remote.
109
- # This follows the OTLP specification for span flags.
110
- def build_span_flags(parent_span_is_remote, base_flags)
111
- # Extract integer value from TraceFlags object if needed
112
- # Derive the low 8-bit W3C trace flags using the public API.
113
- base_flags_int =
114
- if base_flags.sampled?
115
- 1
116
- else
117
- 0
118
- end
119
-
120
- has_remote_mask = Opentelemetry::Proto::Trace::V1::SpanFlags::SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
121
- is_remote_mask = Opentelemetry::Proto::Trace::V1::SpanFlags::SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK
122
-
123
- flags = base_flags_int | has_remote_mask
124
- flags |= is_remote_mask if parent_span_is_remote
125
- flags
126
- end
127
-
128
109
  def http_connection(uri, ssl_verify_mode, certificate_file, client_certificate_file, client_key_file)
129
110
  http = Net::HTTP.new(uri.hostname, uri.port)
130
111
  http.use_ssl = uri.scheme == 'https'
@@ -293,32 +274,9 @@ module OpenTelemetry
293
274
  true
294
275
  end
295
276
 
296
- def encode(span_data) # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity
277
+ def encode(span_data)
297
278
  start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
298
- Opentelemetry::Proto::Collector::Trace::V1::ExportTraceServiceRequest.encode(
299
- Opentelemetry::Proto::Collector::Trace::V1::ExportTraceServiceRequest.new(
300
- resource_spans: span_data
301
- .group_by(&:resource)
302
- .map do |resource, span_datas|
303
- Opentelemetry::Proto::Trace::V1::ResourceSpans.new(
304
- resource: Opentelemetry::Proto::Resource::V1::Resource.new(
305
- attributes: resource.attribute_enumerator.map { |key, value| as_otlp_key_value(key, value) }
306
- ),
307
- scope_spans: span_datas
308
- .group_by(&:instrumentation_scope)
309
- .map do |il, sds|
310
- Opentelemetry::Proto::Trace::V1::ScopeSpans.new(
311
- scope: Opentelemetry::Proto::Common::V1::InstrumentationScope.new(
312
- name: il.name,
313
- version: il.version
314
- ),
315
- spans: sds.map { |sd| as_otlp_span(sd) }
316
- )
317
- end
318
- )
319
- end
320
- )
321
- )
279
+ OpenTelemetry::Exporter::OTLP::Common.as_encoded_etsr(span_data)
322
280
  rescue StandardError => e
323
281
  OpenTelemetry.handle_error(exception: e, message: 'unexpected error in OTLP::Exporter#encode')
324
282
  nil
@@ -329,93 +287,6 @@ module OpenTelemetry
329
287
  value: duration_ms)
330
288
  end
331
289
 
332
- def as_otlp_span(span_data) # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
333
- Opentelemetry::Proto::Trace::V1::Span.new(
334
- trace_id: span_data.trace_id,
335
- span_id: span_data.span_id,
336
- trace_state: span_data.tracestate.to_s,
337
- parent_span_id: span_data.parent_span_id == OpenTelemetry::Trace::INVALID_SPAN_ID ? nil : span_data.parent_span_id,
338
- name: span_data.name,
339
- kind: as_otlp_span_kind(span_data.kind),
340
- start_time_unix_nano: span_data.start_timestamp,
341
- end_time_unix_nano: span_data.end_timestamp,
342
- attributes: span_data.attributes&.map { |k, v| as_otlp_key_value(k, v) },
343
- dropped_attributes_count: span_data.total_recorded_attributes - span_data.attributes&.size.to_i,
344
- events: span_data.events&.map do |event|
345
- Opentelemetry::Proto::Trace::V1::Span::Event.new(
346
- time_unix_nano: event.timestamp,
347
- name: event.name,
348
- attributes: event.attributes&.map { |k, v| as_otlp_key_value(k, v) }
349
- # TODO: track dropped_attributes_count in Span#append_event
350
- )
351
- end,
352
- dropped_events_count: span_data.total_recorded_events - span_data.events&.size.to_i,
353
- links: span_data.links&.map do |link|
354
- Opentelemetry::Proto::Trace::V1::Span::Link.new(
355
- trace_id: link.span_context.trace_id,
356
- span_id: link.span_context.span_id,
357
- trace_state: link.span_context.tracestate.to_s,
358
- attributes: link.attributes&.map { |k, v| as_otlp_key_value(k, v) },
359
- # TODO: track dropped_attributes_count in Span#trim_links
360
- flags: build_span_flags(link.span_context.remote?, link.span_context.trace_flags)
361
- )
362
- end,
363
- dropped_links_count: span_data.total_recorded_links - span_data.links&.size.to_i,
364
- status: span_data.status&.yield_self do |status|
365
- Opentelemetry::Proto::Trace::V1::Status.new(
366
- code: as_otlp_status_code(status.code),
367
- message: status.description
368
- )
369
- end,
370
- flags: build_span_flags(span_data.parent_span_is_remote, span_data.trace_flags)
371
- )
372
- end
373
-
374
- def as_otlp_status_code(code)
375
- case code
376
- when OpenTelemetry::Trace::Status::OK then Opentelemetry::Proto::Trace::V1::Status::StatusCode::STATUS_CODE_OK
377
- when OpenTelemetry::Trace::Status::ERROR then Opentelemetry::Proto::Trace::V1::Status::StatusCode::STATUS_CODE_ERROR
378
- else Opentelemetry::Proto::Trace::V1::Status::StatusCode::STATUS_CODE_UNSET
379
- end
380
- end
381
-
382
- def as_otlp_span_kind(kind)
383
- case kind
384
- when :internal then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_INTERNAL
385
- when :server then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_SERVER
386
- when :client then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_CLIENT
387
- when :producer then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_PRODUCER
388
- when :consumer then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_CONSUMER
389
- else Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_UNSPECIFIED
390
- end
391
- end
392
-
393
- def as_otlp_key_value(key, value)
394
- Opentelemetry::Proto::Common::V1::KeyValue.new(key: key, value: as_otlp_any_value(value))
395
- rescue Encoding::UndefinedConversionError => e
396
- encoded_value = value.encode('UTF-8', invalid: :replace, undef: :replace, replace: '�')
397
- OpenTelemetry.handle_error(exception: e, message: "encoding error for key #{key} and value #{encoded_value}")
398
- Opentelemetry::Proto::Common::V1::KeyValue.new(key: key, value: as_otlp_any_value('Encoding Error'))
399
- end
400
-
401
- def as_otlp_any_value(value)
402
- result = Opentelemetry::Proto::Common::V1::AnyValue.new
403
- case value
404
- when String
405
- result.string_value = value
406
- when Integer
407
- result.int_value = value
408
- when Float
409
- result.double_value = value
410
- when true, false
411
- result.bool_value = value
412
- when Array
413
- values = value.map { |element| as_otlp_any_value(element) }
414
- result.array_value = Opentelemetry::Proto::Common::V1::ArrayValue.new(values: values)
415
- end
416
- result
417
- end
418
-
419
290
  def prepare_endpoint(endpoint)
420
291
  endpoint ||= ENV.fetch('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', nil)
421
292
  if endpoint.nil?
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module Exporter
9
9
  module OTLP
10
10
  ## Current OpenTelemetry OTLP exporter version
11
- VERSION = '0.34.1'
11
+ VERSION = '0.35.0'
12
12
  end
13
13
  end
14
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-exporter-otlp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.34.1
4
+ version: 0.35.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
@@ -65,6 +65,20 @@ dependencies:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0.20'
68
+ - !ruby/object:Gem::Dependency
69
+ name: opentelemetry-exporter-otlp-common
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
68
82
  - !ruby/object:Gem::Dependency
69
83
  name: opentelemetry-sdk
70
84
  requirement: !ruby/object:Gem::Requirement
@@ -122,10 +136,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
122
136
  licenses:
123
137
  - Apache-2.0
124
138
  metadata:
125
- changelog_uri: https://rubydoc.info/gems/opentelemetry-exporter-otlp/0.34.1/file/CHANGELOG.md
126
- source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/opentelemetry-exporter-otlp/v0.34.1/exporter/otlp
139
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-exporter-otlp/0.35.0/file/CHANGELOG.md
140
+ source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/opentelemetry-exporter-otlp/v0.35.0/exporter/otlp
127
141
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
128
- documentation_uri: https://rubydoc.info/gems/opentelemetry-exporter-otlp/0.34.1
142
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-exporter-otlp/0.35.0
129
143
  rdoc_options: []
130
144
  require_paths:
131
145
  - lib
@@ -140,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
154
  - !ruby/object:Gem::Version
141
155
  version: '0'
142
156
  requirements: []
143
- rubygems_version: 4.0.10
157
+ rubygems_version: 4.0.16
144
158
  specification_version: 4
145
159
  summary: OTLP exporter for the OpenTelemetry framework
146
160
  test_files: []