Skip to content

Commit 53c40c1

Browse files
vmarchaudmayurkale22
authored andcommitted
feat: port mongodb-core plugin to mongodb #622 (#652)
* feat: port mongodb-core plugin to mongodb #622 * chore: address PR comments
1 parent 6c98ab9 commit 53c40c1

File tree

14 files changed

+39
-48
lines changed

14 files changed

+39
-48
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ cache_2: &cache_2
6464
- packages/opentelemetry-plugin-grpc/node_modules
6565
- packages/opentelemetry-plugin-http/node_modules
6666
- packages/opentelemetry-plugin-http2/node_modules
67-
- packages/opentelemetry-plugin-mongodb-core/node_modules
67+
- packages/opentelemetry-plugin-mongodb/node_modules
6868
- packages/opentelemetry-plugin-redis/node_modules
6969
- packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg/node_modules
7070
- packages/opentelemetry-plugin-document-load/node_modules

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ OpenTelemetry can collect tracing data automatically using plugins. Vendors/User
120120
- [@opentelemetry/plugin-grpc](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-plugin-grpc)
121121
- [@opentelemetry/plugin-http](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-plugin-http)
122122
- [@opentelemetry/plugin-https](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-plugin-https)
123-
- [@opentelemetry/plugin-mongodb-core](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-plugin-mongodb-core)
123+
- [@opentelemetry/plugin-mongodb](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-plugin-mongodb)
124124
- [@opentelemetry/plugin-mysql](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-plugin-mysql)
125125
- [@opentelemetry/plugin-pg](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg)
126126
- [@opentelemetry/plugin-pg-pool](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-plugin-postgres/opentelemetry-plugin-pg-pool)

packages/opentelemetry-node/src/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface NodeTracerConfig extends BasicTracerConfig {
2727

2828
/** List of all default supported plugins */
2929
export const DEFAULT_INSTRUMENTATION_PLUGINS: Plugins = {
30-
'mongodb-core': { enabled: true, path: '@opentelemetry/plugin-mongodb-core' },
30+
mongodb: { enabled: true, path: '@opentelemetry/plugin-mongodb' },
3131
grpc: { enabled: true, path: '@opentelemetry/plugin-grpc' },
3232
http: { enabled: true, path: '@opentelemetry/plugin-http' },
3333
https: { enabled: true, path: '@opentelemetry/plugin-https' },

packages/opentelemetry-plugin-mongodb-core/src/version.ts

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

packages/opentelemetry-plugin-mongodb-core/README.md renamed to packages/opentelemetry-plugin-mongodb/README.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1-
# OpenTelemetry mongodb-core Instrumentation for Node.js
1+
# OpenTelemetry mongodb Instrumentation for Node.js
22
[![Gitter chat][gitter-image]][gitter-url]
33
[![dependencies][dependencies-image]][dependencies-url]
44
[![devDependencies][devDependencies-image]][devDependencies-url]
55
[![Apache License][license-image]][license-image]
66

7-
This module provides automatic instrumentation for [`mongodb-core`](https://github.com/mongodb-js/mongodb-core).
7+
This module provides automatic instrumentation for [`mongodb`](https://github.com/mongodb/node-mongodb-native).
88

99
For automatic instrumentation see the
1010
[@opentelemetry/node](https://github.com/open-telemetry/opentelemetry-js/tree/master/packages/opentelemetry-node) package.
1111

1212
## Installation
1313

1414
```bash
15-
npm install --save @opentelemetry/plugin-mongodb-core
15+
npm install --save @opentelemetry/plugin-mongodb
1616
```
17+
### Supported Versions
18+
- `'>=2.0.0 <4`
1719

1820
## Usage
1921

@@ -25,10 +27,10 @@ const { NodeTracer } = require('@opentelemetry/node');
2527

2628
const tracer = new NodeTracer({
2729
plugins: {
28-
'mongodb-core': {
30+
mongodb: {
2931
enabled: true,
3032
// You may use a package name or absolute path to the file.
31-
path: '@opentelemetry/plugin-mongodb-core',
33+
path: '@opentelemetry/plugin-mongodb',
3234
}
3335
}
3436
});
@@ -41,7 +43,7 @@ const { NodeTracer } = require('@opentelemetry/node');
4143
const tracer = new NodeTracer();
4244
```
4345

44-
See [examples/mongodb](https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/mongodb-core) for a short example.
46+
See [examples/mongodb](https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/mongodb) for a short example.
4547

4648
## Useful links
4749
- For more information on OpenTelemetry, visit: <https://opentelemetry.io/>
@@ -56,7 +58,7 @@ Apache 2.0 - See [LICENSE][license-url] for more information.
5658
[gitter-url]: https://gitter.im/open-telemetry/opentelemetry-node?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
5759
[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/master/LICENSE
5860
[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
59-
[dependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js/status.svg?path=packages/opentelemetry-plugin-mongodb-core
60-
[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-plugin-mongodb-core
61-
[devDependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js/dev-status.svg?path=packages/opentelemetry-plugin-mongodb-core
62-
[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-plugin-mongodb-core&type=dev
61+
[dependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js/status.svg?path=packages/opentelemetry-plugin-mongodb
62+
[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-plugin-mongodb
63+
[devDependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js/dev-status.svg?path=packages/opentelemetry-plugin-mongodb
64+
[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-plugin-mongodb&type=dev

packages/opentelemetry-plugin-mongodb-core/package.json renamed to packages/opentelemetry-plugin-mongodb/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"name": "@opentelemetry/plugin-mongodb-core",
2+
"name": "@opentelemetry/plugin-mongodb",
33
"version": "0.3.1",
4-
"description": "OpenTelemetry mongodb-core automatic instrumentation package.",
4+
"description": "OpenTelemetry mongodb automatic instrumentation package.",
55
"main": "build/src/index.js",
66
"types": "build/src/index.d.ts",
77
"repository": "open-telemetry/opentelemetry-js",
@@ -19,7 +19,7 @@
1919
},
2020
"keywords": [
2121
"opentelemetry",
22-
"mongodb-core",
22+
"mongodb",
2323
"nodejs",
2424
"tracing",
2525
"profiling",
@@ -50,7 +50,7 @@
5050
"codecov": "^3.6.1",
5151
"gts": "^1.1.0",
5252
"mocha": "^6.2.0",
53-
"mongodb": "^3.3.0",
53+
"mongodb": "^3.4.1",
5454
"nyc": "^14.1.1",
5555
"rimraf": "^3.0.0",
5656
"ts-mocha": "^6.0.0",

packages/opentelemetry-plugin-mongodb-core/src/mongodb.ts renamed to packages/opentelemetry-plugin-mongodb/src/mongodb.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ import * as mongodb from 'mongodb';
3030
import * as shimmer from 'shimmer';
3131

3232
/** MongoDBCore instrumentation plugin for OpenTelemetry */
33-
export class MongoDBCorePlugin extends BasePlugin<typeof mongodb> {
33+
export class MongoDBPlugin extends BasePlugin<typeof mongodb> {
3434
private readonly _SERVER_METHODS = ['insert', 'update', 'remove', 'command'];
3535
private readonly _CURSOR_METHODS = ['_next', 'next'];
3636

37-
private readonly _COMPONENT = 'mongodb-core';
37+
private readonly _COMPONENT = 'mongodb';
3838
private readonly _DB_TYPE = 'mongodb';
3939

40-
readonly supportedVersions = ['>=2 <3'];
40+
readonly supportedVersions = ['>=2 <4'];
4141

4242
constructor(readonly moduleName: string) {
4343
super();
@@ -51,7 +51,7 @@ export class MongoDBCorePlugin extends BasePlugin<typeof mongodb> {
5151

5252
if (this._moduleExports.Server) {
5353
for (const fn of this._SERVER_METHODS) {
54-
this._logger.debug(`patching mongodb-core.Server.prototype.${fn}`);
54+
this._logger.debug(`patching mongodb.Server.prototype.${fn}`);
5555
shimmer.wrap(
5656
this._moduleExports.Server.prototype,
5757
// Forced to ignore due to incomplete typings
@@ -65,7 +65,7 @@ export class MongoDBCorePlugin extends BasePlugin<typeof mongodb> {
6565

6666
if (this._moduleExports.Cursor) {
6767
this._logger.debug(
68-
'patching mongodb-core.Cursor.prototype functions:',
68+
'patching mongodb.Cursor.prototype functions:',
6969
this._CURSOR_METHODS
7070
);
7171
shimmer.massWrap(
@@ -170,10 +170,12 @@ export class MongoDBCorePlugin extends BasePlugin<typeof mongodb> {
170170
topology: MongoInternalTopology
171171
) {
172172
// add network attributes to determine the remote server
173-
if (topology && topology.s && topology.s.options) {
173+
if (topology && topology.s) {
174174
span.setAttributes({
175-
[AttributeNames.PEER_HOSTNAME]: `${topology.s.options.host}`,
176-
[AttributeNames.PEER_PORT]: `${topology.s.options.port}`,
175+
[AttributeNames.PEER_HOSTNAME]: `${topology.s.options?.host ??
176+
topology.s.host}`,
177+
[AttributeNames.PEER_PORT]: `${topology.s.options?.port ??
178+
topology.s.port}`,
177179
});
178180
}
179181
// add database related attributes
@@ -184,7 +186,7 @@ export class MongoDBCorePlugin extends BasePlugin<typeof mongodb> {
184186
});
185187

186188
if (command === undefined) return;
187-
const query = Object.keys(command.query || command.q || {}).reduce(
189+
const query = Object.keys(command.query ?? command.q ?? command).reduce(
188190
(obj, key) => {
189191
obj[key] = '?';
190192
return obj;
@@ -246,4 +248,4 @@ export class MongoDBCorePlugin extends BasePlugin<typeof mongodb> {
246248
}
247249
}
248250

249-
export const plugin = new MongoDBCorePlugin('mongodb-core');
251+
export const plugin = new MongoDBPlugin('mongodb');

0 commit comments

Comments
 (0)