apm-optima 1.0.5 → 2.0.0
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 +54 -23
- package/dashboard-out/404/index.html +1 -1
- package/dashboard-out/404.html +1 -1
- package/dashboard-out/__next.__PAGE__.txt +4 -4
- package/dashboard-out/__next._full.txt +17 -17
- package/dashboard-out/__next._head.txt +4 -4
- package/dashboard-out/__next._index.txt +10 -10
- package/dashboard-out/__next._tree.txt +2 -2
- package/dashboard-out/_next/static/chunks/{2xjcsu4pgp14_.js → 062oipeclh9bq.js} +1 -1
- package/dashboard-out/_next/static/chunks/0ncbimuip0-o7.css +3 -0
- package/dashboard-out/_next/static/chunks/0xtgenoch3q77.js +1 -0
- package/dashboard-out/_next/static/chunks/1xln1-s87x5yp.js +27 -0
- package/dashboard-out/_not-found/__next._full.txt +15 -15
- package/dashboard-out/_not-found/__next._head.txt +4 -4
- package/dashboard-out/_not-found/__next._index.txt +10 -10
- package/dashboard-out/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/dashboard-out/_not-found/__next._not-found.txt +3 -3
- package/dashboard-out/_not-found/__next._tree.txt +2 -2
- package/dashboard-out/_not-found/index.html +1 -1
- package/dashboard-out/_not-found/index.txt +15 -15
- package/dashboard-out/index.html +1 -1
- package/dashboard-out/index.txt +17 -17
- package/dist/adapters/session-export.handler.d.ts +4 -0
- package/dist/adapters/session-export.handler.js +29 -0
- package/dist/adapters/socket.options.d.ts +3 -0
- package/dist/adapters/socket.options.js +16 -0
- package/dist/config/config.manager.d.ts +80 -3
- package/dist/config/config.manager.js +269 -89
- package/dist/config/config.types.d.ts +89 -13
- package/dist/core/delivery/buckets-request.d.ts +2 -0
- package/dist/core/delivery/buckets-request.js +18 -0
- package/dist/core/delivery/index.d.ts +1 -0
- package/dist/core/delivery/index.js +1 -0
- package/dist/core/delivery/metrics.publisher.d.ts +23 -10
- package/dist/core/delivery/metrics.publisher.js +22 -22
- package/dist/core/delivery/websocket.events.d.ts +14 -3
- package/dist/core/delivery/websocket.events.js +13 -2
- package/dist/core/domain/correlation.types.d.ts +37 -0
- package/dist/core/domain/correlation.types.js +2 -0
- package/dist/core/domain/dashboard.types.d.ts +16 -69
- package/dist/core/domain/dashboard.types.js +29 -0
- package/dist/core/domain/endpoints.types.d.ts +3 -0
- package/dist/core/domain/event.types.d.ts +14 -0
- package/dist/core/domain/event.types.js +2 -0
- package/dist/core/domain/incident.types.d.ts +50 -0
- package/dist/core/domain/incident.types.js +2 -0
- package/dist/core/domain/index.d.ts +5 -0
- package/dist/core/domain/index.js +5 -0
- package/dist/core/domain/live-bucket.types.d.ts +86 -0
- package/dist/core/domain/live-bucket.types.js +2 -0
- package/dist/core/domain/metrics.types.d.ts +41 -11
- package/dist/core/domain/session.types.d.ts +93 -0
- package/dist/core/domain/session.types.js +2 -0
- package/dist/core/domain/telemetry.types.d.ts +1 -0
- package/dist/core/organizers/event.manager.d.ts +19 -0
- package/dist/core/organizers/event.manager.js +73 -0
- package/dist/core/organizers/index.d.ts +2 -0
- package/dist/core/organizers/index.js +18 -0
- package/dist/core/organizers/interval.manager.d.ts +18 -0
- package/dist/core/organizers/interval.manager.js +54 -0
- package/dist/core/storage/index.d.ts +1 -0
- package/dist/core/storage/index.js +1 -0
- package/dist/core/storage/local.repository.d.ts +12 -12
- package/dist/core/storage/local.repository.js +38 -38
- package/dist/core/storage/persistence/persistence-writer.d.ts +48 -0
- package/dist/core/storage/persistence/persistence-writer.js +191 -0
- package/dist/core/storage/persistence/segment-index.d.ts +27 -0
- package/dist/core/storage/persistence/segment-index.js +206 -0
- package/dist/core/storage/persistence/session-registry.d.ts +28 -0
- package/dist/core/storage/persistence/session-registry.js +127 -0
- package/dist/core/storage/persistence/session-summary.d.ts +3 -0
- package/dist/core/storage/persistence/session-summary.js +112 -0
- package/dist/core/storage/persistence.layer.d.ts +69 -0
- package/dist/core/storage/persistence.layer.js +404 -0
- package/dist/core/storage/runtime/anomaly-detector.d.ts +11 -0
- package/dist/core/storage/runtime/anomaly-detector.js +42 -0
- package/dist/core/storage/stores/analytics.store.d.ts +5 -5
- package/dist/core/storage/stores/analytics.store.js +39 -12
- package/dist/core/storage/stores/bucket-metric.d.ts +85 -0
- package/dist/core/storage/stores/bucket-metric.js +168 -0
- package/dist/core/storage/stores/bucket-view.d.ts +44 -0
- package/dist/core/storage/stores/bucket-view.js +63 -0
- package/dist/core/storage/stores/bucket.store.d.ts +39 -36
- package/dist/core/storage/stores/bucket.store.js +112 -60
- package/dist/core/storage/stores/dashboard.store.d.ts +11 -4
- package/dist/core/storage/stores/dashboard.store.js +179 -47
- package/dist/core/storage/stores/endpoint.store.d.ts +1 -0
- package/dist/core/storage/stores/endpoint.store.js +21 -5
- package/dist/core/storage/stores/index.d.ts +0 -7
- package/dist/core/storage/stores/index.js +0 -7
- package/dist/core/storage/stores/metrics.store.d.ts +1 -1
- package/dist/core/storage/stores/metrics.store.js +1 -0
- package/dist/core/storage/stores/runtime.store.d.ts +77 -0
- package/dist/core/storage/stores/runtime.store.js +222 -0
- package/dist/core/storage/utility/common.d.ts +1 -0
- package/dist/core/storage/utility/common.js +11 -0
- package/dist/core/storage/utility/file-buffer.d.ts +31 -0
- package/dist/core/storage/utility/file-buffer.js +238 -0
- package/dist/core/storage/utility/histogram.d.ts +1 -2
- package/dist/core/storage/utility/histogram.js +1 -2
- package/dist/core/storage/utility/index.d.ts +2 -0
- package/dist/core/storage/utility/index.js +2 -0
- package/dist/core/storage/utility/persistence-files.d.ts +3 -0
- package/dist/core/storage/utility/persistence-files.js +34 -0
- package/dist/core/storage/utility/persistence-writer.d.ts +39 -0
- package/dist/core/storage/utility/persistence-writer.js +183 -0
- package/dist/core/storage/utility/session-export.d.ts +3 -0
- package/dist/core/storage/utility/session-export.js +31 -0
- package/dist/core/storage/utility/session-registry.d.ts +21 -0
- package/dist/core/storage/utility/session-registry.js +91 -0
- package/dist/core/storage/utility/session-window.d.ts +8 -0
- package/dist/core/storage/utility/session-window.js +43 -0
- package/dist/core/telemetry/analytics.service.d.ts +18 -0
- package/dist/core/telemetry/analytics.service.js +100 -0
- package/dist/core/telemetry/collector.service.d.ts +17 -15
- package/dist/core/telemetry/collector.service.js +23 -80
- package/dist/core/telemetry/correlation.service.d.ts +57 -9
- package/dist/core/telemetry/correlation.service.js +246 -54
- package/dist/core/telemetry/dashboard-live.service.d.ts +10 -0
- package/dist/core/telemetry/dashboard-live.service.js +110 -0
- package/dist/core/telemetry/dashboard.service.d.ts +20 -0
- package/dist/core/telemetry/dashboard.service.js +140 -0
- package/dist/core/telemetry/incident.service.d.ts +71 -0
- package/dist/core/telemetry/incident.service.js +239 -0
- package/dist/core/telemetry/logger.d.ts +4 -0
- package/dist/core/telemetry/logger.js +5 -2
- package/dist/core/telemetry/runtime.service.d.ts +14 -0
- package/dist/core/telemetry/runtime.service.js +56 -0
- package/dist/core/telemetry/telemetry-query.service.d.ts +82 -0
- package/dist/core/telemetry/telemetry-query.service.js +231 -0
- package/dist/core/telemetry/telemetry.service.d.ts +10 -4
- package/dist/core/telemetry/telemetry.service.js +60 -10
- package/dist/core/telemetry/utility/correlation-analysis.d.ts +9 -0
- package/dist/core/telemetry/utility/correlation-analysis.js +143 -0
- package/dist/core/telemetry/utility/correlation-finding.d.ts +70 -0
- package/dist/core/telemetry/utility/correlation-finding.js +41 -0
- package/dist/core/telemetry/utility/correlation-input.d.ts +59 -0
- package/dist/core/telemetry/utility/correlation-input.js +139 -0
- package/dist/core/telemetry/utility/correlation-replay.d.ts +24 -0
- package/dist/core/telemetry/utility/correlation-replay.js +46 -0
- package/dist/core/utility/correlation.analysis.d.ts +9 -0
- package/dist/core/utility/correlation.analysis.js +144 -0
- package/dist/core/utility/statistics.d.ts +65 -0
- package/dist/core/utility/statistics.js +141 -0
- package/dist/express/index.d.ts +1 -1
- package/dist/express/index.js +7 -5
- package/dist/express/metrics-websocket.adapter.d.ts +8 -2
- package/dist/express/metrics-websocket.adapter.js +52 -19
- package/dist/express/metrics.adapter.d.ts +1 -0
- package/dist/express/metrics.adapter.js +8 -1
- package/dist/express/metrics.bootstrap.d.ts +6 -1
- package/dist/express/metrics.bootstrap.js +48 -22
- package/dist/express/metrics.dashboard.d.ts +2 -1
- package/dist/express/metrics.dashboard.js +4 -1
- package/dist/express/metrics.middleware.d.ts +2 -1
- package/dist/express/metrics.middleware.js +23 -20
- package/dist/nest/metrics-websocket.adapter.d.ts +19 -3
- package/dist/nest/metrics-websocket.adapter.js +101 -21
- package/dist/nest/metrics.adapter.d.ts +4 -1
- package/dist/nest/metrics.adapter.js +24 -1
- package/dist/nest/metrics.bootstrap.service.d.ts +7 -3
- package/dist/nest/metrics.bootstrap.service.js +56 -21
- package/dist/nest/metrics.interceptor.d.ts +3 -3
- package/dist/nest/metrics.interceptor.js +11 -8
- package/dist/nest/metrics.module.d.ts +3 -0
- package/dist/nest/metrics.module.js +27 -9
- package/dist/runtime/index.d.ts +32 -0
- package/dist/runtime/index.js +104 -0
- package/dist/simulation/simulation.d.ts +5 -16
- package/dist/simulation/simulation.js +5 -8
- package/package.json +2 -1
- package/dashboard-out/_next/static/chunks/23soo6qkun-yv.js +0 -1
- package/dashboard-out/_next/static/chunks/3xoopocxi2vi8.css +0 -3
- package/dashboard-out/_next/static/chunks/3z-nzyp9z8vih.js +0 -3
- /package/dashboard-out/_next/static/{kFIRZt4fuL4Zsh38-jGui → 17egwqgk36_DSRF55LJZG}/_buildManifest.js +0 -0
- /package/dashboard-out/_next/static/{kFIRZt4fuL4Zsh38-jGui → 17egwqgk36_DSRF55LJZG}/_clientMiddlewareManifest.js +0 -0
- /package/dashboard-out/_next/static/{kFIRZt4fuL4Zsh38-jGui → 17egwqgk36_DSRF55LJZG}/_ssgManifest.js +0 -0
|
@@ -4,33 +4,33 @@ exports.MetricsPublisher = void 0;
|
|
|
4
4
|
const websocket_events_1 = require("./websocket.events");
|
|
5
5
|
class MetricsPublisher {
|
|
6
6
|
provider;
|
|
7
|
+
sessionProvider;
|
|
8
|
+
correlationProvider;
|
|
9
|
+
incidentProvider;
|
|
7
10
|
websocket;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
constructor(provider, websocket, intervalMs = 1000) {
|
|
11
|
+
publishData = null;
|
|
12
|
+
constructor(provider, sessionProvider, correlationProvider, incidentProvider, websocket) {
|
|
11
13
|
this.provider = provider;
|
|
14
|
+
this.sessionProvider = sessionProvider;
|
|
15
|
+
this.correlationProvider = correlationProvider;
|
|
16
|
+
this.incidentProvider = incidentProvider;
|
|
12
17
|
this.websocket = websocket;
|
|
13
|
-
this.intervalMs = intervalMs;
|
|
14
|
-
}
|
|
15
|
-
start() {
|
|
16
|
-
if (this.interval)
|
|
17
|
-
return;
|
|
18
|
-
this.interval = setInterval(() => {
|
|
19
|
-
this.publish();
|
|
20
|
-
}, this.intervalMs);
|
|
21
|
-
}
|
|
22
|
-
stop() {
|
|
23
|
-
if (!this.interval)
|
|
24
|
-
return;
|
|
25
|
-
clearInterval(this.interval);
|
|
26
|
-
this.interval = undefined;
|
|
27
18
|
}
|
|
28
19
|
publish() {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
this.publishData = {
|
|
21
|
+
systemStaticInfo: this.provider.getSystemStaticInfo(),
|
|
22
|
+
analyticsData: this.provider.getAnalyticsData(),
|
|
23
|
+
healthData: this.provider.getHealthData(),
|
|
24
|
+
correlationData: this.correlationProvider.pack(),
|
|
25
|
+
};
|
|
26
|
+
this.websocket.broadcast(websocket_events_1.WebSocketEvents.RESPONSE_SYSTEM_DATA, this.publishData.systemStaticInfo);
|
|
27
|
+
this.websocket.broadcast(websocket_events_1.WebSocketEvents.RESPONSE_ANALYTICS_DATA, this.publishData.analyticsData);
|
|
28
|
+
this.websocket.broadcast(websocket_events_1.WebSocketEvents.RESPONSE_HEALTH_DATA, this.publishData.healthData);
|
|
29
|
+
this.websocket.broadcast(websocket_events_1.WebSocketEvents.RESPONSE_CORRELATION_DATA, this.publishData.correlationData);
|
|
30
|
+
this.websocket.broadcast(websocket_events_1.WebSocketEvents.RESPONSE_INCIDENTS, this.incidentProvider.snapshot());
|
|
31
|
+
const live = this.provider.getLiveBuckets();
|
|
32
|
+
if (live)
|
|
33
|
+
this.websocket.broadcast(websocket_events_1.WebSocketEvents.RESPONSE_DASHBOARD_BUCKETS, live);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
exports.MetricsPublisher = MetricsPublisher;
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
export declare enum WebSocketEvents {
|
|
2
|
+
REQUEST_SESSION_METADATA = "request-session-metadata",
|
|
3
|
+
RESPONSE_SESSION_METADATA = "response-session-metadata",
|
|
4
|
+
REQUEST_SESSION_SUMMARY = "request-session-summary",
|
|
5
|
+
RESPONSE_SESSION_SUMMARY = "response-session-summary",
|
|
2
6
|
REQUEST_CONFIGURATION = "request-configuration",
|
|
3
7
|
RESPONSE_CONFIGURATION = "response-configuration",
|
|
4
8
|
REQUEST_SYSTEM_DATA = "request-system-data",
|
|
5
9
|
RESPONSE_SYSTEM_DATA = "response-system-data",
|
|
6
|
-
REQUEST_DASHBOARD_DATA = "request-dashboard-data",
|
|
7
|
-
RESPONSE_DASHBOARD_DATA = "response-dashboard-data",
|
|
8
10
|
REQUEST_ANALYTICS_DATA = "request-analytics-data",
|
|
9
11
|
RESPONSE_ANALYTICS_DATA = "response-analytics-data",
|
|
12
|
+
RESPONSE_FILTERED_ANALYTICS_DATA = "response-filtered-analytics-data",
|
|
10
13
|
REQUEST_HEALTH_DATA = "request-health-data",
|
|
11
|
-
RESPONSE_HEALTH_DATA = "response-health-data"
|
|
14
|
+
RESPONSE_HEALTH_DATA = "response-health-data",
|
|
15
|
+
REQUEST_CORRELATION_DATA = "request-correlation-data",
|
|
16
|
+
RESPONSE_CORRELATION_DATA = "response-correlation-data",
|
|
17
|
+
REQUEST_CORRELATION_REPLAY = "request-correlation-replay",
|
|
18
|
+
RESPONSE_CORRELATION_REPLAY = "response-correlation-replay",
|
|
19
|
+
REQUEST_INCIDENTS = "request-incidents",
|
|
20
|
+
RESPONSE_INCIDENTS = "response-incidents",
|
|
21
|
+
REQUEST_DASHBOARD_BUCKETS = "request-dashboard-buckets",
|
|
22
|
+
RESPONSE_DASHBOARD_BUCKETS = "response-dashboard-buckets"
|
|
12
23
|
}
|
|
@@ -3,14 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WebSocketEvents = void 0;
|
|
4
4
|
var WebSocketEvents;
|
|
5
5
|
(function (WebSocketEvents) {
|
|
6
|
+
WebSocketEvents["REQUEST_SESSION_METADATA"] = "request-session-metadata";
|
|
7
|
+
WebSocketEvents["RESPONSE_SESSION_METADATA"] = "response-session-metadata";
|
|
8
|
+
WebSocketEvents["REQUEST_SESSION_SUMMARY"] = "request-session-summary";
|
|
9
|
+
WebSocketEvents["RESPONSE_SESSION_SUMMARY"] = "response-session-summary";
|
|
6
10
|
WebSocketEvents["REQUEST_CONFIGURATION"] = "request-configuration";
|
|
7
11
|
WebSocketEvents["RESPONSE_CONFIGURATION"] = "response-configuration";
|
|
8
12
|
WebSocketEvents["REQUEST_SYSTEM_DATA"] = "request-system-data";
|
|
9
13
|
WebSocketEvents["RESPONSE_SYSTEM_DATA"] = "response-system-data";
|
|
10
|
-
WebSocketEvents["REQUEST_DASHBOARD_DATA"] = "request-dashboard-data";
|
|
11
|
-
WebSocketEvents["RESPONSE_DASHBOARD_DATA"] = "response-dashboard-data";
|
|
12
14
|
WebSocketEvents["REQUEST_ANALYTICS_DATA"] = "request-analytics-data";
|
|
13
15
|
WebSocketEvents["RESPONSE_ANALYTICS_DATA"] = "response-analytics-data";
|
|
16
|
+
WebSocketEvents["RESPONSE_FILTERED_ANALYTICS_DATA"] = "response-filtered-analytics-data";
|
|
14
17
|
WebSocketEvents["REQUEST_HEALTH_DATA"] = "request-health-data";
|
|
15
18
|
WebSocketEvents["RESPONSE_HEALTH_DATA"] = "response-health-data";
|
|
19
|
+
WebSocketEvents["REQUEST_CORRELATION_DATA"] = "request-correlation-data";
|
|
20
|
+
WebSocketEvents["RESPONSE_CORRELATION_DATA"] = "response-correlation-data";
|
|
21
|
+
WebSocketEvents["REQUEST_CORRELATION_REPLAY"] = "request-correlation-replay";
|
|
22
|
+
WebSocketEvents["RESPONSE_CORRELATION_REPLAY"] = "response-correlation-replay";
|
|
23
|
+
WebSocketEvents["REQUEST_INCIDENTS"] = "request-incidents";
|
|
24
|
+
WebSocketEvents["RESPONSE_INCIDENTS"] = "response-incidents";
|
|
25
|
+
WebSocketEvents["REQUEST_DASHBOARD_BUCKETS"] = "request-dashboard-buckets";
|
|
26
|
+
WebSocketEvents["RESPONSE_DASHBOARD_BUCKETS"] = "response-dashboard-buckets";
|
|
16
27
|
})(WebSocketEvents || (exports.WebSocketEvents = WebSocketEvents = {}));
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface SystemAssessment {
|
|
2
|
+
status: 'INSUFFICIENT_DATA' | 'NO_SATURATION_PATTERN' | 'POSSIBLE_SATURATION';
|
|
3
|
+
evidence: string[];
|
|
4
|
+
recommendation: string;
|
|
5
|
+
}
|
|
6
|
+
export type CorrelationStatus = 'INSUFFICIENT_DATA' | 'NO_STRONG_ASSOCIATION' | 'STRONG_LINEAR_ASSOCIATION' | 'STRONG_MONOTONIC_NONLINEAR_ASSOCIATION';
|
|
7
|
+
export type CorrelationDirection = 'POSITIVE' | 'NEGATIVE' | 'NONE';
|
|
8
|
+
export interface CorrelationAnalysis {
|
|
9
|
+
status: CorrelationStatus;
|
|
10
|
+
direction: CorrelationDirection;
|
|
11
|
+
pearsonR: number;
|
|
12
|
+
spearmanR: number;
|
|
13
|
+
rawPearsonR: number;
|
|
14
|
+
differencePearsonR: number;
|
|
15
|
+
determination: number;
|
|
16
|
+
lag: number;
|
|
17
|
+
laggedPearsonR: number;
|
|
18
|
+
sampleSize: number;
|
|
19
|
+
effectiveSampleSize: number;
|
|
20
|
+
requiredSampleSize: number;
|
|
21
|
+
autocorrelationX: number;
|
|
22
|
+
autocorrelationY: number;
|
|
23
|
+
trendDriven: boolean;
|
|
24
|
+
recommendation: string;
|
|
25
|
+
}
|
|
26
|
+
export interface CorrelationPairResult {
|
|
27
|
+
id: string;
|
|
28
|
+
xLabel: string;
|
|
29
|
+
yLabel: string;
|
|
30
|
+
expectedDirection: Exclude<CorrelationDirection, 'NONE'>;
|
|
31
|
+
unexpectedDirection: boolean;
|
|
32
|
+
analysis: CorrelationAnalysis;
|
|
33
|
+
}
|
|
34
|
+
export interface CorrelationData {
|
|
35
|
+
results: CorrelationPairResult[];
|
|
36
|
+
assessment: SystemAssessment;
|
|
37
|
+
}
|
|
@@ -1,49 +1,17 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { CpuMetrics, MemoryMetrics, EventLoopMetrics, GCMetrics, LibuvHandles
|
|
1
|
+
import type { PaginationMeta } from './common.types';
|
|
2
|
+
import type { CpuMetrics, MemoryMetrics, EventLoopMetrics, GCMetrics, LibuvHandles } from './metrics.types';
|
|
3
3
|
import type { V8RuntimeInfo } from './system.types';
|
|
4
4
|
import type { EndpointTelemetry, EndpointLatencyDistribution, EndpointVolume } from './endpoints.types';
|
|
5
5
|
/**
|
|
6
|
-
* Represents the
|
|
7
|
-
* @property {
|
|
8
|
-
* @property {
|
|
9
|
-
* @property {
|
|
10
|
-
* @property {AlertMessage[]} alerts - List of alert messages.
|
|
11
|
-
* @property {object} charts - Explicit chart configuration maps matching chart configurations directly.
|
|
12
|
-
* @property {object} charts.throughputAndLatency - Chart data for throughput and latency metrics.
|
|
13
|
-
* @property {object} charts.runtimePerformance - Chart data for runtime performance metrics.
|
|
6
|
+
* Represents the analytics filter settings used for filtering analytics data based on query, HTTP method, and status code.
|
|
7
|
+
* @property {string} query - The search query string for filtering analytics data.
|
|
8
|
+
* @property {'ALL' | 'GET' | 'POST' | 'PUT' | 'DELETE'} method - The HTTP method filter for analytics data.
|
|
9
|
+
* @property {number} page - The page number for paginated analytics data.
|
|
14
10
|
*/
|
|
15
|
-
export interface
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
errorRate: number;
|
|
20
|
-
eventLoopLag: number;
|
|
21
|
-
heapUsage: number;
|
|
22
|
-
heapSize: number;
|
|
23
|
-
};
|
|
24
|
-
history: HistoricTimeSeries;
|
|
25
|
-
impactEndpoints: EndpointTelemetry[];
|
|
26
|
-
alerts: AlertMessage[];
|
|
27
|
-
charts: {
|
|
28
|
-
throughput: {
|
|
29
|
-
rps: number[];
|
|
30
|
-
errorClient: number[];
|
|
31
|
-
errorServer: number[];
|
|
32
|
-
totalCount: number;
|
|
33
|
-
};
|
|
34
|
-
percentiles: {
|
|
35
|
-
p50: number[];
|
|
36
|
-
p95: number[];
|
|
37
|
-
p99: number[];
|
|
38
|
-
totalCount: number;
|
|
39
|
-
};
|
|
40
|
-
runtimePerformance: {
|
|
41
|
-
heapUsage: number[];
|
|
42
|
-
heapSize: number[];
|
|
43
|
-
lag: number[];
|
|
44
|
-
totalCount: number;
|
|
45
|
-
};
|
|
46
|
-
};
|
|
11
|
+
export interface AnalyticsFilterSettings {
|
|
12
|
+
query: string;
|
|
13
|
+
method: 'ALL' | 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
14
|
+
page: number;
|
|
47
15
|
}
|
|
48
16
|
/**
|
|
49
17
|
* Represents the analytics data structure, including summary statistics, latency distribution, request volume, and a paginated table of endpoint telemetry data.
|
|
@@ -74,35 +42,14 @@ export interface AnalyticsData {
|
|
|
74
42
|
pagination: PaginationMeta;
|
|
75
43
|
};
|
|
76
44
|
history: EndpointTelemetry[][];
|
|
45
|
+
impactEndpoints: EndpointTelemetry[];
|
|
77
46
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
* @property {EventLoopMetrics} eventLoop - Event loop metrics data.
|
|
83
|
-
* @property {LibuvHandles} handles - Libuv handle metrics data.
|
|
84
|
-
* @property {GCMetrics} garbageCollection - Garbage collection metrics data.
|
|
85
|
-
* @property {V8RuntimeInfo} runtime - V8 runtime information data.
|
|
86
|
-
* @property {object} history - Historical data for event loop lag and memory breakdown.
|
|
87
|
-
* @property {number[]} history.eventLoopLag - Array of historical event loop lag values.
|
|
88
|
-
* @property {object} history.memoryBreakdown - Historical memory breakdown data.
|
|
89
|
-
* @property {number[]} history.memoryBreakdown.usedHeap - Array of historical used heap memory values.
|
|
90
|
-
* @property {number[]} history.memoryBreakdown.totalHeap - Array of historical total heap memory values.
|
|
91
|
-
* @property {number[]} history.memoryBreakdown.rssMemory - Array of historical resident set size (RSS) memory values.
|
|
92
|
-
*/
|
|
93
|
-
export interface HealthData {
|
|
94
|
-
cpu: CpuMetrics;
|
|
95
|
-
memory: MemoryMetrics;
|
|
96
|
-
eventLoop: EventLoopMetrics;
|
|
47
|
+
export interface HealthDetails {
|
|
48
|
+
cpu: Pick<CpuMetrics, 'numberOfCores' | 'perCoreUsage'>;
|
|
49
|
+
memory: Pick<MemoryMetrics, 'rssMemoryTotal' | 'externalMemory'>;
|
|
50
|
+
eventLoop: Pick<EventLoopMetrics, 'threshold'>;
|
|
97
51
|
handles: LibuvHandles;
|
|
98
52
|
garbageCollection: GCMetrics;
|
|
99
53
|
runtime: V8RuntimeInfo;
|
|
100
|
-
history: {
|
|
101
|
-
eventLoopLag: number[];
|
|
102
|
-
memoryBreakdown: {
|
|
103
|
-
usedHeap: number[];
|
|
104
|
-
totalHeap: number[];
|
|
105
|
-
rssMemory: number[];
|
|
106
|
-
};
|
|
107
|
-
};
|
|
108
54
|
}
|
|
55
|
+
export declare const emptyHealthDetails: () => HealthDetails;
|
|
@@ -1,2 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.emptyHealthDetails = void 0;
|
|
4
|
+
const emptyHealthDetails = () => ({
|
|
5
|
+
cpu: { numberOfCores: 0, perCoreUsage: [] },
|
|
6
|
+
memory: { rssMemoryTotal: 0, externalMemory: 0 },
|
|
7
|
+
eventLoop: { threshold: 0 },
|
|
8
|
+
handles: { activeHandles: 0, activeHandlesTimers: 0, activeHandlesSockets: 0, activeLibuvHandles: 0, timers: 0, fileDescriptors: 0 },
|
|
9
|
+
garbageCollection: {
|
|
10
|
+
gcCount: 0,
|
|
11
|
+
gcTime: 0,
|
|
12
|
+
gcPauseAverage: 0,
|
|
13
|
+
minorGC: { runCount: 0, averageTime: 0 },
|
|
14
|
+
majorGC: { runCount: 0, averageTime: 0 },
|
|
15
|
+
incrementalGC: { runCount: 0, averageTime: 0 },
|
|
16
|
+
heapSpaces: [],
|
|
17
|
+
gcTotals: { totalPauseTime: 0, freedMemory: 0, promotions: 0, tenuredSize: 0 }
|
|
18
|
+
},
|
|
19
|
+
runtime: {
|
|
20
|
+
pid: 0,
|
|
21
|
+
platform: '',
|
|
22
|
+
nodeVersion: '',
|
|
23
|
+
v8Version: '',
|
|
24
|
+
libuvVersion: '',
|
|
25
|
+
openSSLVersion: '',
|
|
26
|
+
threadPoolSize: 0,
|
|
27
|
+
activeThreads: 0,
|
|
28
|
+
startup: { bootstrapTime: 0, requiredModules: 0 }
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
exports.emptyHealthDetails = emptyHealthDetails;
|
|
@@ -11,12 +11,15 @@ import type { EndpointRoute } from './common.types';
|
|
|
11
11
|
*/
|
|
12
12
|
export interface EndpointTelemetry extends EndpointRoute {
|
|
13
13
|
rps: number;
|
|
14
|
+
p50: number;
|
|
14
15
|
p95: number;
|
|
15
16
|
p99?: number;
|
|
16
17
|
errorRate: number;
|
|
17
18
|
status?: string;
|
|
18
19
|
requestCount?: number;
|
|
19
20
|
averageLatency?: number;
|
|
21
|
+
minLatency?: number;
|
|
22
|
+
impactedRequests?: number;
|
|
20
23
|
}
|
|
21
24
|
/**
|
|
22
25
|
* Represents the latency distribution for a specific endpoint, including the 50th, 95th, and 99th percentile latencies.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the types of events that can occur in the application.
|
|
3
|
+
*/
|
|
4
|
+
export type ApplicationEventType = 'STARTUP' | 'SHUTDOWN' | 'CRASH' | 'INCIDENT_OPENED' | 'INCIDENT_RESOLVED';
|
|
5
|
+
/**
|
|
6
|
+
* Represents an event that occurs in the application.
|
|
7
|
+
*/
|
|
8
|
+
export interface ApplicationEvent {
|
|
9
|
+
timestamp: string;
|
|
10
|
+
type: ApplicationEventType;
|
|
11
|
+
applicationVersion: string;
|
|
12
|
+
reason: string;
|
|
13
|
+
details?: Record<string, unknown>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type IncidentState = 'NORMAL' | 'PENDING' | 'FIRING' | 'RESOLVED';
|
|
2
|
+
export type IncidentSeverity = 'warning' | 'critical';
|
|
3
|
+
export interface RelatedFinding {
|
|
4
|
+
findingId: string;
|
|
5
|
+
pairId: string;
|
|
6
|
+
status: string;
|
|
7
|
+
direction: string;
|
|
8
|
+
pearsonR: number;
|
|
9
|
+
}
|
|
10
|
+
export interface Incident {
|
|
11
|
+
incidentId: string;
|
|
12
|
+
sessionId: string;
|
|
13
|
+
ruleId: string;
|
|
14
|
+
title: string;
|
|
15
|
+
metric: string;
|
|
16
|
+
unit: string;
|
|
17
|
+
severity: IncidentSeverity;
|
|
18
|
+
status: 'FIRING' | 'RESOLVED';
|
|
19
|
+
threshold: number;
|
|
20
|
+
recoverBelow: number;
|
|
21
|
+
breachStartedAt: string;
|
|
22
|
+
firedAt: string;
|
|
23
|
+
resolvedAt: string | null;
|
|
24
|
+
peakValue: number;
|
|
25
|
+
lastValue: number | null;
|
|
26
|
+
sequenceFrom: number;
|
|
27
|
+
sequenceTo: number;
|
|
28
|
+
relatedFindings: RelatedFinding[];
|
|
29
|
+
causeNote: string;
|
|
30
|
+
}
|
|
31
|
+
export interface IncidentRuleStatus {
|
|
32
|
+
ruleId: string;
|
|
33
|
+
title: string;
|
|
34
|
+
metric: string;
|
|
35
|
+
unit: string;
|
|
36
|
+
severity: IncidentSeverity;
|
|
37
|
+
state: IncidentState;
|
|
38
|
+
since: string | null;
|
|
39
|
+
value: number | null;
|
|
40
|
+
threshold: number;
|
|
41
|
+
recoverBelow: number;
|
|
42
|
+
valid: boolean;
|
|
43
|
+
reason?: string;
|
|
44
|
+
incidentId: string | null;
|
|
45
|
+
}
|
|
46
|
+
export interface IncidentsSnapshot {
|
|
47
|
+
rules: IncidentRuleStatus[];
|
|
48
|
+
incidents: Incident[];
|
|
49
|
+
serverTime: string;
|
|
50
|
+
}
|
|
@@ -4,3 +4,8 @@ export * from './metrics.types';
|
|
|
4
4
|
export * from './endpoints.types';
|
|
5
5
|
export * from './dashboard.types';
|
|
6
6
|
export * from './telemetry.types';
|
|
7
|
+
export * from './event.types';
|
|
8
|
+
export * from './session.types';
|
|
9
|
+
export * from './correlation.types';
|
|
10
|
+
export * from './live-bucket.types';
|
|
11
|
+
export * from './incident.types';
|
|
@@ -20,3 +20,8 @@ __exportStar(require("./metrics.types"), exports);
|
|
|
20
20
|
__exportStar(require("./endpoints.types"), exports);
|
|
21
21
|
__exportStar(require("./dashboard.types"), exports);
|
|
22
22
|
__exportStar(require("./telemetry.types"), exports);
|
|
23
|
+
__exportStar(require("./event.types"), exports);
|
|
24
|
+
__exportStar(require("./session.types"), exports);
|
|
25
|
+
__exportStar(require("./correlation.types"), exports);
|
|
26
|
+
__exportStar(require("./live-bucket.types"), exports);
|
|
27
|
+
__exportStar(require("./incident.types"), exports);
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A DTO representing a live bucket of telemetry data.
|
|
3
|
+
* @property bucketId - The unique identifier for the bucket.
|
|
4
|
+
* @property sequence - The sequence number of the bucket.
|
|
5
|
+
* @property startTime - The ISO string representing when the bucket started.
|
|
6
|
+
* @property endTime - The ISO string representing when the bucket ended.
|
|
7
|
+
* @property durationMs - The duration of the bucket in milliseconds.
|
|
8
|
+
* @property committed - A boolean indicating whether the bucket has been committed.
|
|
9
|
+
* @property qualityFlags - An array of strings representing quality flags for the bucket.
|
|
10
|
+
* @property requestCount - The total number of requests recorded in the bucket.
|
|
11
|
+
* @property clientErrorCount - The total number of client errors (HTTP 4xx) recorded in the bucket.
|
|
12
|
+
* @property serverErrorCount - The total number of server errors (HTTP 5xx) recorded in the bucket.
|
|
13
|
+
* @property rps - The average requests per second (RPS) recorded in the bucket.
|
|
14
|
+
* @property averageLatencyMs - The average latency (in milliseconds)
|
|
15
|
+
* @property p50Ms - The 50th percentile latency (in milliseconds) recorded in the bucket.
|
|
16
|
+
* @property p95Ms - The 95th percentile latency (in milliseconds) recorded in the bucket.
|
|
17
|
+
* @property p99Ms - The 99th percentile latency (in milliseconds) recorded in the bucket.
|
|
18
|
+
* @property errorRate - The error rate (as a decimal) recorded in the bucket.
|
|
19
|
+
* @property runtime - An object containing runtime metrics for the bucket, including event loop lag, heap usage, heap size, RSS memory, and heap limit.
|
|
20
|
+
*/
|
|
21
|
+
export interface LiveBucketDto {
|
|
22
|
+
bucketId: string;
|
|
23
|
+
sequence: number;
|
|
24
|
+
startTime: string;
|
|
25
|
+
endTime: string;
|
|
26
|
+
durationMs: number;
|
|
27
|
+
committed: boolean;
|
|
28
|
+
qualityFlags: string[];
|
|
29
|
+
requestCount: number;
|
|
30
|
+
clientErrorCount: number;
|
|
31
|
+
serverErrorCount: number;
|
|
32
|
+
rps: number;
|
|
33
|
+
averageLatencyMs: number;
|
|
34
|
+
p50Ms: number;
|
|
35
|
+
p95Ms: number;
|
|
36
|
+
p99Ms: number;
|
|
37
|
+
errorRate: number;
|
|
38
|
+
runtime: {
|
|
39
|
+
eventLoopLagMs: number;
|
|
40
|
+
heapUsageBytes: number;
|
|
41
|
+
heapSizeBytes: number;
|
|
42
|
+
rssMemoryBytes: number;
|
|
43
|
+
heapLimitBytes: number;
|
|
44
|
+
cpuPercent: number;
|
|
45
|
+
cpuUserPercent: number;
|
|
46
|
+
cpuSystemPercent: number;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A message containing a set of live buckets.
|
|
51
|
+
* @property subscriptionId - The subscription ID for the message. If null, the message is for all subscriptions.
|
|
52
|
+
* @property sessionId - The session ID for the message.
|
|
53
|
+
* @property kind - The kind of buckets in the message. Either 'live' or 'backfill'.
|
|
54
|
+
* @property buckets - The array of live bucket DTOs.
|
|
55
|
+
* @property lastSequence - The last sequence number of the buckets in the message. If null, there are no buckets in the message.
|
|
56
|
+
* @property requestedAfterSequence - The sequence number after which the buckets were requested. If null, the request was for all buckets.
|
|
57
|
+
* @property gaps - An array of gaps in the bucket sequences. Each gap is represented as a tuple of [startSequence, endSequence].
|
|
58
|
+
* @property truncated - Whether the message was truncated due to a limit on the number of buckets returned.
|
|
59
|
+
* @property serverTime - The server time when the message was generated.
|
|
60
|
+
*/
|
|
61
|
+
export interface BucketsMessage {
|
|
62
|
+
subscriptionId: string | null;
|
|
63
|
+
sessionId: string;
|
|
64
|
+
kind: 'live' | 'backfill';
|
|
65
|
+
buckets: LiveBucketDto[];
|
|
66
|
+
lastSequence: number | null;
|
|
67
|
+
requestedAfterSequence: number | null;
|
|
68
|
+
gaps: Array<[number, number]>;
|
|
69
|
+
truncated: boolean;
|
|
70
|
+
serverTime: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* A request for a set of buckets.
|
|
74
|
+
* @property subscriptionId - The subscription ID for the request.
|
|
75
|
+
* @property sessionId - The session ID for the request. If null, the request is for all sessions.
|
|
76
|
+
* @property afterSequence - The sequence number after which to return buckets. If null, return from the beginning.
|
|
77
|
+
* @property afterEndTime - The end time after which to return buckets. If null, return from the beginning.
|
|
78
|
+
* @property limit - The maximum number of buckets to return. If not specified, return all available buckets.
|
|
79
|
+
*/
|
|
80
|
+
export interface BucketsRequest {
|
|
81
|
+
subscriptionId: string;
|
|
82
|
+
sessionId: string | null;
|
|
83
|
+
afterSequence: number | null;
|
|
84
|
+
afterEndTime: string | null;
|
|
85
|
+
limit?: number;
|
|
86
|
+
}
|
|
@@ -91,6 +91,31 @@ export interface LibuvHandles {
|
|
|
91
91
|
timers: number;
|
|
92
92
|
fileDescriptors: number;
|
|
93
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Represents historic time series data for various metrics, including requests per second (RPS), latency, error rate, event loop lag, heap usage, heap size, resident set size (RSS) memory, total heap memory, and optional percentiles (p95 and p99).
|
|
96
|
+
* @property {T} rps - Values of requests per second (RPS) values over time.
|
|
97
|
+
* @property {T} latency - Values of latency values over time.
|
|
98
|
+
* @property {T} errorRate - Values of error rate values over time.
|
|
99
|
+
* @property {T} eventLoopLag - Values of event loop lag values over time.
|
|
100
|
+
* @property {T} heapUsage - Values of heap usage values over time.
|
|
101
|
+
* @property {T} heapSize - Values of heap size values over time.
|
|
102
|
+
* @property {T} rssMemory - Values of resident set size (RSS) memory values over time.
|
|
103
|
+
* @property {T} totalHeap - Values of total heap memory values over time (from health memory breakdown).
|
|
104
|
+
* @property {T} p95 - Optional values of 95th percentile latency values over time.
|
|
105
|
+
* @property {T} p99 - Optional values of 99th percentile latency values over time.
|
|
106
|
+
*/
|
|
107
|
+
interface HistoricSeries<T> {
|
|
108
|
+
rps: T;
|
|
109
|
+
latency: T;
|
|
110
|
+
errorRate: T;
|
|
111
|
+
eventLoopLag: T;
|
|
112
|
+
heapUsage: T;
|
|
113
|
+
heapSize: T;
|
|
114
|
+
rssMemory: T;
|
|
115
|
+
totalHeap: T;
|
|
116
|
+
p95?: T;
|
|
117
|
+
p99?: T;
|
|
118
|
+
}
|
|
94
119
|
/**
|
|
95
120
|
* Represents historic time series data for various metrics, including requests per second (RPS), latency, error rate, event loop lag, heap usage, heap size, resident set size (RSS) memory, total heap memory, and optional percentiles (p95 and p99).
|
|
96
121
|
* @property {number[]} rps - An array of requests per second (RPS) values over time.
|
|
@@ -104,16 +129,21 @@ export interface LibuvHandles {
|
|
|
104
129
|
* @property {number[]} [p95] - Optional array of 95th percentile latency values over time.
|
|
105
130
|
* @property {number[]} [p99] - Optional array of 99th percentile latency values over time.
|
|
106
131
|
*/
|
|
107
|
-
export interface HistoricTimeSeries {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
132
|
+
export interface HistoricTimeSeries extends HistoricSeries<number[]> {
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Represents historic tick series data for various metrics, including requests per second (RPS), latency, error rate, event loop lag, heap usage, heap size, resident set size (RSS) memory, total heap memory, and optional percentiles (p95 and p99).
|
|
136
|
+
* @property {number} rps - The requests per second (RPS) value at a specific tick.
|
|
137
|
+
* @property {number} latency - The latency value at a specific tick.
|
|
138
|
+
* @property {number} errorRate - The error rate value at a specific tick.
|
|
139
|
+
* @property {number} eventLoopLag - The event loop lag value at a specific tick.
|
|
140
|
+
* @property {number} heapUsage - The heap usage value at a specific tick.
|
|
141
|
+
* @property {number} heapSize - The heap size value at a specific tick.
|
|
142
|
+
* @property {number} rssMemory - The resident set size (RSS) memory value at a specific tick.
|
|
143
|
+
* @property {number} totalHeap - The total heap memory value at a specific tick (from health memory breakdown).
|
|
144
|
+
* @property {number} [p95] - Optional 95th percentile latency value at a specific tick.
|
|
145
|
+
* @property {number} [p99] - Optional 99th percentile latency value at a specific tick.
|
|
146
|
+
*/
|
|
147
|
+
export interface HistoricTickSeries extends HistoricSeries<number> {
|
|
118
148
|
}
|
|
119
149
|
export {};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { Incident } from './incident.types';
|
|
2
|
+
/**
|
|
3
|
+
* Represents the status of a session, which can be either 'RUNNING', 'COMPLETED', or 'INTERRUPTED'.
|
|
4
|
+
* - 'RUNNING': The session is currently active and ongoing.
|
|
5
|
+
* - 'COMPLETED': The session has finished successfully.
|
|
6
|
+
* - 'INTERRUPTED': The session was interrupted before completion, possibly due to an error or unexpected shutdown.
|
|
7
|
+
*/
|
|
8
|
+
export type SessionStatus = 'RUNNING' | 'COMPLETED' | 'INTERRUPTED';
|
|
9
|
+
/**
|
|
10
|
+
* Represents a record of a session, containing essential information about the session's lifecycle and status.
|
|
11
|
+
* @property {string} sessionId - A unique identifier for the session.
|
|
12
|
+
* @property {number} sessionNumber - A sequential number representing the order of the session.
|
|
13
|
+
* @property {string} startedAt - The ISO string representing when the session started.
|
|
14
|
+
* @property {string | null} endedAt - The ISO string representing when the session ended, or null if it is currently running.
|
|
15
|
+
* @property {string | null} lastPersistedAt - The ISO string representing when the session's data was last persisted, or null if it has not been persisted yet.
|
|
16
|
+
* @property {number} lastCommittedSequence - The last committed sequence number for the session's data.
|
|
17
|
+
* @property {SessionStatus} status - The current status of the session, which can be 'RUNNING', 'COMPLETED', or 'INTERRUPTED'.
|
|
18
|
+
*/
|
|
19
|
+
export type SessionRecord = {
|
|
20
|
+
sessionId: string;
|
|
21
|
+
sessionNumber: number;
|
|
22
|
+
startedAt: string;
|
|
23
|
+
endedAt: string | null;
|
|
24
|
+
lastPersistedAt: string | null;
|
|
25
|
+
lastCommittedSequence: number;
|
|
26
|
+
status: SessionStatus;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Represents a manifest of sessions, containing a version number and an array of session records.
|
|
30
|
+
* @property {number} version - The version number of the session manifest.
|
|
31
|
+
* @property {SessionRecord[]} sessions - An array of session records, each representing a single session's information.
|
|
32
|
+
*/
|
|
33
|
+
export interface SessionManifest {
|
|
34
|
+
version: 2;
|
|
35
|
+
sessions: SessionRecord[];
|
|
36
|
+
}
|
|
37
|
+
export interface SessionSummaryPoint {
|
|
38
|
+
startTime: string;
|
|
39
|
+
durationMs: number;
|
|
40
|
+
requestCount: number;
|
|
41
|
+
rps: number;
|
|
42
|
+
maxRps: number;
|
|
43
|
+
p95: number;
|
|
44
|
+
serverErrorRate: number;
|
|
45
|
+
clientErrorCount: number;
|
|
46
|
+
serverErrorCount: number;
|
|
47
|
+
}
|
|
48
|
+
export interface SessionRouteImpact {
|
|
49
|
+
method: string;
|
|
50
|
+
route: string;
|
|
51
|
+
requestCount: number;
|
|
52
|
+
impactedRequests: number;
|
|
53
|
+
p95: number;
|
|
54
|
+
serverErrorRate: number;
|
|
55
|
+
}
|
|
56
|
+
export interface SessionSummary {
|
|
57
|
+
sessionId: string;
|
|
58
|
+
sessionNumber: number;
|
|
59
|
+
status: SessionStatus;
|
|
60
|
+
startedAt: string;
|
|
61
|
+
endedAt: string | null;
|
|
62
|
+
windowStart: string;
|
|
63
|
+
windowEnd: string;
|
|
64
|
+
measuredMs: number;
|
|
65
|
+
traffic: {
|
|
66
|
+
requestCount: number;
|
|
67
|
+
avgRps: number;
|
|
68
|
+
peakRps: number;
|
|
69
|
+
};
|
|
70
|
+
latency: {
|
|
71
|
+
p50: number;
|
|
72
|
+
p95: number;
|
|
73
|
+
p99: number;
|
|
74
|
+
max: number;
|
|
75
|
+
};
|
|
76
|
+
errors: {
|
|
77
|
+
serverErrorCount: number;
|
|
78
|
+
serverErrorRate: number;
|
|
79
|
+
clientErrorCount: number;
|
|
80
|
+
};
|
|
81
|
+
incidents: Incident[];
|
|
82
|
+
topRoutes: SessionRouteImpact[];
|
|
83
|
+
series: {
|
|
84
|
+
resolutionMs: number;
|
|
85
|
+
points: SessionSummaryPoint[];
|
|
86
|
+
};
|
|
87
|
+
quality: {
|
|
88
|
+
bucketCount: number;
|
|
89
|
+
missingIntervals: number;
|
|
90
|
+
conflicts: number;
|
|
91
|
+
complete: boolean;
|
|
92
|
+
};
|
|
93
|
+
}
|