UNPKG

@nodefony/monitoring-bundle

Version:

Nodefony Framework Bundle Monitoring

173 lines (150 loc) 3.73 kB
/** * app Module */ stage.registerModule("app", function() { /** * * MODULE APP * */ var module = class module extends stage.Module { constructor(kernel, config, settings) { super(kernel, config, settings); this.kernel = kernel; this.serverSyslog = new stage.syslog(); this.set( "serverSyslog", this.serverSyslog ); this.set("pm2_graph", new pm2graph(kernel) ); } /** * */ initialize () { this.logger("INITIALIZE APP", "DEBUG"); try { var server = "/nodefony/socket"; this.realtime = new nodefony.Socket(); this.realtime.on("handshake", (message, socket) => { //this.logger("handshake", "INFO"); }); this.realtime.on("ready", (message, socket) => { //this.logger(`ready`); }); this.realtime.on("disconnect", (message, socket) => { //this.logger("disconnect", "INFO"); }); this.realtime.on("subscribe", (service, message, socket) => { //this.logger(`Socket subscribe ${service}`) }); this.realtime.on("unsubscribe", (service, message, socket) => { //this.logger(`Socket unsubscribe : ${service}`) }); this.realtime.on("connect", (message, socket) => { //this.logger(`Socket connect`) }); this.realtime.on("error", (code, args, message) => { //this.logger( message, "ERROR"); }); this.kernel.set("realtime", this.realtime) //this.realtime.start(); }catch(e){ this.logger(e,"ERROR"); } } }; /* * * SERVICE PM2 * */ // TABLE var checkSelector = function(ele){ switch (true){ case ( ele instanceof jQuery ) : var selector = ele ; var id = ele.attr("id") ; break; case ( typeof ele === "string" ) : var selector = $("#"+ele) ; var id = ele ; break; default: throw new Error("pm2 graph create table error bad type "); } return { selector:selector, id:id } }; var pm2graph = class pm2graph extends stage.Service { constructor(kernel){ super("PM2", kernel.container , kernel.notificationsCenter ); this.timeSeriesMemory={}; this.timeSeriesCpu={}; this.table = {} ; } // GRAPH addTimeSerieMemory(id, ele){ this.timeSeriesMemory[id] = ele ; } addTimeSerieCpu (id, ele){ this.timeSeriesCpu[id] = ele ; } updateMemory (id, data){ if ( this.timeSeriesMemory[id] ){ //console.log("ID : "+ id + " data : " + data) this.timeSeriesMemory[id].append(new Date().getTime(), data); } } updateCpu(id, data){ if ( this.timeSeriesCpu[id] ){ //console.log("ID : "+ id + " data : " + data) var scale = ( 1024 * data ) / 100 ; this.timeSeriesCpu[id].append(new Date().getTime(), scale); } } createTable (ele){ try{ var ret = checkSelector(ele) }catch(e){ throw e ; } this.table[ret.id] = ret.selector.DataTable({ "paging": false, "ordering": false, "filter":false, "info": false }); return this.table[ret.id] ; } getTable (id){ return this.table[id] ; } updateTable (ele, data){ try{ var ret = checkSelector(ele) }catch(e){ throw e ; } var table = this.getTable(ret.id); table.rows().remove(); for (var i= 0 ; i < data.length ; i++){ table.row.add( this.parseData( data[i] ) ).draw( false ); } } // DATA parseData (data){ var tab = []; tab.push(data.name); tab.push(data.pm_id); tab.push(data.pm2_env.exec_mode); tab.push(data.pid); tab.push(data.pm2_env.status); tab.push(data.pm2_env.restart_time); tab.push(jQuery.timeago( data.pm2_env.pm_uptime ) ); tab.push(parseFloat( data.monit.memory/1000000 ).toFixed(2) ); tab.push( data.monit.cpu ); return tab ; } }; return module; });