@spinajs/metrics 2.0.150 → 2.0.152
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/cjs/config/metrics.d.ts +24 -0
- package/lib/cjs/config/metrics.d.ts.map +1 -1
- package/lib/cjs/config/metrics.js +32 -6
- package/lib/cjs/config/metrics.js.map +1 -1
- package/lib/cjs/controllers/metrics.d.ts +13 -8
- package/lib/cjs/controllers/metrics.d.ts.map +1 -1
- package/lib/cjs/controllers/metrics.js +32 -15
- package/lib/cjs/controllers/metrics.js.map +1 -1
- package/lib/cjs/index.d.ts +21 -8
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +62 -23
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/policies/DefaultMetricsPolicy.d.ts +11 -0
- package/lib/cjs/policies/DefaultMetricsPolicy.d.ts.map +1 -0
- package/lib/cjs/policies/DefaultMetricsPolicy.js +57 -0
- package/lib/cjs/policies/DefaultMetricsPolicy.js.map +1 -0
- package/lib/mjs/config/metrics.d.ts +24 -1
- package/lib/mjs/config/metrics.d.ts.map +1 -1
- package/lib/mjs/config/metrics.js +30 -7
- package/lib/mjs/config/metrics.js.map +1 -1
- package/lib/mjs/controllers/metrics.d.ts +13 -8
- package/lib/mjs/controllers/metrics.d.ts.map +1 -1
- package/lib/mjs/controllers/metrics.js +31 -14
- package/lib/mjs/controllers/metrics.js.map +1 -1
- package/lib/mjs/index.d.ts +21 -8
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +59 -24
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/policies/DefaultMetricsPolicy.d.ts +11 -0
- package/lib/mjs/policies/DefaultMetricsPolicy.d.ts.map +1 -0
- package/lib/mjs/policies/DefaultMetricsPolicy.js +54 -0
- package/lib/mjs/policies/DefaultMetricsPolicy.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +9 -12
package/lib/mjs/index.js
CHANGED
|
@@ -4,33 +4,68 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { BasePath, BaseController, Get, Response } from '@spinajs/http';
|
|
7
|
+
import { Injectable, Bootstrapper, DI } from '@spinajs/di';
|
|
11
8
|
import * as client from 'prom-client';
|
|
12
|
-
|
|
9
|
+
import { default as promHttpBundle } from 'express-prom-bundle';
|
|
10
|
+
import { Configuration } from '@spinajs/configuration';
|
|
11
|
+
export const gauge = client.Gauge;
|
|
12
|
+
export const histogram = client.Histogram;
|
|
13
|
+
export const summary = client.Summary;
|
|
14
|
+
export const counter = client.Counter;
|
|
15
|
+
let MetricsBootstrapper = class MetricsBootstrapper extends Bootstrapper {
|
|
16
|
+
bootstrap() {
|
|
17
|
+
client.collectDefaultMetrics({
|
|
18
|
+
labels: { NODE_APP_INSTANCE: process.env.NODE_APP_INSTANCE },
|
|
19
|
+
});
|
|
20
|
+
DI.on('di.resolved.HttpServer', (_, server) => {
|
|
21
|
+
const cfg = _.get(Configuration);
|
|
22
|
+
const promCfg = cfg.get('metrics.http');
|
|
23
|
+
server.use(promHttpBundle({
|
|
24
|
+
...promCfg,
|
|
25
|
+
// disable default autoregister
|
|
26
|
+
// we do this by controller with proper auth handling
|
|
27
|
+
autoregister: false,
|
|
28
|
+
}));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
MetricsBootstrapper = __decorate([
|
|
33
|
+
Injectable(Bootstrapper)
|
|
34
|
+
], MetricsBootstrapper);
|
|
35
|
+
export { MetricsBootstrapper };
|
|
36
|
+
/**
|
|
37
|
+
* Simple wrapper class for handling prom metrics
|
|
38
|
+
*/
|
|
39
|
+
export class Metrics {
|
|
13
40
|
constructor() {
|
|
14
|
-
|
|
41
|
+
this._histograms = new Map();
|
|
42
|
+
this._gauges = new Map();
|
|
43
|
+
this._counters = new Map();
|
|
44
|
+
this._summaries = new Map();
|
|
15
45
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
46
|
+
histogram(name, configuration) {
|
|
47
|
+
if (!this._histograms.has(name)) {
|
|
48
|
+
this._histograms.set(name, new client.Histogram(configuration));
|
|
49
|
+
}
|
|
50
|
+
return this._histograms.get(name);
|
|
19
51
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
52
|
+
gauge(name, configuration) {
|
|
53
|
+
if (!this._gauges.has(name)) {
|
|
54
|
+
this._gauges.set(name, new client.Gauge(configuration));
|
|
55
|
+
}
|
|
56
|
+
return this._gauges.get(name);
|
|
24
57
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
58
|
+
counter(name, configuration) {
|
|
59
|
+
if (!this._counters.has(name)) {
|
|
60
|
+
this._counters.set(name, new client.Gauge(configuration));
|
|
61
|
+
}
|
|
62
|
+
return this._counters.get(name);
|
|
63
|
+
}
|
|
64
|
+
summary(name, configuration) {
|
|
65
|
+
if (!this._summaries.has(name)) {
|
|
66
|
+
this._summaries.set(name, new client.Summary(configuration));
|
|
67
|
+
}
|
|
68
|
+
return this._summaries.get(name);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
36
71
|
//# sourceMappingURL=index.js.map
|
package/lib/mjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BasePolicy, IController, IRoute, Request } from '@spinajs/http';
|
|
2
|
+
import { Log } from '@spinajs/log';
|
|
3
|
+
export declare class DefaultMetricsPolicy extends BasePolicy {
|
|
4
|
+
protected Log: Log;
|
|
5
|
+
protected Token: string;
|
|
6
|
+
protected HEADER_TOKEN_FIELD: string;
|
|
7
|
+
protected isDev: boolean;
|
|
8
|
+
isEnabled(_action: IRoute, _instance: IController): boolean;
|
|
9
|
+
execute(req: Request): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=DefaultMetricsPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultMetricsPolicy.d.ts","sourceRoot":"","sources":["../../../src/policies/DefaultMetricsPolicy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAG3C,qBACa,oBAAqB,SAAQ,UAAU;IAElD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,kBAAkB,SAAqB;IAGjD,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;IAGlB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,GAAG,OAAO;IAIrD,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBlD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Config } from '@spinajs/configuration';
|
|
11
|
+
import { BasePolicy } from '@spinajs/http';
|
|
12
|
+
import { Forbidden } from '@spinajs/exceptions';
|
|
13
|
+
import { Log, Logger } from '@spinajs/log';
|
|
14
|
+
import { Injectable } from '@spinajs/di';
|
|
15
|
+
let DefaultMetricsPolicy = class DefaultMetricsPolicy extends BasePolicy {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.HEADER_TOKEN_FIELD = 'x-metrics-token';
|
|
19
|
+
}
|
|
20
|
+
isEnabled(_action, _instance) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
async execute(req) {
|
|
24
|
+
if (this.isDev) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const token = req.headers[this.HEADER_TOKEN_FIELD];
|
|
28
|
+
if (!token) {
|
|
29
|
+
this.Log.warn(`No token is set for restricted area, header field: ${this.HEADER_TOKEN_FIELD}, policy: DefaultMetricsPolicy, ip: ${req.storage.realIp}`);
|
|
30
|
+
throw new Forbidden('access token is not set');
|
|
31
|
+
}
|
|
32
|
+
if (token !== this.Token) {
|
|
33
|
+
this.Log.warn(`Invalid access token received, token: ${token}, header field: ${this.HEADER_TOKEN_FIELD}, policy: DefaultMetricsPolicy, ip: ${req.storage.realIp}`);
|
|
34
|
+
throw new Forbidden('invalid access token');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
__decorate([
|
|
39
|
+
Logger('Security'),
|
|
40
|
+
__metadata("design:type", Log)
|
|
41
|
+
], DefaultMetricsPolicy.prototype, "Log", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
Config('metrics.auth.token'),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], DefaultMetricsPolicy.prototype, "Token", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
Config('configuration.isDevelopment'),
|
|
48
|
+
__metadata("design:type", Boolean)
|
|
49
|
+
], DefaultMetricsPolicy.prototype, "isDev", void 0);
|
|
50
|
+
DefaultMetricsPolicy = __decorate([
|
|
51
|
+
Injectable(BasePolicy)
|
|
52
|
+
], DefaultMetricsPolicy);
|
|
53
|
+
export { DefaultMetricsPolicy };
|
|
54
|
+
//# sourceMappingURL=DefaultMetricsPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultMetricsPolicy.js","sourceRoot":"","sources":["../../../src/policies/DefaultMetricsPolicy.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAgC,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGlC,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,UAAU;IAA7C;;QAOK,uBAAkB,GAAG,iBAAiB,CAAC;IA0BnD,CAAC;IApBQ,SAAS,CAAC,OAAe,EAAE,SAAsB;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAY;QAC/B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO;SACR;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sDAAsD,IAAI,CAAC,kBAAkB,uCAAuC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACxJ,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;SAChD;QAED,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yCAAyC,KAAK,mBAAmB,IAAI,CAAC,kBAAkB,uCAAuC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACnK,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAC;SAC7C;IACH,CAAC;CACF,CAAA;AAhCC;IAAC,MAAM,CAAC,UAAU,CAAC;8BACJ,GAAG;iDAAC;AAEnB;IAAC,MAAM,CAAC,oBAAoB,CAAC;;mDACL;AAIxB;IAAC,MAAM,CAAC,6BAA6B,CAAC;;mDACb;AAVd,oBAAoB;IADhC,UAAU,CAAC,UAAU,CAAC;GACV,oBAAoB,CAiChC;SAjCY,oBAAoB"}
|