@resolveio/server-lib 12.4.3 → 12.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/managers/method.manager.js +4 -4
- package/managers/method.manager.js.map +1 -1
- package/managers/mongo.manager.js +1 -1
- package/managers/mongo.manager.js.map +1 -1
- package/managers/monitor.manager.d.ts +7 -2
- package/managers/monitor.manager.js +10 -3
- package/managers/monitor.manager.js.map +1 -1
- package/managers/subscription.manager.js +3 -3
- package/managers/subscription.manager.js.map +1 -1
- package/package.json +1 -1
- package/server-app.js +5 -4
- package/server-app.js.map +1 -1
|
@@ -30,12 +30,16 @@ export declare class MonitorMongo {
|
|
|
30
30
|
export declare class MonitorManagerFunction {
|
|
31
31
|
private _functionCnt;
|
|
32
32
|
private _functions;
|
|
33
|
+
private _functionLastCompletedWS;
|
|
33
34
|
private _functionLastCompleted;
|
|
34
35
|
constructor();
|
|
35
|
-
startMonitorFunction(functionType: MonitorFunctionType, functionName: string, user: string, data: any): number;
|
|
36
|
+
startMonitorFunction(functionType: MonitorFunctionType, functionName: string, user: string, id_socket: string, data: any): number;
|
|
36
37
|
finishMonitorFunction(id: number): void;
|
|
37
38
|
getActiveMonitorFunctions(): MonitorFunction[];
|
|
38
39
|
getLastCompletedMonitorFunction(): MonitorFunction;
|
|
40
|
+
getLastCompletedMonitorFunctionWS(): {
|
|
41
|
+
[id_socket: string]: MonitorFunction;
|
|
42
|
+
};
|
|
39
43
|
}
|
|
40
44
|
export declare type MonitorFunctionType = 'Cron Method' | 'Internal Method' | 'Method' | 'User Specific Publication' | 'Publication';
|
|
41
45
|
export declare class MonitorFunction {
|
|
@@ -47,7 +51,8 @@ export declare class MonitorFunction {
|
|
|
47
51
|
private _data;
|
|
48
52
|
startTime: Date;
|
|
49
53
|
endTime: Date;
|
|
54
|
+
id_socket: string;
|
|
50
55
|
id: number;
|
|
51
|
-
constructor(id: number, functionType: MonitorFunctionType, functionName: string, user: string, data: any);
|
|
56
|
+
constructor(id: number, functionType: MonitorFunctionType, functionName: string, user: string, id_socket: string, data: any);
|
|
52
57
|
finish(): void;
|
|
53
58
|
}
|
|
@@ -321,9 +321,10 @@ var MonitorManagerFunction = /** @class */ (function () {
|
|
|
321
321
|
function MonitorManagerFunction() {
|
|
322
322
|
this._functionCnt = 0;
|
|
323
323
|
this._functions = [];
|
|
324
|
+
this._functionLastCompletedWS = {};
|
|
324
325
|
}
|
|
325
|
-
MonitorManagerFunction.prototype.startMonitorFunction = function (functionType, functionName, user, data) {
|
|
326
|
-
var newMonitorFunction = new MonitorFunction(this._functionCnt++, functionType, functionName, user, data);
|
|
326
|
+
MonitorManagerFunction.prototype.startMonitorFunction = function (functionType, functionName, user, id_socket, data) {
|
|
327
|
+
var newMonitorFunction = new MonitorFunction(this._functionCnt++, functionType, functionName, user, id_socket, data);
|
|
327
328
|
this._functions.push(newMonitorFunction);
|
|
328
329
|
return newMonitorFunction.id;
|
|
329
330
|
};
|
|
@@ -332,6 +333,7 @@ var MonitorManagerFunction = /** @class */ (function () {
|
|
|
332
333
|
if (monitor) {
|
|
333
334
|
monitor.finish();
|
|
334
335
|
this._functionLastCompleted = monitor;
|
|
336
|
+
this._functionLastCompletedWS[monitor.id_socket] = monitor;
|
|
335
337
|
this._functions.splice(this._functions.map(function (a) { return a.id; }).indexOf(id), 1);
|
|
336
338
|
}
|
|
337
339
|
};
|
|
@@ -341,21 +343,26 @@ var MonitorManagerFunction = /** @class */ (function () {
|
|
|
341
343
|
MonitorManagerFunction.prototype.getLastCompletedMonitorFunction = function () {
|
|
342
344
|
return this._functionLastCompleted;
|
|
343
345
|
};
|
|
346
|
+
MonitorManagerFunction.prototype.getLastCompletedMonitorFunctionWS = function () {
|
|
347
|
+
return this._functionLastCompletedWS;
|
|
348
|
+
};
|
|
344
349
|
return MonitorManagerFunction;
|
|
345
350
|
}());
|
|
346
351
|
exports.MonitorManagerFunction = MonitorManagerFunction;
|
|
347
352
|
var MonitorFunction = /** @class */ (function () {
|
|
348
|
-
function MonitorFunction(id, functionType, functionName, user, data) {
|
|
353
|
+
function MonitorFunction(id, functionType, functionName, user, id_socket, data) {
|
|
349
354
|
this._timer = null;
|
|
350
355
|
this._maxDiff = 0;
|
|
351
356
|
this.startTime = null;
|
|
352
357
|
this.endTime = null;
|
|
358
|
+
this.id_socket = '';
|
|
353
359
|
this.id = 0;
|
|
354
360
|
this.id = id;
|
|
355
361
|
this.startTime = new Date();
|
|
356
362
|
this._functionType = functionType;
|
|
357
363
|
this._functionName = functionName;
|
|
358
364
|
this._user = user;
|
|
365
|
+
this.id_socket = id_socket;
|
|
359
366
|
this._data = data;
|
|
360
367
|
}
|
|
361
368
|
MonitorFunction.prototype.finish = function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":[],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import ResolveIOMainServer from '../server-app';\nimport axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../index';\nimport { deepCopy } from '../util/common';\nimport { objectIdHexString } from './mongo.manager';\nconst os = require('os');\n\nexport class MonitorManager {\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _serverConfig;\n\tprivate _instanceHostname = '';\n\tprivate _monitorData = [];\n\n\tconstructor(mainServer, serverConfig) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._serverConfig = serverConfig;\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\n\t\tthis.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\t//Create function to get CPU information\n\tcpuAverage() {\n\t\t//Initialise sum of idle and time of cores and fetch CPU info\n\t\tvar totalIdle = 0, totalTick = 0;\n\t\tvar cpus = os.cpus();\n\t\n\t\t//Loop through CPU cores\n\t\tfor(var i = 0, len = cpus.length; i < len; i++) {\n\t\t\t//Select CPU core\n\t\t\tvar cpu = cpus[i];\n\t\t\n\t\t\t//Total up the time in the cores tick\n\t\t\tfor(let type in cpu.times) {\n\t\t\t\ttotalTick += cpu.times[type];\n\t\t\t}\n\t\t\n\t\t\t//Total up the idle time of the core\n\t\t\ttotalIdle += cpu.times.idle;\n\t\t}\n\t\n\t\t//Return the average Idle and Tick times\n\t\treturn {idle: totalIdle / cpus.length, total: totalTick / cpus.length};\n\t}\n\n\tasync setupIntervals() {\n\t\tif (this._serverConfig['ROOT_URL'] !== 'https://resolveio.com' && this._serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\ttry {\n\t\t\t\tlet instanceId = await axios.get('http://169.254.169.254/latest/meta-data/instance-id');\n\n\t\t\t\tsetInterval(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/health', {\n\t\t\t\t\t\t\ttype: 'application',\n\t\t\t\t\t\t\tid_aws_instance: instanceId.data,\n\t\t\t\t\t\t\tversion: typeof process.env.APP_VERSION === 'number' ? (<any>process.env.APP_VERSION).toString() : process.env.APP_VERSION,\n\t\t\t\t\t\t\tversion_key: process.env.APP_VERSION_KEY\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e) {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch(errHealth) {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\t\t\n\t\tsetInterval(() => {\n\t\t\tlet now = new Date();\n\n\t\t\t//Grab second Measure\n\t\t\tvar endMeasure = this.cpuAverage(); \n\n\t\t\t//Calculate the difference in idle and total time between the measures\n\t\t\tvar idleDifference = endMeasure.idle - lastCPU.idle;\n\t\t\tvar totalDifference = endMeasure.total - lastCPU.total;\n\n\t\t\t//Calculate the average percentage CPU usage\n\t\t\tvar percentageCPU = 1 - idleDifference / totalDifference;\n\t\t\t\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorCPUs.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0],\n\t\t\t\t\ttype: 'cpu'\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tlastCPU = endMeasure;\n\n\t\t\tconst memUsage = process.memoryUsage();\n\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorMemorys.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem()\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem(),\n\t\t\t\t\ttype: 'memory'\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\t}\n\n\t\n\n\taddMongoTracker(data: MongoMonitorModel) {\n\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tMonitorMongos.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\ttype: 'mongo'\n\t\t\t\t});\n\t\t\t}\n\t\t}\t\n\t}\n\n\tsetupEventLoop() {\n\t\tsetTimeout(async () => {\n\t\t\tif (this._monitorData.length) {\n\t\t\t\tlet monitorData = deepCopy(this._monitorData);\n\t\t\t\tthis._monitorData = [];\n\n\t\t\t\tlet size = JSON.stringify(monitorData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\tif (size < 45000000) { // 50 MB size limit\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', monitorData);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet tmpData = [];\n\t\t\t\t\tfor (let i = 0; i < monitorData.length; i++) {\n\t\t\t\t\t\ttmpData.push(monitorData[i]);\n\t\t\t\t\t\tsize = JSON.stringify(tmpData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\t\t\tif (size > 45000000) {\n\t\t\t\t\t\t\ttmpData.pop();\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', tmpData);\n\n\t\t\t\t\t\t\t\ttmpData = [monitorData[i]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch (e) {}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tmpData.length) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', tmpData);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.setupEventLoop();\n\t\t}, 60000);\n\t}\n}\n\nexport interface MongoMonitorModel {\n\tdate: Date, \n\tmethod: string,\n\tcollection: string,\n\tduration: number,\n\tquery: string\n}\n\nexport class MonitorMongo {\n\tprivate _startTime = 0;\n\tprivate _method = '';\n\tprivate _collection = '';\n\tprivate _query = '';\n\n\tconstructor(method: string, collection: string, query: string) {\n\t\tthis._startTime = Date.now();\n\t\tthis._method = method;\n\t\tthis._collection = collection;\n\t\tthis._query = query;\n\t}\n\n\tpublic finish() {\n\t\tlet endTime = Date.now();\n\n\t\tlet mongoMonitor: MongoMonitorModel = {\n\t\t\tdate: new Date(endTime),\n\t\t\tmethod: this._method,\n\t\t\tcollection: this._collection,\n\t\t\tquery: this._query,\n\t\t\tduration: endTime - this._startTime\n\t\t};\n\n\t\tResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport class MonitorManagerFunction {\n\tprivate _functionCnt = 0;\n\tprivate _functions: MonitorFunction[] = [];\n\tprivate _functionLastCompleted: MonitorFunction;\n\n\tconstructor() {}\n\n\tstartMonitorFunction(functionType: MonitorFunctionType, functionName: string, user: string, data: any) {\n\t\tlet newMonitorFunction = new MonitorFunction(this._functionCnt++, functionType, functionName, user, data);\n\t\tthis._functions.push(newMonitorFunction);\n\t\treturn newMonitorFunction.id;\n\t}\n\n\tfinishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.filter(a => a.id === id)[0];\n\t\tif (monitor) {\n\t\t\tmonitor.finish();\n\t\t\tthis._functionLastCompleted = monitor;\n\t\t\tthis._functions.splice(this._functions.map(a => a.id).indexOf(id), 1);\n\t\t}\n\t}\n\n\tgetActiveMonitorFunctions() {\n\t\treturn this._functions;\n\t}\n\n\tgetLastCompletedMonitorFunction() {\n\t\treturn this._functionLastCompleted;\n\t}\n}\n\nexport type MonitorFunctionType = 'Cron Method' | 'Internal Method' | 'Method' | 'User Specific Publication' | 'Publication';\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tprivate _maxDiff = 0;\n\tprivate _functionType: MonitorFunctionType;\n\tprivate _functionName: string;\n\tprivate _user: string;\n\tprivate _data: any;\n\tpublic startTime: Date = null;\n\tpublic endTime: Date = null;\n\tpublic id = 0;\n\n\tconstructor(id: number, functionType: MonitorFunctionType, functionName: string, user: string, data: any) {\n\t\tthis.id = id;\n\t\tthis.startTime = new Date();\n\t\tthis._functionType = functionType;\n\t\tthis._functionName = functionName;\n\t\tthis._user = user;\n\t\tthis._data = data;\n\t}\n\n\tpublic finish() {\n\t\tif (this._timer) {\n\t\t\tclearInterval(this._timer);\n\t\t\tthis._timer = null;\n\t\t}\n\n\t\tthis.endTime = new Date();\n\n\t\tlet diff = this.endTime.getTime() - this.startTime.getTime();\n\t\tif (diff > this._maxDiff) {\n\t\t\tthis._maxDiff = diff;\n\t\t}\n\n\t\tif (this._maxDiff >= 5000) {\n\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getMainServer().getServerConfig()['CLIENT_NAME'] + ' - Slow ' + this._functionType + ' Detected', '', (this._user ? 'User: ' + this._user + '\\n' : '') + this._functionType + ': ' + this._functionName + '\\n' + 'During this function the event loop did not run for ' + this._maxDiff + ' ms (' + this._maxDiff / 1000 + ' sec)' + (this._data ? '\\n\\nData: ' + JSON.stringify(this._data, null, 2) : ''));\n\t\t}\n\t}\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":[],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import ResolveIOMainServer from '../server-app';\nimport axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../index';\nimport { deepCopy } from '../util/common';\nimport { objectIdHexString } from './mongo.manager';\nconst os = require('os');\n\nexport class MonitorManager {\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _serverConfig;\n\tprivate _instanceHostname = '';\n\tprivate _monitorData = [];\n\n\tconstructor(mainServer, serverConfig) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._serverConfig = serverConfig;\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\n\t\tthis.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\t//Create function to get CPU information\n\tcpuAverage() {\n\t\t//Initialise sum of idle and time of cores and fetch CPU info\n\t\tvar totalIdle = 0, totalTick = 0;\n\t\tvar cpus = os.cpus();\n\t\n\t\t//Loop through CPU cores\n\t\tfor(var i = 0, len = cpus.length; i < len; i++) {\n\t\t\t//Select CPU core\n\t\t\tvar cpu = cpus[i];\n\t\t\n\t\t\t//Total up the time in the cores tick\n\t\t\tfor(let type in cpu.times) {\n\t\t\t\ttotalTick += cpu.times[type];\n\t\t\t}\n\t\t\n\t\t\t//Total up the idle time of the core\n\t\t\ttotalIdle += cpu.times.idle;\n\t\t}\n\t\n\t\t//Return the average Idle and Tick times\n\t\treturn {idle: totalIdle / cpus.length, total: totalTick / cpus.length};\n\t}\n\n\tasync setupIntervals() {\n\t\tif (this._serverConfig['ROOT_URL'] !== 'https://resolveio.com' && this._serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\ttry {\n\t\t\t\tlet instanceId = await axios.get('http://169.254.169.254/latest/meta-data/instance-id');\n\n\t\t\t\tsetInterval(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/health', {\n\t\t\t\t\t\t\ttype: 'application',\n\t\t\t\t\t\t\tid_aws_instance: instanceId.data,\n\t\t\t\t\t\t\tversion: typeof process.env.APP_VERSION === 'number' ? (<any>process.env.APP_VERSION).toString() : process.env.APP_VERSION,\n\t\t\t\t\t\t\tversion_key: process.env.APP_VERSION_KEY\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e) {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch(errHealth) {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\t\t\n\t\tsetInterval(() => {\n\t\t\tlet now = new Date();\n\n\t\t\t//Grab second Measure\n\t\t\tvar endMeasure = this.cpuAverage(); \n\n\t\t\t//Calculate the difference in idle and total time between the measures\n\t\t\tvar idleDifference = endMeasure.idle - lastCPU.idle;\n\t\t\tvar totalDifference = endMeasure.total - lastCPU.total;\n\n\t\t\t//Calculate the average percentage CPU usage\n\t\t\tvar percentageCPU = 1 - idleDifference / totalDifference;\n\t\t\t\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorCPUs.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0],\n\t\t\t\t\ttype: 'cpu'\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tlastCPU = endMeasure;\n\n\t\t\tconst memUsage = process.memoryUsage();\n\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorMemorys.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem()\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem(),\n\t\t\t\t\ttype: 'memory'\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\t}\n\n\t\n\n\taddMongoTracker(data: MongoMonitorModel) {\n\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tMonitorMongos.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\ttype: 'mongo'\n\t\t\t\t});\n\t\t\t}\n\t\t}\t\n\t}\n\n\tsetupEventLoop() {\n\t\tsetTimeout(async () => {\n\t\t\tif (this._monitorData.length) {\n\t\t\t\tlet monitorData = deepCopy(this._monitorData);\n\t\t\t\tthis._monitorData = [];\n\n\t\t\t\tlet size = JSON.stringify(monitorData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\tif (size < 45000000) { // 50 MB size limit\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', monitorData);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet tmpData = [];\n\t\t\t\t\tfor (let i = 0; i < monitorData.length; i++) {\n\t\t\t\t\t\ttmpData.push(monitorData[i]);\n\t\t\t\t\t\tsize = JSON.stringify(tmpData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\t\t\tif (size > 45000000) {\n\t\t\t\t\t\t\ttmpData.pop();\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', tmpData);\n\n\t\t\t\t\t\t\t\ttmpData = [monitorData[i]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch (e) {}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tmpData.length) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', tmpData);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.setupEventLoop();\n\t\t}, 60000);\n\t}\n}\n\nexport interface MongoMonitorModel {\n\tdate: Date, \n\tmethod: string,\n\tcollection: string,\n\tduration: number,\n\tquery: string\n}\n\nexport class MonitorMongo {\n\tprivate _startTime = 0;\n\tprivate _method = '';\n\tprivate _collection = '';\n\tprivate _query = '';\n\n\tconstructor(method: string, collection: string, query: string) {\n\t\tthis._startTime = Date.now();\n\t\tthis._method = method;\n\t\tthis._collection = collection;\n\t\tthis._query = query;\n\t}\n\n\tpublic finish() {\n\t\tlet endTime = Date.now();\n\n\t\tlet mongoMonitor: MongoMonitorModel = {\n\t\t\tdate: new Date(endTime),\n\t\t\tmethod: this._method,\n\t\t\tcollection: this._collection,\n\t\t\tquery: this._query,\n\t\t\tduration: endTime - this._startTime\n\t\t};\n\n\t\tResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport class MonitorManagerFunction {\n\tprivate _functionCnt = 0;\n\tprivate _functions: MonitorFunction[] = [];\n\tprivate _functionLastCompletedWS: {\n\t\t[id_socket: string]: MonitorFunction;\n\t} = {};\n\tprivate _functionLastCompleted: MonitorFunction;\n\n\tconstructor() {}\n\n\tstartMonitorFunction(functionType: MonitorFunctionType, functionName: string, user: string, id_socket: string, data: any) {\n\t\tlet newMonitorFunction = new MonitorFunction(this._functionCnt++, functionType, functionName, user, id_socket, data);\n\t\tthis._functions.push(newMonitorFunction);\n\t\treturn newMonitorFunction.id;\n\t}\n\n\tfinishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.filter(a => a.id === id)[0];\n\t\tif (monitor) {\n\t\t\tmonitor.finish();\n\t\t\tthis._functionLastCompleted = monitor;\n\t\t\tthis._functionLastCompletedWS[monitor.id_socket] = monitor;\n\t\t\tthis._functions.splice(this._functions.map(a => a.id).indexOf(id), 1);\n\t\t}\n\t}\n\n\tgetActiveMonitorFunctions() {\n\t\treturn this._functions;\n\t}\n\n\tgetLastCompletedMonitorFunction() {\n\t\treturn this._functionLastCompleted;\n\t}\n\t\n\tgetLastCompletedMonitorFunctionWS() {\n\t\treturn this._functionLastCompletedWS;\n\t}\n}\n\nexport type MonitorFunctionType = 'Cron Method' | 'Internal Method' | 'Method' | 'User Specific Publication' | 'Publication';\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tprivate _maxDiff = 0;\n\tprivate _functionType: MonitorFunctionType;\n\tprivate _functionName: string;\n\tprivate _user: string;\n\tprivate _data: any;\n\tpublic startTime: Date = null;\n\tpublic endTime: Date = null;\n\tpublic id_socket = '';\n\tpublic id = 0;\n\n\tconstructor(id: number, functionType: MonitorFunctionType, functionName: string, user: string, id_socket: string, data: any) {\n\t\tthis.id = id;\n\t\tthis.startTime = new Date();\n\t\tthis._functionType = functionType;\n\t\tthis._functionName = functionName;\n\t\tthis._user = user;\n\t\tthis.id_socket = id_socket;\n\t\tthis._data = data;\n\t}\n\n\tpublic finish() {\n\t\tif (this._timer) {\n\t\t\tclearInterval(this._timer);\n\t\t\tthis._timer = null;\n\t\t}\n\n\t\tthis.endTime = new Date();\n\n\t\tlet diff = this.endTime.getTime() - this.startTime.getTime();\n\t\tif (diff > this._maxDiff) {\n\t\t\tthis._maxDiff = diff;\n\t\t}\n\n\t\tif (this._maxDiff >= 5000) {\n\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getMainServer().getServerConfig()['CLIENT_NAME'] + ' - Slow ' + this._functionType + ' Detected', '', (this._user ? 'User: ' + this._user + '\\n' : '') + this._functionType + ': ' + this._functionName + '\\n' + 'During this function the event loop did not run for ' + this._maxDiff + ' ms (' + this._maxDiff / 1000 + ' sec)' + (this._data ? '\\n\\nData: ' + JSON.stringify(this._data, null, 2) : ''));\n\t\t}\n\t}\n}"]}
|
|
@@ -284,7 +284,7 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
284
284
|
}
|
|
285
285
|
return [2 /*return*/];
|
|
286
286
|
});
|
|
287
|
-
}); },
|
|
287
|
+
}); }, 25);
|
|
288
288
|
setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
289
289
|
var _a, userCopy, _loop_2, this_2, i, i, sub, _loop_3, this_3, j;
|
|
290
290
|
return __generator(this, function (_b) {
|
|
@@ -881,7 +881,7 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
881
881
|
}
|
|
882
882
|
}
|
|
883
883
|
else { // Pub is different for each user (Look at users publication) [MUCH SLOWER, RE-RUNS FOR EACH USER]
|
|
884
|
-
monitor_1 = this._monitorManagerFunction.startMonitorFunction('User Specific Publication', subscription.publication, '', subscription.subscriptionData);
|
|
884
|
+
monitor_1 = this._monitorManagerFunction.startMonitorFunction('User Specific Publication', subscription.publication, '', '', subscription.subscriptionData);
|
|
885
885
|
(_a = this._publications[subscription.publication].function).call.apply(_a, __spreadArrays([Object.assign({}, this, SubscriptionManager.prototype), ws['id_user']], subscription.subscriptionData)).then(function (res) {
|
|
886
886
|
_this._monitorManagerFunction.finishMonitorFunction(monitor_1);
|
|
887
887
|
var serverRes = {
|
|
@@ -943,7 +943,7 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
943
943
|
if (mongoQueue.subscription.publication !== 'superadminAPM' && mongoQueue.subscription.publication !== 'loggedInUsers') {
|
|
944
944
|
this._mainServer.getMethodManager().callMethodInternal.call(this._mainServer.getMethodManager(), 'insertSubscriptionLog', mongoQueue.type, mongoQueue.subscription.publication, mongoQueue.collection, JSON.stringify(mongoQueue.subscription.subscriptionData));
|
|
945
945
|
}
|
|
946
|
-
monitor_2 = this._monitorManagerFunction.startMonitorFunction('Publication', mongoQueue.subscription.publication, '', mongoQueue.subscription.subscriptionData);
|
|
946
|
+
monitor_2 = this._monitorManagerFunction.startMonitorFunction('Publication', mongoQueue.subscription.publication, '', '', mongoQueue.subscription.subscriptionData);
|
|
947
947
|
(_a = this._publications[mongoQueue.subscription.publication].function).call.apply(_a, __spreadArrays([Object.assign({}, this, SubscriptionManager.prototype)], mongoQueue.subscription.subscriptionData)).then(function (res) {
|
|
948
948
|
_this._monitorManagerFunction.finishMonitorFunction(monitor_2);
|
|
949
949
|
if (!mongoQueue.subscription.clients.length) {
|