@conduitplatform/module-tools 0.16.0-alpha.8 → 0.16.0-rc.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/dist/ManagedModule.d.ts +1 -0
- package/dist/ManagedModule.js +153 -358
- package/dist/ManagedModule.js.map +1 -1
- package/dist/classes/ConduitActiveSchema.d.ts +12 -9
- package/dist/classes/ConduitActiveSchema.js +43 -52
- package/dist/classes/ConduitActiveSchema.js.map +1 -1
- package/dist/classes/ConduitServiceModule.d.ts +2 -0
- package/dist/classes/ConduitServiceModule.js +65 -112
- package/dist/classes/ConduitServiceModule.js.map +1 -1
- package/dist/classes/ConfigController.js +10 -17
- package/dist/classes/ConfigController.js.map +1 -1
- package/dist/classes/GrpcServer.d.ts +1 -0
- package/dist/classes/GrpcServer.js +93 -172
- package/dist/classes/GrpcServer.js.map +1 -1
- package/dist/helpers/GrpcHelper.js +11 -11
- package/dist/helpers/GrpcHelper.js.map +1 -1
- package/dist/helpers/GrpcToParsedRouterRequest.d.ts +2 -0
- package/dist/helpers/GrpcToParsedRouterRequest.js +19 -0
- package/dist/helpers/GrpcToParsedRouterRequest.js.map +1 -0
- package/dist/helpers/TypeHelpers.d.ts +41 -15
- package/dist/helpers/TypeHelpers.js +57 -119
- package/dist/helpers/TypeHelpers.js.map +1 -1
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.js +1 -0
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/wrapGrpcFunctions.js +14 -15
- package/dist/helpers/wrapGrpcFunctions.js.map +1 -1
- package/dist/interfaces/ModuleLifecycleStage.d.ts +7 -0
- package/dist/interfaces/ModuleLifecycleStage.js +12 -0
- package/dist/interfaces/ModuleLifecycleStage.js.map +1 -0
- package/dist/logging/index.js +80 -180
- package/dist/logging/index.js.map +1 -1
- package/dist/metrics/MetricsServer.d.ts +2 -1
- package/dist/metrics/MetricsServer.js +25 -70
- package/dist/metrics/MetricsServer.js.map +1 -1
- package/dist/metrics/clientMiddleware.js +76 -217
- package/dist/metrics/clientMiddleware.js.map +1 -1
- package/dist/metrics/config/defaults.js +1 -1
- package/dist/metrics/config/defaults.js.map +1 -1
- package/dist/metrics/index.js +53 -89
- package/dist/metrics/index.js.map +1 -1
- package/dist/module.proto +58 -0
- package/dist/routing/ProxyRouteBuilder.js +21 -24
- package/dist/routing/ProxyRouteBuilder.js.map +1 -1
- package/dist/routing/RouteBuilder.d.ts +5 -5
- package/dist/routing/RouteBuilder.js +31 -34
- package/dist/routing/RouteBuilder.js.map +1 -1
- package/dist/routing/RoutingController.d.ts +8 -0
- package/dist/routing/RoutingController.js +25 -0
- package/dist/routing/RoutingController.js.map +1 -0
- package/dist/routing/RoutingManager.d.ts +5 -2
- package/dist/routing/RoutingManager.js +61 -115
- package/dist/routing/RoutingManager.js.map +1 -1
- package/dist/routing/RoutingUtilities.js +3 -3
- package/dist/routing/RoutingUtilities.js.map +1 -1
- package/dist/routing/wrapRouterFunctions.d.ts +5 -5
- package/dist/routing/wrapRouterFunctions.js +30 -39
- package/dist/routing/wrapRouterFunctions.js.map +1 -1
- package/dist/utilities/convictConfigParser.js +2 -2
- package/dist/utilities/convictConfigParser.js.map +1 -1
- package/dist/utilities/initializeSdk.js +9 -11
- package/dist/utilities/initializeSdk.js.map +1 -1
- package/dist/utilities/linearBackoffTimeout.d.ts +1 -1
- package/dist/utilities/linearBackoffTimeout.js +35 -92
- package/dist/utilities/linearBackoffTimeout.js.map +1 -1
- package/dist/utilities/merge.js +2 -2
- package/dist/utilities/merge.js.map +1 -1
- package/package.json +19 -20
|
@@ -1,195 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
14
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
15
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
16
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
17
|
-
function step(op) {
|
|
18
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
19
|
-
while (_) try {
|
|
20
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
21
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
22
|
-
switch (op[0]) {
|
|
23
|
-
case 0: case 1: t = op; break;
|
|
24
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
25
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
26
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
27
|
-
default:
|
|
28
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
29
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
30
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
31
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
32
|
-
if (t[2]) _.ops.pop();
|
|
33
|
-
_.trys.pop(); continue;
|
|
34
|
-
}
|
|
35
|
-
op = body.call(thisArg, _);
|
|
36
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
37
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
41
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
42
|
-
var m = o[Symbol.asyncIterator], i;
|
|
43
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
44
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
45
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
46
|
-
};
|
|
47
|
-
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
48
|
-
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
49
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
50
|
-
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
51
|
-
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
52
|
-
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
53
|
-
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
54
|
-
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
55
|
-
function fulfill(value) { resume("next", value); }
|
|
56
|
-
function reject(value) { resume("throw", value); }
|
|
57
|
-
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
58
|
-
};
|
|
59
|
-
var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {
|
|
60
|
-
var i, p;
|
|
61
|
-
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
62
|
-
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
|
63
|
-
};
|
|
64
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
65
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
66
|
-
if (!m) return o;
|
|
67
|
-
var i = m.call(o), r, ar = [], e;
|
|
68
|
-
try {
|
|
69
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
70
|
-
}
|
|
71
|
-
catch (error) { e = { error: error }; }
|
|
72
|
-
finally {
|
|
73
|
-
try {
|
|
74
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
75
|
-
}
|
|
76
|
-
finally { if (e) throw e.error; }
|
|
77
|
-
}
|
|
78
|
-
return ar;
|
|
79
|
-
};
|
|
80
|
-
var __values = (this && this.__values) || function(o) {
|
|
81
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
82
|
-
if (m) return m.call(o);
|
|
83
|
-
if (o && typeof o.length === "number") return {
|
|
84
|
-
next: function () {
|
|
85
|
-
if (o && i >= o.length) o = void 0;
|
|
86
|
-
return { value: o && o[i++], done: !o };
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
90
|
-
};
|
|
91
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
92
3
|
exports.clientMiddleware = void 0;
|
|
93
4
|
// Forked from nice-grpc-prometheus
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
5
|
+
const abort_controller_x_1 = require("abort-controller-x");
|
|
6
|
+
const nice_grpc_common_1 = require("nice-grpc-common");
|
|
7
|
+
const prom_client_1 = require("prom-client");
|
|
8
|
+
const registry = new prom_client_1.Registry();
|
|
9
|
+
const typeLabel = 'grpc_type';
|
|
10
|
+
const serviceLabel = 'grpc_service';
|
|
11
|
+
const methodLabel = 'grpc_method';
|
|
12
|
+
const pathLabel = 'grpc_path';
|
|
13
|
+
const codeLabel = 'grpc_code';
|
|
103
14
|
/**
|
|
104
15
|
* 1ms, 4ms, 16ms, ..., ~1 hour in seconds
|
|
105
16
|
*/
|
|
106
|
-
|
|
17
|
+
const latencySecondsBuckets = (0, prom_client_1.exponentialBuckets)(0.001, 4, 12);
|
|
107
18
|
function getLabels(method) {
|
|
108
|
-
|
|
109
|
-
var callType = method.requestStream
|
|
19
|
+
const callType = method.requestStream
|
|
110
20
|
? method.responseStream
|
|
111
21
|
? 'bidi_stream'
|
|
112
22
|
: 'client_stream'
|
|
113
23
|
: method.responseStream
|
|
114
24
|
? 'server_stream'
|
|
115
25
|
: 'unary';
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
26
|
+
const { path } = method;
|
|
27
|
+
const [serviceName, methodName] = path.split('/').slice(1);
|
|
28
|
+
return {
|
|
29
|
+
[typeLabel]: callType,
|
|
30
|
+
[serviceLabel]: serviceName,
|
|
31
|
+
[methodLabel]: methodName,
|
|
32
|
+
[pathLabel]: path,
|
|
33
|
+
};
|
|
124
34
|
}
|
|
125
|
-
function incrementStreamMessagesCounter(iterable, counter) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
switch (_b.label) {
|
|
131
|
-
case 0:
|
|
132
|
-
_b.trys.push([0, 7, 8, 13]);
|
|
133
|
-
iterable_1 = __asyncValues(iterable);
|
|
134
|
-
_b.label = 1;
|
|
135
|
-
case 1: return [4 /*yield*/, __await(iterable_1.next())];
|
|
136
|
-
case 2:
|
|
137
|
-
if (!(iterable_1_1 = _b.sent(), !iterable_1_1.done)) return [3 /*break*/, 6];
|
|
138
|
-
item = iterable_1_1.value;
|
|
139
|
-
counter.inc();
|
|
140
|
-
return [4 /*yield*/, __await(item)];
|
|
141
|
-
case 3: return [4 /*yield*/, _b.sent()];
|
|
142
|
-
case 4:
|
|
143
|
-
_b.sent();
|
|
144
|
-
_b.label = 5;
|
|
145
|
-
case 5: return [3 /*break*/, 1];
|
|
146
|
-
case 6: return [3 /*break*/, 13];
|
|
147
|
-
case 7:
|
|
148
|
-
e_1_1 = _b.sent();
|
|
149
|
-
e_1 = { error: e_1_1 };
|
|
150
|
-
return [3 /*break*/, 13];
|
|
151
|
-
case 8:
|
|
152
|
-
_b.trys.push([8, , 11, 12]);
|
|
153
|
-
if (!(iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return))) return [3 /*break*/, 10];
|
|
154
|
-
return [4 /*yield*/, __await(_a.call(iterable_1))];
|
|
155
|
-
case 9:
|
|
156
|
-
_b.sent();
|
|
157
|
-
_b.label = 10;
|
|
158
|
-
case 10: return [3 /*break*/, 12];
|
|
159
|
-
case 11:
|
|
160
|
-
if (e_1) throw e_1.error;
|
|
161
|
-
return [7 /*endfinally*/];
|
|
162
|
-
case 12: return [7 /*endfinally*/];
|
|
163
|
-
case 13: return [2 /*return*/];
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
});
|
|
35
|
+
async function* incrementStreamMessagesCounter(iterable, counter) {
|
|
36
|
+
for await (const item of iterable) {
|
|
37
|
+
counter.inc();
|
|
38
|
+
yield item;
|
|
39
|
+
}
|
|
167
40
|
}
|
|
168
|
-
|
|
41
|
+
const clientStartedMetric = new prom_client_1.Counter({
|
|
169
42
|
registers: [registry],
|
|
170
43
|
name: 'conduit_grpc_client_started_total',
|
|
171
44
|
help: 'Total number of RPCs started on the client.',
|
|
172
45
|
labelNames: [typeLabel, serviceLabel, methodLabel, pathLabel],
|
|
173
46
|
});
|
|
174
|
-
|
|
47
|
+
const clientHandledMetric = new prom_client_1.Counter({
|
|
175
48
|
registers: [registry],
|
|
176
49
|
name: 'conduit_grpc_client_handled_total',
|
|
177
50
|
help: 'Total number of RPCs completed on the client, regardless of success or failure.',
|
|
178
51
|
labelNames: [typeLabel, serviceLabel, methodLabel, pathLabel, codeLabel],
|
|
179
52
|
});
|
|
180
|
-
|
|
53
|
+
const clientStreamMsgReceivedMetric = new prom_client_1.Counter({
|
|
181
54
|
registers: [registry],
|
|
182
55
|
name: 'conduit_grpc_client_msg_received_total',
|
|
183
56
|
help: 'Total number of RPC stream messages received by the client.',
|
|
184
57
|
labelNames: [typeLabel, serviceLabel, methodLabel, pathLabel],
|
|
185
58
|
});
|
|
186
|
-
|
|
59
|
+
const clientStreamMsgSentMetric = new prom_client_1.Counter({
|
|
187
60
|
registers: [registry],
|
|
188
61
|
name: 'conduit_grpc_client_msg_sent_total',
|
|
189
62
|
help: 'Total number of gRPC stream messages sent by the client.',
|
|
190
63
|
labelNames: [typeLabel, serviceLabel, methodLabel, pathLabel],
|
|
191
64
|
});
|
|
192
|
-
|
|
65
|
+
const clientHandlingSecondsMetric = new prom_client_1.Histogram({
|
|
193
66
|
registers: [registry],
|
|
194
67
|
name: 'grpc_client_handling_seconds',
|
|
195
68
|
help: 'Histogram of response latency (seconds) of the gRPC until it is finished by the application.',
|
|
@@ -197,68 +70,54 @@ var clientHandlingSecondsMetric = new prom_client_1.Histogram({
|
|
|
197
70
|
buckets: latencySecondsBuckets,
|
|
198
71
|
});
|
|
199
72
|
function clientMiddleware() {
|
|
200
|
-
return function prometheusClientMiddlewareGenerator(call, options) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
status = nice_grpc_common_1.Status.UNKNOWN;
|
|
249
|
-
}
|
|
250
|
-
throw err_1;
|
|
251
|
-
case 11:
|
|
252
|
-
if (!settled) {
|
|
253
|
-
status = nice_grpc_common_1.Status.CANCELLED;
|
|
254
|
-
}
|
|
255
|
-
stopTimer((_a = {}, _a[codeLabel] = nice_grpc_common_1.Status[status], _a));
|
|
256
|
-
clientHandledMetric.inc(__assign(__assign({}, labels), (_b = {}, _b[codeLabel] = nice_grpc_common_1.Status[status], _b)));
|
|
257
|
-
return [7 /*endfinally*/];
|
|
258
|
-
case 12: return [2 /*return*/];
|
|
259
|
-
}
|
|
73
|
+
return async function* prometheusClientMiddlewareGenerator(call, options) {
|
|
74
|
+
const labels = getLabels(call.method);
|
|
75
|
+
clientStartedMetric.inc(labels);
|
|
76
|
+
const stopTimer = clientHandlingSecondsMetric.startTimer(labels);
|
|
77
|
+
let settled = false;
|
|
78
|
+
let status = nice_grpc_common_1.Status.OK;
|
|
79
|
+
try {
|
|
80
|
+
let request;
|
|
81
|
+
if (!call.requestStream) {
|
|
82
|
+
request = call.request;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
request = incrementStreamMessagesCounter(call.request, clientStreamMsgSentMetric.labels(labels));
|
|
86
|
+
}
|
|
87
|
+
if (!call.responseStream) {
|
|
88
|
+
const response = yield* call.next(request, options);
|
|
89
|
+
settled = true;
|
|
90
|
+
return response;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
yield* incrementStreamMessagesCounter(call.next(request, options), clientStreamMsgReceivedMetric.labels(labels));
|
|
94
|
+
settled = true;
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
settled = true;
|
|
100
|
+
if (err instanceof nice_grpc_common_1.ClientError) {
|
|
101
|
+
status = err.code;
|
|
102
|
+
}
|
|
103
|
+
else if ((0, abort_controller_x_1.isAbortError)(err)) {
|
|
104
|
+
status = nice_grpc_common_1.Status.ABORTED;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
status = nice_grpc_common_1.Status.UNKNOWN;
|
|
108
|
+
}
|
|
109
|
+
throw err;
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
if (!settled) {
|
|
113
|
+
status = nice_grpc_common_1.Status.CANCELLED;
|
|
114
|
+
}
|
|
115
|
+
stopTimer({ [codeLabel]: nice_grpc_common_1.Status[status] });
|
|
116
|
+
clientHandledMetric.inc({
|
|
117
|
+
...labels,
|
|
118
|
+
[codeLabel]: nice_grpc_common_1.Status[status],
|
|
260
119
|
});
|
|
261
|
-
}
|
|
120
|
+
}
|
|
262
121
|
};
|
|
263
122
|
}
|
|
264
123
|
exports.clientMiddleware = clientMiddleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientMiddleware.js","sourceRoot":"","sources":["../../src/metrics/clientMiddleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clientMiddleware.js","sourceRoot":"","sources":["../../src/metrics/clientMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
const grpc_sdk_1 = require("@conduitplatform/grpc-sdk");
|
|
4
4
|
exports.default = {
|
|
5
5
|
internalGrpcRequests: {
|
|
6
6
|
type: grpc_sdk_1.MetricType.Counter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/metrics/config/defaults.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/metrics/config/defaults.ts"],"names":[],"mappings":";;AAAA,wDAAuD;AAEvD,kBAAe;IACb,oBAAoB,EAAE;QACpB,IAAI,EAAE,qBAAU,CAAC,OAAO;QACxB,MAAM,EAAE;YACN,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,6DAA6D;SACpE;KACF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,qBAAU,CAAC,OAAO;QACxB,MAAM,EAAE;YACN,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,qDAAqD;SAC5D;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,qBAAU,CAAC,OAAO;QACxB,MAAM,EAAE;YACN,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,oDAAoD;SAC3D;KACF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,qBAAU,CAAC,OAAO;QACxB,MAAM,EAAE;YACN,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,+CAA+C;SACtD;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,qBAAU,CAAC,OAAO;QACxB,MAAM,EAAE;YACN,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,8CAA8C;SACrD;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,qBAAU,CAAC,KAAK;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,uCAAuC;SAC9C;KACF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,qBAAU,CAAC,KAAK;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,gDAAgD;SACvD;KACF;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,qBAAU,CAAC,KAAK;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,oCAAoC;YAC1C,IAAI,EAAE,sDAAsD;SAC7D;KACF;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,qBAAU,CAAC,KAAK;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,qCAAqC;YAC3C,IAAI,EAAE,uDAAuD;SAC9D;KACF;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,qBAAU,CAAC,OAAO;QACxB,MAAM,EAAE;YACN,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,gDAAgD;YACtD,UAAU,EAAE,CAAC,SAAS,CAAC;SACxB;KACF;IACD,yBAAyB,EAAE;QACzB,IAAI,EAAE,qBAAU,CAAC,OAAO;QACxB,MAAM,EAAE;YACN,IAAI,EAAE,oCAAoC;YAC1C,IAAI,EAAE,sDAAsD;YAC5D,UAAU,EAAE,CAAC,SAAS,CAAC;SACxB;KACF;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,qBAAU,CAAC,OAAO;QACxB,MAAM,EAAE;YACN,IAAI,EAAE,qCAAqC;YAC3C,IAAI,EAAE,wDAAwD;YAC9D,UAAU,EAAE,CAAC,SAAS,CAAC;SACxB;KACF;CACF,CAAC"}
|
package/dist/metrics/index.js
CHANGED
|
@@ -1,37 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __values = (this && this.__values) || function(o) {
|
|
14
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
15
|
-
if (m) return m.call(o);
|
|
16
|
-
if (o && typeof o.length === "number") return {
|
|
17
|
-
next: function () {
|
|
18
|
-
if (o && i >= o.length) o = void 0;
|
|
19
|
-
return { value: o && o[i++], done: !o };
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
23
|
-
};
|
|
24
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
25
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
4
|
};
|
|
27
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
6
|
exports.ConduitMetrics = void 0;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
7
|
+
const prom_client_1 = require("prom-client");
|
|
8
|
+
const MetricsServer_1 = require("./MetricsServer");
|
|
9
|
+
const defaults_1 = __importDefault(require("./config/defaults"));
|
|
10
|
+
const grpc_sdk_1 = require("@conduitplatform/grpc-sdk");
|
|
11
|
+
class ConduitMetrics {
|
|
12
|
+
constructor(moduleName, instance) {
|
|
35
13
|
this.moduleName = moduleName;
|
|
36
14
|
this.instance = instance;
|
|
37
15
|
this._registry = new prom_client_1.Registry();
|
|
@@ -43,26 +21,15 @@ var ConduitMetrics = /** @class */ (function () {
|
|
|
43
21
|
this._httpServer = new MetricsServer_1.MetricsServer(moduleName, instance, this._registry);
|
|
44
22
|
this._httpServer.initialize();
|
|
45
23
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
for (var _b = __values(Object.values(defaults_1.default)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
50
|
-
var metric = _c.value;
|
|
51
|
-
this.registerMetric(metric.type, metric.config);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
55
|
-
finally {
|
|
56
|
-
try {
|
|
57
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
58
|
-
}
|
|
59
|
-
finally { if (e_1) throw e_1.error; }
|
|
24
|
+
initializeDefaultMetrics() {
|
|
25
|
+
for (const metric of Object.values(defaults_1.default)) {
|
|
26
|
+
this.registerMetric(metric.type, metric.config);
|
|
60
27
|
}
|
|
61
|
-
}
|
|
62
|
-
|
|
28
|
+
}
|
|
29
|
+
registerMetric(type, config) {
|
|
63
30
|
if (this.getMetric(config.name))
|
|
64
31
|
return;
|
|
65
|
-
|
|
32
|
+
const metricConfig = JSON.parse(JSON.stringify(config));
|
|
66
33
|
metricConfig.name = this.addPrefix(config.name);
|
|
67
34
|
switch (type) {
|
|
68
35
|
case grpc_sdk_1.MetricType.Counter:
|
|
@@ -78,8 +45,8 @@ var ConduitMetrics = /** @class */ (function () {
|
|
|
78
45
|
this.createSummary(metricConfig);
|
|
79
46
|
break;
|
|
80
47
|
}
|
|
81
|
-
}
|
|
82
|
-
|
|
48
|
+
}
|
|
49
|
+
collectDefaultMetrics() {
|
|
83
50
|
(0, prom_client_1.collectDefaultMetrics)({
|
|
84
51
|
register: this._registry,
|
|
85
52
|
prefix: 'conduit_',
|
|
@@ -89,64 +56,61 @@ var ConduitMetrics = /** @class */ (function () {
|
|
|
89
56
|
instance_instance: this.instance,
|
|
90
57
|
},
|
|
91
58
|
});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return new prom_client_1.Counter(
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return new prom_client_1.Summary(
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return new prom_client_1.Histogram(
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return new prom_client_1.Gauge(
|
|
104
|
-
}
|
|
105
|
-
|
|
59
|
+
}
|
|
60
|
+
createCounter(config) {
|
|
61
|
+
return new prom_client_1.Counter({ ...config, registers: [this._registry] });
|
|
62
|
+
}
|
|
63
|
+
createSummary(config) {
|
|
64
|
+
return new prom_client_1.Summary({ ...config, registers: [this._registry] });
|
|
65
|
+
}
|
|
66
|
+
createHistogram(config) {
|
|
67
|
+
return new prom_client_1.Histogram({ ...config, registers: [this._registry] });
|
|
68
|
+
}
|
|
69
|
+
createGauge(config) {
|
|
70
|
+
return new prom_client_1.Gauge({ ...config, registers: [this._registry] });
|
|
71
|
+
}
|
|
72
|
+
getMetric(name) {
|
|
106
73
|
return this._registry.getSingleMetric(this.addPrefix(name));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
var metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
|
|
74
|
+
}
|
|
75
|
+
increment(metric, increment = 1, labels) {
|
|
76
|
+
const metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
|
|
111
77
|
if (!(metricInstance instanceof prom_client_1.Counter) && !(metricInstance instanceof prom_client_1.Gauge)) {
|
|
112
|
-
throw new Error(
|
|
78
|
+
throw new Error(`Metric ${metric} is not an incrementable metric`);
|
|
113
79
|
}
|
|
114
80
|
return labels
|
|
115
|
-
? metricInstance.labels(
|
|
81
|
+
? metricInstance.labels({ ...labels }).inc(increment)
|
|
116
82
|
: metricInstance.inc(increment);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
var metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
|
|
83
|
+
}
|
|
84
|
+
decrement(metric, decrement = 1, labels) {
|
|
85
|
+
const metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
|
|
121
86
|
if (!(metricInstance instanceof prom_client_1.Gauge)) {
|
|
122
|
-
throw new Error(
|
|
87
|
+
throw new Error(`Metric ${metric} is not a decrementable metric`);
|
|
123
88
|
}
|
|
124
89
|
return labels
|
|
125
|
-
? metricInstance.labels(
|
|
90
|
+
? metricInstance.labels({ ...labels }).dec(decrement)
|
|
126
91
|
: metricInstance.dec(decrement);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
92
|
+
}
|
|
93
|
+
set(metric, value, labels) {
|
|
94
|
+
const metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
|
|
130
95
|
if (!(metricInstance instanceof prom_client_1.Gauge)) {
|
|
131
|
-
throw new Error(
|
|
96
|
+
throw new Error(`Metric ${metric} is not a Gauge`);
|
|
132
97
|
}
|
|
133
98
|
return labels
|
|
134
|
-
? metricInstance.labels(
|
|
99
|
+
? metricInstance.labels({ ...labels }).set(value)
|
|
135
100
|
: metricInstance.set(value);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
101
|
+
}
|
|
102
|
+
observe(metric, value, labels) {
|
|
103
|
+
const metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
|
|
139
104
|
if (!(metricInstance instanceof prom_client_1.Histogram) && !(metricInstance instanceof prom_client_1.Summary)) {
|
|
140
|
-
throw new Error(
|
|
105
|
+
throw new Error(`Metric ${metric} is not a Histogram`);
|
|
141
106
|
}
|
|
142
107
|
return labels
|
|
143
|
-
? metricInstance.labels(
|
|
108
|
+
? metricInstance.labels({ ...labels }).observe(value)
|
|
144
109
|
: metricInstance.observe(value);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
}());
|
|
110
|
+
}
|
|
111
|
+
addPrefix(metric) {
|
|
112
|
+
return `conduit_${metric}`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
151
115
|
exports.ConduitMetrics = ConduitMetrics;
|
|
152
116
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":";;;;;;AAAA,6CAaqB;AACrB,mDAAgD;AAChD,iEAA+C;AAC/C,wDAAwE;AAExE,MAAa,cAAc;IAMzB,YAAY,UAAkB,EAAE,QAAgB;QAC9C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;YAC9B,WAAW,EAAE,IAAI,CAAC,UAAU;YAC5B,eAAe,EAAE,IAAI,CAAC,QAAQ;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,6BAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,wBAAwB;QACtB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAc,CAAC,EAAE;YAClD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAA6B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;SAC1E;IACH,CAAC;IAED,cAAc,CAAC,IAAgB,EAAE,MAAmC;QAClE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,QAAQ,IAAI,EAAE;YACZ,KAAK,qBAAU,CAAC,OAAO;gBACrB,IAAI,CAAC,aAAa,CAAC,YAAyC,CAAC,CAAC;gBAC9D,MAAM;YACR,KAAK,qBAAU,CAAC,KAAK;gBACnB,IAAI,CAAC,WAAW,CAAC,YAAuC,CAAC,CAAC;gBAC1D,MAAM;YACR,KAAK,qBAAU,CAAC,SAAS;gBACvB,IAAI,CAAC,eAAe,CAAC,YAA2C,CAAC,CAAC;gBAClE,MAAM;YACR,KAAK,qBAAU,CAAC,OAAO;gBACrB,IAAI,CAAC,aAAa,CAAC,YAAyC,CAAC,CAAC;gBAC9D,MAAM;SACT;IACH,CAAC;IAED,qBAAqB;QACnB,IAAA,mCAAqB,EAAC;YACpB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,MAAM,EAAE,UAAU;YAClB,sBAAsB;YACtB,MAAM,EAAE;gBACN,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,iBAAiB,EAAE,IAAI,CAAC,QAAQ;aACjC;SACF,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,MAAiC;QAC7C,OAAO,IAAI,qBAAO,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,aAAa,CAAC,MAAiC;QAC7C,OAAO,IAAI,qBAAO,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,eAAe,CAAC,MAAmC;QACjD,OAAO,IAAI,uBAAS,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,WAAW,CAAC,MAA+B;QACzC,OAAO,IAAI,mBAAK,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,YAAoB,CAAC,EAAE,MAAyB;QACxE,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,CAAC,cAAc,YAAY,qBAAO,CAAC,IAAI,CAAC,CAAC,cAAc,YAAY,mBAAK,CAAC,EAAE;YAC9E,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,iCAAiC,CAAC,CAAC;SACpE;QACD,OAAO,MAAM;YACX,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;YACrD,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,YAAoB,CAAC,EAAE,MAAyB;QACxE,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,CAAC,cAAc,YAAY,mBAAK,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,gCAAgC,CAAC,CAAC;SACnE;QACD,OAAO,MAAM;YACX,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;YACrD,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,MAAyB;QAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,CAAC,cAAc,YAAY,mBAAK,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,iBAAiB,CAAC,CAAC;SACpD;QACD,OAAO,MAAM;YACX,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YACjD,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,KAAa,EAAE,MAAyB;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,CAAC,cAAc,YAAY,uBAAS,CAAC,IAAI,CAAC,CAAC,cAAc,YAAY,qBAAO,CAAC,EAAE;YAClF,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,qBAAqB,CAAC,CAAC;SACxD;QACD,OAAO,MAAM;YACX,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;YACrD,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAEO,SAAS,CAAC,MAAc;QAC9B,OAAO,WAAW,MAAM,EAAE,CAAC;IAC7B,CAAC;CACF;AAxHD,wCAwHC"}
|