UNPKG

pandora

Version:

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

84 lines 3.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const pandora_metrics_1 = require("pandora-metrics"); const GlobalConfigProcessor_1 = require("../universal/GlobalConfigProcessor"); const pandora_env_1 = require("pandora-env"); const const_1 = require("../const"); const LoggerBroker_1 = require("../universal/LoggerBroker"); const pandora_dollar_1 = require("pandora-dollar"); const debug = require('debug')('pandora:MonitorManager'); const pandoraConsoleLogger = pandora_dollar_1.getPandoraConsoleLogger(); class MonitorManager { static injectProcessMonitor() { if (MonitorManager.injected) { return; } const globalConfigProcessor = GlobalConfigProcessor_1.GlobalConfigProcessor.getInstance(); const globalConfig = globalConfigProcessor.getAllProperties(); const hooks = globalConfig['hook']; // init environment if (!pandora_env_1.EnvironmentUtil.getInstance().isReady()) { // cast PANDORA_APPLICATION to type ProcessRepresentation, need processName let processRepresentation = {}; try { processRepresentation = JSON.parse(process.env[const_1.PANDORA_APPLICATION]); } catch (err) { // ignore } pandora_env_1.EnvironmentUtil.getInstance().setCurrentEnvironment(new globalConfig['environment']({ appDir: processRepresentation.appDir, appName: processRepresentation.appName, processName: processRepresentation.processName, pandoraLogsDir: LoggerBroker_1.getPandoraLogsDir() })); } // init metrics client let ClientCls = globalConfig['metricsClient']; let client = ClientCls.getInstance(); pandora_metrics_1.MetricsClientUtil.setMetricsClient(client); // support old version global[pandora_metrics_1.MetricsConstants.GLOBAL_METRICS_KEY] = client; // inject patch let traceIndicator = new pandora_metrics_1.TraceIndicator(); traceIndicator.initialize(); /** * hooks: { * logger: Hooks.logger * } */ for (const hookName in hooks) { if (hooks[hookName] && hooks[hookName].enabled) { try { let PatcherCls = hooks[hookName].target; let patcher = new PatcherCls(hooks[hookName]['initConfig']); patcher.run(); debug(`Patcher(${process.pid}): ${hookName} hook enabled`); } catch (err) { pandoraConsoleLogger.log(`Patcher(${process.pid}): enable ${hookName} hook went wrong, ${err.message}`); } } else { pandoraConsoleLogger.log(`Patcher(${process.pid}): ${hookName} hook disabled`); } } // init indicators [ new pandora_metrics_1.BaseInfoIndicator(), new pandora_metrics_1.NodeIndicator(), new pandora_metrics_1.ProcessIndicator(), new pandora_metrics_1.ErrorIndicator(), ].forEach((ins) => { ins.initialize(); }); // init metrics client.register('node', pandora_metrics_1.MetricName.build('node.v8').tagged({ pid: process.pid }), new pandora_metrics_1.V8GaugeSet()); MonitorManager.injected = true; } } MonitorManager.injected = false; exports.MonitorManager = MonitorManager; //# sourceMappingURL=MonitorManager.js.map