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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQXlCO0FBQ3pCLHNDQUE4QjtBQUU5Qiw4REFBNEQ7QUFDNUQsd0RBQWdEO0FBQ2hELGtGQUFnRjtBQUNoRix3REFBZ0Q7QUFDaEQsZ0RBQThDO0FBQzlDLDhEQUFzRDtBQUV0RCxNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtBQUV4QztJQVdFLFlBQWEsY0FBOEI7UUFObkMsZ0JBQVcsR0FBRztZQUNwQixjQUFjLEVBQUUsSUFBSTtZQUNwQixlQUFlLEVBQUUsSUFBSTtZQUNyQixXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1NBQzVCLENBQUE7UUFHQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksWUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSx3QkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO1FBQzdFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksa0NBQThCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtRQUN4RixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxxQkFBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksaUJBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFBO1FBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLHdCQUFjLENBQUMsY0FBYyxFQUFFO1lBQzdELEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUU7WUFDckQsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7U0FDN0MsQ0FBQyxDQUFDLENBQUE7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSx3QkFBYyxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdEosQ0FBQztJQUVELElBQUksQ0FBRSxNQUFPLEVBQUUsS0FBTTtRQUVuQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsTUFBTSxHQUFHLHNCQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7U0FDMUQ7UUFFRCxrREFBa0Q7UUFDbEQsS0FBSyxJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUU7WUFDM0IsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLEVBQUU7Z0JBRWpFLElBQUksUUFBUSxLQUFLLGFBQWEsRUFBRTtvQkFDOUIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUMsT0FBTyxDQUFBO29CQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7aUJBQ3ZFO2dCQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDaEMsS0FBSyxDQUFDLFVBQVUsUUFBUSxpQkFBaUIsQ0FBQyxDQUFBO29CQUMxQyxTQUFRO2lCQUNUO2dCQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQzFDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxFQUFFO1lBQzdDLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO2dCQUM1RCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxHQUFHLENBQUUsSUFBWTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1QixLQUFLLENBQUMsV0FBVyxJQUFJLGNBQWMsQ0FBQyxDQUFBO1lBQ3BDLE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2hDLENBQUM7Q0FDRjtBQXBFRCxpQ0FvRUMifQ==