opentelemetry-metrics-sdk 0.13.1 → 0.14.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 +7 -0
- data/README.md +4 -4
- data/lib/opentelemetry/sdk/metrics/exemplar/exemplar_reservoir.rb +12 -0
- data/lib/opentelemetry/sdk/metrics/exemplar/noop_exemplar_reservoir.rb +4 -0
- data/lib/opentelemetry/sdk/metrics/meter_provider.rb +3 -5
- data/lib/opentelemetry/sdk/metrics/state/metric_stream.rb +2 -0
- data/lib/opentelemetry/sdk/metrics/version.rb +1 -1
- metadata +4 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 35222d1da9eadba8252b7110b20a504a5e5b339c7ecc50403b3d6056f6b2c282
|
|
4
|
+
data.tar.gz: 23732ae05bea5b79aa6678f636e429d5958a35b96cf7dbd54846212db33d6727
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 81abb739ad7ee5191f98d3577a2a7f65323dbb567ba137def5a0f35cf3937caf61f442e6ef3b8320d5cc2c0e6083c02a1f32e58d955d09461df1742f5df0e967
|
|
7
|
+
data.tar.gz: 83031636bdddd8317ca29fc8cf21f7bd17ca2f37cc06e16faba61b82d5286ea8e1c218de32461beb647ce8fd6a49928a0f73f26f26e0e219f19276214a744a5b
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Release History: opentelemetry-metrics-sdk
|
|
2
2
|
|
|
3
|
+
### v0.14.0 / 2026-05-12
|
|
4
|
+
|
|
5
|
+
* BREAKING CHANGE: Use trace_based exemplar filter by default (#2112)
|
|
6
|
+
* ADDED: Use trace_based exemplar filter by default (#2112)
|
|
7
|
+
* ADDED: Add git tag to source URI in gemspec (#2101)
|
|
8
|
+
* FIXED: Return false if it is noop_exemplar_reservoir (#2104)
|
|
9
|
+
|
|
3
10
|
### v0.13.1 / 2026-04-15
|
|
4
11
|
|
|
5
12
|
* FIXED: Move the metrics-sdk requires to support "require 'opentelemetry/sdk/metrics'" (#1956)
|
data/README.md
CHANGED
|
@@ -39,8 +39,8 @@ At this time, you should be able to:
|
|
|
39
39
|
* Export metrics on a schedule using `PeriodicMetricReader` with any compatible push exporter (e.g. OTLP via `opentelemetry-exporter-otlp-metrics`)
|
|
40
40
|
* Attach exemplars to metric data points for trace correlation:
|
|
41
41
|
* `AlwaysOnExemplarFilter` — every measurement is eligible
|
|
42
|
-
* `AlwaysOffExemplarFilter` — no exemplars collected
|
|
43
|
-
* `TraceBasedExemplarFilter` — only measurements inside a sampled trace
|
|
42
|
+
* `AlwaysOffExemplarFilter` — no exemplars collected
|
|
43
|
+
* `TraceBasedExemplarFilter` — only measurements inside a sampled trace (default)
|
|
44
44
|
|
|
45
45
|
We do not yet have support for:
|
|
46
46
|
|
|
@@ -278,7 +278,7 @@ OpenTelemetry.meter_provider.shutdown
|
|
|
278
278
|
|
|
279
279
|
Exemplars attach individual raw measurements — along with the trace context active at the time of the measurement — to an exported metric data point. This lets you jump from a metric spike directly to the trace that caused it.
|
|
280
280
|
|
|
281
|
-
By default exemplars
|
|
281
|
+
By default, exemplars use `TraceBasedExemplarFilter`, which records measurements only when they occur inside a sampled trace.
|
|
282
282
|
|
|
283
283
|
#### Enable via environment variable
|
|
284
284
|
|
|
@@ -289,7 +289,7 @@ export OTEL_METRICS_EXEMPLAR_FILTER=trace_based
|
|
|
289
289
|
# Eligible for every measurement regardless of trace context
|
|
290
290
|
export OTEL_METRICS_EXEMPLAR_FILTER=always_on
|
|
291
291
|
|
|
292
|
-
# Disabled
|
|
292
|
+
# Disabled
|
|
293
293
|
export OTEL_METRICS_EXEMPLAR_FILTER=always_off
|
|
294
294
|
```
|
|
295
295
|
|
|
@@ -32,6 +32,18 @@ module OpenTelemetry
|
|
|
32
32
|
def collect(attributes: nil, aggregation_temporality: :delta)
|
|
33
33
|
raise NotImplementedError, "#{self.class} must implement #collect"
|
|
34
34
|
end
|
|
35
|
+
|
|
36
|
+
# Called after dup to reset internal state before reuse for a new attribute set.
|
|
37
|
+
# Subclasses that hold mutable per-attribute state must override this.
|
|
38
|
+
def reset; end
|
|
39
|
+
|
|
40
|
+
# Returns true if this reservoir never stores exemplars.
|
|
41
|
+
# Used to skip the exemplar filter and timestamp lookups entirely.
|
|
42
|
+
#
|
|
43
|
+
# @return [Boolean]
|
|
44
|
+
def noop?
|
|
45
|
+
false
|
|
46
|
+
end
|
|
35
47
|
end
|
|
36
48
|
end
|
|
37
49
|
end
|
|
@@ -130,19 +130,17 @@ module OpenTelemetry
|
|
|
130
130
|
end
|
|
131
131
|
alias register_asynchronous_instrument register_synchronous_instrument
|
|
132
132
|
|
|
133
|
-
# spec: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#exemplar
|
|
134
|
-
# this is one way to turn on the exemplar (exemplar should be turned off by default)
|
|
135
133
|
def exemplar_filter_setup
|
|
136
134
|
case ENV['OTEL_METRICS_EXEMPLAR_FILTER']
|
|
137
135
|
when 'always_on'
|
|
138
136
|
@exemplar_filter = Exemplar::AlwaysOnExemplarFilter
|
|
139
|
-
when 'trace_based'
|
|
137
|
+
when nil, '', 'trace_based'
|
|
140
138
|
@exemplar_filter = Exemplar::TraceBasedExemplarFilter
|
|
141
139
|
when 'always_off'
|
|
142
140
|
@exemplar_filter = Exemplar::AlwaysOffExemplarFilter
|
|
143
141
|
else
|
|
144
|
-
OpenTelemetry.logger.warn("OTEL_METRICS_EXEMPLAR_FILTER #{ENV['OTEL_METRICS_EXEMPLAR_FILTER']} is not part of the provided exemplar filters.
|
|
145
|
-
@exemplar_filter = Exemplar::
|
|
142
|
+
OpenTelemetry.logger.warn("OTEL_METRICS_EXEMPLAR_FILTER #{ENV['OTEL_METRICS_EXEMPLAR_FILTER']} is not part of the provided exemplar filters. Using trace_based.")
|
|
143
|
+
@exemplar_filter = Exemplar::TraceBasedExemplarFilter
|
|
146
144
|
end
|
|
147
145
|
end
|
|
148
146
|
|
|
@@ -120,6 +120,8 @@ module OpenTelemetry
|
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
def should_offer_exemplar?(value, attributes)
|
|
123
|
+
return false if @exemplar_reservoir&.noop?
|
|
124
|
+
|
|
123
125
|
context = OpenTelemetry::Context.current
|
|
124
126
|
time = OpenTelemetry::Common::Utilities.time_in_nanoseconds
|
|
125
127
|
@exemplar_filter&.should_sample?(value, time, attributes, context)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: opentelemetry-metrics-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.14.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenTelemetry Authors
|
|
@@ -51,20 +51,6 @@ dependencies:
|
|
|
51
51
|
- - "~>"
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '1.2'
|
|
54
|
-
- !ruby/object:Gem::Dependency
|
|
55
|
-
name: benchmark-ipsa
|
|
56
|
-
requirement: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
58
|
-
- - "~>"
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
version: 0.2.0
|
|
61
|
-
type: :development
|
|
62
|
-
prerelease: false
|
|
63
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - "~>"
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: 0.2.0
|
|
68
54
|
- !ruby/object:Gem::Dependency
|
|
69
55
|
name: minitest
|
|
70
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -233,10 +219,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
|
|
|
233
219
|
licenses:
|
|
234
220
|
- Apache-2.0
|
|
235
221
|
metadata:
|
|
236
|
-
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.
|
|
237
|
-
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/
|
|
222
|
+
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.14.0/file.CHANGELOG.html
|
|
223
|
+
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/opentelemetry-metrics-sdk/v0.14.0/metrics_sdk
|
|
238
224
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
|
|
239
|
-
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.
|
|
225
|
+
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.14.0
|
|
240
226
|
rdoc_options: []
|
|
241
227
|
require_paths:
|
|
242
228
|
- lib
|