@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.
- package/README.md +67 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +39 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +70 -1
- package/dist/init.js.map +1 -1
- package/dist/metrics/builders.d.ts +46 -155
- package/dist/metrics/builders.d.ts.map +1 -1
- package/dist/metrics/builders.js +207 -260
- package/dist/metrics/builders.js.map +1 -1
- package/dist/metrics/index.d.ts +5 -5
- package/dist/metrics/index.d.ts.map +1 -1
- package/dist/metrics/index.js +9 -7
- package/dist/metrics/index.js.map +1 -1
- package/dist/metrics/instrumentation.d.ts +9 -9
- package/dist/metrics/instrumentation.d.ts.map +1 -1
- package/dist/metrics/instrumentation.js.map +1 -1
- package/dist/metrics/provider.d.ts +98 -0
- package/dist/metrics/provider.d.ts.map +1 -0
- package/dist/metrics/provider.js +462 -0
- package/dist/metrics/provider.js.map +1 -0
- package/dist/metrics/server.d.ts +1 -1
- package/dist/metrics/server.d.ts.map +1 -1
- package/dist/metrics/server.js +52 -15
- package/dist/metrics/server.js.map +1 -1
- package/dist/tracing/setup.d.ts.map +1 -1
- package/dist/tracing/setup.js +35 -26
- package/dist/tracing/setup.js.map +1 -1
- package/package.json +34 -26
- package/dist/metrics/registry.d.ts +0 -36
- package/dist/metrics/registry.d.ts.map +0 -1
- package/dist/metrics/registry.js +0 -48
- package/dist/metrics/registry.js.map +0 -1
package/dist/tracing/setup.js
CHANGED
|
@@ -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 =
|
|
109
|
-
[semantic_conventions_1.
|
|
110
|
-
[semantic_conventions_1.
|
|
111
|
-
|
|
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
|
-
//
|
|
122
|
-
|
|
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
|
-
//
|
|
129
|
-
tracerProvider
|
|
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
|
-
|
|
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
|
-
|
|
149
|
-
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/tracing/setup.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDH,kCA0FC;AA6DD,oDAEC;AAKD,8CAEC;AAKD,0CAqBC;AA9OD,4CAA2C;AAC3C,wDAAkE;AAClE,8EAG6C;AAI7C,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,cAAc,GAAQ,IAAI,CAAC;AAC/B,IAAI,gBAAgB,GAA2D,EAAE,CAAC;AAElF;;GAEG;AACH,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAC5C,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAC5D,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACI,KAAK,UAAU,WAAW,CAC/B,SAAwB,EAAE,EAC1B,MAAe;IAEf,8BAA8B;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC;IAEhF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,EAAE,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,EAAE,IAAI,EAAE,CAAC,2CAA2C,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,+BAA+B,GAAC,CAAC;QAC9E,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,+BAA+B,GAAC,CAAC;QAE7E,uBAAuB;QACvB,MAAM,WAAW,GACf,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,iBAAiB,CAAC;QAE/E,MAAM,cAAc,GAClB,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC;QAEnE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC;QAEpF,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,IAAA,kCAAsB,EAAC;YACtC,CAAC,wCAAiB,CAAC,EAAE,WAAW;YAChC,CAAC,2CAAoB,CAAC,EAAE,cAAc;YACtC,wBAAwB,EAAE,WAAW;YACrC,GAAG,MAAM,CAAC,kBAAkB;SAC7B,CAAC,CAAC;QAEH,gCAAgC;QAChC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE/D,sCAAsC;QACtC,MAAM,aAAa,GAAG,IAAI,kBAAkB,CAAC,QAAQ,EAAE;YACrD,YAAY,EAAE,IAAI;YAClB,oBAAoB,EAAE,IAAI;YAC1B,mBAAmB,EAAE,KAAK;YAC1B,kBAAkB,EAAE,GAAG;SACxB,CAAC,CAAC;QAEH,8CAA8C;QAC9C,cAAc,GAAG,IAAI,mBAAmB,CAAC;YACvC,QAAQ;YACR,OAAO,EAAE,MAAM,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC;YACjD,cAAc,EAAE,CAAC,aAAa,CAAC;SAChC,CAAC,CAAC;QAEH,oCAAoC;QACpC,WAAK,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;QAE9C,aAAa,GAAG,IAAI,CAAC;QAErB,MAAM,EAAE,IAAI,CAAC,mCAAmC,EAAE;YAChD,WAAW;YACX,cAAc;YACd,WAAW;YACX,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,WAAW;YAClD,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;SAClF,CAAC,CAAC;QAEH,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC1B,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,mDAAmD;QACnD,MAAM,cAAc,GAAG,QAAQ,CAAC;QAChC,MAAM,aAAa,GAAG,QAAQ,CAAC;QAE/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACtC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEpC,gBAAgB,CAAC,IAAI,CACnB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAC7C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;QACnE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,MAAqB,EAAE,WAAmB;IACrE,MAAM,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,GACpD,wDAAa,+BAA+B,GAAC,CAAC;IAEhD,MAAM,YAAY,GAChB,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtE,OAAO,IAAI,kBAAkB,CAAC;QAC5B,IAAI,EAAE,IAAI,wBAAwB,CAAC,YAAY,CAAC;KACjD,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,cAA+B,EAAE,MAAe;IAC5E,MAAM,IAAI,GAAG,cAAc,EAAE,IAAI,IAAI,WAAW,CAAC;IAEjD,8CAA8C;IAC9C,IAAI,eAAe,GAAG,uBAAuB,CAAC,CAAC,eAAe;IAC9D,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,eAAe,GAAG,iCAAiC,CAAC,CAAC,eAAe;IACtE,CAAC;IAED,MAAM,QAAQ,GACZ,cAAc,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,eAAe,CAAC;IAEpF,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,EAAE,iBAAiB,EAAE,GACzB,wDAAa,yCAAyC,GAAC,CAAC;YAC1D,OAAO,IAAI,iBAAiB,CAAC;gBAC3B,GAAG,EAAE,QAAQ;gBACb,OAAO,EAAE,cAAc,EAAE,OAAO;gBAChC,aAAa,EAAE,cAAc,EAAE,aAAa,IAAI,KAAK;aACtD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,iBAAiB,EAAE,GACzB,wDAAa,yCAAyC,GAAC,CAAC;YAC1D,OAAO,IAAI,iBAAiB,CAAC;gBAC3B,GAAG,EAAE,QAAQ;gBACb,OAAO,EAAE,cAAc,EAAE,OAAO;gBAChC,aAAa,EAAE,cAAc,EAAE,aAAa,IAAI,KAAK;aACtD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,CAAC,oBAAoB,IAAI,oCAAoC,EAAE,KAAK,CAAC,CAAC;QACnF,+CAA+C;QAC/C,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,+BAA+B,GAAC,CAAC;QAC9E,OAAO,IAAI,mBAAmB,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAClC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CAAC,MAAe;IACnD,IAAI,CAAC,aAAa,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,EAAE,IAAI,EAAE,CAAC,8CAA8C,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,iDAAiD;QACjD,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,gBAAgB,EAAE,CAAC;YACnD,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,gBAAgB,GAAG,EAAE,CAAC;QAEtB,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC;QAChC,aAAa,GAAG,KAAK,CAAC;QACtB,cAAc,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manifest-cyber/observability-ts",
|
|
3
|
-
"version": "0.2.
|
|
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": "^
|
|
55
|
-
"@opentelemetry/
|
|
56
|
-
"@opentelemetry/
|
|
57
|
-
"@opentelemetry/
|
|
58
|
-
"
|
|
59
|
-
"
|
|
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/
|
|
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.
|
|
67
|
-
"@opentelemetry/exporter-trace-otlp-http": "0.
|
|
68
|
-
"@opentelemetry/sdk-node": "0.
|
|
69
|
-
"@types/chai": "^
|
|
70
|
-
"@types/express": "^5.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": "^
|
|
73
|
-
"@types/supertest": "^
|
|
74
|
-
"chai": "
|
|
75
|
-
"mocha": "^
|
|
76
|
-
"nyc": "^
|
|
77
|
-
"prettier": "^3.
|
|
78
|
-
"supertest": "^
|
|
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-
|
|
91
|
+
"@opentelemetry/exporter-metrics-otlp-grpc": {
|
|
87
92
|
"optional": true
|
|
88
93
|
},
|
|
89
|
-
"@opentelemetry/exporter-
|
|
94
|
+
"@opentelemetry/exporter-metrics-otlp-http": {
|
|
90
95
|
"optional": true
|
|
91
96
|
},
|
|
92
97
|
"@opentelemetry/instrumentation": {
|
|
93
98
|
"optional": true
|
|
94
99
|
},
|
|
95
|
-
"@opentelemetry/
|
|
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"}
|
package/dist/metrics/registry.js
DELETED
|
@@ -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"}
|