pandora
Version:
72 lines • 3.03 kB
JavaScript
;
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");
class MonitorManager {
static injectProcessMonitor() {
const globalConfigProcessor = GlobalConfigProcessor_1.GlobalConfigProcessor.getInstance();
const globalConfig = globalConfigProcessor.getAllProperties();
const hooks = globalConfig['hooks'];
// 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
}));
}
// 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();
console.log(`Patcher(${process.pid}): ${hookName} hook enabled`);
}
catch (err) {
console.log(`Patcher(${process.pid}): enable ${hookName} hook went wrong, ${err.message}`);
}
}
else {
console.log(`Patcher(${process.pid}): ${hookName} hook disabled`);
}
}
// init indicators
[
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());
}
}
exports.MonitorManager = MonitorManager;
//# sourceMappingURL=MonitorManager.js.map