opentelemetry-metrics-api 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b12f327c335cd467d0e0daa11cc0c441d58e41397bf489adeb1fb1334267feee
|
|
4
|
+
data.tar.gz: 8da54ae390e0424ebfc80a4db2fa03d93f070a14f30efd8330c56a86d21b13e3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '011425548b027c8548af12161d9689a43f77dd5817b10b719be103fccd3b34fd55d466ea70b688425d146541ba3e815eb6df4a2dcb721682989650858c240bc8'
|
|
7
|
+
data.tar.gz: 333241cd8ce10cc40214398a63169a3efafb5c3b3cd26cd4da1af2c09f5ebd905c6e40318b7f9983e15b0ba87c51250d7b9ca747e2f2882172427daf37b67174
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Release History: opentelemetry-metrics-api
|
|
2
2
|
|
|
3
|
+
### v0.5.0 / 2026-04-07
|
|
4
|
+
|
|
5
|
+
* ADDED: Min Ruby Version 3.3 (#2070)
|
|
6
|
+
* ADDED: Add basic support for metrics exemplar (#1609)
|
|
7
|
+
|
|
3
8
|
### v0.4.0 / 2025-08-14
|
|
4
9
|
|
|
5
10
|
- ADDED: Support asynchronous instruments: ObservableGauge, ObservableCounter and ObservableUpDownCounter
|
|
@@ -8,21 +8,23 @@ module OpenTelemetry
|
|
|
8
8
|
module Internal
|
|
9
9
|
# @api private
|
|
10
10
|
class ProxyInstrument
|
|
11
|
-
def initialize(kind, name, unit, desc, callable)
|
|
11
|
+
def initialize(kind, name, unit, desc, callable, exemplar_filter, exemplar_reservoir)
|
|
12
12
|
@kind = kind
|
|
13
13
|
@name = name
|
|
14
14
|
@unit = unit
|
|
15
15
|
@desc = desc
|
|
16
16
|
@callable = callable
|
|
17
|
+
@exemplar_filter = exemplar_filter
|
|
18
|
+
@exemplar_reservoir = exemplar_reservoir
|
|
17
19
|
@delegate = nil
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
def upgrade_with(meter)
|
|
21
23
|
@delegate = case @kind
|
|
22
|
-
when :counter, :histogram, :up_down_counter
|
|
23
|
-
meter.send("create_#{@kind}", @name, unit: @unit, description: @desc)
|
|
24
|
+
when :counter, :histogram, :up_down_counter
|
|
25
|
+
meter.send("create_#{@kind}", @name, unit: @unit, description: @desc, exemplar_filter: @exemplar_filter, exemplar_reservoir: @exemplar_reservoir)
|
|
24
26
|
when :observable_counter, :observable_gauge, :observable_up_down_counter
|
|
25
|
-
meter.send("create_#{@kind}", @name, unit: @unit, description: @desc, callback: @callback)
|
|
27
|
+
meter.send("create_#{@kind}", @name, unit: @unit, description: @desc, exemplar_filter: @exemplar_filter, exemplar_reservoir: @exemplar_reservoir, callback: @callback)
|
|
26
28
|
end
|
|
27
29
|
end
|
|
28
30
|
|
|
@@ -38,18 +38,18 @@ module OpenTelemetry
|
|
|
38
38
|
|
|
39
39
|
private
|
|
40
40
|
|
|
41
|
-
def create_instrument(kind, name, unit, description, callback)
|
|
41
|
+
def create_instrument(kind, name, unit, description, callback, exemplar_filter, exemplar_reservoir)
|
|
42
42
|
super do
|
|
43
|
-
next ProxyInstrument.new(kind, name, unit, description, callback) if @delegate.nil?
|
|
43
|
+
next ProxyInstrument.new(kind, name, unit, description, callback, exemplar_filter, exemplar_reservoir) if @delegate.nil?
|
|
44
44
|
|
|
45
45
|
case kind
|
|
46
|
-
when :counter then @delegate.create_counter(name, unit: unit, description: description)
|
|
47
|
-
when :histogram then @delegate.create_histogram(name, unit: unit, description: description)
|
|
48
|
-
when :
|
|
49
|
-
when :
|
|
50
|
-
when :observable_counter then @delegate.create_observable_counter(name, unit: unit, description: description, callback: callback)
|
|
51
|
-
when :observable_gauge then @delegate.create_observable_gauge(name, unit: unit, description: description, callback: callback)
|
|
52
|
-
when :observable_up_down_counter then @delegate.create_observable_up_down_counter(name, unit: unit, description: description, callback: callback)
|
|
46
|
+
when :counter then @delegate.create_counter(name, unit: unit, description: description, exemplar_filter: exemplar_filter, exemplar_reservoir: exemplar_reservoir)
|
|
47
|
+
when :histogram then @delegate.create_histogram(name, unit: unit, description: description, exemplar_filter: exemplar_filter, exemplar_reservoir: exemplar_reservoir)
|
|
48
|
+
when :up_down_counter then @delegate.create_up_down_counter(name, unit: unit, description: description, exemplar_filter: exemplar_filter, exemplar_reservoir: exemplar_reservoir)
|
|
49
|
+
when :gauge then @delegate.create_gauge(name, unit: unit, description: description, exemplar_filter: exemplar_filter, exemplar_reservoir: exemplar_reservoir)
|
|
50
|
+
when :observable_counter then @delegate.create_observable_counter(name, unit: unit, description: description, exemplar_filter: exemplar_filter, exemplar_reservoir: exemplar_reservoir, callback: callback)
|
|
51
|
+
when :observable_gauge then @delegate.create_observable_gauge(name, unit: unit, description: description, exemplar_filter: exemplar_filter, exemplar_reservoir: exemplar_reservoir, callback: callback)
|
|
52
|
+
when :observable_up_down_counter then @delegate.create_observable_up_down_counter(name, unit: unit, description: description, exemplar_filter: exemplar_filter, exemplar_reservoir: exemplar_reservoir, callback: callback)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
end
|
|
@@ -36,15 +36,27 @@ module OpenTelemetry
|
|
|
36
36
|
#
|
|
37
37
|
# exception_counter = meter.create_counter("exceptions",
|
|
38
38
|
# description: "number of exceptions caught",
|
|
39
|
-
# unit: 's'
|
|
39
|
+
# unit: 's',
|
|
40
|
+
# exemplar_filter: OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter,
|
|
41
|
+
# exemplar_reservoir: OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir.new)
|
|
40
42
|
#
|
|
41
43
|
# @param name [String] the name of the counter
|
|
42
44
|
# @param unit [optional String] an optional string provided by user.
|
|
43
45
|
# @param description [optional String] an optional free-form text provided by user.
|
|
46
|
+
# @param exemplar_filter [optional Object] an optional filter to control which measurements are
|
|
47
|
+
# eligible to become exemplars. Must respond to `#should_sample?`. Available SDK implementations:
|
|
48
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOnExemplarFilter` - all measurements are eligible
|
|
49
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOffExemplarFilter` - no measurements are eligible
|
|
50
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter` - only measurements in a sampled span context are eligible
|
|
51
|
+
# @param exemplar_reservoir [optional Object] an optional reservoir used to sample exemplars
|
|
52
|
+
# from eligible measurements. Must respond to `#offer` and `#collect`. Available SDK implementations:
|
|
53
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir` - uniformly-weighted sampling
|
|
54
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlignedHistogramBucketExemplarReservoir` - one exemplar per histogram bucket (recommended for histograms)
|
|
55
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::NoopExemplarReservoir` - no-op, disables exemplar collection
|
|
44
56
|
#
|
|
45
57
|
# @return [nil] after creation of counter, it will be stored in instrument_registry
|
|
46
|
-
def create_counter(name, unit: nil, description: nil)
|
|
47
|
-
create_instrument(:counter, name, unit, description, nil) { COUNTER }
|
|
58
|
+
def create_counter(name, unit: nil, description: nil, exemplar_filter: nil, exemplar_reservoir: nil)
|
|
59
|
+
create_instrument(:counter, name, unit, description, nil, exemplar_filter, exemplar_reservoir) { COUNTER }
|
|
48
60
|
end
|
|
49
61
|
|
|
50
62
|
# Histogram is a synchronous Instrument which can be used to report arbitrary values that are likely
|
|
@@ -55,15 +67,27 @@ module OpenTelemetry
|
|
|
55
67
|
#
|
|
56
68
|
# http_server_duration = meter.create_histogram("http.server.duration",
|
|
57
69
|
# description: "measures the duration of the inbound HTTP request",
|
|
58
|
-
# unit: "s"
|
|
70
|
+
# unit: "s",
|
|
71
|
+
# exemplar_filter: OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter,
|
|
72
|
+
# exemplar_reservoir: OpenTelemetry::SDK::Metrics::Exemplar::AlignedHistogramBucketExemplarReservoir.new)
|
|
59
73
|
#
|
|
60
74
|
# @param name [String] the name of the histogram
|
|
61
75
|
# @param unit [optional String] an optional string provided by user.
|
|
62
76
|
# @param description [optional String] an optional free-form text provided by user.
|
|
77
|
+
# @param exemplar_filter [optional Object] an optional filter to control which measurements are
|
|
78
|
+
# eligible to become exemplars. Must respond to `#should_sample?`. Available SDK implementations:
|
|
79
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOnExemplarFilter` - all measurements are eligible
|
|
80
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOffExemplarFilter` - no measurements are eligible
|
|
81
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter` - only measurements in a sampled span context are eligible
|
|
82
|
+
# @param exemplar_reservoir [optional Object] an optional reservoir used to sample exemplars
|
|
83
|
+
# from eligible measurements. Must respond to `#offer` and `#collect`. Available SDK implementations:
|
|
84
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir` - uniformly-weighted sampling
|
|
85
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlignedHistogramBucketExemplarReservoir` - one exemplar per histogram bucket (recommended for histograms)
|
|
86
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::NoopExemplarReservoir` - no-op, disables exemplar collection
|
|
63
87
|
#
|
|
64
88
|
# @return [nil] after creation of histogram, it will be stored in instrument_registry
|
|
65
|
-
def create_histogram(name, unit: nil, description: nil)
|
|
66
|
-
create_instrument(:histogram, name, unit, description, nil) { HISTOGRAM }
|
|
89
|
+
def create_histogram(name, unit: nil, description: nil, exemplar_filter: nil, exemplar_reservoir: nil)
|
|
90
|
+
create_instrument(:histogram, name, unit, description, nil, exemplar_filter, exemplar_reservoir) { HISTOGRAM }
|
|
67
91
|
end
|
|
68
92
|
|
|
69
93
|
# Gauge is an synchronous Instrument which reports non-additive value(s)
|
|
@@ -72,16 +96,27 @@ module OpenTelemetry
|
|
|
72
96
|
#
|
|
73
97
|
# meter.create_gauge("cpu.frequency",
|
|
74
98
|
# description: "the real-time CPU clock speed",
|
|
75
|
-
# unit: "ms"
|
|
76
|
-
#
|
|
99
|
+
# unit: "ms",
|
|
100
|
+
# exemplar_filter: OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter,
|
|
101
|
+
# exemplar_reservoir: OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir.new)
|
|
77
102
|
#
|
|
78
103
|
# @param name [String] the name of the gauge.
|
|
79
104
|
# @param unit [optional String] an optional string provided by user.
|
|
80
105
|
# @param description [optional String] an optional free-form text provided by user.
|
|
106
|
+
# @param exemplar_filter [optional Object] an optional filter to control which measurements are
|
|
107
|
+
# eligible to become exemplars. Must respond to `#should_sample?`. Available SDK implementations:
|
|
108
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOnExemplarFilter` - all measurements are eligible
|
|
109
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOffExemplarFilter` - no measurements are eligible
|
|
110
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter` - only measurements in a sampled span context are eligible
|
|
111
|
+
# @param exemplar_reservoir [optional Object] an optional reservoir used to sample exemplars
|
|
112
|
+
# from eligible measurements. Must respond to `#offer` and `#collect`. Available SDK implementations:
|
|
113
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir` - uniformly-weighted sampling
|
|
114
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlignedHistogramBucketExemplarReservoir` - one exemplar per histogram bucket (recommended for histograms)
|
|
115
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::NoopExemplarReservoir` - no-op, disables exemplar collection
|
|
81
116
|
#
|
|
82
117
|
# @return [nil] after creation of gauge, it will be stored in instrument_registry
|
|
83
|
-
def create_gauge(name, unit: nil, description: nil)
|
|
84
|
-
create_instrument(:gauge, name, unit, description, nil) { GAUGE }
|
|
118
|
+
def create_gauge(name, unit: nil, description: nil, exemplar_filter: nil, exemplar_reservoir: nil)
|
|
119
|
+
create_instrument(:gauge, name, unit, description, nil, exemplar_filter, exemplar_reservoir) { GAUGE }
|
|
85
120
|
end
|
|
86
121
|
|
|
87
122
|
# UpDownCounter is a synchronous Instrument which supports increments and decrements.
|
|
@@ -90,15 +125,27 @@ module OpenTelemetry
|
|
|
90
125
|
#
|
|
91
126
|
# items_counter = meter.create_up_down_counter("store.inventory",
|
|
92
127
|
# description: "the number of the items available",
|
|
93
|
-
# unit: "s"
|
|
128
|
+
# unit: "s",
|
|
129
|
+
# exemplar_filter: OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter,
|
|
130
|
+
# exemplar_reservoir: OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir.new)
|
|
94
131
|
#
|
|
95
132
|
# @param name [String] the name of the up_down_counter
|
|
96
133
|
# @param unit [optional String] an optional string provided by user.
|
|
97
134
|
# @param description [optional String] an optional free-form text provided by user.
|
|
135
|
+
# @param exemplar_filter [optional Object] an optional filter to control which measurements are
|
|
136
|
+
# eligible to become exemplars. Must respond to `#should_sample?`. Available SDK implementations:
|
|
137
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOnExemplarFilter` - all measurements are eligible
|
|
138
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOffExemplarFilter` - no measurements are eligible
|
|
139
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter` - only measurements in a sampled span context are eligible
|
|
140
|
+
# @param exemplar_reservoir [optional Object] an optional reservoir used to sample exemplars
|
|
141
|
+
# from eligible measurements. Must respond to `#offer` and `#collect`. Available SDK implementations:
|
|
142
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir` - uniformly-weighted sampling
|
|
143
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlignedHistogramBucketExemplarReservoir` - one exemplar per histogram bucket (recommended for histograms)
|
|
144
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::NoopExemplarReservoir` - no-op, disables exemplar collection
|
|
98
145
|
#
|
|
99
146
|
# @return [nil] after creation of up_down_counter, it will be stored in instrument_registry
|
|
100
|
-
def create_up_down_counter(name, unit: nil, description: nil)
|
|
101
|
-
create_instrument(:up_down_counter, name, unit, description, nil) { UP_DOWN_COUNTER }
|
|
147
|
+
def create_up_down_counter(name, unit: nil, description: nil, exemplar_filter: nil, exemplar_reservoir: nil)
|
|
148
|
+
create_instrument(:up_down_counter, name, unit, description, nil, exemplar_filter, exemplar_reservoir) { UP_DOWN_COUNTER }
|
|
102
149
|
end
|
|
103
150
|
|
|
104
151
|
# ObservableCounter is an asynchronous Instrument which reports monotonically
|
|
@@ -110,17 +157,28 @@ module OpenTelemetry
|
|
|
110
157
|
# meter.create_observable_counter("PF",
|
|
111
158
|
# pf_callback,
|
|
112
159
|
# description: "process page faults",
|
|
113
|
-
# unit: 'ms'
|
|
114
|
-
#
|
|
160
|
+
# unit: 'ms',
|
|
161
|
+
# exemplar_filter: OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter,
|
|
162
|
+
# exemplar_reservoir: OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir.new)
|
|
115
163
|
#
|
|
116
164
|
# @param name [String] the name of the observable_counter
|
|
117
165
|
# @param callback [Proc] the callback function that used to collect metrics
|
|
118
166
|
# @param unit [optional String] an optional string provided by user.
|
|
119
167
|
# @param description [optional String] an optional free-form text provided by user.
|
|
168
|
+
# @param exemplar_filter [optional Object] an optional filter to control which measurements are
|
|
169
|
+
# eligible to become exemplars. Must respond to `#should_sample?`. Available SDK implementations:
|
|
170
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOnExemplarFilter` - all measurements are eligible
|
|
171
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOffExemplarFilter` - no measurements are eligible
|
|
172
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter` - only measurements in a sampled span context are eligible
|
|
173
|
+
# @param exemplar_reservoir [optional Object] an optional reservoir used to sample exemplars
|
|
174
|
+
# from eligible measurements. Must respond to `#offer` and `#collect`. Available SDK implementations:
|
|
175
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir` - uniformly-weighted sampling
|
|
176
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlignedHistogramBucketExemplarReservoir` - one exemplar per histogram bucket (recommended for histograms)
|
|
177
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::NoopExemplarReservoir` - no-op, disables exemplar collection
|
|
120
178
|
#
|
|
121
179
|
# @return [nil] after creation of observable_counter, it will be stored in instrument_registry
|
|
122
|
-
def create_observable_counter(name, callback:, unit: nil, description: nil)
|
|
123
|
-
create_instrument(:observable_counter, name, unit, description, callback) { OBSERVABLE_COUNTER }
|
|
180
|
+
def create_observable_counter(name, callback:, unit: nil, description: nil, exemplar_filter: nil, exemplar_reservoir: nil)
|
|
181
|
+
create_instrument(:observable_counter, name, unit, description, callback, exemplar_filter, exemplar_reservoir) { OBSERVABLE_COUNTER }
|
|
124
182
|
end
|
|
125
183
|
|
|
126
184
|
# ObservableGauge is an asynchronous Instrument which reports non-additive value(s)
|
|
@@ -130,20 +188,31 @@ module OpenTelemetry
|
|
|
130
188
|
# With this api call:
|
|
131
189
|
#
|
|
132
190
|
# pf_callback = -> { # collect metrics here }
|
|
133
|
-
# meter.
|
|
134
|
-
#
|
|
135
|
-
#
|
|
136
|
-
#
|
|
137
|
-
#
|
|
191
|
+
# meter.create_observable_gauge("cpu.frequency",
|
|
192
|
+
# pf_callback,
|
|
193
|
+
# description: "the real-time CPU clock speed",
|
|
194
|
+
# unit: 'ms',
|
|
195
|
+
# exemplar_filter: OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter,
|
|
196
|
+
# exemplar_reservoir: OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir.new)
|
|
138
197
|
#
|
|
139
198
|
# @param name [String] the name of the observable_gauge
|
|
140
199
|
# @param callback [Proc] the callback function that used to collect metrics
|
|
141
200
|
# @param unit [optional String] an optional string provided by user.
|
|
142
201
|
# @param description [optional String] an optional free-form text provided by user.
|
|
202
|
+
# @param exemplar_filter [optional Object] an optional filter to control which measurements are
|
|
203
|
+
# eligible to become exemplars. Must respond to `#should_sample?`. Available SDK implementations:
|
|
204
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOnExemplarFilter` - all measurements are eligible
|
|
205
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOffExemplarFilter` - no measurements are eligible
|
|
206
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter` - only measurements in a sampled span context are eligible
|
|
207
|
+
# @param exemplar_reservoir [optional Object] an optional reservoir used to sample exemplars
|
|
208
|
+
# from eligible measurements. Must respond to `#offer` and `#collect`. Available SDK implementations:
|
|
209
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir` - uniformly-weighted sampling
|
|
210
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlignedHistogramBucketExemplarReservoir` - one exemplar per histogram bucket (recommended for histograms)
|
|
211
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::NoopExemplarReservoir` - no-op, disables exemplar collection
|
|
143
212
|
#
|
|
144
213
|
# @return [nil] after creation of observable_gauge, it will be stored in instrument_registry
|
|
145
|
-
def create_observable_gauge(name, callback:, unit: nil, description: nil)
|
|
146
|
-
create_instrument(:observable_gauge, name, unit, description, callback) { OBSERVABLE_GAUGE }
|
|
214
|
+
def create_observable_gauge(name, callback:, unit: nil, description: nil, exemplar_filter: nil, exemplar_reservoir: nil)
|
|
215
|
+
create_instrument(:observable_gauge, name, unit, description, callback, exemplar_filter, exemplar_reservoir) { OBSERVABLE_GAUGE }
|
|
147
216
|
end
|
|
148
217
|
|
|
149
218
|
# ObservableUpDownCounter is an asynchronous Instrument which reports additive value(s)
|
|
@@ -156,22 +225,33 @@ module OpenTelemetry
|
|
|
156
225
|
# meter.create_observable_up_down_counter("process.workingset",
|
|
157
226
|
# pf_callback,
|
|
158
227
|
# description: "process working set",
|
|
159
|
-
# unit: 'KB'
|
|
160
|
-
#
|
|
228
|
+
# unit: 'KB',
|
|
229
|
+
# exemplar_filter: OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter,
|
|
230
|
+
# exemplar_reservoir: OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir.new)
|
|
161
231
|
#
|
|
162
232
|
# @param name [String] the name of the observable_up_down_counter
|
|
163
233
|
# @param callback [Proc] the callback function that used to collect metrics
|
|
164
234
|
# @param unit [optional String] an optional string provided by user.
|
|
165
235
|
# @param description [optional String] an optional free-form text provided by user.
|
|
236
|
+
# @param exemplar_filter [optional Object] an optional filter to control which measurements are
|
|
237
|
+
# eligible to become exemplars. Must respond to `#should_sample?`. Available SDK implementations:
|
|
238
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOnExemplarFilter` - all measurements are eligible
|
|
239
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlwaysOffExemplarFilter` - no measurements are eligible
|
|
240
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::TraceBasedExemplarFilter` - only measurements in a sampled span context are eligible
|
|
241
|
+
# @param exemplar_reservoir [optional Object] an optional reservoir used to sample exemplars
|
|
242
|
+
# from eligible measurements. Must respond to `#offer` and `#collect`. Available SDK implementations:
|
|
243
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::SimpleFixedSizeExemplarReservoir` - uniformly-weighted sampling
|
|
244
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::AlignedHistogramBucketExemplarReservoir` - one exemplar per histogram bucket (recommended for histograms)
|
|
245
|
+
# - `OpenTelemetry::SDK::Metrics::Exemplar::NoopExemplarReservoir` - no-op, disables exemplar collection
|
|
166
246
|
#
|
|
167
247
|
# @return [nil] after creation of observable_up_down_counter, it will be stored in instrument_registry
|
|
168
|
-
def create_observable_up_down_counter(name, callback:, unit: nil, description: nil)
|
|
169
|
-
create_instrument(:observable_up_down_counter, name, unit, description, callback) { OBSERVABLE_UP_DOWN_COUNTER }
|
|
248
|
+
def create_observable_up_down_counter(name, callback:, unit: nil, description: nil, exemplar_filter: nil, exemplar_reservoir: nil)
|
|
249
|
+
create_instrument(:observable_up_down_counter, name, unit, description, callback, exemplar_filter, exemplar_reservoir) { OBSERVABLE_UP_DOWN_COUNTER }
|
|
170
250
|
end
|
|
171
251
|
|
|
172
252
|
private
|
|
173
253
|
|
|
174
|
-
def create_instrument(kind, name, unit, description, callback)
|
|
254
|
+
def create_instrument(kind, name, unit, description, callback, exemplar_filter, exemplar_reservoir)
|
|
175
255
|
@mutex.synchronize do
|
|
176
256
|
OpenTelemetry.logger.warn("duplicate instrument registration occurred for instrument #{name}") if @instrument_registry.include? name
|
|
177
257
|
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: opentelemetry-metrics-api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenTelemetry Authors
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: opentelemetry-api
|
|
@@ -38,34 +37,6 @@ dependencies:
|
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
39
|
version: 0.2.0
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: bundler
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '1.17'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '1.17'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: faraday
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0.13'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0.13'
|
|
69
40
|
- !ruby/object:Gem::Dependency
|
|
70
41
|
name: minitest
|
|
71
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,14 +71,14 @@ dependencies:
|
|
|
100
71
|
requirements:
|
|
101
72
|
- - "~>"
|
|
102
73
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
74
|
+
version: '13.3'
|
|
104
75
|
type: :development
|
|
105
76
|
prerelease: false
|
|
106
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
78
|
requirements:
|
|
108
79
|
- - "~>"
|
|
109
80
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
81
|
+
version: '13.3'
|
|
111
82
|
- !ruby/object:Gem::Dependency
|
|
112
83
|
name: rubocop
|
|
113
84
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -164,7 +135,6 @@ dependencies:
|
|
|
164
135
|
- - "~>"
|
|
165
136
|
- !ruby/object:Gem::Version
|
|
166
137
|
version: 0.1.6
|
|
167
|
-
description:
|
|
168
138
|
email:
|
|
169
139
|
- cncf-opentelemetry-contributors@lists.cncf.io
|
|
170
140
|
executables: []
|
|
@@ -196,11 +166,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
|
|
|
196
166
|
licenses:
|
|
197
167
|
- Apache-2.0
|
|
198
168
|
metadata:
|
|
199
|
-
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-api/v0.
|
|
169
|
+
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-api/v0.5.0/file.CHANGELOG.html
|
|
200
170
|
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/metrics_api
|
|
201
171
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
|
|
202
|
-
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-api/v0.
|
|
203
|
-
post_install_message:
|
|
172
|
+
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-api/v0.5.0
|
|
204
173
|
rdoc_options: []
|
|
205
174
|
require_paths:
|
|
206
175
|
- lib
|
|
@@ -208,15 +177,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
208
177
|
requirements:
|
|
209
178
|
- - ">="
|
|
210
179
|
- !ruby/object:Gem::Version
|
|
211
|
-
version: '3.
|
|
180
|
+
version: '3.3'
|
|
212
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
182
|
requirements:
|
|
214
183
|
- - ">="
|
|
215
184
|
- !ruby/object:Gem::Version
|
|
216
185
|
version: '0'
|
|
217
186
|
requirements: []
|
|
218
|
-
rubygems_version:
|
|
219
|
-
signing_key:
|
|
187
|
+
rubygems_version: 4.0.6
|
|
220
188
|
specification_version: 4
|
|
221
189
|
summary: A stats collection and distributed tracing framework
|
|
222
190
|
test_files: []
|