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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/opentelemetry/exporter/otlp/exporter.rb +3 -132
- data/lib/opentelemetry/exporter/otlp/version.rb +1 -1
- metadata +19 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8a70dac4077778d7509007cb05dbee8be6a986fd42922989774a63d9fcae2c12
|
|
4
|
+
data.tar.gz: 505e121828f48cb6422cc50a65dc3da7034af89a122d28a3aa69ef2c2a5748d7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: be9417b211b89cfc33cb3d121d78c2016761ddbfa4df0a18b6e9431f6b35e6ad6bf40c1c9742f5077c136ab6b33e8e01e51817a6f72334c9fa88724d7a429db0
|
|
7
|
+
data.tar.gz: 57c79d67e71d2dc46bc78b6deb504e6fb0fab260b16a57098534b51804b6a2132f344978af29cd689e0d480c74acc5c079057a7e9b153ff42a9468c827699190
|
data/CHANGELOG.md
CHANGED
|
@@ -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)
|
|
277
|
+
def encode(span_data)
|
|
297
278
|
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
298
|
-
|
|
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?
|
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.
|
|
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.
|
|
126
|
-
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/opentelemetry-exporter-otlp/v0.
|
|
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.
|
|
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.
|
|
157
|
+
rubygems_version: 4.0.16
|
|
144
158
|
specification_version: 4
|
|
145
159
|
summary: OTLP exporter for the OpenTelemetry framework
|
|
146
160
|
test_files: []
|