@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/.yarnrc.yml ADDED
@@ -0,0 +1,10 @@
1
+ approvedGitRepositories:
2
+ - "**"
3
+
4
+ enableScripts: false
5
+
6
+ nodeLinker: node-modules
7
+
8
+ npmMinimalAgeGate: 0
9
+
10
+ yarnPath: .yarn/releases/yarn-4.16.0.cjs
package/README.md CHANGED
@@ -1,2 +1,118 @@
1
1
  # n-strument
2
- Instrumentation helper library
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
- export {};
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
- "use strict";
2
- var _a, _b;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const auto_instrumentations_node_1 = require("@opentelemetry/auto-instrumentations-node");
5
- const resources_1 = require("@opentelemetry/resources");
6
- const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
7
- const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
8
- const instrumentation_1 = require("@opentelemetry/instrumentation");
9
- const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
10
- const api_1 = require("@opentelemetry/api");
11
- const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
12
- const n_config_1 = require("@nivinjoseph/n-config");
13
- const instrumentation_koa_1 = require("@opentelemetry/instrumentation-koa");
14
- const n_util_1 = require("@nivinjoseph/n-util");
15
- const propagator_aws_xray_1 = require("@opentelemetry/propagator-aws-xray");
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
- api_1.diag.setLogger(new api_1.DiagConsoleLogger(), api_1.DiagLogLevel.INFO);
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
- (0, instrumentation_1.registerInstrumentations)({
74
+ registerInstrumentations({
21
75
  instrumentations: [
22
- (0, auto_instrumentations_node_1.getNodeAutoInstrumentations)({
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 = n_config_1.ConfigurationManager.getConfig("env");
79
+ const env = ConfigurationManager.requireStringConfig("env");
36
80
  const isDev = env === "dev";
37
- const resource = resources_1.Resource.default().merge(new resources_1.Resource({
38
- [semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: n_config_1.ConfigurationManager.getConfig("package.name"),
39
- [semantic_conventions_1.SemanticResourceAttributes.SERVICE_VERSION]: n_config_1.ConfigurationManager.getConfig("package.version"),
40
- [semantic_conventions_1.SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: env
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 = (_a = n_util_1.TypeHelper.parseNumber(n_config_1.ConfigurationManager.getConfig("otelTraceSamplingRate"))) !== null && _a !== void 0 ? _a : 1;
43
- const enableXrayTracing = (_b = n_util_1.TypeHelper.parseBoolean(n_config_1.ConfigurationManager.getConfig("enableXrayTracing"))) !== null && _b !== void 0 ? _b : false;
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 sdk_trace_node_1.ParentBasedSampler({ root: new sdk_trace_node_1.TraceIdRatioBasedSampler(samplingRate) })
92
+ sampler: new ParentBasedSampler({ root: new TraceIdRatioBasedSampler(samplingRate) })
47
93
  };
48
94
  if (enableXrayTracing)
49
- tracerConfig.idGenerator = new id_generator_aws_xray_1.AWSXRayIdGenerator();
50
- let traceHost = n_config_1.ConfigurationManager.getConfig("otelTraceHost");
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 exporter_trace_otlp_http_1.OTLPTraceExporter({
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 sdk_trace_base_1.BatchSpanProcessor(exporter);
62
- provider.addSpanProcessor(processor);
63
- provider.register(enableXrayTracing ? { propagator: new propagator_aws_xray_1.AWSXRayPropagator() } : undefined);
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "extends": "../tsconfig.json",
3
3
  "compilerOptions": {
4
+ "rootDir": "../src",
4
5
  "outDir": ".",
5
6
  "declaration": true,
6
- "declarationDir": "."
7
+ "declarationDir": ".",
8
+ "declarationMap": true
7
9
  },
8
10
  "include": [
9
11
  "../src/**/*.ts"