UNPKG

pandora

Version:

A powerful and lightweight application manager for Node.js applications powered by TypeScript.

77 lines 3.69 kB
'use strict'; 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