@open-rlb/nestjs-amqp 2.0.9 → 2.0.11
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 +35 -35
- package/modules/acl/{authz-match.js → auth-match.js} +1 -1
- package/modules/acl/auth-match.js.map +1 -0
- package/modules/acl/const.d.ts +3 -0
- package/modules/acl/const.js +3 -0
- package/modules/acl/const.js.map +1 -1
- package/modules/acl/index.d.ts +1 -1
- package/modules/acl/index.js +1 -1
- package/modules/acl/index.js.map +1 -1
- package/modules/acl/repository/acl-action.repository.d.ts +1 -0
- package/modules/acl/repository/acl-action.repository.js.map +1 -1
- package/modules/acl/repository/acl-grant.repository.d.ts +1 -0
- package/modules/acl/repository/acl-grant.repository.js.map +1 -1
- package/modules/acl/repository/acl-role.repository.d.ts +1 -0
- package/modules/acl/repository/acl-role.repository.js.map +1 -1
- package/modules/acl/services/acl-management.service.d.ts +3 -0
- package/modules/acl/services/acl-management.service.js +38 -2
- package/modules/acl/services/acl-management.service.js.map +1 -1
- package/modules/acl/services/acl.service.d.ts +1 -1
- package/modules/acl/services/acl.service.js +2 -2
- package/modules/acl/services/acl.service.js.map +1 -1
- package/modules/broker/decorators/broker-action.decorator.d.ts +1 -1
- package/modules/broker/decorators/broker-action.decorator.js.map +1 -1
- package/modules/gateway-admin/config/gateway-admin.config.d.ts +2 -0
- package/modules/gateway-admin/const.d.ts +7 -0
- package/modules/gateway-admin/const.js +7 -0
- package/modules/gateway-admin/const.js.map +1 -1
- package/modules/gateway-admin/gateway-admin.module.js +4 -1
- package/modules/gateway-admin/gateway-admin.module.js.map +1 -1
- package/modules/gateway-admin/health.d.ts +14 -0
- package/modules/gateway-admin/health.js +5 -0
- package/modules/gateway-admin/health.js.map +1 -0
- package/modules/gateway-admin/index.d.ts +5 -0
- package/modules/gateway-admin/index.js +5 -0
- package/modules/gateway-admin/index.js.map +1 -1
- package/modules/gateway-admin/models.d.ts +61 -0
- package/modules/gateway-admin/repository/auth-provider.repository.d.ts +1 -0
- package/modules/gateway-admin/repository/auth-provider.repository.js.map +1 -1
- package/modules/gateway-admin/repository/http-metric.repository.d.ts +6 -2
- package/modules/gateway-admin/repository/http-metric.repository.js.map +1 -1
- package/modules/gateway-admin/repository/http-path.repository.d.ts +3 -0
- package/modules/gateway-admin/repository/http-path.repository.js.map +1 -1
- package/modules/gateway-admin/repository/route-sync-log.repository.d.ts +4 -1
- package/modules/gateway-admin/repository/route-sync-log.repository.js.map +1 -1
- package/modules/gateway-admin/services/gateway-auth.service.d.ts +1 -0
- package/modules/gateway-admin/services/gateway-auth.service.js +12 -0
- package/modules/gateway-admin/services/gateway-auth.service.js.map +1 -1
- package/modules/gateway-admin/services/gateway-health.service.d.ts +10 -0
- package/modules/gateway-admin/services/gateway-health.service.js +64 -0
- package/modules/gateway-admin/services/gateway-health.service.js.map +1 -0
- package/modules/gateway-admin/services/gateway-metrics-rollup.service.d.ts +13 -0
- package/modules/gateway-admin/services/gateway-metrics-rollup.service.js +63 -0
- package/modules/gateway-admin/services/gateway-metrics-rollup.service.js.map +1 -0
- package/modules/gateway-admin/services/gateway-metrics.service.d.ts +5 -4
- package/modules/gateway-admin/services/gateway-metrics.service.js +56 -17
- package/modules/gateway-admin/services/gateway-metrics.service.js.map +1 -1
- package/modules/gateway-admin/services/gateway-path.service.d.ts +11 -4
- package/modules/gateway-admin/services/gateway-path.service.js +79 -11
- package/modules/gateway-admin/services/gateway-path.service.js.map +1 -1
- package/modules/gateway-admin/services/gateway-retention.service.d.ts +16 -0
- package/modules/gateway-admin/services/gateway-retention.service.js +71 -0
- package/modules/gateway-admin/services/gateway-retention.service.js.map +1 -0
- package/modules/gateway-admin/services/route-sync.service.js +12 -5
- package/modules/gateway-admin/services/route-sync.service.js.map +1 -1
- package/modules/gateway-admin/util/metrics.d.ts +10 -0
- package/modules/gateway-admin/util/metrics.js +170 -0
- package/modules/gateway-admin/util/metrics.js.map +1 -0
- package/modules/gateway-admin/util/route-diff.d.ts +7 -0
- package/modules/gateway-admin/util/route-diff.js +7 -2
- package/modules/gateway-admin/util/route-diff.js.map +1 -1
- package/modules/gateway-admin/util/route-manifest.d.ts +3 -0
- package/modules/gateway-admin/util/route-manifest.js +35 -0
- package/modules/gateway-admin/util/route-manifest.js.map +1 -1
- package/modules/proxy/config/path-definition.config.d.ts +2 -1
- package/modules/proxy/services/acl.service.d.ts +1 -1
- package/modules/proxy/services/http-auth-handler.service.d.ts +1 -1
- package/modules/proxy/services/http-auth-handler.service.js.map +1 -1
- package/modules/proxy/services/http-handler.service.d.ts +1 -0
- package/modules/proxy/services/http-handler.service.js +24 -32
- package/modules/proxy/services/http-handler.service.js.map +1 -1
- package/modules/proxy/services/metrics-hook.d.ts +1 -0
- package/package.json +1 -1
- package/schematics/nest-add/files/acl/src/modules/database/repository/acl.repository.ts +3 -0
- package/schematics/nest-add/files/db-core/src/modules/database/repository/in-memory-collection.ts +29 -0
- package/schematics/nest-add/files/gateway-admin/src/modules/database/repository/gateway.repository.ts +48 -20
- package/schematics/nest-add/files/gateway-admin/src/modules/database/repository/route-sync.repository.ts +24 -1
- package/schematics/nest-add/files/skills/rlb-amqp-acl/SKILL.md +6 -1
- package/schematics/nest-add/files/skills/rlb-amqp-add-route/SKILL.md +1 -1
- package/schematics/nest-add/files/skills/rlb-amqp-gateway-admin/SKILL.md +48 -8
- package/schematics/nest-add/index.js +73 -0
- package/schematics/nest-add/index.js.map +1 -1
- package/schematics/nest-add/index.ts +73 -0
- package/modules/acl/authz-match.js.map +0 -1
- /package/modules/acl/{authz-match.d.ts → auth-match.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,0CAAwB;AACxB,yDAAuC;AACvC,2CAAyB;AACzB,wEAAsD;AACtD,sEAAoD;AACpD,oEAAkD;AAClD,yEAAuD;AACvD,kEAAgD;AAChD,qEAAmD;AACnD,kEAAgD;AAChD,gEAA8C;AAC9C,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,0CAAwB;AACxB,yDAAuC;AACvC,2CAAyB;AACzB,2CAAyB;AACzB,wEAAsD;AACtD,sEAAoD;AACpD,oEAAkD;AAClD,yEAAuD;AACvD,kEAAgD;AAChD,oEAAkD;AAClD,4EAA0D;AAC1D,qEAAmD;AACnD,kEAAgD;AAChD,uEAAqD;AACrD,gEAA8C;AAC9C,iDAA+B;AAC/B,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC"}
|
|
@@ -10,6 +10,7 @@ export interface HttpMetric<Id = string> {
|
|
|
10
10
|
lastStatus?: number;
|
|
11
11
|
lastCalledAt?: number;
|
|
12
12
|
totalDurationMs: number;
|
|
13
|
+
lastErrorCode?: string;
|
|
13
14
|
}
|
|
14
15
|
export interface TrackCallInput {
|
|
15
16
|
method: string;
|
|
@@ -20,6 +21,7 @@ export interface TrackCallInput {
|
|
|
20
21
|
mode?: string;
|
|
21
22
|
status?: number;
|
|
22
23
|
durationMs?: number;
|
|
24
|
+
code?: string;
|
|
23
25
|
ts?: number;
|
|
24
26
|
}
|
|
25
27
|
export interface HttpMetricPoint<Id = string> {
|
|
@@ -33,6 +35,7 @@ export interface HttpMetricPoint<Id = string> {
|
|
|
33
35
|
mode?: string;
|
|
34
36
|
status?: number;
|
|
35
37
|
durationMs?: number;
|
|
38
|
+
code?: string;
|
|
36
39
|
}
|
|
37
40
|
export interface MetricQuery {
|
|
38
41
|
method?: string;
|
|
@@ -53,12 +56,69 @@ export interface MetricSeriesBucket {
|
|
|
53
56
|
avgDurationMs: number;
|
|
54
57
|
minDurationMs?: number;
|
|
55
58
|
maxDurationMs?: number;
|
|
59
|
+
p50?: number;
|
|
60
|
+
p95?: number;
|
|
61
|
+
p99?: number;
|
|
62
|
+
byStatus?: MetricStatusClasses;
|
|
63
|
+
}
|
|
64
|
+
export type MetricStatusClass = '2xx' | '3xx' | '4xx' | '5xx';
|
|
65
|
+
export type MetricStatusClasses = Record<MetricStatusClass, number>;
|
|
66
|
+
export interface MetricTopEntry {
|
|
67
|
+
method: string;
|
|
68
|
+
route: string;
|
|
69
|
+
name?: string;
|
|
70
|
+
count: number;
|
|
71
|
+
errorCount: number;
|
|
72
|
+
errorRate: number;
|
|
73
|
+
avgDurationMs: number;
|
|
74
|
+
p95?: number;
|
|
75
|
+
}
|
|
76
|
+
export interface MetricSummary {
|
|
77
|
+
totalRequests: number;
|
|
78
|
+
totalErrors: number;
|
|
79
|
+
errorRate: number;
|
|
80
|
+
avgDurationMs: number;
|
|
81
|
+
p50?: number;
|
|
82
|
+
p95?: number;
|
|
83
|
+
p99?: number;
|
|
84
|
+
byStatus: MetricStatusClasses;
|
|
85
|
+
topByTraffic: MetricTopEntry[];
|
|
86
|
+
topByErrors: MetricTopEntry[];
|
|
87
|
+
topByLatency: MetricTopEntry[];
|
|
88
|
+
}
|
|
89
|
+
export interface HttpMetricRollup<Id = string> {
|
|
90
|
+
_id?: Id;
|
|
91
|
+
bucketStart: number;
|
|
92
|
+
granularityMs: number;
|
|
93
|
+
method?: string;
|
|
94
|
+
route?: string;
|
|
95
|
+
name?: string;
|
|
96
|
+
count: number;
|
|
97
|
+
errorCount: number;
|
|
98
|
+
totalDurationMs: number;
|
|
99
|
+
minDurationMs?: number;
|
|
100
|
+
maxDurationMs?: number;
|
|
101
|
+
byStatus?: MetricStatusClasses;
|
|
102
|
+
}
|
|
103
|
+
export interface RouteFieldChange {
|
|
104
|
+
field: string;
|
|
105
|
+
added: any[];
|
|
106
|
+
removed: any[];
|
|
107
|
+
}
|
|
108
|
+
export interface RouteSyncLogQuery {
|
|
109
|
+
actor?: string;
|
|
110
|
+
service?: string;
|
|
111
|
+
event?: string;
|
|
112
|
+
routeKey?: string;
|
|
113
|
+
from?: number;
|
|
114
|
+
to?: number;
|
|
56
115
|
}
|
|
57
116
|
export interface RouteSyncLogEntry<Id = string> {
|
|
58
117
|
_id?: Id;
|
|
59
118
|
ts: number;
|
|
60
119
|
service: string;
|
|
61
120
|
level: 'info' | 'warn' | 'error';
|
|
121
|
+
actor?: string;
|
|
62
122
|
event: string;
|
|
63
123
|
routeKey?: string;
|
|
64
124
|
method?: string;
|
|
@@ -67,5 +127,6 @@ export interface RouteSyncLogEntry<Id = string> {
|
|
|
67
127
|
action?: string;
|
|
68
128
|
owner?: string;
|
|
69
129
|
conflictWith?: string;
|
|
130
|
+
changes?: RouteFieldChange[];
|
|
70
131
|
message?: string;
|
|
71
132
|
}
|
|
@@ -11,4 +11,5 @@ export declare abstract class AuthProviderRepository {
|
|
|
11
11
|
abstract removeByName(name: string): Promise<StoredAuthProvider>;
|
|
12
12
|
abstract listEnabled(): Promise<HandlerAuthConfig[]>;
|
|
13
13
|
abstract filterPaginated(filter: Record<string, any>, page?: number, limit?: number): Promise<PaginationModel<StoredAuthProvider>>;
|
|
14
|
+
abstract search(q?: string, page?: number, limit?: number): Promise<PaginationModel<StoredAuthProvider>>;
|
|
14
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-provider.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/auth-provider.repository.ts"],"names":[],"mappings":";;;AAOA,MAAsB,sBAAsB;
|
|
1
|
+
{"version":3,"file":"auth-provider.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/auth-provider.repository.ts"],"names":[],"mappings":";;;AAOA,MAAsB,sBAAsB;CAY3C;AAZD,wDAYC"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { HttpMetric, HttpMetricPoint,
|
|
1
|
+
import { HttpMetric, HttpMetricPoint, HttpMetricRollup, MetricQuery, MetricSeriesQuery, TrackCallInput } from '../models';
|
|
2
2
|
export declare abstract class HttpMetricRepository {
|
|
3
3
|
abstract increment(input: TrackCallInput): Promise<void>;
|
|
4
4
|
abstract list(route?: string): Promise<(HttpMetric & {
|
|
5
5
|
avgDurationMs: number;
|
|
6
|
+
errorRate: number;
|
|
6
7
|
})[]>;
|
|
7
8
|
abstract record(point: HttpMetricPoint): Promise<void>;
|
|
8
9
|
abstract points(query: MetricQuery): Promise<HttpMetricPoint[]>;
|
|
9
|
-
abstract
|
|
10
|
+
abstract recordRollups(rollups: HttpMetricRollup[]): Promise<void>;
|
|
11
|
+
abstract rollupSeries(query: MetricSeriesQuery): Promise<HttpMetricRollup[]>;
|
|
12
|
+
abstract pruneRollups(olderThanTs: number): Promise<number>;
|
|
13
|
+
abstract prunePoints(olderThanTs: number): Promise<number>;
|
|
10
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-metric.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/http-metric.repository.ts"],"names":[],"mappings":";;;AASA,MAAsB,oBAAoB;
|
|
1
|
+
{"version":3,"file":"http-metric.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/http-metric.repository.ts"],"names":[],"mappings":";;;AASA,MAAsB,oBAAoB;CAyBzC;AAzBD,oDAyBC"}
|
|
@@ -5,6 +5,8 @@ export type StoredHttpPath = Partial<PathDefinition> & {
|
|
|
5
5
|
enabled?: boolean;
|
|
6
6
|
owner?: string;
|
|
7
7
|
routeKey?: string;
|
|
8
|
+
source?: 'microservice' | 'user';
|
|
9
|
+
modified?: boolean;
|
|
8
10
|
};
|
|
9
11
|
export declare abstract class HttpPathRepository {
|
|
10
12
|
abstract insert(model: StoredHttpPath): Promise<StoredHttpPath>;
|
|
@@ -15,6 +17,7 @@ export declare abstract class HttpPathRepository {
|
|
|
15
17
|
abstract listEnabled(): Promise<PathDefinition[]>;
|
|
16
18
|
abstract filterPaginated(filter: Record<string, any>, page?: number, limit?: number): Promise<PaginationModel<StoredHttpPath>>;
|
|
17
19
|
abstract filter(filter: Record<string, any>): Promise<StoredHttpPath[]>;
|
|
20
|
+
abstract search(q?: string, page?: number, limit?: number): Promise<PaginationModel<StoredHttpPath>>;
|
|
18
21
|
findByOwner(owner: string): Promise<StoredHttpPath[]>;
|
|
19
22
|
findByRouteKey(routeKey: string): Promise<StoredHttpPath[]>;
|
|
20
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-path.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/http-path.repository.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"http-path.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/http-path.repository.ts"],"names":[],"mappings":";;;AAmBA,MAAsB,kBAAkB;IActC,WAAW,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC;IAID,cAAc,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAvBD,gDAuBC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PaginationModel } from '../../../common';
|
|
2
|
+
import { RouteSyncLogEntry, RouteSyncLogQuery } from '../models';
|
|
2
3
|
export declare abstract class RouteSyncLogRepository {
|
|
3
4
|
abstract insert(entry: RouteSyncLogEntry): Promise<RouteSyncLogEntry>;
|
|
4
5
|
abstract list(limit?: number): Promise<RouteSyncLogEntry[]>;
|
|
6
|
+
abstract query(filter: RouteSyncLogQuery, page?: number, limit?: number): Promise<PaginationModel<RouteSyncLogEntry>>;
|
|
7
|
+
abstract prune(olderThanTs: number): Promise<number>;
|
|
5
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-sync-log.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/route-sync-log.repository.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"route-sync-log.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/route-sync-log.repository.ts"],"names":[],"mappings":";;;AAOA,MAAsB,sBAAsB;CAO3C;AAPD,wDAOC"}
|
|
@@ -9,5 +9,6 @@ export declare class GatewayAuthService {
|
|
|
9
9
|
remove(name: string): Promise<StoredAuthProvider>;
|
|
10
10
|
get(name: string): Promise<StoredAuthProvider>;
|
|
11
11
|
list(page?: number, limit?: number): Promise<PaginationModel<StoredAuthProvider>>;
|
|
12
|
+
search(q?: string, page?: number, limit?: number): Promise<PaginationModel<StoredAuthProvider>>;
|
|
12
13
|
export(): Promise<HandlerAuthConfig[]>;
|
|
13
14
|
}
|
|
@@ -44,6 +44,9 @@ let GatewayAuthService = GatewayAuthService_1 = class GatewayAuthService {
|
|
|
44
44
|
async list(page, limit) {
|
|
45
45
|
return this.repo.filterPaginated({}, Number(page) || 1, Number(limit) || 10);
|
|
46
46
|
}
|
|
47
|
+
async search(q, page, limit) {
|
|
48
|
+
return this.repo.search(q, Number(page) || 1, Number(limit) || 10);
|
|
49
|
+
}
|
|
47
50
|
async export() {
|
|
48
51
|
return this.repo.listEnabled();
|
|
49
52
|
}
|
|
@@ -79,6 +82,15 @@ __decorate([
|
|
|
79
82
|
__metadata("design:paramtypes", [Number, Number]),
|
|
80
83
|
__metadata("design:returntype", Promise)
|
|
81
84
|
], GatewayAuthService.prototype, "list", null);
|
|
85
|
+
__decorate([
|
|
86
|
+
(0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.authSearch, 'rpc'),
|
|
87
|
+
__param(0, (0, broker_1.BrokerParam)('body', 'q')),
|
|
88
|
+
__param(1, (0, broker_1.BrokerParam)('body', 'page')),
|
|
89
|
+
__param(2, (0, broker_1.BrokerParam)('body', 'limit')),
|
|
90
|
+
__metadata("design:type", Function),
|
|
91
|
+
__metadata("design:paramtypes", [String, Number, Number]),
|
|
92
|
+
__metadata("design:returntype", Promise)
|
|
93
|
+
], GatewayAuthService.prototype, "search", null);
|
|
82
94
|
__decorate([
|
|
83
95
|
(0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.authExport, 'rpc'),
|
|
84
96
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-auth.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,4CAAmE;AAEnE,yCAAyD;AACzD,oCAAiE;AACjE,qFAAoG;AAG7F,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAG7B,YAA6B,IAA4B;QAA5B,SAAI,GAAJ,IAAI,CAAwB;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IAED,CAAC;IAIxD,AAAN,KAAK,CAAC,MAAM,CAA8B,IAAY,EAA4B,KAAyB;QACzG,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAA8B,IAAY;QACpD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAGK,AAAN,KAAK,CAAC,GAAG,CAA8B,IAAY;QACjD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAA8B,IAAa,EAAgC,KAAc;QACjG,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"gateway-auth.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-auth.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AmqpConnection } from '../../../amqp-lib';
|
|
2
|
+
import { GatewayHealthIndicator, GatewayHealthReport } from '../health';
|
|
3
|
+
export declare class GatewayHealthService {
|
|
4
|
+
private readonly amqp;
|
|
5
|
+
private readonly indicators?;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(amqp: AmqpConnection, indicators?: GatewayHealthIndicator[]);
|
|
8
|
+
health(): Promise<GatewayHealthReport>;
|
|
9
|
+
private brokerStatus;
|
|
10
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var GatewayHealthService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.GatewayHealthService = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const amqp_lib_1 = require("../../../amqp-lib");
|
|
19
|
+
const broker_1 = require("../../broker");
|
|
20
|
+
const const_1 = require("../const");
|
|
21
|
+
const health_1 = require("../health");
|
|
22
|
+
let GatewayHealthService = GatewayHealthService_1 = class GatewayHealthService {
|
|
23
|
+
constructor(amqp, indicators) {
|
|
24
|
+
this.amqp = amqp;
|
|
25
|
+
this.indicators = indicators;
|
|
26
|
+
this.logger = new common_1.Logger(GatewayHealthService_1.name);
|
|
27
|
+
}
|
|
28
|
+
async health() {
|
|
29
|
+
const broker = this.brokerStatus();
|
|
30
|
+
const dependencies = {};
|
|
31
|
+
for (const indicator of this.indicators ?? []) {
|
|
32
|
+
try {
|
|
33
|
+
dependencies[indicator.name] = await indicator.check();
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
dependencies[indicator.name] = { status: 'down', detail: e?.message };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const allUp = broker.status === 'up' && Object.values(dependencies).every((d) => d.status === 'up');
|
|
40
|
+
return { status: allUp ? 'up' : 'down', broker, dependencies };
|
|
41
|
+
}
|
|
42
|
+
brokerStatus() {
|
|
43
|
+
try {
|
|
44
|
+
return { status: this.amqp.connected ? 'up' : 'down' };
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
return { status: 'down', detail: e?.message };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.GatewayHealthService = GatewayHealthService;
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.health, 'rpc'),
|
|
54
|
+
__metadata("design:type", Function),
|
|
55
|
+
__metadata("design:paramtypes", []),
|
|
56
|
+
__metadata("design:returntype", Promise)
|
|
57
|
+
], GatewayHealthService.prototype, "health", null);
|
|
58
|
+
exports.GatewayHealthService = GatewayHealthService = GatewayHealthService_1 = __decorate([
|
|
59
|
+
(0, common_1.Injectable)(),
|
|
60
|
+
__param(1, (0, common_1.Optional)()),
|
|
61
|
+
__param(1, (0, common_1.Inject)(health_1.RLB_GW_HEALTH_INDICATORS)),
|
|
62
|
+
__metadata("design:paramtypes", [amqp_lib_1.AmqpConnection, Array])
|
|
63
|
+
], GatewayHealthService);
|
|
64
|
+
//# sourceMappingURL=gateway-health.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-health.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-health.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAsE;AACtE,gDAAmD;AACnD,yCAA4C;AAC5C,oCAAiE;AACjE,sCAAsH;AAG/G,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAG/B,YACmB,IAAoB,EACS,UAAsD;QADnF,SAAI,GAAJ,IAAI,CAAgB;QAC0B,eAAU,GAAV,UAAU,CAA2B;QAJrF,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAK5D,CAAC;IASC,AAAN,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,MAAM,YAAY,GAAuC,EAAE,CAAC;QAC5D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;YACzD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAG,CAAW,EAAE,OAAO,EAAE,CAAC;YACnF,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QACpG,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACjE,CAAC;IAGO,YAAY;QAClB,IAAI,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAG,CAAW,EAAE,OAAO,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;CACF,CAAA;AArCY,oDAAoB;AAezB;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;;;;kDAajE;+BA3BU,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,iCAAwB,CAAC,CAAA;qCADtB,yBAAc;GAJ5B,oBAAoB,CAqChC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OnApplicationBootstrap, OnModuleDestroy } from '@nestjs/common';
|
|
2
|
+
import { GatewayAdminModuleOptions } from '../config/gateway-admin.config';
|
|
3
|
+
import { HttpMetricRepository } from '../repository/http-metric.repository';
|
|
4
|
+
export declare class GatewayMetricsRollupService implements OnApplicationBootstrap, OnModuleDestroy {
|
|
5
|
+
private readonly metrics;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
private readonly enabled;
|
|
8
|
+
private timer?;
|
|
9
|
+
constructor(metrics: HttpMetricRepository, options?: GatewayAdminModuleOptions);
|
|
10
|
+
onApplicationBootstrap(): void;
|
|
11
|
+
onModuleDestroy(): void;
|
|
12
|
+
private rollup;
|
|
13
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var GatewayMetricsRollupService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.GatewayMetricsRollupService = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const const_1 = require("../const");
|
|
19
|
+
const http_metric_repository_1 = require("../repository/http-metric.repository");
|
|
20
|
+
const metrics_1 = require("../util/metrics");
|
|
21
|
+
const HOUR_MS = 3_600_000;
|
|
22
|
+
const DEFAULT_ROLLUP_RETENTION_DAYS = 365;
|
|
23
|
+
let GatewayMetricsRollupService = GatewayMetricsRollupService_1 = class GatewayMetricsRollupService {
|
|
24
|
+
constructor(metrics, options) {
|
|
25
|
+
this.metrics = metrics;
|
|
26
|
+
this.logger = new common_1.Logger(GatewayMetricsRollupService_1.name);
|
|
27
|
+
this.enabled = (options?.rollupRetentionDays ?? DEFAULT_ROLLUP_RETENTION_DAYS) > 0;
|
|
28
|
+
}
|
|
29
|
+
onApplicationBootstrap() {
|
|
30
|
+
if (!this.enabled) {
|
|
31
|
+
this.logger.log('[rollup] disabled (rollupRetentionDays <= 0)');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this.timer = setInterval(() => void this.rollup(), HOUR_MS);
|
|
35
|
+
this.timer.unref?.();
|
|
36
|
+
}
|
|
37
|
+
onModuleDestroy() {
|
|
38
|
+
if (this.timer)
|
|
39
|
+
clearInterval(this.timer);
|
|
40
|
+
}
|
|
41
|
+
async rollup() {
|
|
42
|
+
const hourStart = Math.floor(Date.now() / HOUR_MS) * HOUR_MS - HOUR_MS;
|
|
43
|
+
try {
|
|
44
|
+
const points = await this.metrics.points({ from: hourStart, to: hourStart + HOUR_MS - 1 });
|
|
45
|
+
if (!points.length)
|
|
46
|
+
return;
|
|
47
|
+
const rollups = (0, metrics_1.aggregateRollups)(points, HOUR_MS);
|
|
48
|
+
await this.metrics.recordRollups(rollups);
|
|
49
|
+
this.logger.log(`[rollup] ${points.length} point(s) → ${rollups.length} hourly rollup(s) for ${new Date(hourStart).toISOString()}`);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
this.logger.warn(`[rollup] failed: ${e?.message}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
exports.GatewayMetricsRollupService = GatewayMetricsRollupService;
|
|
57
|
+
exports.GatewayMetricsRollupService = GatewayMetricsRollupService = GatewayMetricsRollupService_1 = __decorate([
|
|
58
|
+
(0, common_1.Injectable)(),
|
|
59
|
+
__param(1, (0, common_1.Optional)()),
|
|
60
|
+
__param(1, (0, common_1.Inject)(const_1.RLB_GW_ADMIN_OPTIONS)),
|
|
61
|
+
__metadata("design:paramtypes", [http_metric_repository_1.HttpMetricRepository, Object])
|
|
62
|
+
], GatewayMetricsRollupService);
|
|
63
|
+
//# sourceMappingURL=gateway-metrics-rollup.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-metrics-rollup.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-metrics-rollup.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA+G;AAE/G,oCAAgD;AAChD,iFAA4E;AAC5E,6CAAmD;AAEnD,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAQnC,IAAM,2BAA2B,mCAAjC,MAAM,2BAA2B;IAKtC,YACmB,OAA6B,EACJ,OAAmC;QAD5D,YAAO,GAAP,OAAO,CAAsB;QAL/B,WAAM,GAAG,IAAI,eAAM,CAAC,6BAA2B,CAAC,IAAI,CAAC,CAAC;QAQrE,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,mBAAmB,IAAI,6BAA6B,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,KAAK;YAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAGO,KAAK,CAAC,MAAM;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,OAAO;YAC3B,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,MAAM,eAAe,OAAO,CAAC,MAAM,yBAAyB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACtI,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAqB,CAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF,CAAA;AAtCY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;IAQR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,4BAAoB,CAAC,CAAA;qCADf,6CAAoB;GANrC,2BAA2B,CAsCvC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HttpMetric, HttpMetricPoint, MetricSeriesBucket, TrackCallInput } from '../models';
|
|
1
|
+
import { HttpMetric, HttpMetricPoint, HttpMetricRollup, MetricSeriesBucket, MetricSummary, TrackCallInput } from '../models';
|
|
2
2
|
import { HttpMetricRepository } from '../repository/http-metric.repository';
|
|
3
3
|
export declare class GatewayMetricsService {
|
|
4
4
|
private readonly repo;
|
|
@@ -7,10 +7,11 @@ export declare class GatewayMetricsService {
|
|
|
7
7
|
track(input: TrackCallInput): Promise<void>;
|
|
8
8
|
get(route?: string): Promise<(HttpMetric & {
|
|
9
9
|
avgDurationMs: number;
|
|
10
|
+
errorRate: number;
|
|
10
11
|
})[]>;
|
|
11
|
-
health(): Promise<{
|
|
12
|
-
status: string;
|
|
13
|
-
}>;
|
|
14
12
|
series(bucketMs?: number | string, from?: number | string, to?: number | string, method?: string, route?: string, name?: string): Promise<MetricSeriesBucket[]>;
|
|
15
13
|
points(method?: string, route?: string, from?: number | string, to?: number | string, limit?: number | string): Promise<HttpMetricPoint[]>;
|
|
14
|
+
summary(from?: number | string, to?: number | string, method?: string, route?: string, name?: string, topN?: number | string): Promise<MetricSummary>;
|
|
15
|
+
prometheus(route?: string): Promise<string>;
|
|
16
|
+
rollups(bucketMs?: number | string, from?: number | string, to?: number | string, method?: string, route?: string, name?: string): Promise<HttpMetricRollup[]>;
|
|
16
17
|
}
|
|
@@ -18,6 +18,7 @@ const common_1 = require("@nestjs/common");
|
|
|
18
18
|
const broker_1 = require("../../broker");
|
|
19
19
|
const const_1 = require("../const");
|
|
20
20
|
const http_metric_repository_1 = require("../repository/http-metric.repository");
|
|
21
|
+
const metrics_1 = require("../util/metrics");
|
|
21
22
|
let GatewayMetricsService = GatewayMetricsService_1 = class GatewayMetricsService {
|
|
22
23
|
constructor(repo) {
|
|
23
24
|
this.repo = repo;
|
|
@@ -38,6 +39,7 @@ let GatewayMetricsService = GatewayMetricsService_1 = class GatewayMetricsServic
|
|
|
38
39
|
mode: input.mode,
|
|
39
40
|
status: input.status,
|
|
40
41
|
durationMs: input.durationMs,
|
|
42
|
+
code: input.code,
|
|
41
43
|
});
|
|
42
44
|
}
|
|
43
45
|
catch (error) {
|
|
@@ -47,18 +49,11 @@ let GatewayMetricsService = GatewayMetricsService_1 = class GatewayMetricsServic
|
|
|
47
49
|
async get(route) {
|
|
48
50
|
return this.repo.list(route);
|
|
49
51
|
}
|
|
50
|
-
async health() {
|
|
51
|
-
return { status: 'ok' };
|
|
52
|
-
}
|
|
53
52
|
async series(bucketMs, from, to, method, route, name) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
method,
|
|
59
|
-
route,
|
|
60
|
-
name,
|
|
61
|
-
});
|
|
53
|
+
const f = from != null ? Number(from) : undefined;
|
|
54
|
+
const t = to != null ? Number(to) : undefined;
|
|
55
|
+
const points = await this.repo.points({ method, route, name, from: f, to: t });
|
|
56
|
+
return (0, metrics_1.buildSeries)(points, { bucketMs: Number(bucketMs) || 60_000, from: f, to: t, method, route, name });
|
|
62
57
|
}
|
|
63
58
|
async points(method, route, from, to, limit) {
|
|
64
59
|
return this.repo.points({
|
|
@@ -69,6 +64,25 @@ let GatewayMetricsService = GatewayMetricsService_1 = class GatewayMetricsServic
|
|
|
69
64
|
limit: limit != null ? Number(limit) : undefined,
|
|
70
65
|
});
|
|
71
66
|
}
|
|
67
|
+
async summary(from, to, method, route, name, topN) {
|
|
68
|
+
const points = await this.repo.points({
|
|
69
|
+
method, route, name,
|
|
70
|
+
from: from != null ? Number(from) : undefined,
|
|
71
|
+
to: to != null ? Number(to) : undefined,
|
|
72
|
+
});
|
|
73
|
+
return (0, metrics_1.buildSummary)(points, Number(topN) || 10);
|
|
74
|
+
}
|
|
75
|
+
async prometheus(route) {
|
|
76
|
+
return (0, metrics_1.toPrometheus)(await this.repo.list(route));
|
|
77
|
+
}
|
|
78
|
+
async rollups(bucketMs, from, to, method, route, name) {
|
|
79
|
+
return this.repo.rollupSeries({
|
|
80
|
+
bucketMs: Number(bucketMs) || 3_600_000,
|
|
81
|
+
from: from != null ? Number(from) : undefined,
|
|
82
|
+
to: to != null ? Number(to) : undefined,
|
|
83
|
+
method, route, name,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
72
86
|
};
|
|
73
87
|
exports.GatewayMetricsService = GatewayMetricsService;
|
|
74
88
|
__decorate([
|
|
@@ -85,12 +99,6 @@ __decorate([
|
|
|
85
99
|
__metadata("design:paramtypes", [String]),
|
|
86
100
|
__metadata("design:returntype", Promise)
|
|
87
101
|
], GatewayMetricsService.prototype, "get", null);
|
|
88
|
-
__decorate([
|
|
89
|
-
(0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.health, 'rpc'),
|
|
90
|
-
__metadata("design:type", Function),
|
|
91
|
-
__metadata("design:paramtypes", []),
|
|
92
|
-
__metadata("design:returntype", Promise)
|
|
93
|
-
], GatewayMetricsService.prototype, "health", null);
|
|
94
102
|
__decorate([
|
|
95
103
|
(0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.metricsSeries, 'rpc'),
|
|
96
104
|
__param(0, (0, broker_1.BrokerParam)('body', 'bucketMs')),
|
|
@@ -114,6 +122,37 @@ __decorate([
|
|
|
114
122
|
__metadata("design:paramtypes", [String, String, Object, Object, Object]),
|
|
115
123
|
__metadata("design:returntype", Promise)
|
|
116
124
|
], GatewayMetricsService.prototype, "points", null);
|
|
125
|
+
__decorate([
|
|
126
|
+
(0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.metricsSummary, 'rpc'),
|
|
127
|
+
__param(0, (0, broker_1.BrokerParam)('body', 'from')),
|
|
128
|
+
__param(1, (0, broker_1.BrokerParam)('body', 'to')),
|
|
129
|
+
__param(2, (0, broker_1.BrokerParam)('body', 'method')),
|
|
130
|
+
__param(3, (0, broker_1.BrokerParam)('body', 'route')),
|
|
131
|
+
__param(4, (0, broker_1.BrokerParam)('body', 'name')),
|
|
132
|
+
__param(5, (0, broker_1.BrokerParam)('body', 'topN')),
|
|
133
|
+
__metadata("design:type", Function),
|
|
134
|
+
__metadata("design:paramtypes", [Object, Object, String, String, String, Object]),
|
|
135
|
+
__metadata("design:returntype", Promise)
|
|
136
|
+
], GatewayMetricsService.prototype, "summary", null);
|
|
137
|
+
__decorate([
|
|
138
|
+
(0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.metricsPrometheus, 'rpc'),
|
|
139
|
+
__param(0, (0, broker_1.BrokerParam)('body', 'route')),
|
|
140
|
+
__metadata("design:type", Function),
|
|
141
|
+
__metadata("design:paramtypes", [String]),
|
|
142
|
+
__metadata("design:returntype", Promise)
|
|
143
|
+
], GatewayMetricsService.prototype, "prometheus", null);
|
|
144
|
+
__decorate([
|
|
145
|
+
(0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.metricsRollups, 'rpc'),
|
|
146
|
+
__param(0, (0, broker_1.BrokerParam)('body', 'bucketMs')),
|
|
147
|
+
__param(1, (0, broker_1.BrokerParam)('body', 'from')),
|
|
148
|
+
__param(2, (0, broker_1.BrokerParam)('body', 'to')),
|
|
149
|
+
__param(3, (0, broker_1.BrokerParam)('body', 'method')),
|
|
150
|
+
__param(4, (0, broker_1.BrokerParam)('body', 'route')),
|
|
151
|
+
__param(5, (0, broker_1.BrokerParam)('body', 'name')),
|
|
152
|
+
__metadata("design:type", Function),
|
|
153
|
+
__metadata("design:paramtypes", [Object, Object, Object, String, String, String]),
|
|
154
|
+
__metadata("design:returntype", Promise)
|
|
155
|
+
], GatewayMetricsService.prototype, "rollups", null);
|
|
117
156
|
exports.GatewayMetricsService = GatewayMetricsService = GatewayMetricsService_1 = __decorate([
|
|
118
157
|
(0, common_1.Injectable)(),
|
|
119
158
|
__metadata("design:paramtypes", [http_metric_repository_1.HttpMetricRepository])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-metrics.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-metrics.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,yCAAyD;AACzD,oCAAiE;AAEjE,iFAA4E;
|
|
1
|
+
{"version":3,"file":"gateway-metrics.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-metrics.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import { PaginationModel } from '../../../common';
|
|
2
2
|
import { PathDefinition } from '../../proxy/config/path-definition.config';
|
|
3
|
+
import { RouteSyncLogEntry } from '../models';
|
|
3
4
|
import { HttpPathRepository, StoredHttpPath } from '../repository/http-path.repository';
|
|
5
|
+
import { RouteSyncLogRepository } from '../repository/route-sync-log.repository';
|
|
4
6
|
export declare class GatewayPathService {
|
|
5
7
|
private readonly repo;
|
|
8
|
+
private readonly logs;
|
|
6
9
|
private readonly logger;
|
|
7
|
-
constructor(repo: HttpPathRepository);
|
|
8
|
-
create(model: StoredHttpPath): Promise<StoredHttpPath>;
|
|
9
|
-
update(id: string, model: StoredHttpPath): Promise<StoredHttpPath>;
|
|
10
|
+
constructor(repo: HttpPathRepository, logs: RouteSyncLogRepository);
|
|
11
|
+
create(model: StoredHttpPath, currentUser?: string): Promise<StoredHttpPath>;
|
|
12
|
+
update(id: string, model: StoredHttpPath, currentUser?: string): Promise<StoredHttpPath>;
|
|
10
13
|
private assertNoRouteConflict;
|
|
11
|
-
remove(id: string): Promise<StoredHttpPath>;
|
|
14
|
+
remove(id: string, currentUser?: string): Promise<StoredHttpPath>;
|
|
12
15
|
get(id: string): Promise<StoredHttpPath>;
|
|
13
16
|
list(page?: number, limit?: number): Promise<PaginationModel<StoredHttpPath>>;
|
|
17
|
+
searchRoutes(q?: string, page?: number, limit?: number): Promise<PaginationModel<StoredHttpPath>>;
|
|
14
18
|
export(): Promise<PathDefinition[]>;
|
|
19
|
+
logList(limit?: number): Promise<RouteSyncLogEntry[]>;
|
|
20
|
+
logSearch(actor?: string, service?: string, event?: string, routeKey?: string, from?: number, to?: number, page?: number, limit?: number): Promise<PaginationModel<RouteSyncLogEntry>>;
|
|
21
|
+
private journal;
|
|
15
22
|
}
|