opentelemetry-exporter-otlp-metrics 0.4.0 → 0.5.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: a3c59178278b423aeda9f3e6ede5daa59d7af6b24fccf4811e00cb0356e525f0
4
- data.tar.gz: 9ac45831d8f3ef5705ca675ba3f05fab940f2c7af80efa745d3d601e707fb1df
3
+ metadata.gz: fb7a1d3707dfa6ccdd92e9767c73730b81e17f18b7768d05a4654f59710344e5
4
+ data.tar.gz: d9df50ded5e24bfae7f54998529ffe7732ffdc03355d87cf0e7b6dc012cad0ca
5
5
  SHA512:
6
- metadata.gz: ad1efe318125af6cb21eb3910d26efea2b775c7efe0ad70601df1b8062be3f6a78b74e1f202f51ee10879b00dc916b27dc552bad49a34a57ca6ae0918c1714ce
7
- data.tar.gz: 22a26bebfcc525d02eea24686731449425348407b6dfd3ac1b1f105ad2cc8c88296c946ab726a3006614ae4b1e3ba67470ece15fe63629545408d2e667952282
6
+ metadata.gz: 17213d8806134bc1666e0bba48e5b6fb70d6d598555ebc98a7d5401690bb076fcfbbb922ceaa9d0648b151b02fd5aebcd8e01135e53c447c1e2243de9ee21006
7
+ data.tar.gz: a103b6ba9271e9eaef6a6d4e12662f89c633d97d76f6cacd90d46ac4acca3947aa030ece1f25cf0443ddc4c4f406e3bb4d4e861fcd20091f5f327a408dfcae14
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Release History: opentelemetry-exporter-otlp-metrics
2
2
 
3
+ ### v0.5.0 / 2025-06-23
4
+
5
+ * ADDED: Add exponential histogram in otlp metrics exporter
6
+
7
+ ### v0.4.1 / 2025-04-17
8
+
9
+ * FIXED: Update out-of-date google-protobuf-any
10
+
3
11
  ### v0.4.0 / 2025-02-25
4
12
 
5
13
  - ADDED: Support 3.1 Min Version
data/README.md CHANGED
@@ -70,6 +70,8 @@ Or, if you use [bundler][bundler-home], include `opentelemetry-sdk`, `openteleme
70
70
  Then, configure the SDK to use the OTLP metrics exporter
71
71
 
72
72
  ```ruby
73
+ ENV['OTEL_METRICS_EXPORTER'] = 'none'
74
+
73
75
  require 'opentelemetry/sdk'
74
76
  require 'opentelemetry-metrics-sdk'
75
77
  require 'opentelemetry/exporter/otlp_metrics'
@@ -246,6 +246,35 @@ module OpenTelemetry
246
246
  )
247
247
 
248
248
  when :histogram
249
+ histogram_data_point(metrics)
250
+
251
+ end
252
+ end
253
+
254
+ def as_otlp_aggregation_temporality(type)
255
+ case type
256
+ when :delta then Opentelemetry::Proto::Metrics::V1::AggregationTemporality::AGGREGATION_TEMPORALITY_DELTA
257
+ when :cumulative then Opentelemetry::Proto::Metrics::V1::AggregationTemporality::AGGREGATION_TEMPORALITY_CUMULATIVE
258
+ else Opentelemetry::Proto::Metrics::V1::AggregationTemporality::AGGREGATION_TEMPORALITY_UNSPECIFIED
259
+ end
260
+ end
261
+
262
+ def histogram_data_point(metrics)
263
+ return if metrics.data_points.empty?
264
+
265
+ if metrics.data_points.first.instance_of?(OpenTelemetry::SDK::Metrics::Aggregation::ExponentialHistogramDataPoint)
266
+ Opentelemetry::Proto::Metrics::V1::Metric.new(
267
+ name: metrics.name,
268
+ description: metrics.description,
269
+ unit: metrics.unit,
270
+ exponential_histogram: Opentelemetry::Proto::Metrics::V1::ExponentialHistogram.new(
271
+ aggregation_temporality: as_otlp_aggregation_temporality(metrics.aggregation_temporality),
272
+ data_points: metrics.data_points.map do |ehdp|
273
+ exponential_histogram_data_point(ehdp)
274
+ end
275
+ )
276
+ )
277
+ elsif metrics.data_points.first.instance_of?(OpenTelemetry::SDK::Metrics::Aggregation::HistogramDataPoint)
249
278
  Opentelemetry::Proto::Metrics::V1::Metric.new(
250
279
  name: metrics.name,
251
280
  description: metrics.description,
@@ -253,22 +282,14 @@ module OpenTelemetry
253
282
  histogram: Opentelemetry::Proto::Metrics::V1::Histogram.new(
254
283
  aggregation_temporality: as_otlp_aggregation_temporality(metrics.aggregation_temporality),
255
284
  data_points: metrics.data_points.map do |hdp|
256
- histogram_data_point(hdp)
285
+ explicit_histogram_data_point(hdp)
257
286
  end
258
287
  )
259
288
  )
260
289
  end
261
290
  end
262
291
 
263
- def as_otlp_aggregation_temporality(type)
264
- case type
265
- when :delta then Opentelemetry::Proto::Metrics::V1::AggregationTemporality::AGGREGATION_TEMPORALITY_DELTA
266
- when :cumulative then Opentelemetry::Proto::Metrics::V1::AggregationTemporality::AGGREGATION_TEMPORALITY_CUMULATIVE
267
- else Opentelemetry::Proto::Metrics::V1::AggregationTemporality::AGGREGATION_TEMPORALITY_UNSPECIFIED
268
- end
269
- end
270
-
271
- def histogram_data_point(hdp)
292
+ def explicit_histogram_data_point(hdp)
272
293
  Opentelemetry::Proto::Metrics::V1::HistogramDataPoint.new(
273
294
  attributes: hdp.attributes.map { |k, v| as_otlp_key_value(k, v) },
274
295
  start_time_unix_nano: hdp.start_time_unix_nano,
@@ -283,6 +304,31 @@ module OpenTelemetry
283
304
  )
284
305
  end
285
306
 
307
+ def exponential_histogram_data_point(ehdp)
308
+ Opentelemetry::Proto::Metrics::V1::ExponentialHistogramDataPoint.new(
309
+ attributes: ehdp.attributes.map { |k, v| as_otlp_key_value(k, v) },
310
+ start_time_unix_nano: ehdp.start_time_unix_nano,
311
+ time_unix_nano: ehdp.time_unix_nano,
312
+ count: ehdp.count,
313
+ sum: ehdp.sum,
314
+ scale: ehdp.scale,
315
+ zero_count: ehdp.zero_count,
316
+ positive: Opentelemetry::Proto::Metrics::V1::ExponentialHistogramDataPoint::Buckets.new(
317
+ offset: ehdp.positive.offset,
318
+ bucket_counts: ehdp.positive.counts
319
+ ),
320
+ negative: Opentelemetry::Proto::Metrics::V1::ExponentialHistogramDataPoint::Buckets.new(
321
+ offset: ehdp.negative.offset,
322
+ bucket_counts: ehdp.negative.counts
323
+ ),
324
+ flags: ehdp.flags,
325
+ exemplars: ehdp.exemplars,
326
+ min: ehdp.min,
327
+ max: ehdp.max,
328
+ zero_threshold: ehdp.zero_threshold
329
+ )
330
+ end
331
+
286
332
  def number_data_point(ndp)
287
333
  args = {
288
334
  attributes: ndp.attributes.map { |k, v| as_otlp_key_value(k, v) },
@@ -117,7 +117,8 @@ module OpenTelemetry
117
117
  def log_status(body)
118
118
  status = Google::Rpc::Status.decode(body)
119
119
  details = status.details.map do |detail|
120
- klass_or_nil = ::Google::Protobuf::DescriptorPool.generated_pool.lookup(detail.type_name).msgclass
120
+ type_name = detail.type_url.to_s.split('/').last.to_s
121
+ klass_or_nil = ::Google::Protobuf::DescriptorPool.generated_pool.lookup(type_name)&.msgclass
121
122
  detail.unpack(klass_or_nil) if klass_or_nil
122
123
  end.compact
123
124
  OpenTelemetry.handle_error(message: "OTLP metrics_exporter received rpc.Status{message=#{status.message}, details=#{details}}")
@@ -9,7 +9,7 @@ module OpenTelemetry
9
9
  module OTLP
10
10
  module Metrics
11
11
  ## Current OpenTelemetry OTLP exporter version
12
- VERSION = '0.4.0'
12
+ VERSION = '0.5.0'
13
13
  end
14
14
  end
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-exporter-otlp-metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.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: 2025-02-25 00:00:00.000000000 Z
11
+ date: 2025-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: googleapis-common-protos-types
@@ -240,6 +240,62 @@ dependencies:
240
240
  - - "~>"
241
241
  - !ruby/object:Gem::Version
242
242
  version: '1.65'
243
+ - !ruby/object:Gem::Dependency
244
+ name: rubocop-minitest
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - "~>"
248
+ - !ruby/object:Gem::Version
249
+ version: 0.38.0
250
+ type: :development
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - "~>"
255
+ - !ruby/object:Gem::Version
256
+ version: 0.38.0
257
+ - !ruby/object:Gem::Dependency
258
+ name: rubocop-performance
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - "~>"
262
+ - !ruby/object:Gem::Version
263
+ version: '1.25'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: '1.25'
271
+ - !ruby/object:Gem::Dependency
272
+ name: rubocop-rake
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: 0.7.1
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: 0.7.1
285
+ - !ruby/object:Gem::Dependency
286
+ name: rubocop-rspec
287
+ requirement: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: '3.5'
292
+ type: :development
293
+ prerelease: false
294
+ version_requirements: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - "~>"
297
+ - !ruby/object:Gem::Version
298
+ version: '3.5'
243
299
  - !ruby/object:Gem::Dependency
244
300
  name: simplecov
245
301
  requirement: !ruby/object:Gem::Requirement
@@ -324,10 +380,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
324
380
  licenses:
325
381
  - Apache-2.0
326
382
  metadata:
327
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp-metrics/v0.4.0/file.CHANGELOG.html
383
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp-metrics/v0.5.0/file.CHANGELOG.html
328
384
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/exporter/otlp-metrics
329
385
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
330
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp-metrics/v0.4.0
386
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-exporter-otlp-metrics/v0.5.0
331
387
  post_install_message:
332
388
  rdoc_options: []
333
389
  require_paths: