Skip to content

Commit a00f390

Browse files
authored
feat: add new instrumentations into auto-instrumentations-node (open-telemetry#981)
* feat: add new instrumentations into auto-instrumentations-node * test: test to make sure all installed instrumentations are added * fix: register the added instrumentations * test: remove the redundant test * fix: add fs instrumentation back I missed during conflict resolution * fix: add config argument to RouterInstrumentation * style: lint it
1 parent 72430f8 commit a00f390

File tree

4 files changed

+28
-45
lines changed

4 files changed

+28
-45
lines changed

metapackages/auto-instrumentations-node/package.json

+3
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"@opentelemetry/instrumentation-dataloader": "^0.2.0",
5757
"@opentelemetry/instrumentation-dns": "^0.30.0",
5858
"@opentelemetry/instrumentation-express": "^0.31.2",
59+
"@opentelemetry/instrumentation-fs": "^0.5.0",
5960
"@opentelemetry/instrumentation-fastify": "^0.30.0",
6061
"@opentelemetry/instrumentation-generic-pool": "^0.30.0",
6162
"@opentelemetry/instrumentation-graphql": "^0.31.0",
@@ -78,6 +79,8 @@
7879
"@opentelemetry/instrumentation-redis": "^0.33.0",
7980
"@opentelemetry/instrumentation-redis-4": "^0.33.0",
8081
"@opentelemetry/instrumentation-restify": "^0.30.0",
82+
"@opentelemetry/instrumentation-router": "^0.30.0",
83+
"@opentelemetry/instrumentation-tedious": "^0.4.0",
8184
"@opentelemetry/instrumentation-winston": "^0.30.0"
8285
}
8386
}

metapackages/auto-instrumentations-node/src/utils.ts

+7
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import { diag } from '@opentelemetry/api';
1818
import { Instrumentation } from '@opentelemetry/instrumentation';
19+
1920
import { AmqplibInstrumentation } from '@opentelemetry/instrumentation-amqplib';
2021
import { AwsLambdaInstrumentation } from '@opentelemetry/instrumentation-aws-lambda';
2122
import { AwsInstrumentation } from '@opentelemetry/instrumentation-aws-sdk';
@@ -26,6 +27,7 @@ import { DataloaderInstrumentation } from '@opentelemetry/instrumentation-datalo
2627
import { DnsInstrumentation } from '@opentelemetry/instrumentation-dns';
2728
import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';
2829
import { FastifyInstrumentation } from '@opentelemetry/instrumentation-fastify';
30+
import { FsInstrumentation } from '@opentelemetry/instrumentation-fs';
2931
import { GenericPoolInstrumentation } from '@opentelemetry/instrumentation-generic-pool';
3032
import { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql';
3133
import { GrpcInstrumentation } from '@opentelemetry/instrumentation-grpc';
@@ -47,6 +49,8 @@ import { PinoInstrumentation } from '@opentelemetry/instrumentation-pino';
4749
import { RedisInstrumentation as RedisInstrumentationV2 } from '@opentelemetry/instrumentation-redis';
4850
import { RedisInstrumentation as RedisInstrumentationV4 } from '@opentelemetry/instrumentation-redis-4';
4951
import { RestifyInstrumentation } from '@opentelemetry/instrumentation-restify';
52+
import { RouterInstrumentation } from '@opentelemetry/instrumentation-router';
53+
import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious';
5054
import { WinstonInstrumentation } from '@opentelemetry/instrumentation-winston';
5155

5256
const InstrumentationMap = {
@@ -61,6 +65,7 @@ const InstrumentationMap = {
6165
'@opentelemetry/instrumentation-dns': DnsInstrumentation,
6266
'@opentelemetry/instrumentation-express': ExpressInstrumentation,
6367
'@opentelemetry/instrumentation-fastify': FastifyInstrumentation,
68+
'@opentelemetry/instrumentation-fs': FsInstrumentation,
6469
'@opentelemetry/instrumentation-generic-pool': GenericPoolInstrumentation,
6570
'@opentelemetry/instrumentation-graphql': GraphQLInstrumentation,
6671
'@opentelemetry/instrumentation-grpc': GrpcInstrumentation,
@@ -82,6 +87,8 @@ const InstrumentationMap = {
8287
'@opentelemetry/instrumentation-redis': RedisInstrumentationV2,
8388
'@opentelemetry/instrumentation-redis-4': RedisInstrumentationV4,
8489
'@opentelemetry/instrumentation-restify': RestifyInstrumentation,
90+
'@opentelemetry/instrumentation-router': RouterInstrumentation,
91+
'@opentelemetry/instrumentation-tedious': TediousInstrumentation,
8592
'@opentelemetry/instrumentation-winston': WinstonInstrumentation,
8693
};
8794

metapackages/auto-instrumentations-node/test/utils.test.ts

+11-43
Original file line numberDiff line numberDiff line change
@@ -22,50 +22,18 @@ import { getNodeAutoInstrumentations } from '../src';
2222

2323
describe('utils', () => {
2424
describe('getNodeAutoInstrumentations', () => {
25-
it('should load default instrumentations', () => {
25+
it('should include all installed instrumentations', () => {
2626
const instrumentations = getNodeAutoInstrumentations();
27-
const expectedInstrumentations = [
28-
'@opentelemetry/instrumentation-amqplib',
29-
'@opentelemetry/instrumentation-aws-lambda',
30-
'@opentelemetry/instrumentation-aws-sdk',
31-
'@opentelemetry/instrumentation-bunyan',
32-
'@opentelemetry/instrumentation-cassandra-driver',
33-
'@opentelemetry/instrumentation-connect',
34-
'@opentelemetry/instrumentation-dataloader',
35-
'@opentelemetry/instrumentation-dns',
36-
'@opentelemetry/instrumentation-express',
37-
'@opentelemetry/instrumentation-fastify',
38-
'@opentelemetry/instrumentation-generic-pool',
39-
'@opentelemetry/instrumentation-graphql',
40-
'@opentelemetry/instrumentation-grpc',
41-
'@opentelemetry/instrumentation-hapi',
42-
'@opentelemetry/instrumentation-http',
43-
'@opentelemetry/instrumentation-ioredis',
44-
'@opentelemetry/instrumentation-knex',
45-
'@opentelemetry/instrumentation-koa',
46-
'@opentelemetry/instrumentation-lru-memoizer',
47-
'@opentelemetry/instrumentation-memcached',
48-
'@opentelemetry/instrumentation-mongodb',
49-
'@opentelemetry/instrumentation-mongoose',
50-
'@opentelemetry/instrumentation-mysql2',
51-
'@opentelemetry/instrumentation-mysql',
52-
'@opentelemetry/instrumentation-nestjs-core',
53-
'@opentelemetry/instrumentation-net',
54-
'@opentelemetry/instrumentation-pg',
55-
'@opentelemetry/instrumentation-pino',
56-
'@opentelemetry/instrumentation-redis',
57-
'@opentelemetry/instrumentation-redis-4',
58-
'@opentelemetry/instrumentation-restify',
59-
'@opentelemetry/instrumentation-winston',
60-
];
61-
assert.strictEqual(instrumentations.length, 32);
62-
for (let i = 0, j = instrumentations.length; i < j; i++) {
63-
assert.strictEqual(
64-
instrumentations[i].instrumentationName,
65-
expectedInstrumentations[i],
66-
`Instrumentation ${expectedInstrumentations[i]}, not loaded`
67-
);
68-
}
27+
const installedInstrumentations = Object.keys(
28+
require('../package.json').dependencies
29+
).filter(depName => {
30+
return depName.startsWith('@opentelemetry/instrumentation-');
31+
});
32+
33+
assert.deepStrictEqual(
34+
new Set(instrumentations.map(i => i.instrumentationName)),
35+
new Set(installedInstrumentations)
36+
);
6937
});
7038

7139
it('should use user config', () => {

plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import * as api from '@opentelemetry/api';
1818
import {
19+
InstrumentationConfig,
1920
InstrumentationBase,
2021
InstrumentationNodeModuleDefinition,
2122
InstrumentationNodeModuleFile,
@@ -34,8 +35,12 @@ import AttributeNames from './enums/AttributeNames';
3435
import LayerType from './enums/LayerType';
3536

3637
export default class RouterInstrumentation extends InstrumentationBase<any> {
37-
constructor() {
38-
super(`@opentelemetry/instrumentation-${constants.MODULE_NAME}`, VERSION);
38+
constructor(config?: InstrumentationConfig) {
39+
super(
40+
`@opentelemetry/instrumentation-${constants.MODULE_NAME}`,
41+
VERSION,
42+
config
43+
);
3944
}
4045

4146
private _moduleVersion?: string;

0 commit comments

Comments
 (0)