noop.go

  1// Copyright The OpenTelemetry Authors
  2// SPDX-License-Identifier: Apache-2.0
  3
  4// Package noop provides an implementation of the OpenTelemetry metric API that
  5// produces no telemetry and minimizes used computation resources.
  6//
  7// Using this package to implement the OpenTelemetry metric API will
  8// effectively disable OpenTelemetry.
  9//
 10// This implementation can be embedded in other implementations of the
 11// OpenTelemetry metric API. Doing so will mean the implementation defaults to
 12// no operation for methods it does not implement.
 13package noop // import "go.opentelemetry.io/otel/metric/noop"
 14
 15import (
 16	"context"
 17
 18	"go.opentelemetry.io/otel/metric"
 19	"go.opentelemetry.io/otel/metric/embedded"
 20)
 21
 22var (
 23	// Compile-time check this implements the OpenTelemetry API.
 24
 25	_ metric.MeterProvider                  = MeterProvider{}
 26	_ metric.Meter                          = Meter{}
 27	_ metric.Observer                       = Observer{}
 28	_ metric.Registration                   = Registration{}
 29	_ metric.Int64Counter                   = Int64Counter{}
 30	_ metric.Float64Counter                 = Float64Counter{}
 31	_ metric.Int64UpDownCounter             = Int64UpDownCounter{}
 32	_ metric.Float64UpDownCounter           = Float64UpDownCounter{}
 33	_ metric.Int64Histogram                 = Int64Histogram{}
 34	_ metric.Float64Histogram               = Float64Histogram{}
 35	_ metric.Int64Gauge                     = Int64Gauge{}
 36	_ metric.Float64Gauge                   = Float64Gauge{}
 37	_ metric.Int64ObservableCounter         = Int64ObservableCounter{}
 38	_ metric.Float64ObservableCounter       = Float64ObservableCounter{}
 39	_ metric.Int64ObservableGauge           = Int64ObservableGauge{}
 40	_ metric.Float64ObservableGauge         = Float64ObservableGauge{}
 41	_ metric.Int64ObservableUpDownCounter   = Int64ObservableUpDownCounter{}
 42	_ metric.Float64ObservableUpDownCounter = Float64ObservableUpDownCounter{}
 43	_ metric.Int64Observer                  = Int64Observer{}
 44	_ metric.Float64Observer                = Float64Observer{}
 45)
 46
 47// MeterProvider is an OpenTelemetry No-Op MeterProvider.
 48type MeterProvider struct{ embedded.MeterProvider }
 49
 50// NewMeterProvider returns a MeterProvider that does not record any telemetry.
 51func NewMeterProvider() MeterProvider {
 52	return MeterProvider{}
 53}
 54
 55// Meter returns an OpenTelemetry Meter that does not record any telemetry.
 56func (MeterProvider) Meter(string, ...metric.MeterOption) metric.Meter {
 57	return Meter{}
 58}
 59
 60// Meter is an OpenTelemetry No-Op Meter.
 61type Meter struct{ embedded.Meter }
 62
 63// Int64Counter returns a Counter used to record int64 measurements that
 64// produces no telemetry.
 65func (Meter) Int64Counter(string, ...metric.Int64CounterOption) (metric.Int64Counter, error) {
 66	return Int64Counter{}, nil
 67}
 68
 69// Int64UpDownCounter returns an UpDownCounter used to record int64
 70// measurements that produces no telemetry.
 71func (Meter) Int64UpDownCounter(string, ...metric.Int64UpDownCounterOption) (metric.Int64UpDownCounter, error) {
 72	return Int64UpDownCounter{}, nil
 73}
 74
 75// Int64Histogram returns a Histogram used to record int64 measurements that
 76// produces no telemetry.
 77func (Meter) Int64Histogram(string, ...metric.Int64HistogramOption) (metric.Int64Histogram, error) {
 78	return Int64Histogram{}, nil
 79}
 80
 81// Int64Gauge returns a Gauge used to record int64 measurements that
 82// produces no telemetry.
 83func (Meter) Int64Gauge(string, ...metric.Int64GaugeOption) (metric.Int64Gauge, error) {
 84	return Int64Gauge{}, nil
 85}
 86
 87// Int64ObservableCounter returns an ObservableCounter used to record int64
 88// measurements that produces no telemetry.
 89func (Meter) Int64ObservableCounter(string, ...metric.Int64ObservableCounterOption) (metric.Int64ObservableCounter, error) {
 90	return Int64ObservableCounter{}, nil
 91}
 92
 93// Int64ObservableUpDownCounter returns an ObservableUpDownCounter used to
 94// record int64 measurements that produces no telemetry.
 95func (Meter) Int64ObservableUpDownCounter(string, ...metric.Int64ObservableUpDownCounterOption) (metric.Int64ObservableUpDownCounter, error) {
 96	return Int64ObservableUpDownCounter{}, nil
 97}
 98
 99// Int64ObservableGauge returns an ObservableGauge used to record int64
100// measurements that produces no telemetry.
101func (Meter) Int64ObservableGauge(string, ...metric.Int64ObservableGaugeOption) (metric.Int64ObservableGauge, error) {
102	return Int64ObservableGauge{}, nil
103}
104
105// Float64Counter returns a Counter used to record int64 measurements that
106// produces no telemetry.
107func (Meter) Float64Counter(string, ...metric.Float64CounterOption) (metric.Float64Counter, error) {
108	return Float64Counter{}, nil
109}
110
111// Float64UpDownCounter returns an UpDownCounter used to record int64
112// measurements that produces no telemetry.
113func (Meter) Float64UpDownCounter(string, ...metric.Float64UpDownCounterOption) (metric.Float64UpDownCounter, error) {
114	return Float64UpDownCounter{}, nil
115}
116
117// Float64Histogram returns a Histogram used to record int64 measurements that
118// produces no telemetry.
119func (Meter) Float64Histogram(string, ...metric.Float64HistogramOption) (metric.Float64Histogram, error) {
120	return Float64Histogram{}, nil
121}
122
123// Float64Gauge returns a Gauge used to record float64 measurements that
124// produces no telemetry.
125func (Meter) Float64Gauge(string, ...metric.Float64GaugeOption) (metric.Float64Gauge, error) {
126	return Float64Gauge{}, nil
127}
128
129// Float64ObservableCounter returns an ObservableCounter used to record int64
130// measurements that produces no telemetry.
131func (Meter) Float64ObservableCounter(string, ...metric.Float64ObservableCounterOption) (metric.Float64ObservableCounter, error) {
132	return Float64ObservableCounter{}, nil
133}
134
135// Float64ObservableUpDownCounter returns an ObservableUpDownCounter used to
136// record int64 measurements that produces no telemetry.
137func (Meter) Float64ObservableUpDownCounter(string, ...metric.Float64ObservableUpDownCounterOption) (metric.Float64ObservableUpDownCounter, error) {
138	return Float64ObservableUpDownCounter{}, nil
139}
140
141// Float64ObservableGauge returns an ObservableGauge used to record int64
142// measurements that produces no telemetry.
143func (Meter) Float64ObservableGauge(string, ...metric.Float64ObservableGaugeOption) (metric.Float64ObservableGauge, error) {
144	return Float64ObservableGauge{}, nil
145}
146
147// RegisterCallback performs no operation.
148func (Meter) RegisterCallback(metric.Callback, ...metric.Observable) (metric.Registration, error) {
149	return Registration{}, nil
150}
151
152// Observer acts as a recorder of measurements for multiple instruments in a
153// Callback, it performing no operation.
154type Observer struct{ embedded.Observer }
155
156// ObserveFloat64 performs no operation.
157func (Observer) ObserveFloat64(metric.Float64Observable, float64, ...metric.ObserveOption) {
158}
159
160// ObserveInt64 performs no operation.
161func (Observer) ObserveInt64(metric.Int64Observable, int64, ...metric.ObserveOption) {
162}
163
164// Registration is the registration of a Callback with a No-Op Meter.
165type Registration struct{ embedded.Registration }
166
167// Unregister unregisters the Callback the Registration represents with the
168// No-Op Meter. This will always return nil because the No-Op Meter performs no
169// operation, including hold any record of registrations.
170func (Registration) Unregister() error { return nil }
171
172// Int64Counter is an OpenTelemetry Counter used to record int64 measurements.
173// It produces no telemetry.
174type Int64Counter struct{ embedded.Int64Counter }
175
176// Add performs no operation.
177func (Int64Counter) Add(context.Context, int64, ...metric.AddOption) {}
178
179// Float64Counter is an OpenTelemetry Counter used to record float64
180// measurements. It produces no telemetry.
181type Float64Counter struct{ embedded.Float64Counter }
182
183// Add performs no operation.
184func (Float64Counter) Add(context.Context, float64, ...metric.AddOption) {}
185
186// Int64UpDownCounter is an OpenTelemetry UpDownCounter used to record int64
187// measurements. It produces no telemetry.
188type Int64UpDownCounter struct{ embedded.Int64UpDownCounter }
189
190// Add performs no operation.
191func (Int64UpDownCounter) Add(context.Context, int64, ...metric.AddOption) {}
192
193// Float64UpDownCounter is an OpenTelemetry UpDownCounter used to record
194// float64 measurements. It produces no telemetry.
195type Float64UpDownCounter struct{ embedded.Float64UpDownCounter }
196
197// Add performs no operation.
198func (Float64UpDownCounter) Add(context.Context, float64, ...metric.AddOption) {}
199
200// Int64Histogram is an OpenTelemetry Histogram used to record int64
201// measurements. It produces no telemetry.
202type Int64Histogram struct{ embedded.Int64Histogram }
203
204// Record performs no operation.
205func (Int64Histogram) Record(context.Context, int64, ...metric.RecordOption) {}
206
207// Float64Histogram is an OpenTelemetry Histogram used to record float64
208// measurements. It produces no telemetry.
209type Float64Histogram struct{ embedded.Float64Histogram }
210
211// Record performs no operation.
212func (Float64Histogram) Record(context.Context, float64, ...metric.RecordOption) {}
213
214// Int64Gauge is an OpenTelemetry Gauge used to record instantaneous int64
215// measurements. It produces no telemetry.
216type Int64Gauge struct{ embedded.Int64Gauge }
217
218// Record performs no operation.
219func (Int64Gauge) Record(context.Context, int64, ...metric.RecordOption) {}
220
221// Float64Gauge is an OpenTelemetry Gauge used to record instantaneous float64
222// measurements. It produces no telemetry.
223type Float64Gauge struct{ embedded.Float64Gauge }
224
225// Record performs no operation.
226func (Float64Gauge) Record(context.Context, float64, ...metric.RecordOption) {}
227
228// Int64ObservableCounter is an OpenTelemetry ObservableCounter used to record
229// int64 measurements. It produces no telemetry.
230type Int64ObservableCounter struct {
231	metric.Int64Observable
232	embedded.Int64ObservableCounter
233}
234
235// Float64ObservableCounter is an OpenTelemetry ObservableCounter used to record
236// float64 measurements. It produces no telemetry.
237type Float64ObservableCounter struct {
238	metric.Float64Observable
239	embedded.Float64ObservableCounter
240}
241
242// Int64ObservableGauge is an OpenTelemetry ObservableGauge used to record
243// int64 measurements. It produces no telemetry.
244type Int64ObservableGauge struct {
245	metric.Int64Observable
246	embedded.Int64ObservableGauge
247}
248
249// Float64ObservableGauge is an OpenTelemetry ObservableGauge used to record
250// float64 measurements. It produces no telemetry.
251type Float64ObservableGauge struct {
252	metric.Float64Observable
253	embedded.Float64ObservableGauge
254}
255
256// Int64ObservableUpDownCounter is an OpenTelemetry ObservableUpDownCounter
257// used to record int64 measurements. It produces no telemetry.
258type Int64ObservableUpDownCounter struct {
259	metric.Int64Observable
260	embedded.Int64ObservableUpDownCounter
261}
262
263// Float64ObservableUpDownCounter is an OpenTelemetry ObservableUpDownCounter
264// used to record float64 measurements. It produces no telemetry.
265type Float64ObservableUpDownCounter struct {
266	metric.Float64Observable
267	embedded.Float64ObservableUpDownCounter
268}
269
270// Int64Observer is a recorder of int64 measurements that performs no operation.
271type Int64Observer struct{ embedded.Int64Observer }
272
273// Observe performs no operation.
274func (Int64Observer) Observe(int64, ...metric.ObserveOption) {}
275
276// Float64Observer is a recorder of float64 measurements that performs no
277// operation.
278type Float64Observer struct{ embedded.Float64Observer }
279
280// Observe performs no operation.
281func (Float64Observer) Observe(float64, ...metric.ObserveOption) {}