@nivinjoseph/n-strument 1.0.4 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +4 -0
- package/.vscode/settings.json +30 -0
- package/.yarn/install-state.gz +0 -0
- package/.yarn/releases/yarn-4.16.0.cjs +944 -0
- package/.yarnrc.yml +10 -0
- package/README.md +117 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +116 -44
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.json +3 -1
- package/eslint.config.js +328 -0
- package/package.json +35 -25
- package/src/index.ts +116 -28
- package/test/dummy.test.ts +12 -0
- package/tsconfig.json +11 -5
- package/.eslintignore +0 -2
- package/.eslintrc +0 -335
package/.yarnrc.yml
ADDED
package/README.md
CHANGED
|
@@ -1,2 +1,118 @@
|
|
|
1
1
|
# n-strument
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
Instrumentation helper library.
|
|
4
|
+
|
|
5
|
+
A zero-config-code bootstrap for [OpenTelemetry](https://opentelemetry.io/) distributed tracing in Node.js apps. Importing it wires up auto-instrumentation and an OTLP exporter for you — there is no API to call.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @nivinjoseph/n-strument
|
|
11
|
+
# or
|
|
12
|
+
yarn add @nivinjoseph/n-strument
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
This is primarily a **side-effect-on-import module**: importing it sets up auto-instrumentation and the OTLP exporter. It also exports a single `shutdownTracing` function for draining spans on shutdown (see below). Import it once, as the **very first import** in your application's entry point, before any module you want traced is loaded:
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
// main.ts — the FIRST import, before koa/pg/redis/aws-sdk/etc.
|
|
21
|
+
import "@nivinjoseph/n-strument";
|
|
22
|
+
|
|
23
|
+
// ...the rest of your app
|
|
24
|
+
import { startServer } from "./server.js";
|
|
25
|
+
startServer();
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Order matters: OpenTelemetry auto-instrumentation patches modules at load time, so anything imported before `n-strument` will not be traced. For a guaranteed-first load you can preload it via Node instead:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
node --import @nivinjoseph/n-strument ./dist/main.js
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
n-strument does not expose an API for creating custom spans. It sets up the global tracer provider, so use [`@opentelemetry/api`](https://www.npmjs.com/package/@opentelemetry/api) directly for manual instrumentation:
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
import { trace } from "@opentelemetry/api";
|
|
38
|
+
|
|
39
|
+
const tracer = trace.getTracer("my-service");
|
|
40
|
+
const span = tracer.startSpan("do-work");
|
|
41
|
+
// ...
|
|
42
|
+
span.end();
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Graceful shutdown
|
|
46
|
+
|
|
47
|
+
Spans are buffered in memory by a `BatchSpanProcessor` and flushed periodically. On process exit that buffer is **not** drained automatically, so the spans around a deploy, scale-down, or shutdown — often the ones you most want — can be lost. n-strument does **not** register its own `SIGTERM`/`SIGINT` handlers (that would race with, and prematurely exit out of, your service's shutdown). Instead it exports `shutdownTracing`, which you call as the **last** step of your own graceful-shutdown sequence — after you've stopped accepting work and finished in-flight requests, so their spans are captured:
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
import { shutdownTracing } from "@nivinjoseph/n-strument";
|
|
51
|
+
|
|
52
|
+
async function onShutdown(): Promise<void>
|
|
53
|
+
{
|
|
54
|
+
await server.stop(); // stop accepting traffic, drain in-flight requests
|
|
55
|
+
await db.dispose(); // your other cleanup
|
|
56
|
+
await shutdownTracing(); // flush + shut down the exporter, last
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`shutdownTracing()` flushes the buffer and shuts the exporter down. It is idempotent — repeat calls return the same shutdown — so it's safe to wire into multiple paths.
|
|
61
|
+
|
|
62
|
+
This works with the `node --import` style too: ES modules are singletons, so importing `shutdownTracing` from your code returns the same instance that `--import` already loaded, operating on the same tracer provider.
|
|
63
|
+
|
|
64
|
+
## Configuration
|
|
65
|
+
|
|
66
|
+
All settings are read through [`@nivinjoseph/n-config`](https://www.npmjs.com/package/@nivinjoseph/n-config)'s `ConfigurationManager` (environment variables / config files).
|
|
67
|
+
|
|
68
|
+
| Config key | Required | Default | Purpose |
|
|
69
|
+
| ----------------------------------- | -------- | -------------------------------------- | ------------------------------------------------------------------- |
|
|
70
|
+
| `env` | **Yes** | — | App environment. Throws on startup if missing. `"dev"` defaults the trace host to `localhost`. |
|
|
71
|
+
| `package_name` (or `package.name`) | No | — | Sets the `service.name` resource attribute. |
|
|
72
|
+
| `package.version` | No | — | Sets the `service.version` resource attribute. |
|
|
73
|
+
| `otelTraceSamplingRate` | No | `1` (100%) | Parent-based ratio sampler. |
|
|
74
|
+
| `enableXrayTracing` | No | `false` | Use the AWS X-Ray ID generator + propagator. |
|
|
75
|
+
| `otelTraceHost` | No | `localhost` (dev) / `0.0.0.0` (other) | Host of the OTLP collector. |
|
|
76
|
+
|
|
77
|
+
> ⚠️ If `env` is not set, importing the module throws immediately:
|
|
78
|
+
> `ApplicationException: Required config 'env' not found`.
|
|
79
|
+
|
|
80
|
+
## Backend / infrastructure
|
|
81
|
+
|
|
82
|
+
Spans are exported over **OTLP/HTTP** to `http://<otelTraceHost>:4318/v1/traces`. You need an OpenTelemetry Collector — or any OTLP-HTTP-compatible backend (Jaeger, Grafana Tempo, AWS Distro for OpenTelemetry, etc.) — listening on port **4318**. Without one, the app still runs but span exports fail in the background.
|
|
83
|
+
|
|
84
|
+
### Minimal local setup
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# configuration (env vars, or however your n-config is wired)
|
|
88
|
+
export env=dev
|
|
89
|
+
export package_name=my-service
|
|
90
|
+
export package.version=1.0.0
|
|
91
|
+
|
|
92
|
+
# run a collector on :4318
|
|
93
|
+
docker run -p 4318:4318 otel/opentelemetry-collector
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## What gets instrumented
|
|
97
|
+
|
|
98
|
+
The following auto-instrumentations are enabled. This set is fixed and not configurable without editing the library — but the full list of instrumentations is declared explicitly in `src/index.ts`, so flipping one on or off is a one-line `enabled` change:
|
|
99
|
+
|
|
100
|
+
- HTTP
|
|
101
|
+
- gRPC
|
|
102
|
+
- PostgreSQL (`pg`)
|
|
103
|
+
- Knex
|
|
104
|
+
- Redis / ioredis
|
|
105
|
+
- Koa (middleware-layer spans are suppressed)
|
|
106
|
+
- AMQP / RabbitMQ (`amqplib`)
|
|
107
|
+
- Kafka (`kafkajs`)
|
|
108
|
+
- Socket.IO
|
|
109
|
+
- AWS SDK
|
|
110
|
+
- AWS Lambda
|
|
111
|
+
|
|
112
|
+
Every other instrumentation that `@opentelemetry/auto-instrumentations-node` ships (Express, Hapi, NestJS, MongoDB, MySQL, GraphQL, DNS, `fs`, the logging integrations, etc.) is explicitly disabled.
|
|
113
|
+
|
|
114
|
+
To change the set, edit the `instrumentationConfig` map in [`src/index.ts`](src/index.ts) — it lists every instrumentation the library knows about with an explicit `enabled` flag, so toggling one is a single `true`/`false` edit. The map is typed `Required<InstrumentationConfigMap>`, which means a future `@opentelemetry/auto-instrumentations-node` upgrade that adds a new instrumentation will fail the build until you add the key and make a deliberate enabled/disabled decision (rather than letting it silently default to on).
|
|
115
|
+
|
|
116
|
+
## License
|
|
117
|
+
|
|
118
|
+
MIT
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Flushes any buffered spans and shuts the tracer exporter down.
|
|
3
|
+
*
|
|
4
|
+
* Call this from your service's graceful-shutdown sequence — after it has stopped accepting work
|
|
5
|
+
* and finished in-flight requests, so their spans are captured — to avoid losing the spans the
|
|
6
|
+
* BatchSpanProcessor is still holding in memory. Safe to call more than once: repeat calls return
|
|
7
|
+
* the same in-flight (or completed) shutdown.
|
|
8
|
+
*/
|
|
9
|
+
export declare function shutdownTracing(): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA+IA;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAW/C"}
|
package/dist/index.js
CHANGED
|
@@ -1,64 +1,136 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const id_generator_aws_xray_1 = require("@opentelemetry/id-generator-aws-xray");
|
|
1
|
+
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
|
|
2
|
+
import { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
3
|
+
import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
|
|
4
|
+
import { KoaLayerType } from "@opentelemetry/instrumentation-koa";
|
|
5
|
+
import { defaultResource, resourceFromAttributes } from "@opentelemetry/resources";
|
|
6
|
+
import {
|
|
7
|
+
// SemanticResourceAttributes,
|
|
8
|
+
ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
9
|
+
import { NodeTracerProvider, ParentBasedSampler, TraceIdRatioBasedSampler } from "@opentelemetry/sdk-trace-node";
|
|
10
|
+
import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
11
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
12
|
+
import { ConfigurationManager } from "@nivinjoseph/n-config";
|
|
13
|
+
import { TypeHelper } from "@nivinjoseph/n-util";
|
|
14
|
+
import { AWSXRayPropagator } from "@opentelemetry/propagator-aws-xray";
|
|
15
|
+
import { AWSXRayIdGenerator } from "@opentelemetry/id-generator-aws-xray";
|
|
17
16
|
// For troubleshooting, set the log level to DiagLogLevel.DEBUG
|
|
18
|
-
|
|
17
|
+
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO);
|
|
18
|
+
// Every key in the InstrumentationConfigMap is listed explicitly with an `enabled` flag. The
|
|
19
|
+
// config object is an *override map*, not an allow-list: any instrumentation left out (or set to
|
|
20
|
+
// `undefined`) runs at its own default, which for this library version means ~39 of 40 are on.
|
|
21
|
+
// Listing all of them makes the enabled set unambiguous and makes a future library version that
|
|
22
|
+
// adds a new instrumentation conspicuous by its absence here, instead of silently turning on.
|
|
23
|
+
//
|
|
24
|
+
// Enabled: http, grpc, pg, knex, redis, ioredis, koa, amqplib, kafkajs, socket.io, aws-sdk,
|
|
25
|
+
// aws-lambda. Everything else off.
|
|
26
|
+
// Entries are kept in the library's own InstrumentationMap order for easy auditing on upgrade.
|
|
27
|
+
// `Required<...>` strips the optional modifier off every key, so this literal must list every
|
|
28
|
+
// instrumentation the library knows about. When an OTel upgrade adds a new one, the missing key
|
|
29
|
+
// becomes a compile error here — forcing a deliberate enabled/disabled decision rather than a
|
|
30
|
+
// silent default-on.
|
|
31
|
+
const instrumentationConfig = {
|
|
32
|
+
"@opentelemetry/instrumentation-amqplib": { enabled: true },
|
|
33
|
+
"@opentelemetry/instrumentation-aws-lambda": { enabled: true },
|
|
34
|
+
"@opentelemetry/instrumentation-aws-sdk": { enabled: true },
|
|
35
|
+
"@opentelemetry/instrumentation-bunyan": { enabled: false },
|
|
36
|
+
"@opentelemetry/instrumentation-cassandra-driver": { enabled: false },
|
|
37
|
+
"@opentelemetry/instrumentation-connect": { enabled: false },
|
|
38
|
+
"@opentelemetry/instrumentation-cucumber": { enabled: false },
|
|
39
|
+
"@opentelemetry/instrumentation-dataloader": { enabled: false },
|
|
40
|
+
"@opentelemetry/instrumentation-dns": { enabled: false },
|
|
41
|
+
"@opentelemetry/instrumentation-express": { enabled: false },
|
|
42
|
+
"@opentelemetry/instrumentation-fs": { enabled: false },
|
|
43
|
+
"@opentelemetry/instrumentation-generic-pool": { enabled: false },
|
|
44
|
+
"@opentelemetry/instrumentation-graphql": { enabled: false },
|
|
45
|
+
"@opentelemetry/instrumentation-grpc": { enabled: true },
|
|
46
|
+
"@opentelemetry/instrumentation-hapi": { enabled: false },
|
|
47
|
+
"@opentelemetry/instrumentation-http": { enabled: true },
|
|
48
|
+
"@opentelemetry/instrumentation-ioredis": { enabled: true },
|
|
49
|
+
"@opentelemetry/instrumentation-kafkajs": { enabled: true },
|
|
50
|
+
"@opentelemetry/instrumentation-knex": { enabled: true },
|
|
51
|
+
"@opentelemetry/instrumentation-koa": { enabled: true, ignoreLayersType: [KoaLayerType.MIDDLEWARE] },
|
|
52
|
+
"@opentelemetry/instrumentation-lru-memoizer": { enabled: false },
|
|
53
|
+
"@opentelemetry/instrumentation-memcached": { enabled: false },
|
|
54
|
+
"@opentelemetry/instrumentation-mongodb": { enabled: false },
|
|
55
|
+
"@opentelemetry/instrumentation-mongoose": { enabled: false },
|
|
56
|
+
"@opentelemetry/instrumentation-mysql2": { enabled: false },
|
|
57
|
+
"@opentelemetry/instrumentation-mysql": { enabled: false },
|
|
58
|
+
"@opentelemetry/instrumentation-nestjs-core": { enabled: false },
|
|
59
|
+
"@opentelemetry/instrumentation-net": { enabled: false },
|
|
60
|
+
"@opentelemetry/instrumentation-openai": { enabled: false },
|
|
61
|
+
"@opentelemetry/instrumentation-oracledb": { enabled: false },
|
|
62
|
+
"@opentelemetry/instrumentation-pg": { enabled: true },
|
|
63
|
+
"@opentelemetry/instrumentation-pino": { enabled: false },
|
|
64
|
+
"@opentelemetry/instrumentation-redis": { enabled: true },
|
|
65
|
+
"@opentelemetry/instrumentation-restify": { enabled: false },
|
|
66
|
+
"@opentelemetry/instrumentation-router": { enabled: false },
|
|
67
|
+
"@opentelemetry/instrumentation-runtime-node": { enabled: false },
|
|
68
|
+
"@opentelemetry/instrumentation-socket.io": { enabled: true },
|
|
69
|
+
"@opentelemetry/instrumentation-tedious": { enabled: false },
|
|
70
|
+
"@opentelemetry/instrumentation-undici": { enabled: false },
|
|
71
|
+
"@opentelemetry/instrumentation-winston": { enabled: false }
|
|
72
|
+
};
|
|
19
73
|
// This registers all instrumentation packages
|
|
20
|
-
|
|
74
|
+
registerInstrumentations({
|
|
21
75
|
instrumentations: [
|
|
22
|
-
(
|
|
23
|
-
"@opentelemetry/instrumentation-http": undefined,
|
|
24
|
-
"@opentelemetry/instrumentation-grpc": undefined,
|
|
25
|
-
"@opentelemetry/instrumentation-redis": undefined,
|
|
26
|
-
"@opentelemetry/instrumentation-ioredis": undefined,
|
|
27
|
-
"@opentelemetry/instrumentation-pg": undefined,
|
|
28
|
-
"@opentelemetry/instrumentation-knex": undefined,
|
|
29
|
-
"@opentelemetry/instrumentation-koa": { ignoreLayersType: [instrumentation_koa_1.KoaLayerType.MIDDLEWARE] },
|
|
30
|
-
"@opentelemetry/instrumentation-aws-sdk": undefined,
|
|
31
|
-
"@opentelemetry/instrumentation-aws-lambda": undefined
|
|
32
|
-
})
|
|
76
|
+
getNodeAutoInstrumentations(instrumentationConfig)
|
|
33
77
|
]
|
|
34
78
|
});
|
|
35
|
-
const env =
|
|
79
|
+
const env = ConfigurationManager.requireStringConfig("env");
|
|
36
80
|
const isDev = env === "dev";
|
|
37
|
-
const resource =
|
|
38
|
-
[
|
|
39
|
-
[
|
|
40
|
-
[
|
|
81
|
+
const resource = defaultResource().merge(resourceFromAttributes({
|
|
82
|
+
// [SemanticResourceAttributes.SERVICE_NAME]: ConfigurationManager.getConfig("package.name"),
|
|
83
|
+
// [SemanticResourceAttributes.SERVICE_VERSION]: ConfigurationManager.getConfig("package.version"),
|
|
84
|
+
// [SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: env
|
|
85
|
+
[ATTR_SERVICE_NAME]: ConfigurationManager.getConfig("package_name") ?? ConfigurationManager.getConfig("package.name") ?? undefined,
|
|
86
|
+
[ATTR_SERVICE_VERSION]: ConfigurationManager.getConfig("package.version") ?? undefined
|
|
41
87
|
}));
|
|
42
|
-
const samplingRate =
|
|
43
|
-
const enableXrayTracing =
|
|
88
|
+
const samplingRate = TypeHelper.parseNumber(ConfigurationManager.getConfig("otelTraceSamplingRate")) ?? 1;
|
|
89
|
+
const enableXrayTracing = TypeHelper.parseBoolean(ConfigurationManager.getConfig("enableXrayTracing")) ?? false;
|
|
44
90
|
const tracerConfig = {
|
|
45
91
|
resource: resource,
|
|
46
|
-
sampler: new
|
|
92
|
+
sampler: new ParentBasedSampler({ root: new TraceIdRatioBasedSampler(samplingRate) })
|
|
47
93
|
};
|
|
48
94
|
if (enableXrayTracing)
|
|
49
|
-
tracerConfig.idGenerator = new
|
|
50
|
-
let traceHost =
|
|
95
|
+
tracerConfig.idGenerator = new AWSXRayIdGenerator();
|
|
96
|
+
let traceHost = ConfigurationManager.getConfig("otelTraceHost");
|
|
51
97
|
if (traceHost == null || typeof traceHost !== "string" || traceHost.isEmptyOrWhiteSpace())
|
|
52
98
|
traceHost = isDev ? "localhost" : "0.0.0.0";
|
|
53
|
-
const provider = new sdk_trace_node_1.NodeTracerProvider();
|
|
54
99
|
// const exporter = new ConsoleSpanExporter();
|
|
55
|
-
const exporter = new
|
|
100
|
+
const exporter = new OTLPTraceExporter({
|
|
56
101
|
// optional - default url is http://localhost:4318/v1/traces
|
|
57
102
|
url: `http://${traceHost}:4318/v1/traces`,
|
|
58
103
|
// optional - collection of custom headers to be sent with each request, empty by default
|
|
59
104
|
headers: {}
|
|
60
105
|
});
|
|
61
|
-
const processor = new
|
|
62
|
-
|
|
63
|
-
provider
|
|
106
|
+
const processor = new BatchSpanProcessor(exporter);
|
|
107
|
+
// Span processors are now supplied via the constructor (addSpanProcessor was removed in the OTel SDK 2.x line).
|
|
108
|
+
const provider = new NodeTracerProvider({
|
|
109
|
+
...tracerConfig,
|
|
110
|
+
spanProcessors: [processor]
|
|
111
|
+
});
|
|
112
|
+
provider.register(enableXrayTracing ? { propagator: new AWSXRayPropagator() } : undefined);
|
|
113
|
+
// The BatchSpanProcessor buffers finished spans in memory and only flushes periodically (or once a
|
|
114
|
+
// batch fills); its flush timer is unref'd, so the process can exit with spans still buffered, and
|
|
115
|
+
// the Node processor registers no exit handlers of its own. Rather than have this library grab
|
|
116
|
+
// SIGTERM/SIGINT — which would race with, and process.exit() out of, the host service's own
|
|
117
|
+
// graceful-shutdown sequence — we export a drain function for the host to invoke as part of its
|
|
118
|
+
// shutdown. provider.shutdown() flushes the buffer and shuts the exporter down.
|
|
119
|
+
let shutdownPromise = null;
|
|
120
|
+
/**
|
|
121
|
+
* Flushes any buffered spans and shuts the tracer exporter down.
|
|
122
|
+
*
|
|
123
|
+
* Call this from your service's graceful-shutdown sequence — after it has stopped accepting work
|
|
124
|
+
* and finished in-flight requests, so their spans are captured — to avoid losing the spans the
|
|
125
|
+
* BatchSpanProcessor is still holding in memory. Safe to call more than once: repeat calls return
|
|
126
|
+
* the same in-flight (or completed) shutdown.
|
|
127
|
+
*/
|
|
128
|
+
export function shutdownTracing() {
|
|
129
|
+
if (shutdownPromise != null)
|
|
130
|
+
return shutdownPromise;
|
|
131
|
+
shutdownPromise = provider.shutdown().catch((e) => {
|
|
132
|
+
diag.error("Error shutting down tracer provider", e);
|
|
133
|
+
});
|
|
134
|
+
return shutdownPromise;
|
|
135
|
+
}
|
|
64
136
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tsconfig.json
CHANGED