@webda/core 2.3.0 → 2.4.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/lib/application.d.ts +12 -0
- package/lib/application.js.map +1 -1
- package/lib/core.d.ts +26 -3
- package/lib/core.js +53 -2
- package/lib/core.js.map +1 -1
- package/lib/core.spec.js +1 -1
- package/lib/core.spec.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/models/coremodel.d.ts +24 -1
- package/lib/models/coremodel.js +66 -1
- package/lib/models/coremodel.js.map +1 -1
- package/lib/models/coremodel.spec.js +58 -1
- package/lib/models/coremodel.spec.js.map +1 -1
- package/lib/queues/memoryqueue.spec.js +4 -0
- package/lib/queues/memoryqueue.spec.js.map +1 -1
- package/lib/queues/queueservice.d.ts +8 -0
- package/lib/queues/queueservice.js +28 -0
- package/lib/queues/queueservice.js.map +1 -1
- package/lib/services/authentication.d.ts +14 -2
- package/lib/services/authentication.js +105 -70
- package/lib/services/authentication.js.map +1 -1
- package/lib/services/binary.d.ts +11 -1
- package/lib/services/binary.js +28 -1
- package/lib/services/binary.js.map +1 -1
- package/lib/services/fileconfiguration.js +9 -3
- package/lib/services/fileconfiguration.js.map +1 -1
- package/lib/services/fileconfiguration.spec.js +43 -0
- package/lib/services/fileconfiguration.spec.js.map +1 -1
- package/lib/services/mailer.d.ts +9 -1
- package/lib/services/mailer.js +30 -7
- package/lib/services/mailer.js.map +1 -1
- package/lib/services/mailer.spec.js +5 -0
- package/lib/services/mailer.spec.js.map +1 -1
- package/lib/services/oauth.d.ts +8 -1
- package/lib/services/oauth.js +11 -0
- package/lib/services/oauth.js.map +1 -1
- package/lib/services/prometheus.d.ts +97 -0
- package/lib/services/prometheus.js +151 -0
- package/lib/services/prometheus.js.map +1 -0
- package/lib/services/prometheus.spec.d.ts +1 -0
- package/lib/services/prometheus.spec.js +57 -0
- package/lib/services/prometheus.spec.js.map +1 -0
- package/lib/services/proxy.d.ts +11 -0
- package/lib/services/proxy.js +47 -2
- package/lib/services/proxy.js.map +1 -1
- package/lib/services/resource.js +2 -1
- package/lib/services/resource.js.map +1 -1
- package/lib/services/resource.spec.js +5 -5
- package/lib/services/service.d.ts +16 -1
- package/lib/services/service.js +18 -0
- package/lib/services/service.js.map +1 -1
- package/lib/stores/aliasstore.d.ts +1 -0
- package/lib/stores/aliasstore.js +1 -0
- package/lib/stores/aliasstore.js.map +1 -1
- package/lib/stores/file.js +1 -0
- package/lib/stores/file.js.map +1 -1
- package/lib/stores/file.spec.js +9 -0
- package/lib/stores/file.spec.js.map +1 -1
- package/lib/stores/memory.spec.js +2 -2
- package/lib/stores/memory.spec.js.map +1 -1
- package/lib/stores/store.d.ts +8 -13
- package/lib/stores/store.js +53 -41
- package/lib/stores/store.js.map +1 -1
- package/lib/stores/store.spec.js +8 -0
- package/lib/stores/store.spec.js.map +1 -1
- package/lib/test.js +8 -0
- package/lib/test.js.map +1 -1
- package/lib/utils/context.d.ts +6 -1
- package/lib/utils/context.js +10 -3
- package/lib/utils/context.js.map +1 -1
- package/lib/utils/serializers.js +1 -1
- package/lib/utils/serializers.js.map +1 -1
- package/lib/utils/serializers.spec.js +9 -1
- package/lib/utils/serializers.spec.js.map +1 -1
- package/package.json +4 -3
- package/test/config-file-missing-file-no-default.json +44 -0
- package/test/config-file-missing-file.json +57 -0
- package/test/config-invitation.json +3 -1
- package/test/config.json +3 -0
- package/webda.module.json +202 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as http from "http";
|
|
3
|
+
import { Counter, Gauge, Histogram } from "prom-client";
|
|
4
|
+
import { WebContext } from "../utils/context.js";
|
|
5
|
+
import { Service, ServiceParameters } from "./service.js";
|
|
6
|
+
export declare class PrometheusParameters extends ServiceParameters {
|
|
7
|
+
/**
|
|
8
|
+
* If defined will launch another http server to serve the scaper
|
|
9
|
+
*/
|
|
10
|
+
portNumber?: number;
|
|
11
|
+
/**
|
|
12
|
+
* If defined along with portNumber used to bind specific address
|
|
13
|
+
* for dedicated http server
|
|
14
|
+
*/
|
|
15
|
+
bind?: string;
|
|
16
|
+
/**
|
|
17
|
+
* @default /metrics
|
|
18
|
+
*/
|
|
19
|
+
url?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Include NodeJS engine metrics
|
|
22
|
+
*
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
25
|
+
includeNodeMetrics: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Include request served by Webda
|
|
28
|
+
*
|
|
29
|
+
* It should generate common http_* metrics
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
includeRequestMetrics: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Do not partition histogram with requests labels
|
|
35
|
+
*/
|
|
36
|
+
partitionHistogram?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Labels to add
|
|
39
|
+
*/
|
|
40
|
+
labels?: {
|
|
41
|
+
[key: string]: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Prefix to add to metrics
|
|
45
|
+
*/
|
|
46
|
+
prefix?: string;
|
|
47
|
+
constructor(params: any);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* This service expose metrics to Prometheus
|
|
51
|
+
*
|
|
52
|
+
* It can use the same server or a dedicated http server
|
|
53
|
+
* We do not currently support push-gateway
|
|
54
|
+
*
|
|
55
|
+
* @WebdaModda
|
|
56
|
+
*/
|
|
57
|
+
export declare class PrometheusService<T extends PrometheusParameters = PrometheusParameters> extends Service<T> {
|
|
58
|
+
/**
|
|
59
|
+
* Metrics registered
|
|
60
|
+
*/
|
|
61
|
+
private static requestMetricsRegistered;
|
|
62
|
+
/**
|
|
63
|
+
* Metrics registered
|
|
64
|
+
*/
|
|
65
|
+
private static nodeMetricsRegistered;
|
|
66
|
+
metrics: {
|
|
67
|
+
http_request_total: Counter;
|
|
68
|
+
http_request_in_flight: Gauge;
|
|
69
|
+
http_request_duration_milliseconds: Histogram;
|
|
70
|
+
http_request_sizes: Histogram;
|
|
71
|
+
http_response_sizes: Histogram;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* If we expose prometheus on another port
|
|
75
|
+
*/
|
|
76
|
+
http?: http.Server;
|
|
77
|
+
/**
|
|
78
|
+
*
|
|
79
|
+
* @param params
|
|
80
|
+
* @returns
|
|
81
|
+
*/
|
|
82
|
+
loadParameters(params: any): PrometheusParameters;
|
|
83
|
+
/**
|
|
84
|
+
* @override
|
|
85
|
+
*/
|
|
86
|
+
initMetrics(): void;
|
|
87
|
+
/**
|
|
88
|
+
*
|
|
89
|
+
* @returns
|
|
90
|
+
*/
|
|
91
|
+
resolve(): this;
|
|
92
|
+
/**
|
|
93
|
+
* Serve the metrics in a webda context
|
|
94
|
+
* @param ctx
|
|
95
|
+
*/
|
|
96
|
+
serveMetrics(ctx: WebContext): Promise<void>;
|
|
97
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import * as http from "http";
|
|
2
|
+
import { collectDefaultMetrics, Counter, Gauge, Histogram, register } from "prom-client";
|
|
3
|
+
import { Service, ServiceParameters } from "./service.js";
|
|
4
|
+
export class PrometheusParameters extends ServiceParameters {
|
|
5
|
+
constructor(params) {
|
|
6
|
+
super(params);
|
|
7
|
+
this.url ?? (this.url = "/metrics");
|
|
8
|
+
this.labels ?? (this.labels = {});
|
|
9
|
+
this.includeNodeMetrics ?? (this.includeNodeMetrics = true);
|
|
10
|
+
this.includeRequestMetrics ?? (this.includeRequestMetrics = true);
|
|
11
|
+
this.prefix ?? (this.prefix = "");
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* This service expose metrics to Prometheus
|
|
16
|
+
*
|
|
17
|
+
* It can use the same server or a dedicated http server
|
|
18
|
+
* We do not currently support push-gateway
|
|
19
|
+
*
|
|
20
|
+
* @WebdaModda
|
|
21
|
+
*/
|
|
22
|
+
export class PrometheusService extends Service {
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
* @param params
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
loadParameters(params) {
|
|
29
|
+
return new PrometheusParameters(params);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @override
|
|
33
|
+
*/
|
|
34
|
+
initMetrics() {
|
|
35
|
+
if (this.parameters.includeRequestMetrics) {
|
|
36
|
+
this.metrics = {
|
|
37
|
+
http_request_total: register.getSingleMetric(`${this.parameters.prefix}http_request_total`) ||
|
|
38
|
+
new Counter({
|
|
39
|
+
name: `${this.parameters.prefix}http_request_total`,
|
|
40
|
+
help: "metric_help",
|
|
41
|
+
labelNames: ["method", "statuscode", "handler"]
|
|
42
|
+
}),
|
|
43
|
+
http_request_in_flight: register.getSingleMetric(`${this.parameters.prefix}http_request_in_flight`) ||
|
|
44
|
+
new Gauge({
|
|
45
|
+
name: `${this.parameters.prefix}http_request_in_flight`,
|
|
46
|
+
help: "in flight"
|
|
47
|
+
}),
|
|
48
|
+
http_request_duration_milliseconds: register.getSingleMetric(`${this.parameters.prefix}http_request_duration_milliseconds`) ||
|
|
49
|
+
new Histogram({
|
|
50
|
+
name: `${this.parameters.prefix}http_request_duration_milliseconds`,
|
|
51
|
+
labelNames: ["method", "statuscode", "handler"],
|
|
52
|
+
help: "ms"
|
|
53
|
+
}),
|
|
54
|
+
http_request_sizes: register.getSingleMetric(`${this.parameters.prefix}http_request_sizes`) ||
|
|
55
|
+
new Histogram({
|
|
56
|
+
name: `${this.parameters.prefix}http_request_sizes`,
|
|
57
|
+
labelNames: ["method", "statuscode", "handler"],
|
|
58
|
+
help: "o"
|
|
59
|
+
}),
|
|
60
|
+
http_response_sizes: register.getSingleMetric(`${this.parameters.prefix}http_response_sizes`) ||
|
|
61
|
+
new Histogram({
|
|
62
|
+
name: `${this.parameters.prefix}http_response_sizes`,
|
|
63
|
+
labelNames: ["method", "statuscode", "handler"],
|
|
64
|
+
help: "o"
|
|
65
|
+
})
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
if (this.parameters.includeNodeMetrics && !PrometheusService.nodeMetricsRegistered) {
|
|
69
|
+
PrometheusService.nodeMetricsRegistered = true;
|
|
70
|
+
collectDefaultMetrics({
|
|
71
|
+
register,
|
|
72
|
+
labels: this.parameters.labels,
|
|
73
|
+
prefix: this.parameters.prefix
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
*
|
|
79
|
+
* @returns
|
|
80
|
+
*/
|
|
81
|
+
resolve() {
|
|
82
|
+
super.resolve();
|
|
83
|
+
register.setDefaultLabels(this.parameters.labels);
|
|
84
|
+
if (!this.parameters.portNumber) {
|
|
85
|
+
this.addRoute(this.parameters.url || "/metrics", ["GET"], this.serveMetrics);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.http = http
|
|
89
|
+
.createServer(async (req, res) => {
|
|
90
|
+
if (req.method === "GET" && req.url === this.parameters.url) {
|
|
91
|
+
res.writeHead(200, { "Content-Type": register.contentType });
|
|
92
|
+
res.write(await register.metrics());
|
|
93
|
+
res.end();
|
|
94
|
+
}
|
|
95
|
+
res.writeHead(404);
|
|
96
|
+
res.end();
|
|
97
|
+
})
|
|
98
|
+
.listen(this.parameters.portNumber, this.parameters.bind);
|
|
99
|
+
}
|
|
100
|
+
// Only register on events if we need to get metrics
|
|
101
|
+
if (this.parameters.includeRequestMetrics) {
|
|
102
|
+
this.getWebda().on("Webda.Request", ({ context }) => {
|
|
103
|
+
if (context.getHttpContext().getRelativeUri() === this.parameters.url) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
this.metrics.http_request_in_flight.inc();
|
|
107
|
+
context.setExtension("prometheus", {
|
|
108
|
+
timer: this.metrics.http_request_duration_milliseconds.startTimer()
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
this.getWebda().on("Webda.Result", ({ context }) => {
|
|
112
|
+
if (context.getHttpContext().getRelativeUri() === this.parameters.url) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const staticLabels = this.parameters.labels || {};
|
|
116
|
+
const labels = {
|
|
117
|
+
handler: context.getHttpContext().getRelativeUri(),
|
|
118
|
+
method: context.getHttpContext().getMethod(),
|
|
119
|
+
statuscode: context.statusCode,
|
|
120
|
+
...staticLabels
|
|
121
|
+
};
|
|
122
|
+
context
|
|
123
|
+
.getExtension("prometheus")
|
|
124
|
+
.timer(this.parameters.partitionHistogram ? labels : staticLabels);
|
|
125
|
+
this.metrics.http_request_total.inc(labels, 1);
|
|
126
|
+
if (["PUT", "POST", "PATCH"].includes(context.getHttpContext().getMethod())) {
|
|
127
|
+
this.metrics.http_request_sizes.observe(this.parameters.partitionHistogram ? labels : staticLabels, Number.parseInt(context.getHttpContext().getHeaders()["content-length"] || "0"));
|
|
128
|
+
this.metrics.http_response_sizes.observe(this.parameters.partitionHistogram ? labels : staticLabels, Number.parseInt(context.getResponseHeaders["content-length"] || "0"));
|
|
129
|
+
}
|
|
130
|
+
this.metrics.http_request_in_flight.dec(staticLabels, 1);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return this;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Serve the metrics in a webda context
|
|
137
|
+
* @param ctx
|
|
138
|
+
*/
|
|
139
|
+
async serveMetrics(ctx) {
|
|
140
|
+
ctx.write(await register.metrics());
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Metrics registered
|
|
145
|
+
*/
|
|
146
|
+
PrometheusService.requestMetricsRegistered = false;
|
|
147
|
+
/**
|
|
148
|
+
* Metrics registered
|
|
149
|
+
*/
|
|
150
|
+
PrometheusService.nodeMetricsRegistered = false;
|
|
151
|
+
//# sourceMappingURL=prometheus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prometheus.js","sourceRoot":"","sources":["../../src/services/prometheus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEzF,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAMvD,MAAM,OAAO,oBAAqB,SAAQ,iBAAiB;IAyCzD,YAAY,MAAW;QACrB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,GAAG,KAAR,IAAI,CAAC,GAAG,GAAK,UAAU,EAAC;QACxB,IAAI,CAAC,MAAM,KAAX,IAAI,CAAC,MAAM,GAAK,EAAE,EAAC;QACnB,IAAI,CAAC,kBAAkB,KAAvB,IAAI,CAAC,kBAAkB,GAAK,IAAI,EAAC;QACjC,IAAI,CAAC,qBAAqB,KAA1B,IAAI,CAAC,qBAAqB,GAAK,IAAI,EAAC;QACpC,IAAI,CAAC,MAAM,KAAX,IAAI,CAAC,MAAM,GAAK,EAAE,EAAC;IACrB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAyE,SAAQ,OAAU;IAuBtG;;;;OAIG;IACH,cAAc,CAAC,MAAW;QACxB,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;YACzC,IAAI,CAAC,OAAO,GAAG;gBACb,kBAAkB,EACP,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,oBAAoB,CAAC;oBAChF,IAAI,OAAO,CAAC;wBACV,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,oBAAoB;wBACnD,IAAI,EAAE,aAAa;wBACnB,UAAU,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC;qBAChD,CAAC;gBACJ,sBAAsB,EACb,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,wBAAwB,CAAC;oBAClF,IAAI,KAAK,CAAC;wBACR,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,wBAAwB;wBACvD,IAAI,EAAE,WAAW;qBAClB,CAAC;gBACJ,kCAAkC,EACrB,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,oCAAoC,CAAC;oBAClG,IAAI,SAAS,CAAC;wBACZ,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,oCAAoC;wBACnE,UAAU,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC;wBAC/C,IAAI,EAAE,IAAI;qBACX,CAAC;gBACJ,kBAAkB,EACL,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,oBAAoB,CAAC;oBAClF,IAAI,SAAS,CAAC;wBACZ,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,oBAAoB;wBACnD,UAAU,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC;wBAC/C,IAAI,EAAE,GAAG;qBACV,CAAC;gBACJ,mBAAmB,EACN,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,qBAAqB,CAAC;oBACnF,IAAI,SAAS,CAAC;wBACZ,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,qBAAqB;wBACpD,UAAU,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC;wBAC/C,IAAI,EAAE,GAAG;qBACV,CAAC;aACL,CAAC;SACH;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE;YAClF,iBAAiB,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAC/C,qBAAqB,CAAC;gBACpB,QAAQ;gBACR,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;gBAC9B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;aAC/B,CAAC,CAAC;SACJ;IACH,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC9E;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAI;iBACb,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;gBAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;oBAC3D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC7D,GAAG,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;oBACpC,GAAG,CAAC,GAAG,EAAE,CAAC;iBACX;gBACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC,CAAC;iBACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC7D;QACD,oDAAoD;QACpD,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;YACzC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBAClD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;oBACrE,OAAO;iBACR;gBACD,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC;gBAC1C,OAAO,CAAC,YAAY,CAAC,YAAY,EAAuB;oBACtD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,kCAAkC,CAAC,UAAU,EAAE;iBACpE,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBACjD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;oBACrE,OAAO;iBACR;gBACD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG;oBACb,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE;oBAClD,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE;oBAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,GAAG,YAAY;iBAChB,CAAC;gBACF,OAAO;qBACJ,YAAY,CAAsB,YAAY,CAAC;qBAC/C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBACrE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;oBAC3E,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CACrC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,EAC1D,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAChF,CAAC;oBACF,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CACtC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,EAC1D,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CACrE,CAAC;iBACH;gBACD,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,GAAe;QAChC,GAAG,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;;AAzJD;;GAEG;AACY,0CAAwB,GAAG,KAAK,CAAC;AAChD;;GAEG;AACY,uCAAqB,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { suite, test } from "@testdeck/mocha";
|
|
8
|
+
import * as assert from "assert";
|
|
9
|
+
import axios from "axios";
|
|
10
|
+
import { Histogram } from "prom-client";
|
|
11
|
+
import { WebdaTest } from "../test.js";
|
|
12
|
+
import { HttpContext } from "../utils/httpcontext.js";
|
|
13
|
+
import { PrometheusService } from "./prometheus.js";
|
|
14
|
+
let PrometheusTest = class PrometheusTest extends WebdaTest {
|
|
15
|
+
async sideServe() {
|
|
16
|
+
let service = new PrometheusService(this.webda, "", {
|
|
17
|
+
portNumber: 9090,
|
|
18
|
+
includeNodeMetrics: false,
|
|
19
|
+
includeRequestMetrics: false
|
|
20
|
+
});
|
|
21
|
+
try {
|
|
22
|
+
await service.resolve().init();
|
|
23
|
+
// Should be listen on 9090 now
|
|
24
|
+
let res = await axios.get("http://localhost:9090/metrics");
|
|
25
|
+
assert.ok(res.data.includes("webda_store_operations_total"));
|
|
26
|
+
await assert.rejects(() => axios.get("http://localhost:9090/metrics2"), /Request failed with status code 404/);
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
service.http?.close();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async normal() {
|
|
33
|
+
let ctx = await this.newContext("toto");
|
|
34
|
+
ctx.setHttpContext(new HttpContext("localhost", "GET", "/version"));
|
|
35
|
+
await this.webda.emitSync("Webda.Request", { context: ctx });
|
|
36
|
+
await this.webda.emitSync("Webda.Result", { context: ctx });
|
|
37
|
+
ctx.setHttpContext(new HttpContext("localhost", "PUT", "/version"));
|
|
38
|
+
await this.webda.emitSync("Webda.Request", { context: ctx });
|
|
39
|
+
await this.webda.emitSync("Webda.Result", { context: ctx });
|
|
40
|
+
await this.execute(ctx, "localhost", "GET", "/metrics");
|
|
41
|
+
await this.webda.emitSync("Webda.Request", { context: ctx });
|
|
42
|
+
await this.webda.emitSync("Webda.Result", { context: ctx });
|
|
43
|
+
this.webda.getGlobalParams().metrics = false;
|
|
44
|
+
// Fake metrics should return 0 for timer
|
|
45
|
+
assert.strictEqual(this.webda.getMetric(Histogram, { name: "test", help: "fake" }).startTimer()(), 0);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
__decorate([
|
|
49
|
+
test
|
|
50
|
+
], PrometheusTest.prototype, "sideServe", null);
|
|
51
|
+
__decorate([
|
|
52
|
+
test
|
|
53
|
+
], PrometheusTest.prototype, "normal", null);
|
|
54
|
+
PrometheusTest = __decorate([
|
|
55
|
+
suite
|
|
56
|
+
], PrometheusTest);
|
|
57
|
+
//# sourceMappingURL=prometheus.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prometheus.spec.js","sourceRoot":"","sources":["../../src/services/prometheus.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/services/proxy.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as http from "http";
|
|
3
|
+
import { Counter, Gauge, Histogram } from "../core.js";
|
|
3
4
|
import { Context } from "../utils/context.js";
|
|
4
5
|
import { Service, ServiceParameters } from "./service.js";
|
|
5
6
|
/**
|
|
@@ -25,6 +26,16 @@ export declare class ProxyParameters extends ServiceParameters {
|
|
|
25
26
|
* @WebdaModda
|
|
26
27
|
*/
|
|
27
28
|
export declare class ProxyService<T extends ProxyParameters = ProxyParameters> extends Service<T> {
|
|
29
|
+
metrics: {
|
|
30
|
+
http_request_total: Counter;
|
|
31
|
+
http_request_in_flight: Gauge;
|
|
32
|
+
http_request_duration_milliseconds: Histogram;
|
|
33
|
+
http_errors: Counter;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* @override
|
|
37
|
+
*/
|
|
38
|
+
initMetrics(): void;
|
|
28
39
|
/**
|
|
29
40
|
* @override
|
|
30
41
|
*/
|
package/lib/services/proxy.js
CHANGED
|
@@ -5,6 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import * as http from "http";
|
|
8
|
+
import { Counter, Gauge, Histogram } from "../core.js";
|
|
8
9
|
import { Route, Service, ServiceParameters } from "./service.js";
|
|
9
10
|
/**
|
|
10
11
|
* Proxy to a backend service
|
|
@@ -17,6 +18,32 @@ export class ProxyParameters extends ServiceParameters {
|
|
|
17
18
|
* @WebdaModda
|
|
18
19
|
*/
|
|
19
20
|
export class ProxyService extends Service {
|
|
21
|
+
/**
|
|
22
|
+
* @override
|
|
23
|
+
*/
|
|
24
|
+
initMetrics() {
|
|
25
|
+
super.initMetrics();
|
|
26
|
+
this.metrics.http_request_total = this.getMetric(Counter, {
|
|
27
|
+
name: "proxy_request_total",
|
|
28
|
+
help: "number of request",
|
|
29
|
+
labelNames: ["method", "statuscode", "handler", "host"]
|
|
30
|
+
});
|
|
31
|
+
this.metrics.http_request_in_flight = this.getMetric(Gauge, {
|
|
32
|
+
name: "proxy_request_in_flight",
|
|
33
|
+
help: "number of request in flight",
|
|
34
|
+
labelNames: ["method", "statuscode", "handler", "host"]
|
|
35
|
+
});
|
|
36
|
+
this.metrics.http_request_duration_milliseconds = this.getMetric(Histogram, {
|
|
37
|
+
name: "proxy_request_duration_milliseconds",
|
|
38
|
+
help: "request duration",
|
|
39
|
+
labelNames: ["method", "statuscode", "handler", "host"]
|
|
40
|
+
});
|
|
41
|
+
this.metrics.http_errors = this.getMetric(Counter, {
|
|
42
|
+
name: "proxy_request_errors",
|
|
43
|
+
help: "request errors",
|
|
44
|
+
labelNames: ["method", "statuscode", "handler", "host"]
|
|
45
|
+
});
|
|
46
|
+
}
|
|
20
47
|
/**
|
|
21
48
|
* @override
|
|
22
49
|
*/
|
|
@@ -89,6 +116,7 @@ export class ProxyService extends Service {
|
|
|
89
116
|
*/
|
|
90
117
|
async rawProxy(ctx, host, url, headers = {}) {
|
|
91
118
|
this.log("DEBUG", "Proxying to", `${ctx.getHttpContext().getMethod()} ${url}`);
|
|
119
|
+
this.metrics.http_request_in_flight.inc();
|
|
92
120
|
await new Promise((resolve, reject) => {
|
|
93
121
|
let xff = ctx.getHttpContext().getHeader("x-forwarded-for");
|
|
94
122
|
if (!xff) {
|
|
@@ -108,8 +136,25 @@ export class ProxyService extends Service {
|
|
|
108
136
|
"X-Forwarded-For": xff,
|
|
109
137
|
...headers
|
|
110
138
|
}, res => {
|
|
111
|
-
|
|
112
|
-
|
|
139
|
+
const labels = {
|
|
140
|
+
method: ctx.getHttpContext().getMethod(),
|
|
141
|
+
host,
|
|
142
|
+
handler: url,
|
|
143
|
+
statuscode: res.statusCode
|
|
144
|
+
};
|
|
145
|
+
res.on("end", () => {
|
|
146
|
+
this.metrics.http_request_in_flight.dec();
|
|
147
|
+
resolve();
|
|
148
|
+
});
|
|
149
|
+
res.on("error", () => {
|
|
150
|
+
this.metrics.http_request_in_flight.dec();
|
|
151
|
+
this.metrics.http_errors.inc({ ...labels, statuscode: -1 });
|
|
152
|
+
reject();
|
|
153
|
+
});
|
|
154
|
+
this.metrics.http_request_total.inc(labels);
|
|
155
|
+
if (res.statusCode >= 400) {
|
|
156
|
+
this.metrics.http_errors.inc(labels);
|
|
157
|
+
}
|
|
113
158
|
this.forwardResponse(res, ctx);
|
|
114
159
|
});
|
|
115
160
|
req.on("error", reject);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/services/proxy.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/services/proxy.ts"],"names":[],"mappings":"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"}
|
package/lib/services/resource.js
CHANGED
|
@@ -137,7 +137,8 @@ export default class ResourceService extends Service {
|
|
|
137
137
|
mimetype += "; charset=UTF-8";
|
|
138
138
|
}
|
|
139
139
|
ctx.writeHead(200, {
|
|
140
|
-
"
|
|
140
|
+
"content-type": mimetype,
|
|
141
|
+
"content-length": fs.lstatSync(file).size
|
|
141
142
|
});
|
|
142
143
|
const stream = fs.createReadStream(file);
|
|
143
144
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/services/resource.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/services/resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,28 +54,28 @@ let ResourceTest = class ResourceTest extends WebdaTest {
|
|
|
54
54
|
assert.notStrictEqual(executor, undefined);
|
|
55
55
|
await executor.execute(this.ctx);
|
|
56
56
|
assert.strictEqual(this.ctx.getResponseBody().toString(), fs.readFileSync("./test/config.json").toString());
|
|
57
|
-
assert.strictEqual(this.ctx.getResponseHeaders()["
|
|
57
|
+
assert.strictEqual(this.ctx.getResponseHeaders()["content-type"], "application/json");
|
|
58
58
|
}
|
|
59
59
|
async jsFile() {
|
|
60
60
|
let executor = this.getExecutor(this.ctx, "test.webda.io", "GET", "/resources/moddas/voidstore.js");
|
|
61
61
|
assert.notStrictEqual(executor, undefined);
|
|
62
62
|
await executor.execute(this.ctx);
|
|
63
63
|
assert.strictEqual(this.ctx.getResponseBody().toString(), fs.readFileSync("./test/moddas/voidstore.js").toString());
|
|
64
|
-
assert.strictEqual(this.ctx.getResponseHeaders()["
|
|
64
|
+
assert.strictEqual(this.ctx.getResponseHeaders()["content-type"], "application/javascript");
|
|
65
65
|
}
|
|
66
66
|
async textFile() {
|
|
67
67
|
let executor = this.getExecutor(this.ctx, "test.webda.io", "GET", "/resources/data/test.txt");
|
|
68
68
|
assert.notStrictEqual(executor, undefined);
|
|
69
69
|
await executor.execute(this.ctx);
|
|
70
70
|
assert.strictEqual(this.ctx.getResponseBody().toString(), fs.readFileSync("./test/data/test.txt").toString());
|
|
71
|
-
assert.strictEqual(this.ctx.getResponseHeaders()["
|
|
71
|
+
assert.strictEqual(this.ctx.getResponseHeaders()["content-type"], "text/plain; charset=UTF-8");
|
|
72
72
|
}
|
|
73
73
|
async pngFile() {
|
|
74
74
|
let executor = this.getExecutor(this.ctx, "test.webda.io", "GET", "/resources/data/test.png");
|
|
75
75
|
assert.notStrictEqual(executor, undefined);
|
|
76
76
|
await executor.execute(this.ctx);
|
|
77
77
|
assert.strictEqual(this.ctx.getResponseBody().toString(), fs.readFileSync("./test/data/test.png").toString());
|
|
78
|
-
assert.strictEqual(this.ctx.getResponseHeaders()["
|
|
78
|
+
assert.strictEqual(this.ctx.getResponseHeaders()["content-type"], "image/png");
|
|
79
79
|
}
|
|
80
80
|
// Check Store HTTP mapping
|
|
81
81
|
async testStoreHttpMapping() {
|
|
@@ -83,7 +83,7 @@ let ResourceTest = class ResourceTest extends WebdaTest {
|
|
|
83
83
|
assert.notStrictEqual(executor, undefined);
|
|
84
84
|
await executor.execute(this.ctx);
|
|
85
85
|
assert.strictEqual(this.ctx.getResponseBody().toString(), fs.readFileSync("./templates/PASSPORT_EMAIL_RECOVERY/html.mustache").toString());
|
|
86
|
-
assert.strictEqual(this.ctx.getResponseHeaders()["
|
|
86
|
+
assert.strictEqual(this.ctx.getResponseHeaders()["content-type"], "application/octet-stream");
|
|
87
87
|
}
|
|
88
88
|
};
|
|
89
89
|
__decorate([
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { WorkerLogLevel } from "@webda/workout";
|
|
3
3
|
import * as events from "events";
|
|
4
|
-
import { Core, Logger } from "../index.js";
|
|
4
|
+
import { Constructor, Core, Counter, Gauge, Histogram, Logger, MetricConfiguration } from "../index.js";
|
|
5
5
|
import { OpenAPIWebdaDefinition } from "../router.js";
|
|
6
6
|
import { HttpMethodType } from "../utils/httpcontext.js";
|
|
7
7
|
/**
|
|
@@ -122,6 +122,10 @@ declare abstract class Service<T extends ServiceParameters = ServiceParameters,
|
|
|
122
122
|
* Logger with class context
|
|
123
123
|
*/
|
|
124
124
|
protected logger: Logger;
|
|
125
|
+
/**
|
|
126
|
+
* Get metrics
|
|
127
|
+
*/
|
|
128
|
+
protected metrics?: any;
|
|
125
129
|
/**
|
|
126
130
|
*
|
|
127
131
|
*
|
|
@@ -156,6 +160,17 @@ declare abstract class Service<T extends ServiceParameters = ServiceParameters,
|
|
|
156
160
|
* Call initRoutes and initBeanRoutes
|
|
157
161
|
*/
|
|
158
162
|
resolve(): this;
|
|
163
|
+
/**
|
|
164
|
+
* Init the metrics
|
|
165
|
+
*/
|
|
166
|
+
initMetrics(): void;
|
|
167
|
+
/**
|
|
168
|
+
* Add service name label
|
|
169
|
+
* @param type
|
|
170
|
+
* @param configuration
|
|
171
|
+
* @returns
|
|
172
|
+
*/
|
|
173
|
+
getMetric<T = Gauge | Counter | Histogram>(type: Constructor<T>, configuration: MetricConfiguration<T>): T;
|
|
159
174
|
/**
|
|
160
175
|
* Return the full path url based on parameters
|
|
161
176
|
*
|
package/lib/services/service.js
CHANGED
|
@@ -208,6 +208,7 @@ class Service extends events.EventEmitter {
|
|
|
208
208
|
* Call initRoutes and initBeanRoutes
|
|
209
209
|
*/
|
|
210
210
|
resolve() {
|
|
211
|
+
this.initMetrics();
|
|
211
212
|
// Inject dependencies
|
|
212
213
|
Injector.resolveAll(this);
|
|
213
214
|
// We wait for all services to be created before calling computeParameters
|
|
@@ -216,6 +217,23 @@ class Service extends events.EventEmitter {
|
|
|
216
217
|
this.initOperations();
|
|
217
218
|
return this;
|
|
218
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Init the metrics
|
|
222
|
+
*/
|
|
223
|
+
initMetrics() {
|
|
224
|
+
this.metrics = {};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Add service name label
|
|
228
|
+
* @param type
|
|
229
|
+
* @param configuration
|
|
230
|
+
* @returns
|
|
231
|
+
*/
|
|
232
|
+
getMetric(type, configuration) {
|
|
233
|
+
configuration.labelNames ?? (configuration.labelNames = []);
|
|
234
|
+
configuration.labelNames = [...configuration.labelNames, "service"];
|
|
235
|
+
return this.getWebda().getMetric(type, configuration);
|
|
236
|
+
}
|
|
219
237
|
/**
|
|
220
238
|
* Return the full path url based on parameters
|
|
221
239
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -93,6 +93,7 @@ export declare class AliasStoreParameters extends AbstractAliasStoreParameters {
|
|
|
93
93
|
* The RegistryStore will default to a model, then specific models from the
|
|
94
94
|
* target collection can be exposed via an endpoint like users
|
|
95
95
|
*
|
|
96
|
+
* @WebdaModda
|
|
96
97
|
*/
|
|
97
98
|
export declare class AliasStore<T extends CoreModel = CoreModel, K extends AliasStoreParameters = AliasStoreParameters, E extends StoreEvents = StoreEvents> extends AbstractAliasStore<T, K, E> {
|
|
98
99
|
/**
|