@promster/marblejs 5.0.0 → 6.0.3
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.
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createMiddleware, getRequestRecorder, signalIsUp, signalIsNotUp } from './middleware';
|
|
2
|
-
import { getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers } from '@promster/metrics';
|
|
3
|
-
export { createMiddleware, getRequestRecorder, signalIsUp, signalIsNotUp, getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers, };
|
|
2
|
+
import { getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers, timing } from '@promster/metrics';
|
|
3
|
+
export { createMiddleware, getRequestRecorder, signalIsUp, signalIsNotUp, getSummary, getContentType, Prometheus, defaultRegister, defaultNormalizers, timing, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TPromsterOptions } from '@promster/types';
|
|
2
2
|
import type { TRequestRecorder } from '@promster/metrics';
|
|
3
|
-
import { HttpRequest
|
|
3
|
+
import { HttpRequest } from '@marblejs/core';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
declare const extractPath: (req: HttpRequest) => string;
|
|
6
6
|
declare const getRequestRecorder: () => TRequestRecorder;
|
|
@@ -9,5 +9,5 @@ declare const signalIsNotUp: () => void;
|
|
|
9
9
|
declare type TMiddlewareOptions = {
|
|
10
10
|
options?: TPromsterOptions;
|
|
11
11
|
};
|
|
12
|
-
declare const createMiddleware: ({ options }?: TMiddlewareOptions) => (req$: Observable<HttpRequest>, res: HttpResponse) => Observable<HttpRequest
|
|
12
|
+
declare const createMiddleware: ({ options }?: TMiddlewareOptions) => (req$: Observable<HttpRequest>, res: HttpResponse) => Observable<HttpRequest>;
|
|
13
13
|
export { createMiddleware, extractPath, getRequestRecorder, signalIsUp, signalIsNotUp, };
|
|
@@ -46,19 +46,28 @@ const recordHandler = (res, shouldSkipMetricsByEnvironment, opts) => stamp => rx
|
|
|
46
46
|
|
|
47
47
|
const {
|
|
48
48
|
req,
|
|
49
|
-
|
|
49
|
+
timing
|
|
50
50
|
} = stamp;
|
|
51
51
|
const labels = Object.assign({}, {
|
|
52
|
-
method: opts.normalizeMethod(req.method
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
method: opts.normalizeMethod(req.method, {
|
|
53
|
+
res,
|
|
54
|
+
req
|
|
55
|
+
}),
|
|
56
|
+
status_code: opts.normalizeStatusCode(res.statusCode, {
|
|
57
|
+
res,
|
|
58
|
+
req
|
|
59
|
+
}),
|
|
60
|
+
path: opts.normalizePath(extractPath(req), {
|
|
61
|
+
res,
|
|
62
|
+
req
|
|
63
|
+
})
|
|
55
64
|
}, (_opts$getLabelValues = opts.getLabelValues) === null || _opts$getLabelValues === void 0 ? void 0 : _opts$getLabelValues.call(opts, req, res));
|
|
56
65
|
const shouldSkipByRequest = (_opts$skip = opts.skip) === null || _opts$skip === void 0 ? void 0 : _opts$skip.call(opts, req, res, labels);
|
|
57
66
|
const responseContentLength = Number((_res$getHeader = res.getHeader('content-length')) !== null && _res$getHeader !== void 0 ? _res$getHeader : 0);
|
|
58
67
|
const requestContentLength = Number((_req$headers$content = req.headers['content-length']) !== null && _req$headers$content !== void 0 ? _req$headers$content : 0);
|
|
59
68
|
|
|
60
69
|
if (!shouldSkipByRequest && !shouldSkipMetricsByEnvironment) {
|
|
61
|
-
recordRequest(
|
|
70
|
+
recordRequest(timing, {
|
|
62
71
|
labels,
|
|
63
72
|
requestContentLength,
|
|
64
73
|
responseContentLength
|
|
@@ -69,12 +78,13 @@ const recordHandler = (res, shouldSkipMetricsByEnvironment, opts) => stamp => rx
|
|
|
69
78
|
const createMiddleware = ({
|
|
70
79
|
options
|
|
71
80
|
} = {}) => {
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
const allDefaultedOptions = merge__default["default"](metrics.createHttpMetrics.defaultOptions, metrics.createGcMetrics.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.createGcObserver.defaultOptions, metrics.defaultNormalizers, options);
|
|
82
|
+
const httpMetrics = metrics.createHttpMetrics(allDefaultedOptions);
|
|
83
|
+
const gcMetrics = metrics.createGcMetrics(allDefaultedOptions);
|
|
84
|
+
const observeGc = metrics.createGcObserver(gcMetrics, allDefaultedOptions);
|
|
85
|
+
const shouldSkipMetricsByEnvironment = metrics.skipMetricsInEnvironment(allDefaultedOptions);
|
|
86
|
+
recordRequest = metrics.createRequestRecorder(httpMetrics, allDefaultedOptions);
|
|
87
|
+
upMetric = gcMetrics === null || gcMetrics === void 0 ? void 0 : gcMetrics.up;
|
|
78
88
|
|
|
79
89
|
if (!shouldSkipMetricsByEnvironment) {
|
|
80
90
|
observeGc();
|
|
@@ -83,8 +93,8 @@ const createMiddleware = ({
|
|
|
83
93
|
function middleware(req$, res) {
|
|
84
94
|
return req$.pipe(operators.map(req => ({
|
|
85
95
|
req,
|
|
86
|
-
|
|
87
|
-
})), operators.tap(recordHandler(res, shouldSkipMetricsByEnvironment,
|
|
96
|
+
timing: metrics.timing.start()
|
|
97
|
+
})), operators.tap(recordHandler(res, shouldSkipMetricsByEnvironment, allDefaultedOptions)), operators.map(({
|
|
88
98
|
req
|
|
89
99
|
}) => req));
|
|
90
100
|
}
|
|
@@ -112,6 +122,10 @@ Object.defineProperty(exports, 'getSummary', {
|
|
|
112
122
|
enumerable: true,
|
|
113
123
|
get: function () { return metrics.getSummary; }
|
|
114
124
|
});
|
|
125
|
+
Object.defineProperty(exports, 'timing', {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
get: function () { return metrics.timing; }
|
|
128
|
+
});
|
|
115
129
|
exports.createMiddleware = createMiddleware;
|
|
116
130
|
exports.getRequestRecorder = getRequestRecorder;
|
|
117
131
|
exports.signalIsNotUp = signalIsNotUp;
|
|
@@ -46,19 +46,28 @@ const recordHandler = (res, shouldSkipMetricsByEnvironment, opts) => stamp => rx
|
|
|
46
46
|
|
|
47
47
|
const {
|
|
48
48
|
req,
|
|
49
|
-
|
|
49
|
+
timing
|
|
50
50
|
} = stamp;
|
|
51
51
|
const labels = Object.assign({}, {
|
|
52
|
-
method: opts.normalizeMethod(req.method
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
method: opts.normalizeMethod(req.method, {
|
|
53
|
+
res,
|
|
54
|
+
req
|
|
55
|
+
}),
|
|
56
|
+
status_code: opts.normalizeStatusCode(res.statusCode, {
|
|
57
|
+
res,
|
|
58
|
+
req
|
|
59
|
+
}),
|
|
60
|
+
path: opts.normalizePath(extractPath(req), {
|
|
61
|
+
res,
|
|
62
|
+
req
|
|
63
|
+
})
|
|
55
64
|
}, (_opts$getLabelValues = opts.getLabelValues) === null || _opts$getLabelValues === void 0 ? void 0 : _opts$getLabelValues.call(opts, req, res));
|
|
56
65
|
const shouldSkipByRequest = (_opts$skip = opts.skip) === null || _opts$skip === void 0 ? void 0 : _opts$skip.call(opts, req, res, labels);
|
|
57
66
|
const responseContentLength = Number((_res$getHeader = res.getHeader('content-length')) !== null && _res$getHeader !== void 0 ? _res$getHeader : 0);
|
|
58
67
|
const requestContentLength = Number((_req$headers$content = req.headers['content-length']) !== null && _req$headers$content !== void 0 ? _req$headers$content : 0);
|
|
59
68
|
|
|
60
69
|
if (!shouldSkipByRequest && !shouldSkipMetricsByEnvironment) {
|
|
61
|
-
recordRequest(
|
|
70
|
+
recordRequest(timing, {
|
|
62
71
|
labels,
|
|
63
72
|
requestContentLength,
|
|
64
73
|
responseContentLength
|
|
@@ -69,12 +78,13 @@ const recordHandler = (res, shouldSkipMetricsByEnvironment, opts) => stamp => rx
|
|
|
69
78
|
const createMiddleware = ({
|
|
70
79
|
options
|
|
71
80
|
} = {}) => {
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
const allDefaultedOptions = merge__default["default"](metrics.createHttpMetrics.defaultOptions, metrics.createGcMetrics.defaultOptions, metrics.createRequestRecorder.defaultOptions, metrics.createGcObserver.defaultOptions, metrics.defaultNormalizers, options);
|
|
82
|
+
const httpMetrics = metrics.createHttpMetrics(allDefaultedOptions);
|
|
83
|
+
const gcMetrics = metrics.createGcMetrics(allDefaultedOptions);
|
|
84
|
+
const observeGc = metrics.createGcObserver(gcMetrics, allDefaultedOptions);
|
|
85
|
+
const shouldSkipMetricsByEnvironment = metrics.skipMetricsInEnvironment(allDefaultedOptions);
|
|
86
|
+
recordRequest = metrics.createRequestRecorder(httpMetrics, allDefaultedOptions);
|
|
87
|
+
upMetric = gcMetrics === null || gcMetrics === void 0 ? void 0 : gcMetrics.up;
|
|
78
88
|
|
|
79
89
|
if (!shouldSkipMetricsByEnvironment) {
|
|
80
90
|
observeGc();
|
|
@@ -83,8 +93,8 @@ const createMiddleware = ({
|
|
|
83
93
|
function middleware(req$, res) {
|
|
84
94
|
return req$.pipe(operators.map(req => ({
|
|
85
95
|
req,
|
|
86
|
-
|
|
87
|
-
})), operators.tap(recordHandler(res, shouldSkipMetricsByEnvironment,
|
|
96
|
+
timing: metrics.timing.start()
|
|
97
|
+
})), operators.tap(recordHandler(res, shouldSkipMetricsByEnvironment, allDefaultedOptions)), operators.map(({
|
|
88
98
|
req
|
|
89
99
|
}) => req));
|
|
90
100
|
}
|
|
@@ -112,6 +122,10 @@ Object.defineProperty(exports, 'getSummary', {
|
|
|
112
122
|
enumerable: true,
|
|
113
123
|
get: function () { return metrics.getSummary; }
|
|
114
124
|
});
|
|
125
|
+
Object.defineProperty(exports, 'timing', {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
get: function () { return metrics.timing; }
|
|
128
|
+
});
|
|
115
129
|
exports.createMiddleware = createMiddleware;
|
|
116
130
|
exports.getRequestRecorder = getRequestRecorder;
|
|
117
131
|
exports.signalIsNotUp = signalIsNotUp;
|
package/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promster/marblejs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.3",
|
|
4
4
|
"description": "MarbleJs server integrations of promster",
|
|
5
5
|
"main": "dist/promster-marblejs.cjs.js",
|
|
6
6
|
"typings": "dist/promster-marblejs.cjs.d.ts",
|
|
7
7
|
"types": "dist/promster-marblejs.cjs.d.ts",
|
|
8
|
-
"scripts": {},
|
|
9
8
|
"files": [
|
|
10
9
|
"readme.md",
|
|
11
10
|
"package.json",
|
|
@@ -22,7 +21,8 @@
|
|
|
22
21
|
},
|
|
23
22
|
"repository": {
|
|
24
23
|
"type": "git",
|
|
25
|
-
"url": "
|
|
24
|
+
"url": "https://github.com/tdeekens/promster.git",
|
|
25
|
+
"directory": "packages/marblejs"
|
|
26
26
|
},
|
|
27
27
|
"author": "Lukas Sulik <l.nuzky@gmail.com>",
|
|
28
28
|
"license": "MIT",
|
|
@@ -36,13 +36,15 @@
|
|
|
36
36
|
"prometheus"
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@promster/metrics": "^
|
|
39
|
+
"@promster/metrics": "^9.1.3",
|
|
40
40
|
"merge-options": "3.0.4",
|
|
41
|
-
"rxjs": "^6.
|
|
41
|
+
"rxjs": "^6.6.7",
|
|
42
42
|
"tslib": "2.3.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@marblejs/core": "
|
|
46
|
-
"
|
|
45
|
+
"@marblejs/core": "4.0.2",
|
|
46
|
+
"@marblejs/http": "4.0.2",
|
|
47
|
+
"fp-ts": "2.11.8",
|
|
48
|
+
"parse-prometheus-text-format": "1.1.1"
|
|
47
49
|
}
|
|
48
50
|
}
|
package/readme.md
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<b style="font-size: 25px">⏰ Promster - Measure metrics from Hapi/Express servers with Prometheus 🚦</b
|
|
3
|
-
<i>Promster is an Prometheus Exporter for Node.js servers written with Express or Hapi.</i>
|
|
2
|
+
<b style="font-size: 25px">⏰ Promster - Measure metrics from Hapi/Express servers with Prometheus 🚦</b>
|
|
4
3
|
</p>
|
|
5
4
|
|
|
6
5
|
### `@promster/marblejs`
|