pandora
Version:
A powerful and lightweight application manager for Node.js applications powered by TypeScript.
77 lines • 3.69 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const LoggerBroker_1 = require("../universal/LoggerBroker");
const pandora_service_logger_1 = require("pandora-service-logger");
const pandora_metrics_1 = require("pandora-metrics");
const GlobalConfigProcessor_1 = require("../universal/GlobalConfigProcessor");
const pandora_hub_1 = require("pandora-hub");
const debug = require('debug')('pandora:cluster:monitor');
/**
* Class Monitor
*/
class Monitor {
constructor() {
this.daemonLogger = LoggerBroker_1.getDaemonLogger();
this.globalConfigProcesser = GlobalConfigProcessor_1.GlobalConfigProcessor.getInstance();
this.globalConfig = this.globalConfigProcesser.getAllProperties();
this.ipcHub = new pandora_hub_1.Hub();
}
/**
* Start Monitor
* @return {Promise<void>}
*/
start() {
return __awaiter(this, void 0, void 0, function* () {
yield this.ipcHub.start();
// start logger rotator serivce
debug('start a monitor logger rotator service');
const loggerRotator = new pandora_service_logger_1.LoggerRotator({
logger: this.daemonLogger
});
yield loggerRotator.startService();
// start metrics server
debug('start a metrics server');
this.server = new pandora_metrics_1.MetricsActuatorServer({
config: this.globalConfig['actuator'],
logger: this.daemonLogger,
metricsManager: new this.globalConfig['metricsManager']()
});
// register some default metrics
let metricsManager = this.server.getMetricsManager();
metricsManager.register('system', 'system', new pandora_metrics_1.CpuUsageGaugeSet());
metricsManager.register('system', 'system', new pandora_metrics_1.NetTrafficGaugeSet());
metricsManager.register('system', 'system', new pandora_metrics_1.SystemMemoryGaugeSet());
metricsManager.register('system', 'system', new pandora_metrics_1.SystemLoadGaugeSet());
// metricsManager.register('system', 'system', new DiskStatGaugeSet());
debug('start a metrics reporter');
for (let reporterName in this.globalConfig['reporter']) {
const reporterObj = this.globalConfig['reporter'][reporterName];
if (reporterObj['enabled']) {
let reporterIns = new reporterObj['target'](this.server, reporterObj.initConfig || {});
reporterIns.start(reporterObj['interval']);
this.daemonLogger.info(`${reporterName} reporter started`);
}
}
this.daemonLogger.info('monitor started');
});
}
/**
* @return {Promise<void>}
*/
stop() {
return __awaiter(this, void 0, void 0, function* () {
yield this.ipcHub.stop();
yield this.server.destroy();
});
}
}
exports.Monitor = Monitor;
//# sourceMappingURL=Monitor.js.map