@manifest-cyber/observability-ts 0.2.11 → 0.2.12

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.
@@ -43,10 +43,12 @@ exports.initTracing = initTracing;
43
43
  exports.isTracingInitialized = isTracingInitialized;
44
44
  exports.getTracerProvider = getTracerProvider;
45
45
  exports.shutdownTracing = shutdownTracing;
46
+ const api_1 = require("@opentelemetry/api");
46
47
  const resources_1 = require("@opentelemetry/resources");
47
48
  const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
48
49
  let isInitialized = false;
49
50
  let tracerProvider = null;
51
+ let shutdownHandlers = [];
50
52
  /**
51
53
  * Environment variable keys
52
54
  */
@@ -105,28 +107,29 @@ async function initTracing(config = {}, logger) {
105
107
  const serviceVersion = config.serviceVersion || process.env[ENV_KEY_VERSION] || '0.0.0';
106
108
  const environment = config.environment || process.env[ENV_KEY_ENV] || 'development';
107
109
  // Create resource with service attributes
108
- const resource = new resources_1.Resource({
109
- [semantic_conventions_1.SEMRESATTRS_SERVICE_NAME]: serviceName,
110
- [semantic_conventions_1.SEMRESATTRS_SERVICE_VERSION]: serviceVersion,
111
- [semantic_conventions_1.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: environment,
110
+ const resource = (0, resources_1.resourceFromAttributes)({
111
+ [semantic_conventions_1.ATTR_SERVICE_NAME]: serviceName,
112
+ [semantic_conventions_1.ATTR_SERVICE_VERSION]: serviceVersion,
113
+ 'deployment.environment': environment,
112
114
  ...config.resourceAttributes,
113
115
  });
114
- // Create tracer provider
115
- tracerProvider = new BasicTracerProvider({
116
- resource,
117
- sampler: await createSampler(config, environment),
118
- });
119
116
  // Create and configure exporter
120
117
  const exporter = await createExporter(config.exporter, logger);
121
- // Add span processor with exporter
122
- tracerProvider.addSpanProcessor(new BatchSpanProcessor(exporter, {
118
+ // Create span processor with exporter
119
+ const spanProcessor = new BatchSpanProcessor(exporter, {
123
120
  maxQueueSize: 2048,
124
121
  scheduledDelayMillis: 5000,
125
122
  exportTimeoutMillis: 30000,
126
123
  maxExportBatchSize: 512,
127
- }));
128
- // Register tracer provider
129
- tracerProvider.register();
124
+ });
125
+ // Create tracer provider with span processors
126
+ tracerProvider = new BasicTracerProvider({
127
+ resource,
128
+ sampler: await createSampler(config, environment),
129
+ spanProcessors: [spanProcessor],
130
+ });
131
+ // Register tracer provider globally
132
+ api_1.trace.setGlobalTracerProvider(tracerProvider);
130
133
  isInitialized = true;
131
134
  logger?.info('OpenTelemetry tracing initialized', {
132
135
  serviceName,
@@ -137,16 +140,14 @@ async function initTracing(config = {}, logger) {
137
140
  });
138
141
  // Graceful shutdown on process termination
139
142
  const shutdown = async () => {
140
- try {
141
- await tracerProvider?.shutdown();
142
- logger?.info('OpenTelemetry tracing shut down gracefully');
143
- }
144
- catch (error) {
145
- logger?.error('Error shutting down OpenTelemetry tracing', error);
146
- }
143
+ await shutdownTracing(logger);
147
144
  };
148
- process.on('SIGTERM', shutdown);
149
- process.on('SIGINT', shutdown);
145
+ // Track handlers so we can remove them on shutdown
146
+ const sigtermHandler = shutdown;
147
+ const sigintHandler = shutdown;
148
+ process.on('SIGTERM', sigtermHandler);
149
+ process.on('SIGINT', sigintHandler);
150
+ shutdownHandlers.push({ signal: 'SIGTERM', handler: sigtermHandler }, { signal: 'SIGINT', handler: sigintHandler });
150
151
  }
151
152
  catch (error) {
152
153
  logger?.error('Failed to initialize OpenTelemetry tracing', error);
@@ -168,9 +169,12 @@ async function createSampler(config, environment) {
168
169
  */
169
170
  async function createExporter(exporterConfig, logger) {
170
171
  const type = exporterConfig?.type || 'otlp-grpc';
171
- const endpoint = exporterConfig?.endpoint ||
172
- process.env[ENV_KEY_OTEL_ENDPOINT] ||
173
- 'http://localhost:4317';
172
+ // Set default endpoint based on exporter type
173
+ let defaultEndpoint = 'http://localhost:4317'; // gRPC default
174
+ if (type === 'otlp-http') {
175
+ defaultEndpoint = 'http://localhost:4318/v1/traces'; // HTTP default
176
+ }
177
+ const endpoint = exporterConfig?.endpoint || process.env[ENV_KEY_OTEL_ENDPOINT] || defaultEndpoint;
174
178
  try {
175
179
  if (type === 'otlp-grpc') {
176
180
  const { OTLPTraceExporter } = await Promise.resolve().then(() => __importStar(require('@opentelemetry/exporter-trace-otlp-grpc')));
@@ -217,6 +221,11 @@ async function shutdownTracing(logger) {
217
221
  return;
218
222
  }
219
223
  try {
224
+ // Remove signal handlers to prevent accumulation
225
+ for (const { signal, handler } of shutdownHandlers) {
226
+ process.removeListener(signal, handler);
227
+ }
228
+ shutdownHandlers = [];
220
229
  await tracerProvider.shutdown();
221
230
  isInitialized = false;
222
231
  tracerProvider = null;
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/tracing/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/tracing/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifest-cyber/observability-ts",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "description": "Unified observability library for Manifest Cyber services - Metrics (Prometheus) and Tracing (OpenTelemetry)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,9 +31,9 @@
31
31
  "watch": "tsc --watch",
32
32
  "clean": "rm -rf dist",
33
33
  "prepublishOnly": "yarn clean && yarn build",
34
- "test": "yarn build && nyc --reporter=text mocha",
35
- "test:mocha": "yarn build && mocha",
36
- "ci-test": "yarn build && mocha --reporter spec --exit",
34
+ "test": "yarn build && TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=./tsconfig.test.json nyc --reporter=text mocha",
35
+ "test:mocha": "yarn build && TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=./tsconfig.test.json mocha",
36
+ "ci-test": "yarn build && TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=./tsconfig.test.json mocha --reporter spec --exit",
37
37
  "prettier": "prettier --write './src/**/*.{js,ts}'",
38
38
  "prettier:diff": "prettier --check './src/**/*.{js,ts}'"
39
39
  },
@@ -51,31 +51,36 @@
51
51
  "license": "UNLICENSED",
52
52
  "dependencies": {
53
53
  "@opentelemetry/api": "^1.9.0",
54
- "@opentelemetry/core": "^1.28.0",
55
- "@opentelemetry/resources": "^1.28.0",
56
- "@opentelemetry/sdk-trace-base": "^1.28.0",
57
- "@opentelemetry/semantic-conventions": "^1.28.0",
58
- "express": "^5.1.0",
59
- "prom-client": "^15.1.3"
54
+ "@opentelemetry/core": "^2.5.1",
55
+ "@opentelemetry/exporter-prometheus": "^0.212.0",
56
+ "@opentelemetry/resources": "^2.5.1",
57
+ "@opentelemetry/sdk-metrics": "^2.5.1",
58
+ "@opentelemetry/sdk-trace-base": "^2.5.1",
59
+ "@opentelemetry/semantic-conventions": "^1.39.0",
60
+ "express": "^5.2.1"
60
61
  },
61
62
  "peerDependencies": {
62
63
  "@manifest-cyber/logger-ts": "*",
63
- "@opentelemetry/instrumentation": "^0.54.0"
64
+ "@opentelemetry/exporter-metrics-otlp-grpc": ">=0.54.0",
65
+ "@opentelemetry/exporter-metrics-otlp-http": ">=0.54.0",
66
+ "@opentelemetry/host-metrics": ">=0.35.0",
67
+ "@opentelemetry/instrumentation": ">=0.54.0",
68
+ "@opentelemetry/instrumentation-runtime-node": ">=0.9.0"
64
69
  },
65
70
  "devDependencies": {
66
- "@opentelemetry/exporter-trace-otlp-grpc": "0.54.2",
67
- "@opentelemetry/exporter-trace-otlp-http": "0.54.2",
68
- "@opentelemetry/sdk-node": "0.54.2",
69
- "@types/chai": "^4.3.5",
70
- "@types/express": "^5.0.0",
71
+ "@opentelemetry/exporter-trace-otlp-grpc": "^0.212.0",
72
+ "@opentelemetry/exporter-trace-otlp-http": "^0.212.0",
73
+ "@opentelemetry/sdk-node": "^0.212.0",
74
+ "@types/chai": "^5.2.3",
75
+ "@types/express": "^5.0.6",
71
76
  "@types/mocha": "^10.0.1",
72
- "@types/node": "^20.0.0",
73
- "@types/supertest": "^6.0.0",
74
- "chai": "4.4.1",
75
- "mocha": "^10.2.0",
76
- "nyc": "^15.1.0",
77
- "prettier": "^3.2.5",
78
- "supertest": "^6.3.0",
77
+ "@types/node": "^25.3.0",
78
+ "@types/supertest": "^7.2.0",
79
+ "chai": "^6.2.2",
80
+ "mocha": "^11.7.5",
81
+ "nyc": "^18.0.0",
82
+ "prettier": "^3.8.1",
83
+ "supertest": "^7.2.2",
79
84
  "ts-node": "^10.9.1",
80
85
  "typescript": "^5.3.0"
81
86
  },
@@ -83,16 +88,19 @@
83
88
  "@manifest-cyber/logger-ts": {
84
89
  "optional": true
85
90
  },
86
- "@opentelemetry/exporter-trace-otlp-grpc": {
91
+ "@opentelemetry/exporter-metrics-otlp-grpc": {
87
92
  "optional": true
88
93
  },
89
- "@opentelemetry/exporter-trace-otlp-http": {
94
+ "@opentelemetry/exporter-metrics-otlp-http": {
90
95
  "optional": true
91
96
  },
92
97
  "@opentelemetry/instrumentation": {
93
98
  "optional": true
94
99
  },
95
- "@opentelemetry/sdk-node": {
100
+ "@opentelemetry/host-metrics": {
101
+ "optional": true
102
+ },
103
+ "@opentelemetry/instrumentation-runtime-node": {
96
104
  "optional": true
97
105
  }
98
106
  },
@@ -1,36 +0,0 @@
1
- import { Registry } from 'prom-client';
2
- /**
3
- * Get or create the custom metrics registry
4
- *
5
- * This registry is isolated from the default prom-client registry,
6
- * allowing multiple services to coexist without metric conflicts.
7
- *
8
- * @returns The custom metrics registry
9
- *
10
- * @example
11
- * ```typescript
12
- * import { getRegistry } from '@manifest-cyber/observability-ts';
13
- *
14
- * const registry = getRegistry();
15
- * const metrics = await registry.metrics();
16
- * ```
17
- */
18
- export declare function getRegistry(): Registry;
19
- /**
20
- * Reset the registry (useful for testing)
21
- *
22
- * Creates a new, empty registry. This is primarily useful
23
- * in test scenarios where you want to start with a clean state.
24
- *
25
- * @example
26
- * ```typescript
27
- * import { resetRegistry } from '@manifest-cyber/observability-ts';
28
- *
29
- * // In test setup
30
- * beforeEach(() => {
31
- * resetRegistry();
32
- * });
33
- * ```
34
- */
35
- export declare function resetRegistry(): void;
36
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/metrics/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAKtC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRegistry = getRegistry;
4
- exports.resetRegistry = resetRegistry;
5
- const prom_client_1 = require("prom-client");
6
- let customRegistry = null;
7
- /**
8
- * Get or create the custom metrics registry
9
- *
10
- * This registry is isolated from the default prom-client registry,
11
- * allowing multiple services to coexist without metric conflicts.
12
- *
13
- * @returns The custom metrics registry
14
- *
15
- * @example
16
- * ```typescript
17
- * import { getRegistry } from '@manifest-cyber/observability-ts';
18
- *
19
- * const registry = getRegistry();
20
- * const metrics = await registry.metrics();
21
- * ```
22
- */
23
- function getRegistry() {
24
- if (!customRegistry) {
25
- customRegistry = new prom_client_1.Registry();
26
- }
27
- return customRegistry;
28
- }
29
- /**
30
- * Reset the registry (useful for testing)
31
- *
32
- * Creates a new, empty registry. This is primarily useful
33
- * in test scenarios where you want to start with a clean state.
34
- *
35
- * @example
36
- * ```typescript
37
- * import { resetRegistry } from '@manifest-cyber/observability-ts';
38
- *
39
- * // In test setup
40
- * beforeEach(() => {
41
- * resetRegistry();
42
- * });
43
- * ```
44
- */
45
- function resetRegistry() {
46
- customRegistry = new prom_client_1.Registry();
47
- }
48
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/metrics/registry.ts"],"names":[],"mappings":";;AAoBA,kCAKC;AAkBD,sCAEC;AA7CD,6CAAuC;AAEvC,IAAI,cAAc,GAAoB,IAAI,CAAC;AAE3C;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,WAAW;IACzB,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,sBAAQ,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,aAAa;IAC3B,cAAc,GAAG,IAAI,sBAAQ,EAAE,CAAC;AAClC,CAAC"}