Current File : //lib/node_modules/pm2/node_modules/@pm2/io/build/main/src/services/metrics.js |
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const debug_1 = require("debug");
const v8_1 = require("../metrics/v8");
const eventLoopDelay_1 = require("../metrics/eventLoopDelay");
const metricConfig_1 = require("../utils/metricConfig");
const eventLoopHandlesRequests_1 = require("../metrics/eventLoopHandlesRequests");
const transaction_1 = require("../metrics/transaction");
const network_1 = require("../metrics/network");
const metricFromDump_1 = require("../metrics/metricFromDump");
const debug = debug_1.default('axm:metricService');
class MetricsService {
constructor(metricsFeature) {
this.defaultConf = {
eventLoopDelay: true,
eventLoopActive: true,
transaction: { http: true }
};
this.metricsFeature = metricsFeature;
this.services = new Map();
this.services.set('v8', new v8_1.default(metricsFeature));
this.services.set('eventLoopDelay', new eventLoopDelay_1.default(metricsFeature));
this.services.set('eventLoopActive', new eventLoopHandlesRequests_1.default(metricsFeature));
this.services.set('transaction', new transaction_1.default(metricsFeature));
this.services.set('network', new network_1.default(metricsFeature));
this.services.set('worker', new metricFromDump_1.default(metricsFeature, [
{ name: 'Child processes', property: 'ChildProcess' },
{ name: 'Threads', property: 'MessagePort' }
]));
this.services.set('fileRequests', new metricFromDump_1.default(metricsFeature, { name: 'Files requests', property: 'FSReqWrap', parentProperty: 'requests' }));
}
init(config, force) {
if (!force) {
config = metricConfig_1.default.getConfig(config, this.defaultConf);
}
// init metrics only if they are enabled in config
for (let property in config) {
if (config.hasOwnProperty(property) && config[property] !== false) {
if (property === 'deepMetrics') {
const DeepMetrics = require('../metrics/deepMetrics').default;
this.services.set('deepMetrics', new DeepMetrics(this.metricsFeature));
}
if (!this.services.has(property)) {
debug(`Metric ${property} does not exist`);
continue;
}
const subConf = config[property];
this.services.get(property).init(subConf);
}
}
}
destroyAll() {
this.services.forEach((service, serviceName) => {
if (service.destroy && typeof service.destroy === 'function') {
service.destroy();
}
});
}
get(name) {
if (!this.services.has(name)) {
debug(`Service ${name} not found !`);
return null;
}
return this.services.get(name);
}
}
exports.default = MetricsService;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQXlCO0FBQ3pCLHNDQUE4QjtBQUU5Qiw4REFBNEQ7QUFDNUQsd0RBQWdEO0FBQ2hELGtGQUFnRjtBQUNoRix3REFBZ0Q7QUFDaEQsZ0RBQThDO0FBQzlDLDhEQUFzRDtBQUV0RCxNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtBQUV4QztJQVdFLFlBQWEsY0FBOEI7UUFObkMsZ0JBQVcsR0FBRztZQUNwQixjQUFjLEVBQUUsSUFBSTtZQUNwQixlQUFlLEVBQUUsSUFBSTtZQUNyQixXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1NBQzVCLENBQUE7UUFHQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksWUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSx3QkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO1FBQzdFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksa0NBQThCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtRQUN4RixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxxQkFBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksaUJBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxD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