@oas-tools/oas-telemetry 0.7.1 → 0.8.0-alpha.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/.env.example +17 -3
- package/README.md +1 -2
- package/dist/cjs/config/bootConfig.cjs +16 -14
- package/dist/cjs/config/config.cjs +120 -125
- package/dist/cjs/config/config.types.cjs +1 -4
- package/dist/cjs/docs/openapi.yaml +158 -4
- package/dist/cjs/index.cjs +27 -30
- package/dist/cjs/routesManager.cjs +62 -70
- package/dist/cjs/telemetry/custom-implementations/exporters/DiskLogExporter.cjs +121 -0
- package/dist/cjs/telemetry/custom-implementations/exporters/DiskMetricExporter.cjs +101 -0
- package/dist/cjs/telemetry/custom-implementations/exporters/DiskTraceExporter.cjs +103 -0
- package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.cjs +194 -190
- package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.cjs +147 -99
- package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.cjs +143 -116
- package/dist/cjs/telemetry/custom-implementations/exporters/MultiMetricExporter.cjs +57 -0
- package/dist/cjs/telemetry/custom-implementations/instrumentations/logsInstrumentation.cjs +92 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Chunk.cjs +159 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Series.cjs +168 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.cjs +392 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/types.cjs +2 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/utils.cjs +77 -0
- package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.cjs +65 -63
- package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.cjs +63 -62
- package/dist/cjs/telemetry/custom-implementations/utils/circular.cjs +47 -47
- package/dist/cjs/telemetry/custom-implementations/wrappers.cjs +209 -138
- package/dist/cjs/telemetry/initializeTelemetry.cjs +35 -91
- package/dist/cjs/telemetry/persistence/DiskImporter.cjs +85 -0
- package/dist/cjs/telemetry/persistence/DiskUtils.cjs +61 -0
- package/dist/cjs/telemetry/persistence/DiskWriter.cjs +66 -0
- package/dist/cjs/telemetry/telemetryConfigurator.cjs +139 -72
- package/dist/cjs/telemetry/telemetryRegistry.cjs +45 -31
- package/dist/cjs/tlm-ai/agent.cjs +49 -64
- package/dist/cjs/tlm-ai/aiController.cjs +54 -76
- package/dist/cjs/tlm-ai/aiRoutes.cjs +17 -20
- package/dist/cjs/tlm-ai/aiService.cjs +91 -95
- package/dist/cjs/tlm-ai/tools.cjs +177 -174
- package/dist/cjs/tlm-auth/authController.cjs +80 -123
- package/dist/cjs/tlm-auth/authMiddleware.cjs +25 -30
- package/dist/cjs/tlm-auth/authRoutes.cjs +11 -14
- package/dist/cjs/tlm-log/logController.cjs +135 -116
- package/dist/cjs/tlm-log/logRoutes.cjs +19 -20
- package/dist/cjs/tlm-log/logService.cjs +29 -0
- package/dist/cjs/tlm-metric/metricsController.cjs +154 -122
- package/dist/cjs/tlm-metric/metricsRoutes.cjs +22 -20
- package/dist/cjs/tlm-metric/metricsService.cjs +26 -0
- package/dist/cjs/tlm-plugin/pluginController.cjs +128 -140
- package/dist/cjs/tlm-plugin/pluginProcess.cjs +89 -94
- package/dist/cjs/tlm-plugin/pluginRoutes.cjs +11 -14
- package/dist/cjs/tlm-plugin/pluginService.cjs +73 -74
- package/dist/cjs/tlm-trace/traceController.cjs +140 -123
- package/dist/cjs/tlm-trace/traceRoutes.cjs +19 -20
- package/dist/cjs/tlm-trace/traceService.cjs +29 -0
- package/dist/cjs/tlm-ui/uiRoutes.cjs +63 -32
- package/dist/cjs/tlm-util/utilController.cjs +68 -70
- package/dist/cjs/tlm-util/utilRoutes.cjs +51 -63
- package/dist/cjs/types/index.cjs +2 -5
- package/dist/cjs/utils/logger.cjs +38 -43
- package/dist/cjs/utils/regexUtils.cjs +22 -22
- package/dist/esm/config/bootConfig.js +5 -2
- package/dist/esm/config/config.js +9 -2
- package/dist/esm/docs/openapi.yaml +158 -4
- package/dist/esm/index.js +9 -8
- package/dist/esm/routesManager.js +6 -10
- package/dist/esm/telemetry/custom-implementations/exporters/DiskLogExporter.js +114 -0
- package/dist/esm/telemetry/custom-implementations/exporters/DiskMetricExporter.js +94 -0
- package/dist/esm/telemetry/custom-implementations/exporters/DiskTraceExporter.js +96 -0
- package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.js +38 -7
- package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.js +107 -48
- package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.js +60 -29
- package/dist/esm/telemetry/custom-implementations/exporters/MultiMetricExporter.js +53 -0
- package/dist/esm/telemetry/custom-implementations/instrumentations/logsInstrumentation.js +85 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Chunk.js +155 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Series.js +164 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.js +385 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/types.js +1 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/utils.js +74 -0
- package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.js +2 -1
- package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.js +1 -1
- package/dist/esm/telemetry/custom-implementations/wrappers.js +77 -6
- package/dist/esm/telemetry/initializeTelemetry.js +27 -69
- package/dist/esm/telemetry/persistence/DiskImporter.js +78 -0
- package/dist/esm/telemetry/persistence/DiskUtils.js +51 -0
- package/dist/esm/telemetry/persistence/DiskWriter.js +59 -0
- package/dist/esm/telemetry/telemetryConfigurator.js +110 -39
- package/dist/esm/telemetry/telemetryRegistry.js +12 -1
- package/dist/esm/tlm-ai/agent.js +5 -3
- package/dist/esm/tlm-ai/aiController.js +3 -3
- package/dist/esm/tlm-ai/aiService.js +6 -2
- package/dist/esm/tlm-ai/tools.js +5 -9
- package/dist/esm/tlm-auth/authController.js +3 -2
- package/dist/esm/tlm-log/logController.js +62 -18
- package/dist/esm/tlm-log/logRoutes.js +3 -1
- package/dist/esm/tlm-log/logService.js +25 -0
- package/dist/esm/tlm-metric/metricsController.js +116 -50
- package/dist/esm/tlm-metric/metricsRoutes.js +8 -3
- package/dist/esm/tlm-metric/metricsService.js +22 -0
- package/dist/esm/tlm-plugin/pluginController.js +6 -11
- package/dist/esm/tlm-plugin/pluginService.js +2 -4
- package/dist/esm/tlm-trace/traceController.js +87 -36
- package/dist/esm/tlm-trace/traceRoutes.js +3 -1
- package/dist/esm/tlm-trace/traceService.js +25 -0
- package/dist/esm/tlm-ui/uiRoutes.js +5 -5
- package/dist/esm/tlm-util/utilController.js +3 -9
- package/dist/esm/tlm-util/utilRoutes.js +2 -2
- package/dist/types/config/bootConfig.d.ts +3 -0
- package/dist/types/config/config.d.ts +48 -7
- package/dist/types/config/config.types.d.ts +7 -0
- package/dist/types/index.d.ts +2 -3
- package/dist/types/telemetry/custom-implementations/exporters/DiskLogExporter.d.ts +24 -0
- package/dist/types/telemetry/custom-implementations/exporters/DiskMetricExporter.d.ts +23 -0
- package/dist/types/telemetry/custom-implementations/exporters/DiskTraceExporter.d.ts +23 -0
- package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.d.ts +3 -1
- package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.d.ts +56 -15
- package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.d.ts +8 -4
- package/dist/types/telemetry/custom-implementations/exporters/MultiMetricExporter.d.ts +9 -0
- package/dist/types/telemetry/custom-implementations/instrumentations/logsInstrumentation.d.ts +23 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/Chunk.d.ts +49 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/Series.d.ts +67 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.d.ts +69 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/types.d.ts +68 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/utils.d.ts +21 -0
- package/dist/types/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.d.ts +2 -2
- package/dist/types/telemetry/custom-implementations/wrappers.d.ts +2 -1
- package/dist/types/telemetry/persistence/DiskImporter.d.ts +17 -0
- package/dist/types/telemetry/persistence/DiskUtils.d.ts +11 -0
- package/dist/types/telemetry/persistence/DiskWriter.d.ts +21 -0
- package/dist/types/telemetry/telemetryConfigurator.d.ts +1 -1
- package/dist/types/telemetry/telemetryRegistry.d.ts +8 -0
- package/dist/types/tlm-ai/agent.d.ts +1 -1
- package/dist/types/tlm-ai/aiService.d.ts +1 -1
- package/dist/types/tlm-log/logController.d.ts +2 -0
- package/dist/types/tlm-log/logService.d.ts +4 -0
- package/dist/types/tlm-metric/metricsController.d.ts +11 -2
- package/dist/types/tlm-metric/metricsService.d.ts +6 -0
- package/dist/types/tlm-trace/traceController.d.ts +9 -7
- package/dist/types/tlm-trace/traceService.d.ts +4 -0
- package/dist/types/types/index.d.ts +2 -2
- package/dist/ui/assets/{ApiDocsPage-C_VVPPHa.js → ApiDocsPage-DTCgVbW2.js} +2 -2
- package/dist/ui/assets/CollapsibleCard-lWgfsaAn.js +1 -0
- package/dist/ui/assets/DevToolsPage-DEhf8CBy.js +1 -0
- package/dist/ui/assets/LandingPage-CfEHCDxY.js +6 -0
- package/dist/ui/assets/LogsPage-DFDKRuGH.js +1 -0
- package/dist/ui/assets/{NotFoundPage-B3quk3P1.js → NotFoundPage-DCy0DcV7.js} +1 -1
- package/dist/ui/assets/PluginCreatePage-BawZ5_-h.js +50 -0
- package/dist/ui/assets/PluginPage-D3FmgU7d.js +27 -0
- package/dist/ui/assets/TraceSpansPage-D0_L45Rb.js +6 -0
- package/dist/ui/assets/VirtualizedListPanel-q605n9He.js +16 -0
- package/dist/ui/assets/alert-DBAFshSi.js +1133 -0
- package/dist/ui/assets/badge-DGNBtnxU.js +1 -0
- package/dist/ui/assets/{chevron-down-CPsvsmqj.js → chevron-down-CFEqYzGC.js} +1 -1
- package/dist/ui/assets/{chevron-up-Df9jMo1X.js → chevron-up-lDnFwAJq.js} +1 -1
- package/dist/ui/assets/{circle-alert-DOPQPvU8.js → circle-alert-BpYUuRs7.js} +1 -1
- package/dist/ui/assets/dialog-1dRyI6SC.js +15 -0
- package/dist/ui/assets/index-C7RfU6hR.js +1 -0
- package/dist/ui/assets/index-C9dDYIpd.js +305 -0
- package/dist/ui/assets/index-D6f1KjWV.css +1 -0
- package/dist/ui/assets/info-CuJQWoBU.js +6 -0
- package/dist/ui/assets/{input-Dzvg_ZEZ.js → input-BLXaar0X.js} +1 -1
- package/dist/ui/assets/label-DfAcltsl.js +1 -0
- package/dist/ui/assets/{loader-circle-CrvlRy5o.js → loader-circle-B7oLyPsi.js} +1 -1
- package/dist/ui/assets/{loginPage-qa4V-B70.js → loginPage-DswZvOJ-.js} +1 -1
- package/dist/ui/assets/metrics-page-BhtXrfUW.js +31 -0
- package/dist/ui/assets/metrics-page-D1GxaB_c.css +1 -0
- package/dist/ui/assets/popover-IDker85U.js +11 -0
- package/dist/ui/assets/select-B8y5IidE.js +6 -0
- package/dist/ui/assets/separator-B6EzrxYY.js +6 -0
- package/dist/ui/assets/severityOptions-DtCsaAZK.js +11 -0
- package/dist/ui/assets/square-pen-D_oecB1x.js +6 -0
- package/dist/ui/assets/switch-Dqo0XkRD.js +1 -0
- package/dist/ui/assets/trace-DJq1miYa.js +1 -0
- package/dist/ui/assets/upload-prIohEdY.js +11 -0
- package/dist/ui/assets/{utilService-DNyqzwj0.js → utilService-C8TJKLqs.js} +1 -1
- package/dist/ui/assets/wand-sparkles-OgXuzsSx.js +6 -0
- package/dist/ui/index.html +2 -2
- package/package.json +44 -49
- package/dist/ui/assets/CollapsibleCard-B3KR_8mL.js +0 -1
- package/dist/ui/assets/DevToolsPage-OyZcDcmw.js +0 -1
- package/dist/ui/assets/LandingPage-CppFBA6K.js +0 -6
- package/dist/ui/assets/LogsPage-9Fq8GArS.js +0 -26
- package/dist/ui/assets/PluginCreatePage-X_aCH4t4.js +0 -50
- package/dist/ui/assets/PluginPage-DMDSihrZ.js +0 -27
- package/dist/ui/assets/alert-jQ9HCPIf.js +0 -1133
- package/dist/ui/assets/badge-CNq0-mH5.js +0 -1
- package/dist/ui/assets/card-DFAwwhN3.js +0 -1
- package/dist/ui/assets/index-BkD6DijD.js +0 -15
- package/dist/ui/assets/index-CERGVYZK.js +0 -292
- package/dist/ui/assets/index-CSIPf9qw.css +0 -1
- package/dist/ui/assets/label-DuVnkZ4q.js +0 -1
- package/dist/ui/assets/select-DhS8YUtJ.js +0 -1
- package/dist/ui/assets/separator-isK4chBP.js +0 -6
- package/dist/ui/assets/severityOptions-O38dSOfk.js +0 -11
- package/dist/ui/assets/switch-Z3mImG9n.js +0 -1
- package/dist/ui/assets/tabs-_77MUUQe.js +0 -16
- package/dist/ui/assets/upload-C1LT4Gkb.js +0 -16
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { OasTlmConfig, DeepPartial, UserConfig } from './config.types';
|
|
1
|
+
import { OasTlmConfig, DeepPartial, UserConfig } from './config.types.js';
|
|
2
2
|
import { BufferConfig, SpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace-node';
|
|
3
3
|
import { IMetricReader, MetricProducer } from '@opentelemetry/sdk-metrics';
|
|
4
4
|
import { LogRecordExporter, LogRecordProcessor } from '@opentelemetry/sdk-logs';
|
|
5
5
|
import { type PluginResource } from '../types/index.js';
|
|
6
|
-
import { ViewOptions } from '@opentelemetry/sdk-metrics/build/src/view/View';
|
|
6
|
+
import { type ViewOptions } from '@opentelemetry/sdk-metrics/build/src/view/View.js';
|
|
7
7
|
export declare const defaultConfig: {
|
|
8
8
|
general: {
|
|
9
|
-
baseUrl: string;
|
|
10
9
|
specFileName: string | null;
|
|
11
10
|
spec: string | null;
|
|
12
11
|
uiPath: string;
|
|
13
12
|
};
|
|
13
|
+
storage: {
|
|
14
|
+
path: string | null;
|
|
15
|
+
loadFromStart: boolean;
|
|
16
|
+
};
|
|
14
17
|
auth: {
|
|
15
18
|
enabled: boolean;
|
|
16
19
|
password: string;
|
|
@@ -61,14 +64,18 @@ export declare const defaultConfig: {
|
|
|
61
64
|
enabled: boolean;
|
|
62
65
|
extraPlugins: PluginResource[];
|
|
63
66
|
};
|
|
67
|
+
instrumentations: any[];
|
|
64
68
|
};
|
|
65
69
|
export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTlmConfig, envConfig?: DeepPartial<OasTlmConfig>) => {
|
|
66
70
|
general: {
|
|
67
|
-
baseUrl: string;
|
|
68
71
|
specFileName: string | null;
|
|
69
72
|
spec: string | null;
|
|
70
73
|
uiPath: string;
|
|
71
74
|
};
|
|
75
|
+
storage: {
|
|
76
|
+
path: string | null;
|
|
77
|
+
loadFromStart: boolean;
|
|
78
|
+
};
|
|
72
79
|
auth: {
|
|
73
80
|
enabled: boolean;
|
|
74
81
|
password: string;
|
|
@@ -119,13 +126,17 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
119
126
|
enabled: boolean;
|
|
120
127
|
extraPlugins: PluginResource[];
|
|
121
128
|
};
|
|
129
|
+
instrumentations: any[];
|
|
122
130
|
} & UserConfig & {
|
|
123
131
|
general?: {
|
|
124
|
-
baseUrl?: string | undefined;
|
|
125
132
|
specFileName?: string | null | undefined;
|
|
126
133
|
spec?: string | null | undefined;
|
|
127
134
|
uiPath?: string | undefined;
|
|
128
135
|
} | undefined;
|
|
136
|
+
storage?: {
|
|
137
|
+
path?: string | null | undefined;
|
|
138
|
+
loadFromStart?: boolean | undefined;
|
|
139
|
+
} | undefined;
|
|
129
140
|
auth?: {
|
|
130
141
|
enabled?: boolean | undefined;
|
|
131
142
|
password?: string | undefined;
|
|
@@ -147,6 +158,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
147
158
|
extraProcessors?: ({
|
|
148
159
|
forceFlush?: {} | undefined;
|
|
149
160
|
onStart?: {} | undefined;
|
|
161
|
+
onEnding?: {} | undefined;
|
|
150
162
|
onEnd?: {} | undefined;
|
|
151
163
|
shutdown?: {} | undefined;
|
|
152
164
|
} | undefined)[] | undefined;
|
|
@@ -269,6 +281,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
269
281
|
name?: string | undefined;
|
|
270
282
|
message?: string | undefined;
|
|
271
283
|
stack?: string | undefined;
|
|
284
|
+
cause?: unknown;
|
|
272
285
|
} | null | undefined;
|
|
273
286
|
readonly writableNeedDrain?: boolean | undefined;
|
|
274
287
|
_write?: {} | undefined;
|
|
@@ -289,6 +302,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
289
302
|
prependListener?: {} | undefined;
|
|
290
303
|
prependOnceListener?: {} | undefined;
|
|
291
304
|
removeListener?: {} | undefined;
|
|
305
|
+
[Symbol.asyncDispose]?: {} | undefined;
|
|
292
306
|
pipe?: {} | undefined;
|
|
293
307
|
compose?: {} | undefined;
|
|
294
308
|
[EventEmitter.captureRejectionSymbol]?: {} | undefined;
|
|
@@ -317,6 +331,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
317
331
|
name?: string | undefined;
|
|
318
332
|
message?: string | undefined;
|
|
319
333
|
stack?: string | undefined;
|
|
334
|
+
cause?: unknown;
|
|
320
335
|
} | null | undefined;
|
|
321
336
|
_construct?: {} | undefined;
|
|
322
337
|
_read?: {} | undefined;
|
|
@@ -381,6 +396,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
381
396
|
name?: string | undefined;
|
|
382
397
|
message?: string | undefined;
|
|
383
398
|
stack?: string | undefined;
|
|
399
|
+
cause?: unknown;
|
|
384
400
|
} | null | undefined;
|
|
385
401
|
_construct?: {} | undefined;
|
|
386
402
|
_read?: {} | undefined;
|
|
@@ -430,10 +446,24 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
430
446
|
eventNames?: {} | undefined;
|
|
431
447
|
} | null | undefined;
|
|
432
448
|
readonly channel?: {
|
|
433
|
-
close?: {} | undefined;
|
|
434
|
-
hasRef?: {} | undefined;
|
|
435
449
|
ref?: {} | undefined;
|
|
436
450
|
unref?: {} | undefined;
|
|
451
|
+
[EventEmitter.captureRejectionSymbol]?: {} | undefined;
|
|
452
|
+
addListener?: {} | undefined;
|
|
453
|
+
on?: {} | undefined;
|
|
454
|
+
once?: {} | undefined;
|
|
455
|
+
removeListener?: {} | undefined;
|
|
456
|
+
off?: {} | undefined;
|
|
457
|
+
removeAllListeners?: {} | undefined;
|
|
458
|
+
setMaxListeners?: {} | undefined;
|
|
459
|
+
getMaxListeners?: {} | undefined;
|
|
460
|
+
listeners?: {} | undefined;
|
|
461
|
+
rawListeners?: {} | undefined;
|
|
462
|
+
emit?: {} | undefined;
|
|
463
|
+
listenerCount?: {} | undefined;
|
|
464
|
+
prependListener?: {} | undefined;
|
|
465
|
+
prependOnceListener?: {} | undefined;
|
|
466
|
+
eventNames?: {} | undefined;
|
|
437
467
|
} | null | undefined;
|
|
438
468
|
readonly stdio?: [({
|
|
439
469
|
readonly writable?: boolean | undefined;
|
|
@@ -450,6 +480,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
450
480
|
name?: string | undefined;
|
|
451
481
|
message?: string | undefined;
|
|
452
482
|
stack?: string | undefined;
|
|
483
|
+
cause?: unknown;
|
|
453
484
|
} | null | undefined;
|
|
454
485
|
readonly writableNeedDrain?: boolean | undefined;
|
|
455
486
|
_write?: {} | undefined;
|
|
@@ -470,6 +501,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
470
501
|
prependListener?: {} | undefined;
|
|
471
502
|
prependOnceListener?: {} | undefined;
|
|
472
503
|
removeListener?: {} | undefined;
|
|
504
|
+
[Symbol.asyncDispose]?: {} | undefined;
|
|
473
505
|
pipe?: {} | undefined;
|
|
474
506
|
compose?: {} | undefined;
|
|
475
507
|
[EventEmitter.captureRejectionSymbol]?: {} | undefined;
|
|
@@ -497,6 +529,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
497
529
|
name?: string | undefined;
|
|
498
530
|
message?: string | undefined;
|
|
499
531
|
stack?: string | undefined;
|
|
532
|
+
cause?: unknown;
|
|
500
533
|
} | null | undefined;
|
|
501
534
|
_construct?: {} | undefined;
|
|
502
535
|
_read?: {} | undefined;
|
|
@@ -560,6 +593,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
560
593
|
name?: string | undefined;
|
|
561
594
|
message?: string | undefined;
|
|
562
595
|
stack?: string | undefined;
|
|
596
|
+
cause?: unknown;
|
|
563
597
|
} | null | undefined;
|
|
564
598
|
_construct?: {} | undefined;
|
|
565
599
|
_read?: {} | undefined;
|
|
@@ -622,6 +656,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
622
656
|
name?: string | undefined;
|
|
623
657
|
message?: string | undefined;
|
|
624
658
|
stack?: string | undefined;
|
|
659
|
+
cause?: unknown;
|
|
625
660
|
} | null | undefined;
|
|
626
661
|
readonly writableNeedDrain?: boolean | undefined;
|
|
627
662
|
_write?: {} | undefined;
|
|
@@ -642,6 +677,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
642
677
|
prependListener?: {} | undefined;
|
|
643
678
|
prependOnceListener?: {} | undefined;
|
|
644
679
|
removeListener?: {} | undefined;
|
|
680
|
+
[Symbol.asyncDispose]?: {} | undefined;
|
|
645
681
|
pipe?: {} | undefined;
|
|
646
682
|
compose?: {} | undefined;
|
|
647
683
|
[EventEmitter.captureRejectionSymbol]?: {} | undefined;
|
|
@@ -669,6 +705,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
669
705
|
name?: string | undefined;
|
|
670
706
|
message?: string | undefined;
|
|
671
707
|
stack?: string | undefined;
|
|
708
|
+
cause?: unknown;
|
|
672
709
|
} | null | undefined;
|
|
673
710
|
_construct?: {} | undefined;
|
|
674
711
|
_read?: {} | undefined;
|
|
@@ -731,6 +768,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
731
768
|
name?: string | undefined;
|
|
732
769
|
message?: string | undefined;
|
|
733
770
|
stack?: string | undefined;
|
|
771
|
+
cause?: unknown;
|
|
734
772
|
} | null | undefined;
|
|
735
773
|
readonly writableNeedDrain?: boolean | undefined;
|
|
736
774
|
_write?: {} | undefined;
|
|
@@ -751,6 +789,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
751
789
|
prependListener?: {} | undefined;
|
|
752
790
|
prependOnceListener?: {} | undefined;
|
|
753
791
|
removeListener?: {} | undefined;
|
|
792
|
+
[Symbol.asyncDispose]?: {} | undefined;
|
|
754
793
|
pipe?: {} | undefined;
|
|
755
794
|
compose?: {} | undefined;
|
|
756
795
|
[EventEmitter.captureRejectionSymbol]?: {} | undefined;
|
|
@@ -778,6 +817,7 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
778
817
|
name?: string | undefined;
|
|
779
818
|
message?: string | undefined;
|
|
780
819
|
stack?: string | undefined;
|
|
820
|
+
cause?: unknown;
|
|
781
821
|
} | null | undefined;
|
|
782
822
|
_construct?: {} | undefined;
|
|
783
823
|
_read?: {} | undefined;
|
|
@@ -858,4 +898,5 @@ export declare const getConfig: (userConfig?: UserConfig, fallbackConfig?: OasTl
|
|
|
858
898
|
} | undefined;
|
|
859
899
|
} | undefined)[] | undefined;
|
|
860
900
|
} | undefined;
|
|
901
|
+
instrumentations?: any[] | undefined;
|
|
861
902
|
};
|
|
@@ -3,12 +3,14 @@ import { IMetricReader } from "@opentelemetry/sdk-metrics";
|
|
|
3
3
|
import { SpanExporter, SpanProcessor } from "@opentelemetry/sdk-trace-node";
|
|
4
4
|
import { defaultConfig } from "./config.js";
|
|
5
5
|
import { ViewOptions } from "@opentelemetry/sdk-metrics/build/src/view/View.js";
|
|
6
|
+
import { type Instrumentation } from "@opentelemetry/instrumentation";
|
|
6
7
|
export type DeepPartial<T> = T extends object ? {
|
|
7
8
|
[P in keyof T]?: DeepPartial<T[P]>;
|
|
8
9
|
} : T;
|
|
9
10
|
export type OasTlmConfig = typeof defaultConfig;
|
|
10
11
|
export type UserConfig = {
|
|
11
12
|
general?: Partial<OasTlmConfig["general"]>;
|
|
13
|
+
storage?: Partial<OasTlmConfig["storage"]>;
|
|
12
14
|
auth?: Partial<OasTlmConfig["auth"]>;
|
|
13
15
|
ai?: {
|
|
14
16
|
extraContextPrompts?: string[];
|
|
@@ -31,4 +33,9 @@ export type UserConfig = {
|
|
|
31
33
|
memoryExporter?: Partial<OasTlmConfig["logs"]["memoryExporter"]>;
|
|
32
34
|
};
|
|
33
35
|
plugins?: Partial<OasTlmConfig["plugins"]>;
|
|
36
|
+
/**
|
|
37
|
+
* User can register its own instrumentations to be used by oas-telemetry. oas-telemetry will assign the providers to these instrumentations.
|
|
38
|
+
* This is useful when the user wants to use instrumentations that are not included by default in oas-telemetry.
|
|
39
|
+
*/
|
|
40
|
+
instrumentations?: Instrumentation[];
|
|
34
41
|
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import "./config/bootConfig.js";
|
|
2
2
|
import './telemetry/initializeTelemetry.js';
|
|
3
|
-
import { Router } from 'express';
|
|
4
3
|
import { UserConfig } from './config/config.types.js';
|
|
5
4
|
/**
|
|
6
5
|
* Returns the OAS-Telemetry middleware.
|
|
7
6
|
* All parameters are optional. However, either `spec` or `specFileName` must be provided to enable endpoint filtering.
|
|
8
7
|
*/
|
|
9
|
-
declare function oasTelemetry(oasTlmInputConfig?: UserConfig):
|
|
10
|
-
export
|
|
8
|
+
declare function oasTelemetry(oasTlmInputConfig?: UserConfig): any;
|
|
9
|
+
export { oasTelemetry };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
2
|
+
import { LogRecordExporter, ReadableLogRecord } from '@opentelemetry/sdk-logs';
|
|
3
|
+
import { Enabler } from '../wrappers.js';
|
|
4
|
+
export type DiskLogExporterOptions = {
|
|
5
|
+
directoryPath: string;
|
|
6
|
+
flushIntervalMs?: number;
|
|
7
|
+
batchSize?: number;
|
|
8
|
+
maxSegmentBytes?: number;
|
|
9
|
+
};
|
|
10
|
+
export declare class DiskLogExporter extends Enabler implements LogRecordExporter {
|
|
11
|
+
private readonly writer;
|
|
12
|
+
private readonly flushIntervalMs;
|
|
13
|
+
private readonly batchSize;
|
|
14
|
+
private queuedLogs;
|
|
15
|
+
private flushTimer;
|
|
16
|
+
private flushing;
|
|
17
|
+
constructor(options: DiskLogExporterOptions);
|
|
18
|
+
export(logs: ReadableLogRecord[], resultCallback: (result: ExportResult) => void): void;
|
|
19
|
+
shutdown(): Promise<void>;
|
|
20
|
+
forceFlush(): Promise<void>;
|
|
21
|
+
private scheduleFlush;
|
|
22
|
+
private flushPending;
|
|
23
|
+
private formatLogRecord;
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
2
|
+
import { PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics';
|
|
3
|
+
import { Enabler } from '../wrappers.js';
|
|
4
|
+
export type DiskMetricExporterOptions = {
|
|
5
|
+
directoryPath: string;
|
|
6
|
+
flushIntervalMs?: number;
|
|
7
|
+
batchSize?: number;
|
|
8
|
+
maxSegmentBytes?: number;
|
|
9
|
+
};
|
|
10
|
+
export declare class DiskMetricExporter extends Enabler implements PushMetricExporter {
|
|
11
|
+
private readonly writer;
|
|
12
|
+
private readonly flushIntervalMs;
|
|
13
|
+
private readonly batchSize;
|
|
14
|
+
private queuedScopeMetrics;
|
|
15
|
+
private flushTimer;
|
|
16
|
+
private flushing;
|
|
17
|
+
constructor(options: DiskMetricExporterOptions);
|
|
18
|
+
export(resourceMetrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void;
|
|
19
|
+
shutdown(): Promise<void>;
|
|
20
|
+
forceFlush(): Promise<void>;
|
|
21
|
+
private scheduleFlush;
|
|
22
|
+
private flushPending;
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
2
|
+
import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
|
|
3
|
+
import { Enabler } from '../wrappers.js';
|
|
4
|
+
export type DiskTraceExporterOptions = {
|
|
5
|
+
directoryPath: string;
|
|
6
|
+
flushIntervalMs?: number;
|
|
7
|
+
batchSize?: number;
|
|
8
|
+
maxSegmentBytes?: number;
|
|
9
|
+
};
|
|
10
|
+
export declare class DiskTraceExporter extends Enabler implements SpanExporter {
|
|
11
|
+
private readonly writer;
|
|
12
|
+
private readonly flushIntervalMs;
|
|
13
|
+
private readonly batchSize;
|
|
14
|
+
private queuedSpans;
|
|
15
|
+
private flushTimer;
|
|
16
|
+
private flushing;
|
|
17
|
+
constructor(options: DiskTraceExporterOptions);
|
|
18
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
|
|
19
|
+
shutdown(): Promise<void>;
|
|
20
|
+
forceFlush(): Promise<void>;
|
|
21
|
+
private scheduleFlush;
|
|
22
|
+
private flushPending;
|
|
23
|
+
}
|
|
@@ -5,7 +5,9 @@ export declare class InMemoryDbLogExporter extends Enabler implements LogRecordE
|
|
|
5
5
|
private _db;
|
|
6
6
|
private _miniSearch;
|
|
7
7
|
private _retentionTimeInSeconds;
|
|
8
|
+
private _initialized;
|
|
8
9
|
constructor(retentionTimeInSeconds?: number);
|
|
10
|
+
private _ensureInitialized;
|
|
9
11
|
/**
|
|
10
12
|
* Export logs.
|
|
11
13
|
* @param logs
|
|
@@ -20,7 +22,7 @@ export declare class InMemoryDbLogExporter extends Enabler implements LogRecordE
|
|
|
20
22
|
find(findConfig: {
|
|
21
23
|
query: any;
|
|
22
24
|
messageSearch: string | null;
|
|
23
|
-
limit
|
|
25
|
+
limit?: number;
|
|
24
26
|
sortOrder?: any;
|
|
25
27
|
}): Promise<any[]>;
|
|
26
28
|
insert(data: any[], callback: (err: any, newDocs: any[]) => void): void;
|
|
@@ -1,22 +1,63 @@
|
|
|
1
|
-
import { PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics';
|
|
1
|
+
import { PushMetricExporter, ResourceMetrics, ScopeMetrics } from '@opentelemetry/sdk-metrics';
|
|
2
2
|
import { Enabler } from '../wrappers.js';
|
|
3
|
+
import { Resource } from '@opentelemetry/resources';
|
|
4
|
+
import { FindMetricsRequest } from '../metrics/tsdb/types.js';
|
|
5
|
+
export interface ExporterConfig {
|
|
6
|
+
retentionTimeInSeconds?: number;
|
|
7
|
+
chunkSize?: number;
|
|
8
|
+
maxChunks?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* In-Memory TSDB Metric Exporter
|
|
12
|
+
* Series identified by: scope + metricName + attributes
|
|
13
|
+
*/
|
|
3
14
|
export declare class InMemoryDbMetricExporter extends Enabler implements PushMetricExporter {
|
|
4
|
-
private
|
|
5
|
-
private
|
|
6
|
-
|
|
7
|
-
|
|
15
|
+
private static readonly DEFAULT_CONFIG;
|
|
16
|
+
private readonly registry;
|
|
17
|
+
private readonly config;
|
|
18
|
+
private cachedResource;
|
|
19
|
+
private _initialized;
|
|
20
|
+
private _ensureInitialized;
|
|
21
|
+
get rawDataDB(): any[];
|
|
22
|
+
constructor(config?: Partial<ExporterConfig>);
|
|
23
|
+
export(resourceMetrics: ResourceMetrics, resultCallback: any): any;
|
|
8
24
|
shutdown(): Promise<void>;
|
|
9
|
-
forceFlush(): Promise<void>;
|
|
10
|
-
find(search: any, callback: any): void;
|
|
11
25
|
reset(): void;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* @param metrics - The metrics to insert.
|
|
16
|
-
* @param callback - The callback to execute after insertion.
|
|
17
|
-
*/
|
|
18
|
-
insert(metrics: any[], callback: (err: any, newDocs: any[]) => void): void;
|
|
19
|
-
set retentionTimeInSeconds(retentionTimeInSeconds: number);
|
|
26
|
+
forceFlush(): Promise<void>;
|
|
27
|
+
getCachedResource(): Resource | null;
|
|
28
|
+
set retentionTimeInSeconds(value: number);
|
|
20
29
|
get retentionTimeInSeconds(): number;
|
|
30
|
+
getStats(): {
|
|
31
|
+
totalMetrics: number;
|
|
32
|
+
totalScopes: number;
|
|
33
|
+
totalSeries: number;
|
|
34
|
+
totalSamples: number;
|
|
35
|
+
memoryUsageBytes: number;
|
|
36
|
+
};
|
|
21
37
|
private _startCleanupJob;
|
|
38
|
+
/**
|
|
39
|
+
* Find metrics by scope+metric queries with filters
|
|
40
|
+
* Supports both raw and otel formats
|
|
41
|
+
*/
|
|
42
|
+
find(request: FindMetricsRequest): {
|
|
43
|
+
results: any[];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Export all metrics as line-delimited JSON (one chunk per line)
|
|
47
|
+
*/
|
|
48
|
+
exportToLineDelimitedJson(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Import metrics from line-delimited JSON format
|
|
51
|
+
*/
|
|
52
|
+
importFromLineDelimitedJson(lineDelimitedJsonData: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Insert metrics in OpenTelemetry (OTEL) format directly into the registry
|
|
55
|
+
* @param scopeMetrics Array of ScopeMetrics (OTEL format)
|
|
56
|
+
*/
|
|
57
|
+
insertOtel(scopeMetrics: ScopeMetrics[]): void;
|
|
58
|
+
/**
|
|
59
|
+
* Insert metrics in raw format (MetricQueryResult[]), converts to OTEL and delegates to insertOtel
|
|
60
|
+
* @param rawScopeMetrics Array of MetricQueryResult (raw format)
|
|
61
|
+
*/
|
|
62
|
+
insertRaw(rawScopeMetrics: any[]): void;
|
|
22
63
|
}
|
|
@@ -3,10 +3,10 @@ import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
|
|
|
3
3
|
import { Enabler } from '../wrappers.js';
|
|
4
4
|
export declare class InMemoryDbSpanExporter extends Enabler implements SpanExporter {
|
|
5
5
|
private _spans;
|
|
6
|
-
private _baseUrl;
|
|
7
6
|
private _retentionTimeInSeconds;
|
|
7
|
+
private _initialized;
|
|
8
8
|
constructor(retentionTimeInSeconds?: number);
|
|
9
|
-
|
|
9
|
+
private _ensureInitialized;
|
|
10
10
|
set retentionTimeInSeconds(retentionTimeInSeconds: number);
|
|
11
11
|
get retentionTimeInSeconds(): number;
|
|
12
12
|
export(readableSpans: ReadableSpan[], resultCallback: (arg0: {
|
|
@@ -14,12 +14,16 @@ export declare class InMemoryDbSpanExporter extends Enabler implements SpanExpor
|
|
|
14
14
|
error?: Error;
|
|
15
15
|
}) => void): void;
|
|
16
16
|
shutdown(): Promise<void>;
|
|
17
|
+
reset(): void;
|
|
17
18
|
/**
|
|
18
19
|
* Exports any pending spans in the exporter
|
|
19
20
|
*/
|
|
20
21
|
forceFlush(): Promise<void>;
|
|
21
|
-
find(
|
|
22
|
-
|
|
22
|
+
find(findConfig: {
|
|
23
|
+
query: any;
|
|
24
|
+
limit?: number;
|
|
25
|
+
sortOrder?: any;
|
|
26
|
+
}): Promise<any[]>;
|
|
23
27
|
getFinishedSpans(): import("@seald-io/nedb").Document<Record<string, any>>[];
|
|
24
28
|
/**
|
|
25
29
|
* Inserts spans into the in-memory database.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
2
|
+
import { PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics';
|
|
3
|
+
export declare class MultiMetricExporter implements PushMetricExporter {
|
|
4
|
+
private readonly exporters;
|
|
5
|
+
constructor(exporters: PushMetricExporter[]);
|
|
6
|
+
export(resourceMetrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void;
|
|
7
|
+
shutdown(): Promise<void>;
|
|
8
|
+
forceFlush(): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { InstrumentationBase } from '@opentelemetry/instrumentation';
|
|
2
|
+
import { LoggerProvider } from '@opentelemetry/api-logs';
|
|
3
|
+
export declare class LogsInstrumentation extends InstrumentationBase {
|
|
4
|
+
private _loggerProvider?;
|
|
5
|
+
private _otelLogger?;
|
|
6
|
+
constructor(config?: any);
|
|
7
|
+
/**
|
|
8
|
+
* No-op: this instrumentation does not patch modules loaded via require().
|
|
9
|
+
*/
|
|
10
|
+
init(): never[];
|
|
11
|
+
/**
|
|
12
|
+
* Called by the SDK when the LoggerProvider is available.
|
|
13
|
+
* This is the correct way for an instrumentation to receive a logger provider.
|
|
14
|
+
*/
|
|
15
|
+
setLoggerProvider(provider: LoggerProvider): void;
|
|
16
|
+
/**
|
|
17
|
+
* Called by the SDK after all providers have been registered.
|
|
18
|
+
*/
|
|
19
|
+
enable(): void;
|
|
20
|
+
disable(): void;
|
|
21
|
+
private _patchConsole;
|
|
22
|
+
private _unpatchConsole;
|
|
23
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { HistogramValue } from './types.js';
|
|
2
|
+
export declare class Chunk {
|
|
3
|
+
private readonly maxSamples;
|
|
4
|
+
private readonly startTimes;
|
|
5
|
+
private readonly endTimes;
|
|
6
|
+
private readonly values;
|
|
7
|
+
private readonly histograms;
|
|
8
|
+
private cursor;
|
|
9
|
+
private minEndTime;
|
|
10
|
+
private maxEndTime;
|
|
11
|
+
private readonly isHistogram;
|
|
12
|
+
constructor(maxSamples?: number, isHistogram?: boolean);
|
|
13
|
+
/**
|
|
14
|
+
* Append a sample to the chunk.
|
|
15
|
+
* Returns true if successful or false if the chunk is full.
|
|
16
|
+
*/
|
|
17
|
+
append(startTime: number, endTime: number, value: number | HistogramValue): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Binary search for first index with endTime >= targetTime
|
|
20
|
+
*/
|
|
21
|
+
private _binarySearchStart;
|
|
22
|
+
/**
|
|
23
|
+
* Binary search for last index with endTime <= targetTime
|
|
24
|
+
*/
|
|
25
|
+
private _binarySearchEnd;
|
|
26
|
+
/**
|
|
27
|
+
* Efficient slicing method for bulk operations.
|
|
28
|
+
* Always returns slices. Values can be either a Float64Array (numeric)
|
|
29
|
+
* or a JS array of HistogramValue objects (histogram series).
|
|
30
|
+
*/
|
|
31
|
+
getSlices(startTime?: number, endTime?: number): {
|
|
32
|
+
startTimes: Float64Array;
|
|
33
|
+
endTimes: Float64Array;
|
|
34
|
+
values: Float64Array | (HistogramValue | null)[];
|
|
35
|
+
};
|
|
36
|
+
isFull(): boolean;
|
|
37
|
+
overlaps(startTime: number, endTime: number): boolean;
|
|
38
|
+
getStats(): {
|
|
39
|
+
samples: number;
|
|
40
|
+
maxSamples: number;
|
|
41
|
+
minEndTime: number;
|
|
42
|
+
maxEndTime: number;
|
|
43
|
+
memoryBytes: number;
|
|
44
|
+
};
|
|
45
|
+
getMemoryUsage(): number;
|
|
46
|
+
getMinTime(): number;
|
|
47
|
+
getMaxTime(): number;
|
|
48
|
+
size(): number;
|
|
49
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Series: Time-series storage with metadata and chunks
|
|
3
|
+
* One series per unique metric+labels combination
|
|
4
|
+
*/
|
|
5
|
+
import { MetricMetadata, LabelSet, HistogramValue } from './types.js';
|
|
6
|
+
export declare class Series {
|
|
7
|
+
private readonly labelSet;
|
|
8
|
+
private readonly metadata;
|
|
9
|
+
private readonly chunks;
|
|
10
|
+
private readonly maxChunks;
|
|
11
|
+
private readonly chunkSize;
|
|
12
|
+
private readonly isHistogram;
|
|
13
|
+
constructor(labelSet: LabelSet, metadata: MetricMetadata, chunkSize?: number, maxChunks?: number);
|
|
14
|
+
/**
|
|
15
|
+
* Append a sample to the series
|
|
16
|
+
*/
|
|
17
|
+
append(startTime: number, endTime: number, value: number | HistogramValue): void;
|
|
18
|
+
/**
|
|
19
|
+
* Query slices with options object. Example:
|
|
20
|
+
* querySlices({ startTime, endTime, includeStartTimes: true })
|
|
21
|
+
* includeStartTimes defaults to false.
|
|
22
|
+
* If both startTime and endTime are undefined, returns all data (no time filtering).
|
|
23
|
+
*/
|
|
24
|
+
querySlices(options?: {
|
|
25
|
+
startTime?: number;
|
|
26
|
+
endTime?: number;
|
|
27
|
+
includeStartTimes?: boolean;
|
|
28
|
+
}): {
|
|
29
|
+
startTimes?: Float64Array;
|
|
30
|
+
endTimes: Float64Array;
|
|
31
|
+
values: Float64Array | (HistogramValue | null)[];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Remove chunks older than threshold
|
|
35
|
+
*/
|
|
36
|
+
evictOldChunks(thresholdTime: number): number;
|
|
37
|
+
/**
|
|
38
|
+
* Get series metadata
|
|
39
|
+
*/
|
|
40
|
+
getMetadata(): MetricMetadata;
|
|
41
|
+
getLabels(): Record<string, any>;
|
|
42
|
+
getOriginalAttributes(): Record<string, any>;
|
|
43
|
+
/**
|
|
44
|
+
* Get label hash
|
|
45
|
+
*/
|
|
46
|
+
getLabelHash(): number;
|
|
47
|
+
getStats(): {
|
|
48
|
+
metricName: string;
|
|
49
|
+
labels: import("@opentelemetry/api").Attributes;
|
|
50
|
+
chunks: number;
|
|
51
|
+
samples: number;
|
|
52
|
+
memoryBytes: number;
|
|
53
|
+
oldestTime: number;
|
|
54
|
+
newestTime: number;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Check if series has any samples
|
|
58
|
+
*/
|
|
59
|
+
isEmpty(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Get time range covered by this series
|
|
62
|
+
*/
|
|
63
|
+
getTimeRange(): {
|
|
64
|
+
min: number;
|
|
65
|
+
max: number;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ScopeMetricQuery, MetricQueryResult } from './types.js';
|
|
2
|
+
import { InstrumentationScope } from '@opentelemetry/core';
|
|
3
|
+
import { MetricDescriptor, ScopeMetrics } from '@opentelemetry/sdk-metrics';
|
|
4
|
+
export declare class SeriesRegistry {
|
|
5
|
+
private readonly series;
|
|
6
|
+
private readonly scopes;
|
|
7
|
+
private readonly metricMetadataMap;
|
|
8
|
+
private readonly metricIdIndex;
|
|
9
|
+
private readonly chunkSize;
|
|
10
|
+
private readonly maxChunks;
|
|
11
|
+
constructor(chunkSize?: number, maxChunks?: number);
|
|
12
|
+
/**
|
|
13
|
+
* Store entire ScopeMetrics array efficiently
|
|
14
|
+
* Replaces addSample - processes all metrics in one batch
|
|
15
|
+
*/
|
|
16
|
+
storeScopeMetrics(scopeMetrics: ScopeMetrics[]): void;
|
|
17
|
+
query(scopeMetrics?: ScopeMetricQuery[], startTime?: number, endTime?: number): MetricQueryResult[];
|
|
18
|
+
/**
|
|
19
|
+
* Query single metric with attribute filters
|
|
20
|
+
*/
|
|
21
|
+
private _querySingle;
|
|
22
|
+
/**
|
|
23
|
+
* Match series attributes against filters
|
|
24
|
+
* Supports exact match, negation (!), and regex (~)
|
|
25
|
+
*/
|
|
26
|
+
private _matchesAttributeFilters;
|
|
27
|
+
evictOldData(retentionTimeNs: number): {
|
|
28
|
+
evictedChunks: number;
|
|
29
|
+
evictedSeries: number;
|
|
30
|
+
};
|
|
31
|
+
getStats(): {
|
|
32
|
+
totalMetrics: number;
|
|
33
|
+
totalScopes: number;
|
|
34
|
+
totalSeries: number;
|
|
35
|
+
totalSamples: number;
|
|
36
|
+
memoryUsageBytes: number;
|
|
37
|
+
};
|
|
38
|
+
reset(): void;
|
|
39
|
+
size(): number;
|
|
40
|
+
/**
|
|
41
|
+
* Serialize registry to line-delimited JSON format (newline-delimited JSON)
|
|
42
|
+
* Each line is a complete record: metadata, scope, metric, or data point
|
|
43
|
+
* Format:
|
|
44
|
+
* {"type":"header","version":1,"timestamp":"...","stats":{...}}
|
|
45
|
+
* {"type":"scope","id":"...","data":{...}}
|
|
46
|
+
* {"type":"metric","id":"...","data":{...}}
|
|
47
|
+
* {"type":"series","id":"...","labelSet":{...},"chunks":[...]}
|
|
48
|
+
*/
|
|
49
|
+
serializeToLineDelimitedJson(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Deserialize from line-delimited JSON format - restore from chunk lines
|
|
52
|
+
*/
|
|
53
|
+
deserializeFromLineDelimitedJson(lineDelimitedJsonData: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Save registry to disk as line-delimited JSON (one chunk per line)
|
|
56
|
+
*/
|
|
57
|
+
saveToDisk(filePath: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Load registry from disk (line-delimited JSON format)
|
|
60
|
+
*/
|
|
61
|
+
loadFromDisk(filePath: string): void;
|
|
62
|
+
}
|
|
63
|
+
export type MetricInfo = {
|
|
64
|
+
scope: InstrumentationScope;
|
|
65
|
+
metrics: Array<{
|
|
66
|
+
descriptor: MetricDescriptor;
|
|
67
|
+
series: string[];
|
|
68
|
+
}>;
|
|
69
|
+
};
|