opentelemetry-metrics-sdk 0.4.1 → 0.6.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: 65d8c5195153d2f5a5935ada32ad8045eec7d2aa867876fe98dedf48ccc42a6a
4
- data.tar.gz: 2108b549a5eab96b9185eb45293074db155bd64554623c6d49921cb11ed0bea5
3
+ metadata.gz: a74df1307dfb40dbdaf08d87781c35d2736916d94ae06eef45b3237b3ba38631
4
+ data.tar.gz: 3a108b46150f768890f6cef2acd49557d83331cc4a84613b8c7de38861cfebdb
5
5
  SHA512:
6
- metadata.gz: cc5a6f9d822abc4ddb9e77d558ed21391fa68823248db02452436a53d4e82294c7f7dba04887c782d7f9e01e12514db70cde8b2bd73ef85ddc6b6753fa8bca52
7
- data.tar.gz: 17ac61e347fca948a49637d9699899ed16217a7bb06854f7451fbfc303fa8c553b43134c02a489cad06d0a4229694ecb8618080250c916297ec98ab5a7e2db2d
6
+ metadata.gz: 2b168a69a35cee4b798cf9195b0af540d79b2b9cbb687dd98abe295a517e38683fce1976a7028ab822f8e5aec3157b53043ed9ddbb436cf5a2f25101ddc50b61
7
+ data.tar.gz: a06ace144467243b00a4d19bec891d66d55f3da2c611d4569e393b805d31979ab47eed39dbb86d4b9d508519b69ce2f827acb3281c446d83fe8201a6e84150fe
data/CHANGELOG.md CHANGED
@@ -1,22 +1,31 @@
1
1
  # Release History: opentelemetry-metrics-sdk
2
2
 
3
+ ### v0.6.0 / 2025-02-25
4
+
5
+ - ADDED: Support 3.1 Min Version
6
+ - FIXED: Add is_monotonic flag to sum
7
+
8
+ ### v0.5.0 / 2025-01-08
9
+
10
+ - ADDED: Add synchronous gauge
11
+
3
12
  ### v0.4.1 / 2024-12-04
4
13
 
5
- * FIXED: Handle float value in NumberDataPoint
14
+ - FIXED: Handle float value in NumberDataPoint
6
15
 
7
16
  ### v0.4.0 / 2024-11-20
8
17
 
9
- * ADDED: Update metrics configuration patch
18
+ - ADDED: Update metrics configuration patch
10
19
 
11
20
  ### v0.3.0 / 2024-10-22
12
21
 
13
- * ADDED: Add basic metrics view
14
- * FIXED: Coerce aggregation_temporality to symbol
15
- * FIXED: Add warning if invalid meter name given
22
+ - ADDED: Add basic metrics view
23
+ - FIXED: Coerce aggregation_temporality to symbol
24
+ - FIXED: Add warning if invalid meter name given
16
25
 
17
26
  ### v0.2.0 / 2024-08-27
18
27
 
19
- * ADDED: Add basic periodic exporting metric_reader
28
+ - ADDED: Add basic periodic exporting metric_reader
20
29
 
21
30
  ### v0.1.0 / 2024-07-31
22
31
 
data/README.md CHANGED
@@ -25,6 +25,7 @@ At this time, you should be able to:
25
25
  * observable up down counters
26
26
  * Export using a pull exporter
27
27
  * Use delta aggregation temporality
28
+ * Periodic Exporting Metric Reader
28
29
 
29
30
  We do not yet have support for:
30
31
 
@@ -32,7 +33,6 @@ We do not yet have support for:
32
33
  * Cumulative aggregation temporality
33
34
  * Metrics Views
34
35
  * Metrics Exemplars
35
- * Periodic Exporting Metric Reader
36
36
  * Push metric exporting
37
37
 
38
38
  These lists are incomplete and are intended to give a broad description of what's available.
@@ -13,9 +13,10 @@ module OpenTelemetry
13
13
  class Sum
14
14
  attr_reader :aggregation_temporality
15
15
 
16
- def initialize(aggregation_temporality: ENV.fetch('OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE', :delta))
16
+ def initialize(aggregation_temporality: ENV.fetch('OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE', :delta), monotonic: false)
17
17
  # TODO: the default should be :cumulative, see issue #1555
18
18
  @aggregation_temporality = aggregation_temporality.to_sym
19
+ @monotonic = monotonic
19
20
  end
20
21
 
21
22
  def collect(start_time, end_time, data_points)
@@ -38,7 +39,13 @@ module OpenTelemetry
38
39
  end
39
40
  end
40
41
 
42
+ def monotonic?
43
+ @monotonic
44
+ end
45
+
41
46
  def update(increment, attributes, data_points)
47
+ return if @monotonic && increment < 0
48
+
42
49
  ndp = data_points[attributes] || data_points[attributes] = NumberDataPoint.new(
43
50
  attributes,
44
51
  nil,
@@ -42,7 +42,7 @@ module OpenTelemetry
42
42
  private
43
43
 
44
44
  def default_aggregation
45
- OpenTelemetry::SDK::Metrics::Aggregation::Sum.new
45
+ OpenTelemetry::SDK::Metrics::Aggregation::Sum.new(monotonic: true)
46
46
  end
47
47
  end
48
48
  end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright The OpenTelemetry Authors
4
+ #
5
+ # SPDX-License-Identifier: Apache-2.0
6
+
7
+ module OpenTelemetry
8
+ module SDK
9
+ module Metrics
10
+ module Instrument
11
+ # {Gauge} is the SDK implementation of {OpenTelemetry::Metrics::Gauge}.
12
+ class Gauge < OpenTelemetry::SDK::Metrics::Instrument::SynchronousInstrument
13
+ # Returns the instrument kind as a Symbol
14
+ #
15
+ # @return [Symbol]
16
+ def instrument_kind
17
+ :gauge
18
+ end
19
+
20
+ # Record the absolute value of the Gauge.
21
+ #
22
+ # @param [numeric] value The current absolute value.
23
+ # @param [Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}] attributes
24
+ # Values must be non-nil and (array of) string, boolean or numeric type.
25
+ # Array values must not contain nil elements and all elements must be of
26
+ # the same basic type (string, numeric, boolean).
27
+ def record(value, attributes: {})
28
+ # TODO: When the metrics SDK stabilizes and is merged into the main SDK,
29
+ # we can leverage the SDK Internal validation classes to enforce this:
30
+ # https://github.com/open-telemetry/opentelemetry-ruby/blob/6bec625ef49004f364457c26263df421526b60d6/sdk/lib/opentelemetry/sdk/internal.rb#L47
31
+ update(value, attributes)
32
+ nil
33
+ rescue StandardError => e
34
+ OpenTelemetry.handle_error(exception: e)
35
+ nil
36
+ end
37
+
38
+ private
39
+
40
+ def default_aggregation
41
+ OpenTelemetry::SDK::Metrics::Aggregation::LastValue.new
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -35,7 +35,7 @@ module OpenTelemetry
35
35
  private
36
36
 
37
37
  def default_aggregation
38
- OpenTelemetry::SDK::Metrics::Aggregation::Sum.new
38
+ OpenTelemetry::SDK::Metrics::Aggregation::Sum.new(monotonic: false)
39
39
  end
40
40
  end
41
41
  end
@@ -20,3 +20,4 @@ require 'opentelemetry/sdk/metrics/instrument/observable_counter'
20
20
  require 'opentelemetry/sdk/metrics/instrument/observable_gauge'
21
21
  require 'opentelemetry/sdk/metrics/instrument/observable_up_down_counter'
22
22
  require 'opentelemetry/sdk/metrics/instrument/up_down_counter'
23
+ require 'opentelemetry/sdk/metrics/instrument/gauge'
@@ -46,6 +46,7 @@ module OpenTelemetry
46
46
  case kind
47
47
  when :counter then OpenTelemetry::SDK::Metrics::Instrument::Counter.new(name, unit, description, @instrumentation_scope, @meter_provider)
48
48
  when :observable_counter then OpenTelemetry::SDK::Metrics::Instrument::ObservableCounter.new(name, unit, description, callback, @instrumentation_scope, @meter_provider)
49
+ when :gauge then OpenTelemetry::SDK::Metrics::Instrument::Gauge.new(name, unit, description, @instrumentation_scope, @meter_provider)
49
50
  when :histogram then OpenTelemetry::SDK::Metrics::Instrument::Histogram.new(name, unit, description, @instrumentation_scope, @meter_provider)
50
51
  when :observable_gauge then OpenTelemetry::SDK::Metrics::Instrument::ObservableGauge.new(name, unit, description, callback, @instrumentation_scope, @meter_provider)
51
52
  when :up_down_counter then OpenTelemetry::SDK::Metrics::Instrument::UpDownCounter.new(name, unit, description, @instrumentation_scope, @meter_provider)
@@ -18,7 +18,8 @@ module OpenTelemetry
18
18
  :data_points, # Hash{Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>} => Numeric}
19
19
  :aggregation_temporality, # Symbol
20
20
  :start_time_unix_nano, # Integer nanoseconds since Epoch
21
- :time_unix_nano) # Integer nanoseconds since Epoch
21
+ :time_unix_nano, # Integer nanoseconds since Epoch
22
+ :is_monotonic) # Boolean
22
23
  end
23
24
  end
24
25
  end
@@ -67,6 +67,8 @@ module OpenTelemetry
67
67
 
68
68
  def aggregate_metric_data(start_time, end_time, aggregation: nil)
69
69
  aggregator = aggregation || @default_aggregation
70
+ is_monotonic = aggregator.respond_to?(:monotonic?) ? aggregator.monotonic? : nil
71
+
70
72
  MetricData.new(
71
73
  @name,
72
74
  @description,
@@ -77,7 +79,8 @@ module OpenTelemetry
77
79
  aggregator.collect(start_time, end_time, @data_points),
78
80
  aggregator.aggregation_temporality,
79
81
  start_time,
80
- end_time
82
+ end_time,
83
+ is_monotonic
81
84
  )
82
85
  end
83
86
 
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module SDK
9
9
  module Metrics
10
10
  # Current OpenTelemetry metrics sdk version
11
- VERSION = '0.4.1'
11
+ VERSION = '0.6.0'
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-metrics-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-05 00:00:00.000000000 Z
11
+ date: 2025-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.1
33
+ version: '0.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.1
40
+ version: '0.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: opentelemetry-sdk
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -220,6 +220,7 @@ files:
220
220
  - lib/opentelemetry/sdk/metrics/export/periodic_metric_reader.rb
221
221
  - lib/opentelemetry/sdk/metrics/instrument.rb
222
222
  - lib/opentelemetry/sdk/metrics/instrument/counter.rb
223
+ - lib/opentelemetry/sdk/metrics/instrument/gauge.rb
223
224
  - lib/opentelemetry/sdk/metrics/instrument/histogram.rb
224
225
  - lib/opentelemetry/sdk/metrics/instrument/observable_counter.rb
225
226
  - lib/opentelemetry/sdk/metrics/instrument/observable_gauge.rb
@@ -239,11 +240,11 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
239
240
  licenses:
240
241
  - Apache-2.0
241
242
  metadata:
242
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.4.1/file.CHANGELOG.html
243
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.6.0/file.CHANGELOG.html
243
244
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/metrics_sdk
244
245
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
245
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.4.1
246
- post_install_message:
246
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.6.0
247
+ post_install_message:
247
248
  rdoc_options: []
248
249
  require_paths:
249
250
  - lib
@@ -251,15 +252,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
251
252
  requirements:
252
253
  - - ">="
253
254
  - !ruby/object:Gem::Version
254
- version: '3.0'
255
+ version: '3.1'
255
256
  required_rubygems_version: !ruby/object:Gem::Requirement
256
257
  requirements:
257
258
  - - ">="
258
259
  - !ruby/object:Gem::Version
259
260
  version: '0'
260
261
  requirements: []
261
- rubygems_version: 3.2.33
262
- signing_key:
262
+ rubygems_version: 3.3.27
263
+ signing_key:
263
264
  specification_version: 4
264
265
  summary: A stats collection and distributed tracing framework
265
266
  test_files: []