Current File : //lib/node_modules/pm2/node_modules/@pm2/io/build/main/src/metrics/network.js |
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const netModule = require("net");
const metricConfig_1 = require("../utils/metricConfig");
const debug_1 = require("debug");
const debug = debug_1.default('axm:network');
class NetworkMetric {
constructor(metricFeature) {
this.defaultConf = {
ports: false,
traffic: true
};
this.metricFeature = metricFeature;
}
init(config) {
config = metricConfig_1.default.getConfig(config, this.defaultConf);
if (config.traffic) {
this.catchTraffic(config.traffic);
}
if (config.ports) {
this.catchPorts();
}
}
destroy() {
clearTimeout(this.timer);
debug('NetworkMetric destroyed !');
}
catchPorts() {
const portsList = [];
let openedPorts = 'N/A';
this.metricFeature.metric({
name: 'Open ports',
type: 'internal/network/open-ports',
value: function () { return openedPorts; }
});
const originalListen = netModule.Server.prototype.listen;
netModule.Server.prototype.listen = function () {
const port = parseInt(arguments[0], 10);
if (!isNaN(port) && portsList.indexOf(port) === -1) {
portsList.push(port);
openedPorts = portsList.sort().join();
}
this.once('close', function () {
if (portsList.indexOf(port) > -1) {
portsList.splice(portsList.indexOf(port), 1);
openedPorts = portsList.sort().join();
}
});
return originalListen.apply(this, arguments);
};
}
catchTraffic(config) {
let download = 0;
let upload = 0;
let up = '0 B/sec';
let down = '0 B/sec';
const filter = function (bytes) {
let toFixed = 0;
if (bytes < 1024) {
toFixed = 6;
}
else if (bytes < (1024 * 1024)) {
toFixed = 3;
}
else if (bytes !== 0) {
toFixed = 2;
}
bytes = (bytes / (1024 * 1024)).toFixed(toFixed);
let cutZeros = 0;
for (let i = (bytes.length - 1); i > 0; --i) {
if (bytes[i] === '.') {
++cutZeros;
break;
}
if (bytes[i] !== '0')
break;
++cutZeros;
}
if (cutZeros > 0) {
bytes = bytes.slice(0, -(cutZeros));
}
return (bytes + ' MB/s');
};
const interval = setInterval(function () {
up = filter(upload);
down = filter(download);
upload = 0;
download = 0;
}, 999);
interval.unref();
if (config === true || config.download === true) {
this.metricFeature.metric({
name: 'Network In',
type: 'internal/network/in',
agg_type: 'sum',
value: function () {
return down;
}
});
}
if (config === true || config.upload === true) {
this.metricFeature.metric({
name: 'Network Out',
type: 'internal/network/out',
agg_type: 'sum',
value: function () {
return up;
}
});
}
if (config === true || config.upload === true) {
const originalWrite = netModule.Socket.prototype.write;
netModule.Socket.prototype.write = function (data) {
if (data.length) {
upload += data.length;
}
return originalWrite.apply(this, arguments);
};
}
if (config === true || config.download === true || Number.isInteger(config.download)) {
const delay = Number.isInteger(config.download) ? config.download : 500;
this.timer = setTimeout(() => {
const originalRead = netModule.Socket.prototype.read;
netModule.Socket.prototype.read = function () {
if (!this.monitored) {
this.monitored = true;
this.on('data', function (data) {
if (data.length) {
download += data.length;
}
});
}
return originalRead.apply(this, arguments);
};
}, delay);
this.timer.unref();
}
}
}
exports.default = NetworkMetric;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tZXRyaWNzL25ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBZ0M7QUFHaEMsd0RBQWdEO0FBRWhELGlDQUF5QjtBQUN6QixNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7QUFFbEM7SUFTRSxZQUFhLGFBQTZCO1FBTGxDLGdCQUFXLEdBQUc7WUFDcEIsS0FBSyxFQUFFLEtBQUs7WUFDWixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUE7UUFHQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsSUFBSSxDQUFFLE1BQU87UUFDWCxNQUFNLEdBQUcsc0JBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUV6RCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDbEM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxTQUFTLEdBQWUsRUFBRSxDQUFBO1FBQ2hDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQTtRQUV2QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUN4QixJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsNkJBQTZCO1lBQ25DLEtBQUssRUFBRSxjQUFjLE9BQU8sV0FBVyxDQUFBLENBQUMsQ0FBQztTQUMxQyxDQUFD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