Skip to content

Commit d70c293

Browse files
committed
chore!: split metrics into its own api package (open-telemetry#1797)
1 parent e339f8a commit d70c293

18 files changed

+5
-908
lines changed

api/README.md

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ This package provides everything needed to interact with the OpenTelemetry API,
1010

1111
## Quick Start
1212

13-
To get started you need to install the SDK and plugins, create a TracerProvider and/or MeterProvider, and register it with the API.
13+
To get started you need to install the SDK and plugins, create a TracerProvider, and register it with the API.
1414

1515
### Install Dependencies
1616

@@ -23,11 +23,6 @@ $ npm install \
2323
@opentelemetry/tracing \
2424
@opentelemetry/exporter-jaeger \ # add exporters as needed
2525
@opentelemetry/plugin-http # add plugins as needed
26-
27-
$ # Install metrics dependencies
28-
$ npm install \
29-
@opentelemetry/metrics \
30-
@opentelemetry/exporter-prometheus # add exporters as needed
3126
```
3227

3328
> Note: this example is for node.js. See [examples/tracer-web](https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/tracer-web) for a browser example.
@@ -74,27 +69,6 @@ tracerProvider.addSpanProcessor(
7469
tracerProvider.register();
7570
```
7671

77-
#### Metrics
78-
79-
```javascript
80-
const api = require("@opentelemetry/api");
81-
const { MeterProvider } = require("@opentelemetry/metrics");
82-
const { PrometheusExporter } = require("@opentelemetry/exporter-prometheus");
83-
84-
const meterProvider = new MeterProvider({
85-
// The Prometheus exporter runs an HTTP server which
86-
// the Prometheus backend scrapes to collect metrics.
87-
exporter: new PrometheusExporter({ startServer: true }),
88-
interval: 1000,
89-
});
90-
91-
/**
92-
* Registering the provider with the API allows it to be discovered
93-
* and used by instrumentation libraries.
94-
*/
95-
api.metrics.setGlobalMeterProvider(meterProvider);
96-
```
97-
9872
## Version Compatibility
9973

10074
Because the npm installer and node module resolution algorithm could potentially allow two or more copies of any given package to exist within the same `node_modules` structure, the OpenTelemetry API takes advantage of a variable on the `global` object to store the global API. When an API method in the API package is called, it checks if this `global` API exists and proxies calls to it if and only if it is a compatible API version. This means if a package has a dependency on an OpenTelemetry API version which is not compatible with the API used by the end user, the package will receive a no-op implementation of the API.
@@ -122,7 +96,6 @@ tracerProvider.register({
12296
If you are writing an instrumentation library, or prefer to call the API methods directly rather than using the `register` method on the Tracer/Meter Provider, OpenTelemetry provides direct access to the underlying API methods through the `@opentelemetry/api` package. API entry points are defined as global singleton objects `trace`, `metrics`, `propagation`, and `context` which contain methods used to initialize SDK implementations and acquire resources from the API.
12397

12498
- [Trace API Documentation][trace-api-docs]
125-
- [Metrics API Documentation][metrics-api-docs]
12699
- [Propagation API Documentation][propagation-api-docs]
127100
- [Context API Documentation][context-api-docs]
128101

@@ -136,13 +109,6 @@ api.trace.getTracerProvider();
136109
/* returns a tracer from the registered global tracer provider (no-op if a working provider has not been initialized) */
137110
api.trace.getTracer(name, version);
138111

139-
/* Initialize MeterProvider */
140-
api.metrics.setGlobalMeterProvider(meterProvider);
141-
/* returns meterProvider (no-op if a working provider has not been initialized) */
142-
api.metrics.getMeterProvider();
143-
/* returns a meter from the registered global meter provider (no-op if a working provider has not been initialized) */
144-
api.metrics.getMeter(name, version);
145-
146112
/* Initialize Propagator */
147113
api.propagation.setGlobalPropagator(httpTraceContextPropagator);
148114

api/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
"browser",
3131
"tracing",
3232
"profiling",
33-
"metrics",
3433
"stats",
3534
"monitoring"
3635
],

api/src/api/global-utils.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,13 @@
1616

1717
import { ContextManager } from '@opentelemetry/context-base';
1818
import { TextMapPropagator } from '../context/propagation/TextMapPropagator';
19-
import { MeterProvider } from '../metrics/MeterProvider';
2019
import { TracerProvider } from '../trace/tracer_provider';
2120
import { _globalThis } from '../platform';
2221

2322
export const GLOBAL_CONTEXT_MANAGER_API_KEY = Symbol.for(
2423
'io.opentelemetry.js.api.context'
2524
);
26-
export const GLOBAL_METRICS_API_KEY = Symbol.for(
27-
'io.opentelemetry.js.api.metrics'
28-
);
25+
2926
export const GLOBAL_PROPAGATION_API_KEY = Symbol.for(
3027
'io.opentelemetry.js.api.propagation'
3128
);
@@ -34,7 +31,6 @@ export const GLOBAL_TRACE_API_KEY = Symbol.for('io.opentelemetry.js.api.trace');
3431
type Get<T> = (version: number) => T;
3532
type OtelGlobal = Partial<{
3633
[GLOBAL_CONTEXT_MANAGER_API_KEY]: Get<ContextManager>;
37-
[GLOBAL_METRICS_API_KEY]: Get<MeterProvider>;
3834
[GLOBAL_PROPAGATION_API_KEY]: Get<TextMapPropagator>;
3935
[GLOBAL_TRACE_API_KEY]: Get<TracerProvider>;
4036
}>;

api/src/api/metrics.ts

Lines changed: 0 additions & 84 deletions
This file was deleted.

api/src/index.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,6 @@ export * from './context/propagation/TextMapPropagator';
2222
export * from './context/propagation/NoopTextMapPropagator';
2323
export * from './baggage/Baggage';
2424
export * from './baggage/EntryValue';
25-
export * from './metrics/BatchObserverResult';
26-
export * from './metrics/BoundInstrument';
27-
export * from './metrics/Meter';
28-
export * from './metrics/MeterProvider';
29-
export * from './metrics/Metric';
30-
export * from './metrics/NoopMeter';
31-
export * from './metrics/NoopMeterProvider';
32-
export * from './metrics/Observation';
33-
export * from './metrics/ObserverResult';
3425
export * from './trace/attributes';
3526
export * from './trace/Event';
3627
export * from './trace/link_context';
@@ -78,17 +69,12 @@ import { TraceAPI } from './api/trace';
7869
/** Entrypoint for trace API */
7970
export const trace = TraceAPI.getInstance();
8071

81-
import { MetricsAPI } from './api/metrics';
82-
/** Entrypoint for metrics API */
83-
export const metrics = MetricsAPI.getInstance();
84-
8572
import { PropagationAPI } from './api/propagation';
8673
/** Entrypoint for propagation API */
8774
export const propagation = PropagationAPI.getInstance();
8875

8976
export default {
9077
trace,
91-
metrics,
9278
context,
9379
propagation,
9480
};

api/src/metrics/BatchObserverResult.ts

Lines changed: 0 additions & 31 deletions
This file was deleted.

api/src/metrics/BoundInstrument.ts

Lines changed: 0 additions & 38 deletions
This file was deleted.

0 commit comments

Comments
 (0)