@tramvai/module-metrics 1.90.6 → 1.91.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/README.md +19 -0
- package/lib/browser.d.ts +1 -0
- package/lib/browser.js +1 -0
- package/lib/request/initRequestsMetrics.d.ts +2 -1
- package/lib/request/types.d.ts +1 -4
- package/lib/server.d.ts +1 -2
- package/lib/server.es.js +81 -8
- package/lib/server.js +83 -6
- package/package.json +10 -9
- package/lib/tokens.d.ts +0 -2
package/README.md
CHANGED
|
@@ -156,6 +156,25 @@ fetch(url).then(() => {
|
|
|
156
156
|
});
|
|
157
157
|
```
|
|
158
158
|
|
|
159
|
+
### Use custom port for metrics endpoint
|
|
160
|
+
|
|
161
|
+
It can be done with token `METRICS_MODULE_CONFIG_TOKEN` and its property `port`:
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
import { provide } from '@tramvai/core';
|
|
165
|
+
import { METRICS_MODULE_CONFIG_TOKEN } from '@tramvai/tokens-metrics';
|
|
166
|
+
|
|
167
|
+
const providers = [
|
|
168
|
+
provide({
|
|
169
|
+
provide: METRICS_MODULE_CONFIG_TOKEN,
|
|
170
|
+
useValue: {
|
|
171
|
+
enableConnectionResolveMetrics: true,
|
|
172
|
+
port: 3001,
|
|
173
|
+
},
|
|
174
|
+
}),
|
|
175
|
+
];
|
|
176
|
+
```
|
|
177
|
+
|
|
159
178
|
## Debug
|
|
160
179
|
|
|
161
180
|
The module uses loggers with the next ids: `metrics:perf`, `metrics:papi`
|
package/lib/browser.d.ts
CHANGED
package/lib/browser.js
CHANGED
|
@@ -2,6 +2,7 @@ import { __decorate } from 'tslib';
|
|
|
2
2
|
import { Module, commandLineListTokens, Scope } from '@tramvai/core';
|
|
3
3
|
import { COMBINE_REDUCERS, CONTEXT_TOKEN, LOGGER_TOKEN } from '@tramvai/module-common';
|
|
4
4
|
import { METRICS_MODULE_TOKEN } from '@tramvai/tokens-metrics';
|
|
5
|
+
export * from '@tramvai/tokens-metrics';
|
|
5
6
|
import { browserTimings } from '@tinkoff/browser-timings';
|
|
6
7
|
import { Histogram, Summary, Gauge, Counter } from '@tinkoff/metrics-noop';
|
|
7
8
|
import { PAPI_SERVICE } from '@tramvai/tokens-http-client';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ModuleConfig } from '@tramvai/tokens-metrics';
|
|
2
|
+
import type { MetricsModule, GetServiceName, CreateRequestWithMetrics, HttpModule, HttpsModule } from './types';
|
|
2
3
|
export declare const initRequestsMetrics: ({ metrics, getServiceName, http, https, createRequestWithMetrics, config, }: {
|
|
3
4
|
metrics: MetricsModule;
|
|
4
5
|
http: HttpModule;
|
package/lib/request/types.d.ts
CHANGED
|
@@ -3,10 +3,7 @@ import type { RequestOptions, IncomingMessage, ClientRequest } from 'http';
|
|
|
3
3
|
import type httpType from 'http';
|
|
4
4
|
import type httpsType from 'https';
|
|
5
5
|
import type { Counter, Histogram } from 'prom-client';
|
|
6
|
-
import type { METRICS_MODULE_TOKEN, METRICS_SERVICES_REGISTRY_TOKEN } from '@tramvai/tokens-metrics';
|
|
7
|
-
export declare type ModuleConfig = {
|
|
8
|
-
enableConnectionResolveMetrics: boolean;
|
|
9
|
-
};
|
|
6
|
+
import type { METRICS_MODULE_TOKEN, METRICS_SERVICES_REGISTRY_TOKEN, ModuleConfig } from '@tramvai/tokens-metrics';
|
|
10
7
|
export declare type MetricsModule = typeof METRICS_MODULE_TOKEN;
|
|
11
8
|
export declare type HttpModule = typeof httpType;
|
|
12
9
|
export declare type HttpsModule = typeof httpsType;
|
package/lib/server.d.ts
CHANGED
package/lib/server.es.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
|
-
import {
|
|
3
|
-
import { SERVER_MODULE_PAPI_PUBLIC_ROUTE, SPECIAL_SERVER_PATHS } from '@tramvai/tokens-server';
|
|
4
|
-
import {
|
|
5
|
-
import { METRICS_MODULE_TOKEN, METRICS_SERVICES_REGISTRY_TOKEN, REGISTER_INSTANT_METRIC_TOKEN } from '@tramvai/tokens-metrics';
|
|
2
|
+
import { Module, commandLineListTokens, Scope, createToken, provide } from '@tramvai/core';
|
|
3
|
+
import { SERVER_MODULE_PAPI_PUBLIC_ROUTE, SERVER_TOKEN, SPECIAL_SERVER_PATHS } from '@tramvai/tokens-server';
|
|
4
|
+
import { SERVER_FACTORY_TOKEN, WEB_FASTIFY_APP_TOKEN, WEB_FASTIFY_APP_FACTORY_TOKEN, WEB_FASTIFY_APP_BEFORE_INIT_TOKEN } from '@tramvai/tokens-server-private';
|
|
5
|
+
import { METRICS_MODULE_TOKEN, METRICS_SERVICES_REGISTRY_TOKEN, METRICS_MODULE_CONFIG_TOKEN, REGISTER_INSTANT_METRIC_TOKEN } from '@tramvai/tokens-metrics';
|
|
6
|
+
export * from '@tramvai/tokens-metrics';
|
|
6
7
|
import { measure } from '@tinkoff/measure-express-requests';
|
|
7
8
|
import { Registry, collectDefaultMetrics, Counter, Gauge, Histogram, Summary } from 'prom-client';
|
|
8
9
|
import flatten from '@tinkoff/utils/array/flatten';
|
|
10
|
+
import { ENV_MANAGER_TOKEN as ENV_MANAGER_TOKEN$1, LOGGER_TOKEN as LOGGER_TOKEN$1 } from '@tramvai/tokens-common';
|
|
9
11
|
import { ENV_MANAGER_TOKEN, COMBINE_REDUCERS, LOGGER_TOKEN, CONTEXT_TOKEN } from '@tramvai/module-common';
|
|
10
12
|
import noop from '@tinkoff/utils/function/noop';
|
|
11
13
|
import https from 'https';
|
|
@@ -286,8 +288,6 @@ class MetricsServicesRegistry {
|
|
|
286
288
|
}
|
|
287
289
|
}
|
|
288
290
|
|
|
289
|
-
const METRICS_MODULE_CONFIG_TOKEN = createToken('metrics-module-config');
|
|
290
|
-
|
|
291
291
|
let RequestModule = class RequestModule {
|
|
292
292
|
};
|
|
293
293
|
RequestModule = __decorate([
|
|
@@ -454,6 +454,9 @@ const eventLoopMetrics = (metrics) => {
|
|
|
454
454
|
startEventLoopLagMeasure(histogram);
|
|
455
455
|
};
|
|
456
456
|
|
|
457
|
+
const METRICS_IS_CUSTOM_SERVER_TOKEN = createToken('metrics isCustomServer');
|
|
458
|
+
const METRICS_SERVER_TOKEN = createToken('metrics server');
|
|
459
|
+
const METRICS_WEB_APP_TOKEN = createToken('metrics webApp');
|
|
457
460
|
let MetricsModule = class MetricsModule {
|
|
458
461
|
};
|
|
459
462
|
MetricsModule = __decorate([
|
|
@@ -486,6 +489,76 @@ MetricsModule = __decorate([
|
|
|
486
489
|
registry: 'metricsDefaultRegistry',
|
|
487
490
|
},
|
|
488
491
|
}),
|
|
492
|
+
provide({
|
|
493
|
+
provide: METRICS_IS_CUSTOM_SERVER_TOKEN,
|
|
494
|
+
useFactory: ({ config, envManager }) => {
|
|
495
|
+
return config.port && +envManager.get('PORT') !== config.port;
|
|
496
|
+
},
|
|
497
|
+
deps: {
|
|
498
|
+
envManager: ENV_MANAGER_TOKEN$1,
|
|
499
|
+
config: METRICS_MODULE_CONFIG_TOKEN,
|
|
500
|
+
},
|
|
501
|
+
}),
|
|
502
|
+
provide({
|
|
503
|
+
provide: METRICS_SERVER_TOKEN,
|
|
504
|
+
scope: Scope.SINGLETON,
|
|
505
|
+
useFactory: ({ isCustomServer, serverFactory, server }) => {
|
|
506
|
+
return isCustomServer ? serverFactory() : server;
|
|
507
|
+
},
|
|
508
|
+
deps: {
|
|
509
|
+
isCustomServer: METRICS_IS_CUSTOM_SERVER_TOKEN,
|
|
510
|
+
server: SERVER_TOKEN,
|
|
511
|
+
serverFactory: SERVER_FACTORY_TOKEN,
|
|
512
|
+
},
|
|
513
|
+
}),
|
|
514
|
+
provide({
|
|
515
|
+
provide: METRICS_WEB_APP_TOKEN,
|
|
516
|
+
scope: Scope.SINGLETON,
|
|
517
|
+
useFactory: ({ isCustomServer, app, appFactory, server }) => {
|
|
518
|
+
return isCustomServer ? appFactory({ server }) : app;
|
|
519
|
+
},
|
|
520
|
+
deps: {
|
|
521
|
+
isCustomServer: METRICS_IS_CUSTOM_SERVER_TOKEN,
|
|
522
|
+
app: WEB_FASTIFY_APP_TOKEN,
|
|
523
|
+
appFactory: WEB_FASTIFY_APP_FACTORY_TOKEN,
|
|
524
|
+
server: METRICS_SERVER_TOKEN,
|
|
525
|
+
},
|
|
526
|
+
}),
|
|
527
|
+
provide({
|
|
528
|
+
provide: commandLineListTokens.listen,
|
|
529
|
+
multi: true,
|
|
530
|
+
scope: Scope.SINGLETON,
|
|
531
|
+
useFactory: ({ logger, isCustomServer, config, app, server }) => {
|
|
532
|
+
return async function metricsServerListen() {
|
|
533
|
+
if (!isCustomServer) {
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
const log = logger('metrics:server');
|
|
537
|
+
const { port = 3001 } = config;
|
|
538
|
+
await app.ready();
|
|
539
|
+
return new Promise((resolve, reject) => {
|
|
540
|
+
server.once('error', (error) => {
|
|
541
|
+
log.error({ event: 'server-listen-port', error });
|
|
542
|
+
reject(error);
|
|
543
|
+
});
|
|
544
|
+
server.listen({
|
|
545
|
+
host: '',
|
|
546
|
+
port,
|
|
547
|
+
}, () => {
|
|
548
|
+
log.warn({ event: 'server-listen-port', message: `Server listen ${port} port` });
|
|
549
|
+
resolve();
|
|
550
|
+
});
|
|
551
|
+
});
|
|
552
|
+
};
|
|
553
|
+
},
|
|
554
|
+
deps: {
|
|
555
|
+
logger: LOGGER_TOKEN$1,
|
|
556
|
+
isCustomServer: METRICS_IS_CUSTOM_SERVER_TOKEN,
|
|
557
|
+
config: METRICS_MODULE_CONFIG_TOKEN,
|
|
558
|
+
app: METRICS_WEB_APP_TOKEN,
|
|
559
|
+
server: METRICS_SERVER_TOKEN,
|
|
560
|
+
},
|
|
561
|
+
}),
|
|
489
562
|
provide({
|
|
490
563
|
provide: WEB_FASTIFY_APP_BEFORE_INIT_TOKEN,
|
|
491
564
|
useFactory: ({ app, metrics, additionalLabelNamesList, getAdditionalLabelValuesList, httpRequestsDurationBuckets, metricsExcludePaths, registry, }) => {
|
|
@@ -516,7 +589,7 @@ MetricsModule = __decorate([
|
|
|
516
589
|
},
|
|
517
590
|
deps: {
|
|
518
591
|
metrics: METRICS_MODULE_TOKEN,
|
|
519
|
-
app:
|
|
592
|
+
app: METRICS_WEB_APP_TOKEN,
|
|
520
593
|
additionalLabelNamesList: {
|
|
521
594
|
token: 'additionalLabelNames',
|
|
522
595
|
multi: true,
|
|
@@ -552,4 +625,4 @@ MetricsModule = __decorate([
|
|
|
552
625
|
})
|
|
553
626
|
], MetricsModule);
|
|
554
627
|
|
|
555
|
-
export {
|
|
628
|
+
export { MetricsModule };
|
package/lib/server.js
CHANGED
|
@@ -10,6 +10,7 @@ var tokensMetrics = require('@tramvai/tokens-metrics');
|
|
|
10
10
|
var measureExpressRequests = require('@tinkoff/measure-express-requests');
|
|
11
11
|
var promClient = require('prom-client');
|
|
12
12
|
var flatten = require('@tinkoff/utils/array/flatten');
|
|
13
|
+
var tokensCommon = require('@tramvai/tokens-common');
|
|
13
14
|
var moduleCommon = require('@tramvai/module-common');
|
|
14
15
|
var noop = require('@tinkoff/utils/function/noop');
|
|
15
16
|
var https = require('https');
|
|
@@ -300,8 +301,6 @@ class MetricsServicesRegistry {
|
|
|
300
301
|
}
|
|
301
302
|
}
|
|
302
303
|
|
|
303
|
-
const METRICS_MODULE_CONFIG_TOKEN = core.createToken('metrics-module-config');
|
|
304
|
-
|
|
305
304
|
let RequestModule = class RequestModule {
|
|
306
305
|
};
|
|
307
306
|
RequestModule = tslib.__decorate([
|
|
@@ -335,7 +334,7 @@ RequestModule = tslib.__decorate([
|
|
|
335
334
|
},
|
|
336
335
|
metricsServicesRegistry: tokensMetrics.METRICS_SERVICES_REGISTRY_TOKEN,
|
|
337
336
|
envManager: moduleCommon.ENV_MANAGER_TOKEN,
|
|
338
|
-
metricsModuleConfig: METRICS_MODULE_CONFIG_TOKEN,
|
|
337
|
+
metricsModuleConfig: tokensMetrics.METRICS_MODULE_CONFIG_TOKEN,
|
|
339
338
|
},
|
|
340
339
|
},
|
|
341
340
|
{
|
|
@@ -468,6 +467,9 @@ const eventLoopMetrics = (metrics) => {
|
|
|
468
467
|
startEventLoopLagMeasure(histogram);
|
|
469
468
|
};
|
|
470
469
|
|
|
470
|
+
const METRICS_IS_CUSTOM_SERVER_TOKEN = core.createToken('metrics isCustomServer');
|
|
471
|
+
const METRICS_SERVER_TOKEN = core.createToken('metrics server');
|
|
472
|
+
const METRICS_WEB_APP_TOKEN = core.createToken('metrics webApp');
|
|
471
473
|
exports.MetricsModule = class MetricsModule {
|
|
472
474
|
};
|
|
473
475
|
exports.MetricsModule = tslib.__decorate([
|
|
@@ -475,7 +477,7 @@ exports.MetricsModule = tslib.__decorate([
|
|
|
475
477
|
imports: [RequestModule, InstantMetricsModule],
|
|
476
478
|
providers: [
|
|
477
479
|
core.provide({
|
|
478
|
-
provide: METRICS_MODULE_CONFIG_TOKEN,
|
|
480
|
+
provide: tokensMetrics.METRICS_MODULE_CONFIG_TOKEN,
|
|
479
481
|
useValue: {
|
|
480
482
|
enableConnectionResolveMetrics: false,
|
|
481
483
|
},
|
|
@@ -500,6 +502,76 @@ exports.MetricsModule = tslib.__decorate([
|
|
|
500
502
|
registry: 'metricsDefaultRegistry',
|
|
501
503
|
},
|
|
502
504
|
}),
|
|
505
|
+
core.provide({
|
|
506
|
+
provide: METRICS_IS_CUSTOM_SERVER_TOKEN,
|
|
507
|
+
useFactory: ({ config, envManager }) => {
|
|
508
|
+
return config.port && +envManager.get('PORT') !== config.port;
|
|
509
|
+
},
|
|
510
|
+
deps: {
|
|
511
|
+
envManager: tokensCommon.ENV_MANAGER_TOKEN,
|
|
512
|
+
config: tokensMetrics.METRICS_MODULE_CONFIG_TOKEN,
|
|
513
|
+
},
|
|
514
|
+
}),
|
|
515
|
+
core.provide({
|
|
516
|
+
provide: METRICS_SERVER_TOKEN,
|
|
517
|
+
scope: core.Scope.SINGLETON,
|
|
518
|
+
useFactory: ({ isCustomServer, serverFactory, server }) => {
|
|
519
|
+
return isCustomServer ? serverFactory() : server;
|
|
520
|
+
},
|
|
521
|
+
deps: {
|
|
522
|
+
isCustomServer: METRICS_IS_CUSTOM_SERVER_TOKEN,
|
|
523
|
+
server: tokensServer.SERVER_TOKEN,
|
|
524
|
+
serverFactory: tokensServerPrivate.SERVER_FACTORY_TOKEN,
|
|
525
|
+
},
|
|
526
|
+
}),
|
|
527
|
+
core.provide({
|
|
528
|
+
provide: METRICS_WEB_APP_TOKEN,
|
|
529
|
+
scope: core.Scope.SINGLETON,
|
|
530
|
+
useFactory: ({ isCustomServer, app, appFactory, server }) => {
|
|
531
|
+
return isCustomServer ? appFactory({ server }) : app;
|
|
532
|
+
},
|
|
533
|
+
deps: {
|
|
534
|
+
isCustomServer: METRICS_IS_CUSTOM_SERVER_TOKEN,
|
|
535
|
+
app: tokensServerPrivate.WEB_FASTIFY_APP_TOKEN,
|
|
536
|
+
appFactory: tokensServerPrivate.WEB_FASTIFY_APP_FACTORY_TOKEN,
|
|
537
|
+
server: METRICS_SERVER_TOKEN,
|
|
538
|
+
},
|
|
539
|
+
}),
|
|
540
|
+
core.provide({
|
|
541
|
+
provide: core.commandLineListTokens.listen,
|
|
542
|
+
multi: true,
|
|
543
|
+
scope: core.Scope.SINGLETON,
|
|
544
|
+
useFactory: ({ logger, isCustomServer, config, app, server }) => {
|
|
545
|
+
return async function metricsServerListen() {
|
|
546
|
+
if (!isCustomServer) {
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
const log = logger('metrics:server');
|
|
550
|
+
const { port = 3001 } = config;
|
|
551
|
+
await app.ready();
|
|
552
|
+
return new Promise((resolve, reject) => {
|
|
553
|
+
server.once('error', (error) => {
|
|
554
|
+
log.error({ event: 'server-listen-port', error });
|
|
555
|
+
reject(error);
|
|
556
|
+
});
|
|
557
|
+
server.listen({
|
|
558
|
+
host: '',
|
|
559
|
+
port,
|
|
560
|
+
}, () => {
|
|
561
|
+
log.warn({ event: 'server-listen-port', message: `Server listen ${port} port` });
|
|
562
|
+
resolve();
|
|
563
|
+
});
|
|
564
|
+
});
|
|
565
|
+
};
|
|
566
|
+
},
|
|
567
|
+
deps: {
|
|
568
|
+
logger: tokensCommon.LOGGER_TOKEN,
|
|
569
|
+
isCustomServer: METRICS_IS_CUSTOM_SERVER_TOKEN,
|
|
570
|
+
config: tokensMetrics.METRICS_MODULE_CONFIG_TOKEN,
|
|
571
|
+
app: METRICS_WEB_APP_TOKEN,
|
|
572
|
+
server: METRICS_SERVER_TOKEN,
|
|
573
|
+
},
|
|
574
|
+
}),
|
|
503
575
|
core.provide({
|
|
504
576
|
provide: tokensServerPrivate.WEB_FASTIFY_APP_BEFORE_INIT_TOKEN,
|
|
505
577
|
useFactory: ({ app, metrics, additionalLabelNamesList, getAdditionalLabelValuesList, httpRequestsDurationBuckets, metricsExcludePaths, registry, }) => {
|
|
@@ -530,7 +602,7 @@ exports.MetricsModule = tslib.__decorate([
|
|
|
530
602
|
},
|
|
531
603
|
deps: {
|
|
532
604
|
metrics: tokensMetrics.METRICS_MODULE_TOKEN,
|
|
533
|
-
app:
|
|
605
|
+
app: METRICS_WEB_APP_TOKEN,
|
|
534
606
|
additionalLabelNamesList: {
|
|
535
607
|
token: 'additionalLabelNames',
|
|
536
608
|
multi: true,
|
|
@@ -566,4 +638,9 @@ exports.MetricsModule = tslib.__decorate([
|
|
|
566
638
|
})
|
|
567
639
|
], exports.MetricsModule);
|
|
568
640
|
|
|
569
|
-
|
|
641
|
+
Object.keys(tokensMetrics).forEach(function (k) {
|
|
642
|
+
if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
|
|
643
|
+
enumerable: true,
|
|
644
|
+
get: function () { return tokensMetrics[k]; }
|
|
645
|
+
});
|
|
646
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-metrics",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.91.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"browser": "lib/browser.js",
|
|
6
6
|
"main": "lib/server.js",
|
|
@@ -19,14 +19,15 @@
|
|
|
19
19
|
"build-for-publish": "true"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@tramvai/core": "1.
|
|
23
|
-
"@tramvai/tokens-
|
|
24
|
-
"@tramvai/tokens-server
|
|
25
|
-
"@tramvai/tokens-
|
|
26
|
-
"@tramvai/
|
|
27
|
-
"@tramvai/
|
|
28
|
-
"@tramvai/
|
|
29
|
-
"@tramvai/
|
|
22
|
+
"@tramvai/core": "1.91.0",
|
|
23
|
+
"@tramvai/tokens-common": "1.91.0",
|
|
24
|
+
"@tramvai/tokens-server": "1.91.0",
|
|
25
|
+
"@tramvai/tokens-server-private": "1.91.0",
|
|
26
|
+
"@tramvai/tokens-metrics": "1.91.0",
|
|
27
|
+
"@tramvai/module-common": "1.91.0",
|
|
28
|
+
"@tramvai/tokens-http-client": "1.91.0",
|
|
29
|
+
"@tramvai/state": "1.91.0",
|
|
30
|
+
"@tramvai/papi": "1.91.0",
|
|
30
31
|
"@tinkoff/measure-express-requests": "1.5.1",
|
|
31
32
|
"@tinkoff/monkeypatch": "1.3.3",
|
|
32
33
|
"@tinkoff/url": "0.7.37",
|
package/lib/tokens.d.ts
DELETED