Skip to content

Commit 4a3fd1f

Browse files
obecnyvmarchaud
andauthored
remove plugins (#2081)
Co-authored-by: Valentin Marchaud <[email protected]>
1 parent 4a468fc commit 4a3fd1f

File tree

177 files changed

+226
-12467
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

177 files changed

+226
-12467
lines changed

README.md

+25-29
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ Maintainers ([@open-telemetry/js-maintainers](https://github.com/orgs/open-telem
185185

186186
| Package | Description |
187187
|----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
188-
| [@opentelemetry/tracing][otel-tracing] | This module provides a full control over instrumentation and span creation. It doesn't load [`async_hooks`](https://nodejs.org/api/async_hooks.html) or any instrumentation plugin by default. It is intended for use both on the server and in the browser. |
188+
| [@opentelemetry/tracing][otel-tracing] | This module provides a full control over instrumentation and span creation. It doesn't load [`async_hooks`](https://nodejs.org/api/async_hooks.html) or any instrumentation by default. It is intended for use both on the server and in the browser. |
189189
| [@opentelemetry/metrics][otel-metrics] | This module provides instruments and meters for reporting of time series data. |
190190
| [@opentelemetry/node][otel-node] | This module provides automatic tracing for Node.js applications. It is intended for use on the server only. |
191191
| [@opentelemetry/web][otel-web] | This module provides automated instrumentation and tracing for Web applications. It is intended for use in the browser only. |
@@ -196,34 +196,32 @@ OpenTelemetry is vendor-agnostic and can upload data to any backend with various
196196

197197
See the [OpenTelemetry registry](https://opentelemetry.io/registry/?s=node.js) for a list of exporters available.
198198

199-
### Instrumentations & Plugins
199+
### Instrumentations
200200

201201
OpenTelemetry can collect tracing data automatically using instrumentations. Vendors/Users can also create and use their own. Currently, OpenTelemetry supports automatic tracing for:
202202

203-
#### Node Instrumentations & Plugins
203+
#### Node Instrumentations
204204

205205
##### Core
206206

207-
- [@opentelemetry/instrumentation-grpc][otel-instrumentation-grpc] previous [@opentelemetry/plugin-grpc][otel-plugin-grpc]
208-
- [@opentelemetry/plugin-grpc-js][otel-plugin-grpc-js]
209-
- [@opentelemetry/instrumentation-http][otel-instrumentation-http] previous [@opentelemetry/plugin-http][otel-plugin-http] and [@opentelemetry/plugin-https][otel-plugin-https]
207+
- [@opentelemetry/instrumentation-grpc][otel-instrumentation-grpc]
208+
- [@opentelemetry/instrumentation-http][otel-instrumentation-http]
210209

211210
##### Contrib
212211

213212
These plugins are hosted at <https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node>
214213

215-
- [@opentelemetry/plugin-mongodb][otel-contrib-plugin-mongodb]
216-
- [@opentelemetry/plugin-mysql][otel-contrib-plugin-mysql]
217-
- [@opentelemetry/plugin-pg][otel-contrib-plugin-pg]
218-
- [@opentelemetry/plugin-pg-pool][otel-contrib-plugin-pg-pool]
219-
- [@opentelemetry/plugin-redis][otel-contrib-plugin-redis]
220-
- [@opentelemetry/plugin-ioredis][otel-contrib-plugin-ioredis]
221-
- [@opentelemetry/plugin-express][otel-contrib-plugin-express]
222-
- [@opentelemetry/plugin-dns][otel-contrib-plugin-dns]
214+
- [@opentelemetry/instrumentation-mongodb][otel-contrib-instrumentation-mongodb]
215+
- [@opentelemetry/instrumentation-mysql][otel-contrib-instrumentation-mysql]
216+
- [@opentelemetry/instrumentation-pg][otel-contrib-instrumentation-pg]
217+
- [@opentelemetry/instrumentation-redis][otel-contrib-instrumentation-redis]
218+
- [@opentelemetry/instrumentation-ioredis][otel-contrib-instrumentation-ioredis]
219+
- [@opentelemetry/instrumentation-express][otel-contrib-instrumentation-express]
220+
- [@opentelemetry/instrumentation-dns][otel-contrib-instrumentation-dns]
223221
- [@opentelemetry/instrumentation-hapi][otel-contrib-instrumentation-hapi]
224222
- [@opentelemetry/instrumentation-koa][otel-contrib-instrumentation-koa]
225223

226-
#### Web Plugins
224+
#### Web Instrumentations
227225

228226
##### Core
229227

@@ -232,7 +230,7 @@ These plugins are hosted at <https://github.com/open-telemetry/opentelemetry-js-
232230

233231
##### Contrib
234232

235-
These plugins are hosted at <https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/web>
233+
These instrumentations are hosted at <https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/web>
236234

237235
- [@opentelemetry/instrumentation-document-load][otel-contrib-instrumentation-document-load]
238236
- [@opentelemetry/instrumentation-user-interaction][otel-contrib-instrumentation-user-interaction]
@@ -247,6 +245,10 @@ To request automatic tracing support for a module not on this list, please [file
247245

248246
## Upgrade guidelines
249247

248+
### 0.19.0 to 1.0.0-rc.0
249+
250+
- All plugins have been removed in favor of instrumentations.
251+
250252
### 0.18.0 to 0.19.0
251253

252254
- The `@opentelemetry/propagator-b3` package previously exported three propagators: `B3Propagator`,`B3SinglePropagator`, and `B3MultiPropagator`, but now only exports the `B3Propagator`. It extracts b3 context in single and multi-header encodings, and injects context using the single-header encoding by default, but can be configured to inject context using the multi-header endcoding during construction: `new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER })`. If you were previously using the `B3SinglePropagator` or `B3MultiPropagator` directly, you should update your code to use the `B3Propagator` with the appropriate configuration. See the [readme](./packages/opentelemetry-propagator-b3/readme.md) for full details and usage.
@@ -415,11 +417,6 @@ Apache 2.0 - See [LICENSE][license-url] for more information.
415417
[otel-metrics]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-metrics
416418
[otel-node]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-node
417419

418-
[otel-plugin-grpc]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-plugin-grpc
419-
[otel-plugin-grpc-js]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-plugin-grpc-js
420-
[otel-plugin-http]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-plugin-http
421-
[otel-plugin-https]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-plugin-https
422-
423420
[otel-instrumentation-fetch]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-instrumentation-fetch
424421
[otel-instrumentation-grpc]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-instrumentation-grpc
425422
[otel-instrumentation-http]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-instrumentation-http
@@ -432,14 +429,13 @@ Apache 2.0 - See [LICENSE][license-url] for more information.
432429
[otel-core]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core
433430
[generate-api-documentation]: https://github.com/open-telemetry/opentelemetry-js/blob/main/CONTRIBUTING.md#generating-api-documentation
434431

435-
[otel-contrib-plugin-dns]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-plugin-dns
436-
[otel-contrib-plugin-ioredis]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-plugin-ioredis
437-
[otel-contrib-plugin-mongodb]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-plugin-mongodb
438-
[otel-contrib-plugin-mysql]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-plugin-mysql
439-
[otel-contrib-plugin-pg-pool]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-plugin-pg-pool
440-
[otel-contrib-plugin-pg]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-plugin-pg
441-
[otel-contrib-plugin-redis]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-plugin-redis
442-
[otel-contrib-plugin-express]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-plugin-express
432+
[otel-contrib-instrumentation-dns]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-instrumentation-dns
433+
[otel-contrib-instrumentation-ioredis]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-instrumentation-ioredis
434+
[otel-contrib-instrumentation-mongodb]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-instrumentation-mongodb
435+
[otel-contrib-instrumentation-mysql]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-instrumentation-mysql
436+
[otel-contrib-instrumentation-pg]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-instrumentation-pg
437+
[otel-contrib-instrumentation-redis]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-instrumentation-redis
438+
[otel-contrib-instrumentation-express]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-instrumentation-express
443439
[otel-contrib-instrumentation-user-interaction]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/web/opentelemetry-instrumentation-user-interaction
444440
[otel-contrib-instrumentation-document-load]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/web/opentelemetry-instrumentation-document-load
445441
[otel-contrib-instrumentation-hapi]: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/master/plugins/node/opentelemetry-instrumentation-hapi

doc/instrumentation-guide.md

+7-48
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,11 @@
11
# Instrumentation Developer Guide
22

3-
We provide out-of-the-box instrumentations for many popular frameworks and libraries by using an instrumentation system (see [builtin instrumentations][builtin-instrumentations]), and provide a means for developers to create their own.
3+
A detailed explained guide how to instrument a package is available at [instrumentation package][base-instrumentation]
44

5-
We strongly recommended to create a dedicated package for newly added plugin, example: `@opentelemetry/plugin-xxx`.
5+
For more comprehensive examples please refer to the [HTTP instrumentation][http-instrumentation] or [gRPC instrumentation][grpc-instrumentation] for node
6+
and [XMLHttpRequest instrumentation][xhr-instrumentation] for web.
67

7-
Each plugin must extend the abstract class [BasePlugin][base-plugin] implementing the below methods:
8-
9-
- `patch`: A function describing how the module exports for a given file should be modified.
10-
11-
- `unpatch`: A function describing how the module exports for a given file should be unpatched. This should generally mirror the logic in `patch`; for example, if `patch` wraps a method, `unpatch` should unwrap it.
12-
13-
The core `PluginLoader` class is responsible for loading the instrumented plugins that use a patch mechanism to enable automatic tracing for specific target modules. In order to load new plugin, it should export `plugin` identifier.
14-
15-
```typescript
16-
export const plugin = new HttpPlugin(...);
17-
```
18-
19-
> Example of simple module plugin created and used in the tests.
20-
<https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-node/test/instrumentation/node_modules/%40opentelemetry/plugin-simple-module/simple-module.js>
21-
22-
After the plugin is created, it must be added in the [list of default supported plugins][DEFAULT_INSTRUMENTATION_PLUGINS].
23-
24-
```typescript
25-
export const DEFAULT_INSTRUMENTATION_PLUGINS: Plugins = {
26-
http: {
27-
enabled: true,
28-
path: '@opentelemetry/plugin-http',
29-
},
30-
grpc: {
31-
enabled: true,
32-
path: '@opentelemetry/plugin-grpc',
33-
},
34-
// [ADD NEW PLUGIN HERE]
35-
xxx: {
36-
enabled: true,
37-
// You may use a package name or absolute path to the file.
38-
path: '@opentelemetry/plugin-xxx',
39-
}
40-
};
41-
```
42-
43-
We recommend using [`shimmer`][shimmer] to modify function properties on objects.
44-
45-
Please refer to the [HTTP instrumentation][http-plugin] or [gRPC instrumentation][grpc-plugin] for more comprehensive examples.
46-
47-
[shimmer]: https://github.com/othiym23/shimmer
48-
[builtin-instrumentations]: https://github.com/open-telemetry/opentelemetry-js#instrumentations&plugins
49-
[base-plugin]: https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-core/src/platform/node/BasePlugin.ts
50-
[http-plugin]: https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-plugin-http/src/http.ts#L44
51-
[grpc-plugin]: https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-plugin-grpc/src/grpc.ts#L52
52-
[DEFAULT_INSTRUMENTATION_PLUGINS]: https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-node/src/config.ts#L29
8+
[base-instrumentation]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-instrumentation
9+
[http-instrumentation]: https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-instrumentation-http/src/http.ts#L59
10+
[grpc-instrumentation]: https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts#L28
11+
[xhr-instrumentation]: https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-instrumentation-xml-http-request/src/xhr.ts#L71

examples/grpc-js/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
"@opentelemetry/exporter-jaeger": "^0.18.2",
3434
"@opentelemetry/exporter-zipkin": "^0.18.2",
3535
"@opentelemetry/instrumentation": "^0.18.2",
36+
"@opentelemetry/instrumentation-grpc": "^0.18.2",
3637
"@opentelemetry/node": "^0.18.2",
37-
"@opentelemetry/plugin-grpc-js": "^0.18.2",
3838
"@opentelemetry/tracing": "^0.18.2",
3939
"google-protobuf": "^3.9.2"
4040
},

examples/grpc-js/tracer.js

+2-15
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,15 @@ const { NodeTracerProvider } = require('@opentelemetry/node');
66
const { SimpleSpanProcessor } = require('@opentelemetry/tracing');
77
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
88
const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin');
9+
const { GrpcInstrumentation } = require('@opentelemetry/instrumentation-grpc');
910

1011
const EXPORTER = process.env.EXPORTER || '';
1112

1213
module.exports = (serviceName) => {
1314
const provider = new NodeTracerProvider();
1415
registerInstrumentations({
1516
instrumentations: [
16-
{
17-
plugins: {
18-
'@grpc/grpc-js': {
19-
enabled: true,
20-
path: '@opentelemetry/plugin-grpc-js',
21-
// // when boostraping with lerna for testing purposes
22-
// path: `${__dirname}/../../packages/opentelemetry-plugin-grpc-js/build/src`
23-
},
24-
// // when boostraping with lerna for testing purposes
25-
// 'http': {
26-
// enabled: true,
27-
// path: `${__dirname}/../../packages/opentelemetry-plugin-http/build/src`
28-
// },
29-
},
30-
},
17+
new GrpcInstrumentation(),
3118
],
3219
tracerProvider: provider,
3320
});

examples/grpc/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
"@opentelemetry/exporter-jaeger": "^0.18.2",
3333
"@opentelemetry/exporter-zipkin": "^0.18.2",
3434
"@opentelemetry/instrumentation": "^0.18.2",
35+
"@opentelemetry/instrumentation-grpc": "^0.18.2",
3536
"@opentelemetry/node": "^0.18.2",
36-
"@opentelemetry/plugin-grpc": "^0.18.2",
3737
"@opentelemetry/tracing": "^0.18.2",
3838
"google-protobuf": "^3.9.2",
3939
"grpc": "^1.23.3",

examples/grpc/tracer.js

+4-11
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,17 @@ const { NodeTracerProvider } = require('@opentelemetry/node');
66
const { SimpleSpanProcessor } = require('@opentelemetry/tracing');
77
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
88
const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin');
9+
const { GrpcInstrumentation } = require('@opentelemetry/instrumentation-grpc');
910

1011
const EXPORTER = process.env.EXPORTER || '';
1112

1213
module.exports = (serviceName) => {
1314
const provider = new NodeTracerProvider();
1415
registerInstrumentations({
1516
tracerProvider: provider,
16-
// // when boostraping with lerna for testing purposes
17-
// instrumentations: [
18-
// {
19-
// plugins: {
20-
// grpc: {
21-
// enabled: true,
22-
// path: `${__dirname}/../../packages/opentelemetry-plugin-grpc/build/src`
23-
// }
24-
// }
25-
// }
26-
// ],
17+
instrumentations: [
18+
new GrpcInstrumentation(),
19+
],
2720
});
2821

2922
let exporter;

examples/http/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
"@opentelemetry/exporter-jaeger": "^0.18.2",
3333
"@opentelemetry/exporter-zipkin": "^0.18.2",
3434
"@opentelemetry/instrumentation": "^0.18.2",
35+
"@opentelemetry/instrumentation-http": "^0.18.2",
3536
"@opentelemetry/node": "^0.18.2",
36-
"@opentelemetry/plugin-http": "^0.18.2",
3737
"@opentelemetry/tracing": "^0.18.2"
3838
},
3939
"homepage": "https://github.com/open-telemetry/opentelemetry-js#readme",

examples/http/tracer.js

+4-10
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const { NodeTracerProvider } = require('@opentelemetry/node');
66
const { SimpleSpanProcessor } = require('@opentelemetry/tracing');
77
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
88
const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin');
9+
const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');
910

1011
const EXPORTER = process.env.EXPORTER || '';
1112

@@ -14,16 +15,9 @@ module.exports = (serviceName) => {
1415
registerInstrumentations({
1516
tracerProvider: provider,
1617
// // when boostraping with lerna for testing purposes
17-
// instrumentations: [
18-
// {
19-
// plugins: {
20-
// http: {
21-
// enabled: true,
22-
// path: `${__dirname}/../../packages/opentelemetry-plugin-http/build/src`
23-
// }
24-
// }
25-
// }
26-
// ],
18+
instrumentations: [
19+
new HttpInstrumentation(),
20+
],
2721
});
2822

2923
let exporter;

examples/https/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
"@opentelemetry/exporter-jaeger": "^0.18.2",
3434
"@opentelemetry/exporter-zipkin": "^0.18.2",
3535
"@opentelemetry/instrumentation": "^0.18.2",
36+
"@opentelemetry/instrumentation-http": "^0.18.2",
3637
"@opentelemetry/node": "^0.18.2",
37-
"@opentelemetry/plugin-https": "^0.18.2",
3838
"@opentelemetry/tracing": "^0.18.2"
3939
},
4040
"homepage": "https://github.com/open-telemetry/opentelemetry-js#readme",

examples/https/tracer.js

+4-11
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const { NodeTracerProvider } = require('@opentelemetry/node');
66
const { SimpleSpanProcessor } = require('@opentelemetry/tracing');
77
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
88
const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin');
9+
const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');
910

1011
const EXPORTER = process.env.EXPORTER || '';
1112
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
@@ -15,17 +16,9 @@ module.exports = (serviceName) => {
1516
const provider = new NodeTracerProvider();
1617
registerInstrumentations({
1718
tracerProvider: provider,
18-
// when boostraping with lerna for testing purposes
19-
// instrumentations: [
20-
// {
21-
// plugins: {
22-
// https: {
23-
// enabled: true,
24-
// path: `${__dirname}/../../packages/opentelemetry-plugin-https/build/src`
25-
// }
26-
// }
27-
// }
28-
// ],
19+
instrumentations: [
20+
new HttpInstrumentation(),
21+
],
2922
});
3023

3124
if (EXPORTER.toLowerCase().startsWith('z')) {

0 commit comments

Comments
 (0)