@vtex/api 6.48.1-beta.3 → 6.49.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/gen/manifest.schema +1 -1
- package/lib/HttpClient/GraphQLClient.d.ts +1 -1
- package/lib/HttpClient/HttpClient.d.ts +3 -2
- package/lib/HttpClient/HttpClient.js +14 -14
- package/lib/HttpClient/agents.d.ts +5 -2
- package/lib/HttpClient/agents.js +10 -4
- package/lib/HttpClient/index.js +7 -2
- package/lib/HttpClient/middlewares/cache.d.ts +1 -1
- package/lib/HttpClient/middlewares/cache.js +43 -44
- package/lib/HttpClient/middlewares/cancellationToken.d.ts +1 -1
- package/lib/HttpClient/middlewares/cancellationToken.js +2 -1
- package/lib/HttpClient/middlewares/inflight.d.ts +1 -1
- package/lib/HttpClient/middlewares/inflight.js +6 -3
- package/lib/HttpClient/middlewares/memoization.d.ts +1 -1
- package/lib/HttpClient/middlewares/memoization.js +9 -8
- package/lib/HttpClient/middlewares/metrics.js +8 -11
- package/lib/HttpClient/middlewares/notFound.d.ts +1 -1
- package/lib/HttpClient/middlewares/notFound.js +4 -2
- package/lib/HttpClient/middlewares/recorder.js +2 -5
- package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +1 -1
- package/lib/HttpClient/middlewares/request/index.d.ts +1 -1
- package/lib/HttpClient/middlewares/request/index.js +13 -10
- package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +0 -1
- package/lib/HttpClient/middlewares/request/setupAxios/index.js +5 -4
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +6 -5
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +1 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +8 -8
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +10 -8
- package/lib/HttpClient/middlewares/tracing.js +11 -14
- package/lib/HttpClient/typings.d.ts +3 -3
- package/lib/caches/DiskCache.js +3 -3
- package/lib/caches/LRUCache.d.ts +2 -2
- package/lib/caches/LRUDiskCache.d.ts +1 -1
- package/lib/caches/LRUDiskCache.js +3 -3
- package/lib/caches/MultilayeredCache.d.ts +2 -2
- package/lib/caches/MultilayeredCache.js +7 -7
- package/lib/caches/index.js +6 -2
- package/lib/caches/typings.d.ts +5 -5
- package/lib/clients/IOClient.d.ts +1 -1
- package/lib/clients/IOClients.d.ts +1 -1
- package/lib/clients/apps/AppClient.js +1 -1
- package/lib/clients/apps/AppGraphQLClient.js +1 -1
- package/lib/clients/apps/Billing.d.ts +1 -1
- package/lib/clients/apps/Builder.d.ts +7 -7
- package/lib/clients/apps/Builder.js +1 -1
- package/lib/clients/apps/MessagesGraphQL.d.ts +1 -1
- package/lib/clients/apps/MessagesGraphQL.js +3 -3
- package/lib/clients/apps/Settings.js +3 -3
- package/lib/clients/apps/catalogGraphQL/index.d.ts +4 -4
- package/lib/clients/apps/catalogGraphQL/index.js +4 -4
- package/lib/clients/apps/index.js +6 -2
- package/lib/clients/external/ID.d.ts +4 -4
- package/lib/clients/external/PaymentProvider.d.ts +2 -2
- package/lib/clients/external/index.js +6 -2
- package/lib/clients/index.js +6 -2
- package/lib/clients/infra/Apps.d.ts +32 -27
- package/lib/clients/infra/Apps.js +16 -18
- package/lib/clients/infra/Assets.d.ts +6 -5
- package/lib/clients/infra/Assets.js +11 -11
- package/lib/clients/infra/BillingMetrics.d.ts +1 -1
- package/lib/clients/infra/Events.d.ts +1 -1
- package/lib/clients/infra/Events.js +1 -1
- package/lib/clients/infra/Housekeeper.d.ts +3 -3
- package/lib/clients/infra/Registry.d.ts +23 -17
- package/lib/clients/infra/Registry.js +3 -4
- package/lib/clients/infra/Router.d.ts +8 -8
- package/lib/clients/infra/Sphinx.d.ts +2 -2
- package/lib/clients/infra/VBase.d.ts +15 -14
- package/lib/clients/infra/VBase.js +3 -3
- package/lib/clients/infra/Workspaces.d.ts +7 -7
- package/lib/clients/infra/index.js +6 -2
- package/lib/clients/janus/JanusClient.d.ts +1 -1
- package/lib/clients/janus/LicenseManager.js +1 -1
- package/lib/clients/janus/Segment.d.ts +3 -3
- package/lib/clients/janus/Segment.js +2 -2
- package/lib/clients/janus/Session.d.ts +2 -2
- package/lib/clients/janus/Tenant.d.ts +1 -1
- package/lib/clients/janus/index.js +6 -2
- package/lib/constants.d.ts +2 -1
- package/lib/constants.js +3 -2
- package/lib/errors/ResolverError.js +1 -1
- package/lib/errors/index.js +6 -2
- package/lib/index.js +6 -2
- package/lib/metrics/MetricsAccumulator.d.ts +2 -2
- package/lib/metrics/MetricsAccumulator.js +9 -9
- package/lib/responses.d.ts +4 -4
- package/lib/service/index.js +7 -9
- package/lib/service/loaders.js +8 -6
- package/lib/service/logger/client.d.ts +2 -0
- package/lib/service/logger/client.js +48 -0
- package/lib/service/logger/console.d.ts +1 -1
- package/lib/service/logger/console.js +7 -4
- package/lib/service/logger/index.d.ts +2 -0
- package/lib/service/logger/index.js +8 -2
- package/lib/service/logger/logger.d.ts +4 -15
- package/lib/service/logger/logger.js +61 -18
- package/lib/service/logger/loggerTypes.d.ts +14 -0
- package/lib/service/logger/loggerTypes.js +10 -0
- package/lib/service/logger/metricsLogger.js +10 -10
- package/lib/service/master.js +7 -6
- package/lib/service/metrics/requestMetricsMiddleware.js +14 -13
- package/lib/service/telemetry/client.d.ts +3 -0
- package/lib/service/telemetry/client.js +57 -0
- package/lib/service/telemetry/index.d.ts +1 -0
- package/lib/service/telemetry/index.js +17 -0
- package/lib/service/tracing/TracerSingleton.js +9 -9
- package/lib/service/tracing/metrics/MetricNames.js +12 -12
- package/lib/service/tracing/metrics/instruments.js +14 -7
- package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +5 -5
- package/lib/service/tracing/tracingMiddlewares.js +18 -21
- package/lib/service/worker/index.js +25 -24
- package/lib/service/worker/listeners.js +2 -1
- package/lib/service/worker/runtime/Service.js +1 -1
- package/lib/service/worker/runtime/builtIn/handlers.js +6 -3
- package/lib/service/worker/runtime/builtIn/middlewares.js +5 -3
- package/lib/service/worker/runtime/events/index.d.ts +1 -1
- package/lib/service/worker/runtime/events/index.js +11 -10
- package/lib/service/worker/runtime/events/middlewares/body.js +3 -6
- package/lib/service/worker/runtime/events/middlewares/context.js +1 -1
- package/lib/service/worker/runtime/events/router.js +3 -2
- package/lib/service/worker/runtime/graphql/index.js +8 -7
- package/lib/service/worker/runtime/graphql/middlewares/error.js +5 -8
- package/lib/service/worker/runtime/graphql/middlewares/query.js +7 -6
- package/lib/service/worker/runtime/graphql/middlewares/response.js +1 -1
- package/lib/service/worker/runtime/graphql/middlewares/run.js +3 -2
- package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +4 -3
- package/lib/service/worker/runtime/graphql/middlewares/upload.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/index.d.ts +1 -1
- package/lib/service/worker/runtime/graphql/schema/index.js +8 -7
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +2 -2
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +4 -3
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Auth.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +2 -2
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +2 -2
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +2 -1
- package/lib/service/worker/runtime/graphql/schema/typeDefs/sanitizedString.js +2 -2
- package/lib/service/worker/runtime/graphql/typings.d.ts +3 -3
- package/lib/service/worker/runtime/graphql/utils/cacheControl.js +2 -1
- package/lib/service/worker/runtime/graphql/utils/error.js +10 -9
- package/lib/service/worker/runtime/graphql/utils/pathname.js +3 -2
- package/lib/service/worker/runtime/graphql/utils/translations.d.ts +1 -1
- package/lib/service/worker/runtime/graphql/utils/translations.js +7 -4
- package/lib/service/worker/runtime/http/index.d.ts +2 -2
- package/lib/service/worker/runtime/http/index.js +22 -20
- package/lib/service/worker/runtime/http/middlewares/context.js +7 -5
- package/lib/service/worker/runtime/http/middlewares/error.js +6 -9
- package/lib/service/worker/runtime/http/middlewares/rateLimit.js +1 -1
- package/lib/service/worker/runtime/http/middlewares/setCookie.js +5 -5
- package/lib/service/worker/runtime/http/middlewares/settings.d.ts +1 -1
- package/lib/service/worker/runtime/http/middlewares/settings.js +13 -9
- package/lib/service/worker/runtime/http/middlewares/timings.js +3 -3
- package/lib/service/worker/runtime/http/router.js +3 -2
- package/lib/service/worker/runtime/http/routes.js +8 -5
- package/lib/service/worker/runtime/method.d.ts +2 -2
- package/lib/service/worker/runtime/method.js +1 -1
- package/lib/service/worker/runtime/statusTrack.d.ts +1 -1
- package/lib/service/worker/runtime/statusTrack.js +10 -5
- package/lib/service/worker/runtime/typings.d.ts +10 -10
- package/lib/service/worker/runtime/utils/compose.d.ts +2 -2
- package/lib/service/worker/runtime/utils/compose.js +4 -2
- package/lib/service/worker/runtime/utils/context.d.ts +2 -2
- package/lib/service/worker/runtime/utils/context.js +5 -4
- package/lib/service/worker/runtime/utils/recorder.js +1 -1
- package/lib/service/worker/runtime/utils/toArray.js +2 -1
- package/lib/tracing/UserLandTracer.js +3 -2
- package/lib/tracing/errorReporting/ErrorReport.js +13 -13
- package/lib/tracing/index.js +1 -1
- package/lib/tracing/utils.js +5 -4
- package/lib/utils/MineWinsConflictsResolver.d.ts +4 -4
- package/lib/utils/MineWinsConflictsResolver.js +10 -10
- package/lib/utils/app.js +39 -23
- package/lib/utils/appsStaleIfError.d.ts +1 -0
- package/lib/utils/appsStaleIfError.js +17 -9
- package/lib/utils/billingOptions.js +2 -1
- package/lib/utils/binding.js +4 -2
- package/lib/utils/domain.js +1 -1
- package/lib/utils/error.js +5 -4
- package/lib/utils/index.js +6 -2
- package/lib/utils/log.js +3 -2
- package/lib/utils/message.js +8 -5
- package/lib/utils/renameBy.js +2 -1
- package/lib/utils/retry.js +8 -6
- package/lib/utils/status.js +2 -1
- package/lib/utils/tenant.js +4 -2
- package/lib/utils/time.d.ts +1 -1
- package/lib/utils/time.js +23 -14
- package/package.json +27 -5
- package/lib/utils/buildFullPath.d.ts +0 -11
- package/lib/utils/buildFullPath.js +0 -54
|
@@ -7,23 +7,25 @@ const history = new caches_1.LRUCache({
|
|
|
7
7
|
max: 42,
|
|
8
8
|
});
|
|
9
9
|
exports.LOG_ONCE = 'logOnce';
|
|
10
|
-
|
|
11
|
-
exports.
|
|
10
|
+
const isLog = (message) => (message === null || message === void 0 ? void 0 : message.cmd) === exports.LOG_ONCE;
|
|
11
|
+
exports.isLog = isLog;
|
|
12
|
+
const log = (message, level) => {
|
|
12
13
|
const logger = console[level];
|
|
13
14
|
if (typeof logger === 'function') {
|
|
14
15
|
logger(message);
|
|
15
16
|
}
|
|
16
17
|
};
|
|
18
|
+
exports.log = log;
|
|
17
19
|
// Since we are now using clusters, if we simply console.log something,
|
|
18
20
|
// it may overwhelm the programmer's console with lots of repeated info.
|
|
19
21
|
// This function should be used when you want to warn about something
|
|
20
22
|
// only once
|
|
21
|
-
|
|
23
|
+
const logOnceToDevConsole = (message, level) => {
|
|
22
24
|
const strigified = JSON.stringify(message);
|
|
23
25
|
if (!history.has(strigified)) {
|
|
24
26
|
history.set(strigified, true);
|
|
25
27
|
if (cluster_1.isMaster) {
|
|
26
|
-
exports.log(message, level);
|
|
28
|
+
(0, exports.log)(message, level);
|
|
27
29
|
}
|
|
28
30
|
else if (cluster_1.isWorker && process.send) {
|
|
29
31
|
const logMessage = {
|
|
@@ -35,3 +37,4 @@ exports.logOnceToDevConsole = (message, level) => {
|
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
};
|
|
40
|
+
exports.logOnceToDevConsole = logOnceToDevConsole;
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
8
12
|
}));
|
|
9
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
15
|
};
|
|
12
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
17
|
__exportStar(require("./console"), exports);
|
|
14
18
|
__exportStar(require("./logger"), exports);
|
|
19
|
+
__exportStar(require("./loggerTypes"), exports);
|
|
20
|
+
__exportStar(require("./client"), exports);
|
|
@@ -1,17 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IOContext } from '../worker/runtime/typings';
|
|
3
|
-
export interface LoggerTracingContext {
|
|
4
|
-
requestTracer: IUserLandTracer;
|
|
5
|
-
}
|
|
6
|
-
export declare enum LogLevel {
|
|
7
|
-
Debug = "debug",
|
|
8
|
-
Info = "info",
|
|
9
|
-
Warn = "warn",
|
|
10
|
-
Error = "error"
|
|
11
|
-
}
|
|
12
|
-
interface LoggerContext extends Pick<IOContext, 'account' | 'workspace' | 'requestId' | 'operationId' | 'production'> {
|
|
13
|
-
tracer?: IOContext['tracer'];
|
|
14
|
-
}
|
|
1
|
+
import { LoggerContext, LogLevel } from './loggerTypes';
|
|
15
2
|
export declare class Logger {
|
|
16
3
|
private account;
|
|
17
4
|
private workspace;
|
|
@@ -19,11 +6,13 @@ export declare class Logger {
|
|
|
19
6
|
private requestId;
|
|
20
7
|
private production;
|
|
21
8
|
private tracingState?;
|
|
9
|
+
private logClient;
|
|
10
|
+
private clientInitPromise;
|
|
22
11
|
constructor(ctx: LoggerContext);
|
|
12
|
+
private initLogClient;
|
|
23
13
|
debug: (message: any) => void;
|
|
24
14
|
info: (message: any) => void;
|
|
25
15
|
warn: (warning: any) => void;
|
|
26
16
|
error: (error: any) => void;
|
|
27
17
|
log: (message: any, level: LogLevel) => void;
|
|
28
18
|
}
|
|
29
|
-
export {};
|
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Logger =
|
|
3
|
+
exports.Logger = void 0;
|
|
4
4
|
const constants_1 = require("../../constants");
|
|
5
5
|
const error_1 = require("../../utils/error");
|
|
6
6
|
const log_1 = require("../../utils/log");
|
|
7
|
-
const
|
|
7
|
+
const loggerTypes_1 = require("./loggerTypes");
|
|
8
|
+
const client_1 = require("./client");
|
|
8
9
|
const app = constants_1.APP.ID;
|
|
9
10
|
const EMPTY_MESSAGE = 'Logger.log was called with null or undefined message';
|
|
10
|
-
var LogLevel;
|
|
11
|
-
(function (LogLevel) {
|
|
12
|
-
LogLevel["Debug"] = "debug";
|
|
13
|
-
LogLevel["Info"] = "info";
|
|
14
|
-
LogLevel["Warn"] = "warn";
|
|
15
|
-
LogLevel["Error"] = "error";
|
|
16
|
-
})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
|
|
17
11
|
class Logger {
|
|
18
12
|
constructor(ctx) {
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
13
|
+
this.logClient = undefined;
|
|
14
|
+
this.clientInitPromise = undefined;
|
|
15
|
+
this.debug = (message) => this.log(message, loggerTypes_1.LogLevel.Debug);
|
|
16
|
+
this.info = (message) => this.log(message, loggerTypes_1.LogLevel.Info);
|
|
17
|
+
this.warn = (warning) => this.log(warning, loggerTypes_1.LogLevel.Warn);
|
|
18
|
+
this.error = (error) => this.log(error, loggerTypes_1.LogLevel.Error);
|
|
23
19
|
this.log = (message, level) => {
|
|
24
20
|
var _a;
|
|
25
|
-
const data = message ? error_1.cleanError(message) : EMPTY_MESSAGE;
|
|
26
|
-
log_1.cleanLog(data);
|
|
21
|
+
const data = message ? (0, error_1.cleanError)(message) : EMPTY_MESSAGE;
|
|
22
|
+
(0, log_1.cleanLog)(data);
|
|
27
23
|
/* tslint:disable:object-literal-sort-keys */
|
|
28
24
|
const inflatedLog = {
|
|
29
25
|
__VTEX_IO_LOG: true,
|
|
@@ -40,11 +36,35 @@ class Logger {
|
|
|
40
36
|
// Mark third-party apps logs to send to skidder
|
|
41
37
|
if (constants_1.APP.IS_THIRD_PARTY()) {
|
|
42
38
|
Object.assign(inflatedLog, {
|
|
43
|
-
__SKIDDER_TOPIC_1: `skidder.vendor.${constants_1.APP.VENDOR}`,
|
|
44
|
-
__SKIDDER_TOPIC_2: `skidder.app.${constants_1.APP.VENDOR}.${constants_1.APP.NAME}`,
|
|
39
|
+
'__SKIDDER_TOPIC_1': `skidder.vendor.${constants_1.APP.VENDOR}`,
|
|
40
|
+
'__SKIDDER_TOPIC_2': `skidder.app.${constants_1.APP.VENDOR}.${constants_1.APP.NAME}`,
|
|
45
41
|
});
|
|
46
42
|
}
|
|
47
|
-
|
|
43
|
+
if (this.logClient) {
|
|
44
|
+
try {
|
|
45
|
+
let logMessage = typeof data === 'string' ? data : JSON.stringify(data);
|
|
46
|
+
switch (level) {
|
|
47
|
+
case loggerTypes_1.LogLevel.Debug:
|
|
48
|
+
this.logClient.debug(logMessage, inflatedLog);
|
|
49
|
+
break;
|
|
50
|
+
case loggerTypes_1.LogLevel.Info:
|
|
51
|
+
this.logClient.info(logMessage, inflatedLog);
|
|
52
|
+
break;
|
|
53
|
+
case loggerTypes_1.LogLevel.Warn:
|
|
54
|
+
this.logClient.warn(logMessage, inflatedLog);
|
|
55
|
+
break;
|
|
56
|
+
case loggerTypes_1.LogLevel.Error:
|
|
57
|
+
this.logClient.error(logMessage, inflatedLog);
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
this.logClient.info(logMessage, inflatedLog);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
console.error('Error using diagnostics client for logging:', e);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
console.log(typeof inflatedLog === 'string' ? JSON.stringify(inflatedLog) : inflatedLog);
|
|
48
68
|
};
|
|
49
69
|
this.account = ctx.account;
|
|
50
70
|
this.workspace = ctx.workspace;
|
|
@@ -57,6 +77,29 @@ class Logger {
|
|
|
57
77
|
traceId: ctx.tracer.traceId,
|
|
58
78
|
};
|
|
59
79
|
}
|
|
80
|
+
// this.initLogClient();
|
|
81
|
+
}
|
|
82
|
+
initLogClient() {
|
|
83
|
+
if (this.clientInitPromise) {
|
|
84
|
+
return this.clientInitPromise;
|
|
85
|
+
}
|
|
86
|
+
this.clientInitPromise = (async () => {
|
|
87
|
+
try {
|
|
88
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
89
|
+
setTimeout(() => reject(new Error('Log client initialization timeout')), constants_1.LOG_CLIENT_INIT_TIMEOUT_MS);
|
|
90
|
+
});
|
|
91
|
+
this.logClient = await Promise.race([
|
|
92
|
+
(0, client_1.getLogClient)(this.account, this.workspace, constants_1.APP.NAME),
|
|
93
|
+
timeoutPromise
|
|
94
|
+
]);
|
|
95
|
+
return this.logClient;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.error('Failed to initialize log client:', error);
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
})();
|
|
102
|
+
return this.clientInitPromise;
|
|
60
103
|
}
|
|
61
104
|
}
|
|
62
105
|
exports.Logger = Logger;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IOContext } from '../worker/runtime/typings';
|
|
2
|
+
export interface LoggerContext extends Pick<IOContext, 'account' | 'workspace' | 'requestId' | 'operationId' | 'production'> {
|
|
3
|
+
tracer?: IOContext['tracer'];
|
|
4
|
+
}
|
|
5
|
+
export interface TracingState {
|
|
6
|
+
isTraceSampled: boolean;
|
|
7
|
+
traceId?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare enum LogLevel {
|
|
10
|
+
Debug = "debug",
|
|
11
|
+
Info = "info",
|
|
12
|
+
Warn = "warn",
|
|
13
|
+
Error = "error"
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogLevel = void 0;
|
|
4
|
+
var LogLevel;
|
|
5
|
+
(function (LogLevel) {
|
|
6
|
+
LogLevel["Debug"] = "debug";
|
|
7
|
+
LogLevel["Info"] = "info";
|
|
8
|
+
LogLevel["Warn"] = "warn";
|
|
9
|
+
LogLevel["Error"] = "error";
|
|
10
|
+
})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
|
|
@@ -21,11 +21,11 @@ class MetricsLogger {
|
|
|
21
21
|
// private attributes
|
|
22
22
|
//////////////////////
|
|
23
23
|
let samples = {};
|
|
24
|
-
let lastCpu = diff_1.cpuSnapshot();
|
|
24
|
+
let lastCpu = (0, diff_1.cpuSnapshot)();
|
|
25
25
|
//////////////////////
|
|
26
26
|
// private methods definitions
|
|
27
27
|
//////////////////////
|
|
28
|
-
const summaries = ramda_1.compose(ramda_1.reject(ramda_1.isNil), ramda_1.values, ramda_1.mapObjIndexed(getSummary));
|
|
28
|
+
const summaries = (0, ramda_1.compose)((0, ramda_1.reject)(ramda_1.isNil), ramda_1.values, (0, ramda_1.mapObjIndexed)(getSummary));
|
|
29
29
|
function getDefaultStoredashProperties() {
|
|
30
30
|
return {
|
|
31
31
|
Count: 1,
|
|
@@ -47,8 +47,8 @@ class MetricsLogger {
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
function getCpuUsage() {
|
|
50
|
-
const cpu = diff_1.cpuSnapshot();
|
|
51
|
-
const cpuDiff = diff_1.snapshotDiff(cpu, lastCpu);
|
|
50
|
+
const cpu = (0, diff_1.cpuSnapshot)();
|
|
51
|
+
const cpuDiff = (0, diff_1.snapshotDiff)(cpu, lastCpu);
|
|
52
52
|
lastCpu = cpu;
|
|
53
53
|
const metric = {
|
|
54
54
|
Data: {
|
|
@@ -103,7 +103,7 @@ class MetricsLogger {
|
|
|
103
103
|
return false;
|
|
104
104
|
}
|
|
105
105
|
try {
|
|
106
|
-
fast_json_stable_stringify_1.default(key);
|
|
106
|
+
(0, fast_json_stable_stringify_1.default)(key);
|
|
107
107
|
}
|
|
108
108
|
catch {
|
|
109
109
|
return false;
|
|
@@ -111,17 +111,17 @@ class MetricsLogger {
|
|
|
111
111
|
return true;
|
|
112
112
|
}
|
|
113
113
|
function getStrKey(key) {
|
|
114
|
-
return fast_json_stable_stringify_1.default(key);
|
|
114
|
+
return (0, fast_json_stable_stringify_1.default)(key);
|
|
115
115
|
}
|
|
116
116
|
function getNumericSummary(vals) {
|
|
117
117
|
return {
|
|
118
118
|
count: vals.length,
|
|
119
119
|
max: Math.max(...vals),
|
|
120
|
-
median: stats_lite_1.median(vals),
|
|
120
|
+
median: (0, stats_lite_1.median)(vals),
|
|
121
121
|
min: Math.min(...vals),
|
|
122
|
-
percentile95: stats_lite_1.percentile(vals, 0.95),
|
|
123
|
-
percentile99: stats_lite_1.percentile(vals, 0.99),
|
|
124
|
-
sum: stats_lite_1.sum(vals),
|
|
122
|
+
percentile95: (0, stats_lite_1.percentile)(vals, 0.95),
|
|
123
|
+
percentile99: (0, stats_lite_1.percentile)(vals, 0.99),
|
|
124
|
+
sum: (0, stats_lite_1.sum)(vals),
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
127
|
//////////////////////
|
package/lib/service/master.js
CHANGED
|
@@ -12,12 +12,12 @@ const listeners_1 = require("./worker/listeners");
|
|
|
12
12
|
const statusTrack_1 = require("./worker/runtime/statusTrack");
|
|
13
13
|
let handledSignal;
|
|
14
14
|
const onMessage = (worker, message) => {
|
|
15
|
-
if (logger_1.isLog(message)) {
|
|
16
|
-
logger_1.logOnceToDevConsole(message.message, message.level);
|
|
15
|
+
if ((0, logger_1.isLog)(message)) {
|
|
16
|
+
(0, logger_1.logOnceToDevConsole)(message.message, message.level);
|
|
17
17
|
}
|
|
18
|
-
else if (statusTrack_1.isStatusTrackBroadcast(message)) {
|
|
19
|
-
statusTrack_1.trackStatus();
|
|
20
|
-
statusTrack_1.broadcastStatusTrack();
|
|
18
|
+
else if ((0, statusTrack_1.isStatusTrackBroadcast)(message)) {
|
|
19
|
+
(0, statusTrack_1.trackStatus)();
|
|
20
|
+
(0, statusTrack_1.broadcastStatusTrack)();
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
23
|
listeners_1.logger.warn({
|
|
@@ -65,7 +65,7 @@ const handleSignal = (timeout) => (signal) => {
|
|
|
65
65
|
process.exit(os_1.constants.signals[signal]);
|
|
66
66
|
}, waitTimeToForceKill);
|
|
67
67
|
};
|
|
68
|
-
|
|
68
|
+
const startMaster = (service) => {
|
|
69
69
|
const { workers: numWorkers, timeout = GRACEFULLY_SHUTDOWN_TIMEOUT_S } = service;
|
|
70
70
|
if (service.deterministicVary) {
|
|
71
71
|
process.env.DETERMINISTIC_VARY = 'true';
|
|
@@ -86,3 +86,4 @@ exports.startMaster = (service) => {
|
|
|
86
86
|
process.on('SIGINT', handleSignal(SIGINT_TIMEOUT_S));
|
|
87
87
|
process.on('SIGTERM', handleSignal(shutdownTimeout));
|
|
88
88
|
};
|
|
89
|
+
exports.startMaster = startMaster;
|
|
@@ -4,16 +4,16 @@ exports.addRequestMetricsMiddleware = void 0;
|
|
|
4
4
|
const stream_1 = require("stream");
|
|
5
5
|
const utils_1 = require("../../utils");
|
|
6
6
|
const instruments_1 = require("../tracing/metrics/instruments");
|
|
7
|
-
|
|
8
|
-
const concurrentRequests = instruments_1.createConcurrentRequestsInstrument();
|
|
9
|
-
const requestTimings = instruments_1.createRequestsTimingsInstrument();
|
|
10
|
-
const totalRequests = instruments_1.createTotalRequestsInstrument();
|
|
11
|
-
const responseSizes = instruments_1.createRequestsResponseSizesInstrument();
|
|
12
|
-
const abortedRequests = instruments_1.createTotalAbortedRequestsInstrument();
|
|
7
|
+
const addRequestMetricsMiddleware = () => {
|
|
8
|
+
const concurrentRequests = (0, instruments_1.createConcurrentRequestsInstrument)();
|
|
9
|
+
const requestTimings = (0, instruments_1.createRequestsTimingsInstrument)();
|
|
10
|
+
const totalRequests = (0, instruments_1.createTotalRequestsInstrument)();
|
|
11
|
+
const responseSizes = (0, instruments_1.createRequestsResponseSizesInstrument)();
|
|
12
|
+
const abortedRequests = (0, instruments_1.createTotalAbortedRequestsInstrument)();
|
|
13
13
|
return async function addRequestMetrics(ctx, next) {
|
|
14
14
|
const start = process.hrtime();
|
|
15
15
|
concurrentRequests.inc(1);
|
|
16
|
-
ctx.req.once('aborted', () => abortedRequests.inc({ ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName }, 1));
|
|
16
|
+
ctx.req.once('aborted', () => abortedRequests.inc({ ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */]: ctx.requestHandlerName }, 1));
|
|
17
17
|
let responseClosed = false;
|
|
18
18
|
ctx.res.once('close', () => (responseClosed = true));
|
|
19
19
|
try {
|
|
@@ -22,24 +22,25 @@ exports.addRequestMetricsMiddleware = () => {
|
|
|
22
22
|
finally {
|
|
23
23
|
const responseLength = ctx.response.length;
|
|
24
24
|
if (responseLength) {
|
|
25
|
-
responseSizes.observe({ ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName }, responseLength);
|
|
25
|
+
responseSizes.observe({ ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */]: ctx.requestHandlerName }, responseLength);
|
|
26
26
|
}
|
|
27
27
|
totalRequests.inc({
|
|
28
|
-
["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName,
|
|
29
|
-
["status_code" /* STATUS_CODE */]: ctx.response.status,
|
|
28
|
+
["handler" /* RequestsMetricLabels.REQUEST_HANDLER */]: ctx.requestHandlerName,
|
|
29
|
+
["status_code" /* RequestsMetricLabels.STATUS_CODE */]: ctx.response.status,
|
|
30
30
|
}, 1);
|
|
31
31
|
const onResFinished = () => {
|
|
32
32
|
requestTimings.observe({
|
|
33
|
-
["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName,
|
|
34
|
-
}, utils_1.hrToMillisFloat(process.hrtime(start)));
|
|
33
|
+
["handler" /* RequestsMetricLabels.REQUEST_HANDLER */]: ctx.requestHandlerName,
|
|
34
|
+
}, (0, utils_1.hrToMillisFloat)(process.hrtime(start)));
|
|
35
35
|
concurrentRequests.dec(1);
|
|
36
36
|
};
|
|
37
37
|
if (responseClosed) {
|
|
38
38
|
onResFinished();
|
|
39
39
|
}
|
|
40
40
|
else {
|
|
41
|
-
stream_1.finished(ctx.res, onResFinished);
|
|
41
|
+
(0, stream_1.finished)(ctx.res, onResFinished);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
|
+
exports.addRequestMetricsMiddleware = addRequestMetricsMiddleware;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resetTelemetryClient = exports.getTelemetryClient = void 0;
|
|
4
|
+
const diagnostics_nodejs_1 = require("@vtex/diagnostics-nodejs");
|
|
5
|
+
const constants_1 = require("../../constants");
|
|
6
|
+
class TelemetryClientSingleton {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.initializationPromise = undefined;
|
|
9
|
+
}
|
|
10
|
+
static getInstance() {
|
|
11
|
+
if (!TelemetryClientSingleton.instance) {
|
|
12
|
+
TelemetryClientSingleton.instance = new TelemetryClientSingleton();
|
|
13
|
+
}
|
|
14
|
+
return TelemetryClientSingleton.instance;
|
|
15
|
+
}
|
|
16
|
+
async initTelemetryClient() {
|
|
17
|
+
try {
|
|
18
|
+
const telemetryClient = await (0, diagnostics_nodejs_1.NewTelemetryClient)('node-vtex-api', constants_1.APP.ID || 'vtex-app', {
|
|
19
|
+
additionalAttrs: {
|
|
20
|
+
'version': constants_1.APP.VERSION || '',
|
|
21
|
+
'environment': process.env.VTEX_WORKSPACE || 'development',
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
this.telemetryClient = telemetryClient;
|
|
25
|
+
return telemetryClient;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.error('Failed to initialize telemetry client:', error);
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
this.initializationPromise = undefined;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async getClient() {
|
|
36
|
+
if (this.telemetryClient) {
|
|
37
|
+
return this.telemetryClient;
|
|
38
|
+
}
|
|
39
|
+
if (this.initializationPromise) {
|
|
40
|
+
return this.initializationPromise;
|
|
41
|
+
}
|
|
42
|
+
this.initializationPromise = this.initTelemetryClient();
|
|
43
|
+
return this.initializationPromise;
|
|
44
|
+
}
|
|
45
|
+
reset() {
|
|
46
|
+
this.telemetryClient = undefined;
|
|
47
|
+
this.initializationPromise = undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function getTelemetryClient() {
|
|
51
|
+
return TelemetryClientSingleton.getInstance().getClient();
|
|
52
|
+
}
|
|
53
|
+
exports.getTelemetryClient = getTelemetryClient;
|
|
54
|
+
function resetTelemetryClient() {
|
|
55
|
+
TelemetryClientSingleton.getInstance().reset();
|
|
56
|
+
}
|
|
57
|
+
exports.resetTelemetryClient = resetTelemetryClient;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './client';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./client"), exports);
|
|
@@ -16,14 +16,14 @@ class TracerSingleton {
|
|
|
16
16
|
return TracerSingleton.singleton;
|
|
17
17
|
}
|
|
18
18
|
static initServiceTracer() {
|
|
19
|
-
return TracerSingleton.createJaegerTracer(utils_1.appIdToAppAtMajor(constants_1.APP.ID), {
|
|
20
|
-
["app.linked" /* VTEX_APP_LINKED */]: constants_1.LINKED,
|
|
21
|
-
["app.node_vtex_api_version" /* VTEX_APP_NODE_VTEX_API_VERSION */]: constants_1.NODE_VTEX_API_VERSION,
|
|
22
|
-
["app.production" /* VTEX_APP_PRODUCTION */]: constants_1.PRODUCTION,
|
|
23
|
-
["app.region" /* VTEX_APP_REGION */]: constants_1.REGION,
|
|
24
|
-
["app.version" /* VTEX_APP_VERSION */]: constants_1.APP.VERSION,
|
|
25
|
-
["app.workspace" /* VTEX_APP_WORKSPACE */]: constants_1.WORKSPACE,
|
|
26
|
-
["app.node_env" /* VTEX_APP_NODE_ENV */]: constants_1.NODE_ENV !== null && constants_1.NODE_ENV !== void 0 ? constants_1.NODE_ENV : 'undefined',
|
|
19
|
+
return TracerSingleton.createJaegerTracer((0, utils_1.appIdToAppAtMajor)(constants_1.APP.ID), {
|
|
20
|
+
["app.linked" /* AppTags.VTEX_APP_LINKED */]: constants_1.LINKED,
|
|
21
|
+
["app.node_vtex_api_version" /* AppTags.VTEX_APP_NODE_VTEX_API_VERSION */]: constants_1.NODE_VTEX_API_VERSION,
|
|
22
|
+
["app.production" /* AppTags.VTEX_APP_PRODUCTION */]: constants_1.PRODUCTION,
|
|
23
|
+
["app.region" /* AppTags.VTEX_APP_REGION */]: constants_1.REGION,
|
|
24
|
+
["app.version" /* AppTags.VTEX_APP_VERSION */]: constants_1.APP.VERSION,
|
|
25
|
+
["app.workspace" /* AppTags.VTEX_APP_WORKSPACE */]: constants_1.WORKSPACE,
|
|
26
|
+
["app.node_env" /* AppTags.VTEX_APP_NODE_ENV */]: constants_1.NODE_ENV !== null && constants_1.NODE_ENV !== void 0 ? constants_1.NODE_ENV : 'undefined',
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
static createJaegerTracer(serviceName, defaultTags) {
|
|
@@ -43,7 +43,7 @@ class TracerSingleton {
|
|
|
43
43
|
metrics: new jaeger_client_1.PrometheusMetricsFactory(prom_client_1.default, 'runtime'),
|
|
44
44
|
tags: defaultTags,
|
|
45
45
|
};
|
|
46
|
-
return jaeger_client_1.initTracer(config, options);
|
|
46
|
+
return (0, jaeger_client_1.initTracer)(config, options);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
exports.TracerSingleton = TracerSingleton;
|
|
@@ -4,42 +4,42 @@ exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES = exports.BETWEEN_SCRAPES_EVE
|
|
|
4
4
|
exports.CONCURRENT_REQUESTS = {
|
|
5
5
|
name: 'io_http_requests_current',
|
|
6
6
|
help: 'The current number of requests in course.',
|
|
7
|
-
type: "gauge" /* GAUGE */,
|
|
7
|
+
type: "gauge" /* METRIC_TYPES.GAUGE */,
|
|
8
8
|
};
|
|
9
9
|
exports.REQUESTS_TOTAL = {
|
|
10
10
|
name: 'runtime_http_requests_total',
|
|
11
11
|
help: 'The total number of HTTP requests.',
|
|
12
|
-
labelNames: ["status_code" /* STATUS_CODE */, "handler" /* REQUEST_HANDLER */],
|
|
13
|
-
type: "counter" /* COUNTER */,
|
|
12
|
+
labelNames: ["status_code" /* RequestsMetricLabels.STATUS_CODE */, "handler" /* RequestsMetricLabels.REQUEST_HANDLER */],
|
|
13
|
+
type: "counter" /* METRIC_TYPES.COUNTER */,
|
|
14
14
|
};
|
|
15
15
|
exports.REQUESTS_ABORTED = {
|
|
16
16
|
name: 'runtime_http_aborted_requests_total',
|
|
17
17
|
help: 'The total number of HTTP requests aborted.',
|
|
18
|
-
labelNames: ["handler" /* REQUEST_HANDLER */],
|
|
19
|
-
type: "counter" /* COUNTER */,
|
|
18
|
+
labelNames: ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */],
|
|
19
|
+
type: "counter" /* METRIC_TYPES.COUNTER */,
|
|
20
20
|
};
|
|
21
21
|
exports.REQUEST_TIMINGS = {
|
|
22
22
|
name: 'runtime_http_requests_duration_milliseconds',
|
|
23
23
|
help: 'The incoming http requests total duration.',
|
|
24
|
-
labelNames: ["handler" /* REQUEST_HANDLER */],
|
|
24
|
+
labelNames: ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */],
|
|
25
25
|
buckets: [10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120],
|
|
26
|
-
type: "histogram" /* HISTOGRAM */,
|
|
26
|
+
type: "histogram" /* METRIC_TYPES.HISTOGRAM */,
|
|
27
27
|
};
|
|
28
28
|
exports.REQUEST_RESPONSE_SIZES = {
|
|
29
29
|
name: 'runtime_http_response_size_bytes',
|
|
30
30
|
help: `The outgoing response sizes (only applicable when the response isn't a stream).`,
|
|
31
|
-
labelNames: ["handler" /* REQUEST_HANDLER */],
|
|
31
|
+
labelNames: ["handler" /* RequestsMetricLabels.REQUEST_HANDLER */],
|
|
32
32
|
buckets: [500, 2000, 8000, 16000, 64000, 256000, 1024000, 4096000],
|
|
33
|
-
type: "histogram" /* HISTOGRAM */,
|
|
33
|
+
type: "histogram" /* METRIC_TYPES.HISTOGRAM */,
|
|
34
34
|
};
|
|
35
35
|
exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX = {
|
|
36
36
|
name: 'runtime_event_loop_lag_max_between_scrapes_seconds',
|
|
37
37
|
help: 'The max event loop lag that occurred between this and the previous scrape',
|
|
38
|
-
type: "gauge" /* GAUGE */,
|
|
38
|
+
type: "gauge" /* METRIC_TYPES.GAUGE */,
|
|
39
39
|
};
|
|
40
40
|
exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES = {
|
|
41
41
|
name: 'runtime_event_loop_lag_percentiles_between_scrapes_seconds',
|
|
42
42
|
help: 'Event loop lag percentiles from the observations that occurred between this and the previous scrape',
|
|
43
|
-
labelNames: ["percentile" /* PERCENTILE */],
|
|
44
|
-
type: "gauge" /* GAUGE */,
|
|
43
|
+
labelNames: ["percentile" /* EventLoopMetricLabels.PERCENTILE */],
|
|
44
|
+
type: "gauge" /* METRIC_TYPES.GAUGE */,
|
|
45
45
|
};
|
|
@@ -3,10 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createEventLoopLagPercentilesInstrument = exports.createEventLoopLagMaxInstrument = exports.createConcurrentRequestsInstrument = exports.createRequestsResponseSizesInstrument = exports.createRequestsTimingsInstrument = exports.createTotalAbortedRequestsInstrument = exports.createTotalRequestsInstrument = void 0;
|
|
4
4
|
const prom_client_1 = require("prom-client");
|
|
5
5
|
const MetricNames_1 = require("./MetricNames");
|
|
6
|
-
|
|
7
|
-
exports.
|
|
8
|
-
|
|
9
|
-
exports.
|
|
10
|
-
|
|
11
|
-
exports.
|
|
12
|
-
|
|
6
|
+
const createTotalRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_TOTAL);
|
|
7
|
+
exports.createTotalRequestsInstrument = createTotalRequestsInstrument;
|
|
8
|
+
const createTotalAbortedRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_ABORTED);
|
|
9
|
+
exports.createTotalAbortedRequestsInstrument = createTotalAbortedRequestsInstrument;
|
|
10
|
+
const createRequestsTimingsInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_TIMINGS);
|
|
11
|
+
exports.createRequestsTimingsInstrument = createRequestsTimingsInstrument;
|
|
12
|
+
const createRequestsResponseSizesInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_RESPONSE_SIZES);
|
|
13
|
+
exports.createRequestsResponseSizesInstrument = createRequestsResponseSizesInstrument;
|
|
14
|
+
const createConcurrentRequestsInstrument = () => new prom_client_1.Gauge(MetricNames_1.CONCURRENT_REQUESTS);
|
|
15
|
+
exports.createConcurrentRequestsInstrument = createConcurrentRequestsInstrument;
|
|
16
|
+
const createEventLoopLagMaxInstrument = () => new prom_client_1.Gauge(MetricNames_1.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX);
|
|
17
|
+
exports.createEventLoopLagMaxInstrument = createEventLoopLagMaxInstrument;
|
|
18
|
+
const createEventLoopLagPercentilesInstrument = () => new prom_client_1.Gauge(MetricNames_1.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES);
|
|
19
|
+
exports.createEventLoopLagPercentilesInstrument = createEventLoopLagPercentilesInstrument;
|
|
@@ -6,21 +6,21 @@ const utils_1 = require("../../../../utils");
|
|
|
6
6
|
const instruments_1 = require("../instruments");
|
|
7
7
|
class EventLoopLagMeasurer {
|
|
8
8
|
constructor() {
|
|
9
|
-
this.eventLoopDelayMonitor = perf_hooks_1.monitorEventLoopDelay({ resolution: 10 });
|
|
10
|
-
this.percentilesInstrument = instruments_1.createEventLoopLagPercentilesInstrument();
|
|
11
|
-
this.maxInstrument = instruments_1.createEventLoopLagMaxInstrument();
|
|
9
|
+
this.eventLoopDelayMonitor = (0, perf_hooks_1.monitorEventLoopDelay)({ resolution: 10 });
|
|
10
|
+
this.percentilesInstrument = (0, instruments_1.createEventLoopLagPercentilesInstrument)();
|
|
11
|
+
this.maxInstrument = (0, instruments_1.createEventLoopLagMaxInstrument)();
|
|
12
12
|
}
|
|
13
13
|
start() {
|
|
14
14
|
this.eventLoopDelayMonitor.enable();
|
|
15
15
|
}
|
|
16
16
|
async updateInstrumentsAndReset() {
|
|
17
|
-
this.maxInstrument.set(utils_1.nanosecondsToSeconds(this.eventLoopDelayMonitor.max));
|
|
17
|
+
this.maxInstrument.set((0, utils_1.nanosecondsToSeconds)(this.eventLoopDelayMonitor.max));
|
|
18
18
|
this.setPercentileObservation(95);
|
|
19
19
|
this.setPercentileObservation(99);
|
|
20
20
|
this.eventLoopDelayMonitor.reset();
|
|
21
21
|
}
|
|
22
22
|
setPercentileObservation(percentile) {
|
|
23
|
-
this.percentilesInstrument.set({ ["percentile" /* PERCENTILE */]: percentile }, utils_1.nanosecondsToSeconds(this.eventLoopDelayMonitor.percentile(percentile)));
|
|
23
|
+
this.percentilesInstrument.set({ ["percentile" /* EventLoopMetricLabels.PERCENTILE */]: percentile }, (0, utils_1.nanosecondsToSeconds)(this.eventLoopDelayMonitor.percentile(percentile)));
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
exports.EventLoopLagMeasurer = EventLoopLagMeasurer;
|