@resolveio/server-lib 20.7.120 → 20.7.121
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/client-server-app.js +51 -1
- package/client-server-app.js.map +1 -1
- package/collections/app-status.collection.js +51 -1
- package/collections/app-status.collection.js.map +1 -1
- package/collections/counter.collection.js +55 -1
- package/collections/counter.collection.js.map +1 -1
- package/collections/cron-job-history.collection.js +136 -1
- package/collections/cron-job-history.collection.js.map +1 -1
- package/collections/cron-job.collection.js +87 -1
- package/collections/cron-job.collection.js.map +1 -1
- package/collections/email-history.collection.js +98 -1
- package/collections/email-history.collection.js.map +1 -1
- package/collections/email-verified.collection.js +60 -1
- package/collections/email-verified.collection.js.map +1 -1
- package/collections/file.collection.js +73 -1
- package/collections/file.collection.js.map +1 -1
- package/collections/flag-update.collection.js +56 -1
- package/collections/flag-update.collection.js.map +1 -1
- package/collections/flag.collection.js +56 -1
- package/collections/flag.collection.js.map +1 -1
- package/collections/log-method-latency.collection.js +72 -1
- package/collections/log-method-latency.collection.js.map +1 -1
- package/collections/log-subscription.collection.js +75 -1
- package/collections/log-subscription.collection.js.map +1 -1
- package/collections/log.collection.js +87 -1
- package/collections/log.collection.js.map +1 -1
- package/collections/logged-in-users.collection.js +66 -1
- package/collections/logged-in-users.collection.js.map +1 -1
- package/collections/monitor-cpu.collection.js +64 -1
- package/collections/monitor-cpu.collection.js.map +1 -1
- package/collections/monitor-function.collection.js +73 -1
- package/collections/monitor-function.collection.js.map +1 -1
- package/collections/monitor-memory.collection.js +76 -1
- package/collections/monitor-memory.collection.js.map +1 -1
- package/collections/monitor-mongo.collection.js +70 -1
- package/collections/monitor-mongo.collection.js.map +1 -1
- package/collections/notification.collection.js +56 -1
- package/collections/notification.collection.js.map +1 -1
- package/collections/report-builder-dashboard-builder.collection.js +108 -1
- package/collections/report-builder-dashboard-builder.collection.js.map +1 -1
- package/collections/report-builder-library.collection.js +86 -1
- package/collections/report-builder-library.collection.js.map +1 -1
- package/collections/report-builder-report.collection.js +148 -1
- package/collections/report-builder-report.collection.js.map +1 -1
- package/collections/user-group.collection.js +88 -1
- package/collections/user-group.collection.js.map +1 -1
- package/collections/user-guide.collection.js +56 -1
- package/collections/user-guide.collection.js.map +1 -1
- package/collections/user.collection.js +265 -1
- package/collections/user.collection.js.map +1 -1
- package/cron/cron.js +97 -1
- package/cron/cron.js.map +1 -1
- package/fixtures/cron-jobs.js +95 -1
- package/fixtures/cron-jobs.js.map +1 -1
- package/fixtures/init.js +78 -1
- package/fixtures/init.js.map +1 -1
- package/http/auth.js +869 -1
- package/http/auth.js.map +1 -1
- package/http/health.js +11 -1
- package/http/health.js.map +1 -1
- package/http/home.js +114 -1
- package/http/home.js.map +1 -1
- package/index.js +18 -1
- package/index.js.map +1 -1
- package/managers/cron.manager.js +461 -1
- package/managers/cron.manager.js.map +1 -1
- package/managers/local-log.manager.js +79 -1
- package/managers/local-log.manager.js.map +1 -1
- package/managers/method.manager.js +1023 -1
- package/managers/method.manager.js.map +1 -1
- package/managers/mongo.manager.js +4223 -1
- package/managers/mongo.manager.js.map +1 -1
- package/managers/monitor.manager.js +534 -1
- package/managers/monitor.manager.js.map +1 -1
- package/managers/subscription.manager.js +1292 -1
- package/managers/subscription.manager.js.map +1 -1
- package/managers/websocket.manager.js +165 -1
- package/managers/websocket.manager.js.map +1 -1
- package/managers/worker-dispatcher.manager.js +335 -1
- package/managers/worker-dispatcher.manager.js.map +1 -1
- package/managers/worker-server.manager.js +292 -1
- package/managers/worker-server.manager.js.map +1 -1
- package/methods/accounts.js +302 -1
- package/methods/accounts.js.map +1 -1
- package/methods/aws.js +748 -1
- package/methods/aws.js.map +1 -1
- package/methods/collections.js +542 -1
- package/methods/collections.js.map +1 -1
- package/methods/counters.js +111 -1
- package/methods/counters.js.map +1 -1
- package/methods/cron-jobs.js +1476 -1
- package/methods/cron-jobs.js.map +1 -1
- package/methods/flag-updates.js +8 -1
- package/methods/flag-updates.js.map +1 -1
- package/methods/flags.js +8 -1
- package/methods/flags.js.map +1 -1
- package/methods/logs.js +417 -1
- package/methods/logs.js.map +1 -1
- package/methods/monitor.js +543 -1
- package/methods/monitor.js.map +1 -1
- package/methods/pdf.js +742 -1
- package/methods/pdf.js.map +1 -1
- package/methods/report-builder.js +840 -1
- package/methods/report-builder.js.map +1 -1
- package/methods/support.js +232 -1
- package/methods/support.js.map +1 -1
- package/models/app-status.model.js +3 -1
- package/models/app-status.model.js.map +1 -1
- package/models/billing-logged-in-users.model.js +3 -1
- package/models/billing-logged-in-users.model.js.map +1 -1
- package/models/collection-document.model.js +3 -1
- package/models/collection-document.model.js.map +1 -1
- package/models/counter.model.js +3 -1
- package/models/counter.model.js.map +1 -1
- package/models/cron-job-history.model.js +3 -1
- package/models/cron-job-history.model.js.map +1 -1
- package/models/cron-job.model.js +3 -1
- package/models/cron-job.model.js.map +1 -1
- package/models/dialog.model.js +3 -1
- package/models/dialog.model.js.map +1 -1
- package/models/email-history.model.js +15 -1
- package/models/email-history.model.js.map +1 -1
- package/models/email-verified.model.js +3 -1
- package/models/email-verified.model.js.map +1 -1
- package/models/file.model.js +3 -1
- package/models/file.model.js.map +1 -1
- package/models/flag-update.model.js +3 -1
- package/models/flag-update.model.js.map +1 -1
- package/models/flag.model.js +3 -1
- package/models/flag.model.js.map +1 -1
- package/models/log-method-latency.model.js +3 -1
- package/models/log-method-latency.model.js.map +1 -1
- package/models/log-subscription.model.js +3 -1
- package/models/log-subscription.model.js.map +1 -1
- package/models/log.model.js +3 -1
- package/models/log.model.js.map +1 -1
- package/models/logged-in-users.model.js +3 -1
- package/models/logged-in-users.model.js.map +1 -1
- package/models/method-response.model.js +3 -1
- package/models/method-response.model.js.map +1 -1
- package/models/method.model.d.ts +0 -1
- package/models/method.model.js +3 -1
- package/models/method.model.js.map +1 -1
- package/models/monitor-cpu.model.js +3 -1
- package/models/monitor-cpu.model.js.map +1 -1
- package/models/monitor-function.model.js +3 -1
- package/models/monitor-function.model.js.map +1 -1
- package/models/monitor-memory.model.js +3 -1
- package/models/monitor-memory.model.js.map +1 -1
- package/models/monitor-mongo.model.js +3 -1
- package/models/monitor-mongo.model.js.map +1 -1
- package/models/notification.model.js +3 -1
- package/models/notification.model.js.map +1 -1
- package/models/pagination.model.js +23 -1
- package/models/pagination.model.js.map +1 -1
- package/models/permission.model.js +3 -1
- package/models/permission.model.js.map +1 -1
- package/models/report-builder-dashboard-builder.model.js +3 -1
- package/models/report-builder-dashboard-builder.model.js.map +1 -1
- package/models/report-builder-library.model.js +3 -1
- package/models/report-builder-library.model.js.map +1 -1
- package/models/report-builder-report.model.js +3 -1
- package/models/report-builder-report.model.js.map +1 -1
- package/models/report-builder.model.js +3 -1
- package/models/report-builder.model.js.map +1 -1
- package/models/select-data-label.model.js +3 -1
- package/models/select-data-label.model.js.map +1 -1
- package/models/server-message.model.js +3 -1
- package/models/server-message.model.js.map +1 -1
- package/models/subscription.model.js +3 -1
- package/models/subscription.model.js.map +1 -1
- package/models/support-ticket.model.js +3 -1
- package/models/support-ticket.model.js.map +1 -1
- package/models/user-group.model.js +3 -1
- package/models/user-group.model.js.map +1 -1
- package/models/user-guide.model.js +3 -1
- package/models/user-guide.model.js.map +1 -1
- package/models/user.model.js +3 -1
- package/models/user.model.js.map +1 -1
- package/package.json +1 -1
- package/public_api.js +77 -1
- package/public_api.js.map +1 -1
- package/publications/app-status.js +16 -1
- package/publications/app-status.js.map +1 -1
- package/publications/cron-jobs.js +32 -1
- package/publications/cron-jobs.js.map +1 -1
- package/publications/files.js +36 -1
- package/publications/files.js.map +1 -1
- package/publications/flags-update.js +22 -1
- package/publications/flags-update.js.map +1 -1
- package/publications/flags.js +22 -1
- package/publications/flags.js.map +1 -1
- package/publications/logs.js +164 -1
- package/publications/logs.js.map +1 -1
- package/publications/notifications.js +16 -1
- package/publications/notifications.js.map +1 -1
- package/publications/report-builder-dashboard-builders.js +42 -1
- package/publications/report-builder-dashboard-builders.js.map +1 -1
- package/publications/report-builder-libraries.js +90 -1
- package/publications/report-builder-libraries.js.map +1 -1
- package/publications/report-builder-reports.js +50 -1
- package/publications/report-builder-reports.js.map +1 -1
- package/publications/super-admin.js +16 -1
- package/publications/super-admin.js.map +1 -1
- package/publications/user-groups.js +16 -1
- package/publications/user-groups.js.map +1 -1
- package/publications/user-guides.js +16 -1
- package/publications/user-guides.js.map +1 -1
- package/resolveio-server-app.js +176 -1
- package/resolveio-server-app.js.map +1 -1
- package/server-app.js +1159 -1
- package/server-app.js.map +1 -1
- package/util/common.js +632 -1
- package/util/common.js.map +1 -1
- package/util/schema-report-builder.js +454 -1
- package/util/schema-report-builder.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":["axios_1","require","monitor_cpu_collection_1","monitor_function_collection_1","monitor_memory_collection_1","monitor_mongo_collection_1","resolveio_server_app_1","common_1","os","MAX_BATCH_SIZE","MonitorManager","this","_instanceHostname","_monitorData","create","monitorManager","initialize","_a","sent","prototype","hostname","replace","setupIntervals","setupEventLoop","cpuAverage","totalIdle","totalTick","cpus","i","len","length","type","cpu","times","idle","total","ResolveIOServer","getServerConfig","default","get","instanceId_1","_b","setInterval","__awaiter","_this","post","id_aws_instance","data","version","process","env","APP_VERSION","toString","version_key","APP_VERSION_KEY","lastCPU","now","Date","endMeasure","idleDifference","totalDifference","percentageCPU","MonitorCPUs","_id","objectIdHexString","metadata","instance","client","date","app","system","loadavg","pushMonitorData","memUsage","memoryUsage","MonitorMemorys","physical_total","heapTotal","physical_used","heapUsed","physical_free","freemem","virtual","rss","private","external","physical","totalmem","addMongoTracker","collection","startsWith","MonitorMongos","method","doc_collection","duration","query","Buffer","byteLength","addFunctionTracker","JSON","stringify","MonitorFunctions","startTime","functionType","name","functionName","user","push","estimateBatchSize","flushMonitorData","reduce","item","batch","batchSize","shift","itemSize","unshift","getLocalLogManager","writeLogs","error","console","MonitorMongo","exports","_startTime","_method","_collection","_query","monitorMongo","finish","endTime","mongoMonitor","getMainServer","getMonitorManager","MonitorManagerFunction","_functionCnt","_functions","_functionLastCompletedWS","monitorManagerFunction","startMonitorFunction","id_socket","newMonitorFunction","MonitorFunction","id","finishMonitorFunction","monitor","find","a","_functionLastCompleted","splice","map","indexOf","getActiveMonitorFunctions","getLastCompletedMonitorFunction","getLastCompletedMonitorFunctionWS","_timer","lastTime","monitorFunction","diff","getTime","clearInterval"],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorFunctions } from '../collections/monitor-function.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { objectIdHexString } from '../util/common';\nimport { LocalLogModel } from './local-log.manager';\n\nconst os = require('os');\nconst MAX_BATCH_SIZE = 8 * 1024 * 1024; // 8MB max for safety\n\nexport class MonitorManager {\n\tprivate _instanceHostname = '';\n\tprivate _monitorData: LocalLogModel[] = [];\n\n\tconstructor() {}\n\n\tstatic async create() {\n\t\tconst monitorManager = new MonitorManager();\n\t\tawait monitorManager.initialize();\n\t\treturn monitorManager;\n\t}\n\n\tprivate async initialize() {\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\t\tawait this.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\tcpuAverage() {\n\t\tvar totalIdle = 0, totalTick = 0;\n\t\tvar cpus = os.cpus();\n\n\t\tfor (var i = 0, len = cpus.length; i < len; i++) {\n\t\t\tvar cpu = cpus[i];\n\n\t\t\tfor (let type in cpu.times) {\n\t\t\t\ttotalTick += cpu.times[type];\n\t\t\t}\n\t\t\ttotalIdle += cpu.times.idle;\n\t\t}\n\n\t\treturn {\n\t\t\tidle: totalIdle / cpus.length,\n\t\t\ttotal: totalTick / cpus.length\n\t\t};\n\t}\n\n\tasync setupIntervals() {\n\t\t// Example: If not on production or localhost, do a health check\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t) {\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'\n\t\t\t\t\t\t\t\t? (<any>process.env.APP_VERSION).toString()\n\t\t\t\t\t\t\t\t: 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 {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\n\t\tsetInterval(async () => {\n\t\t\tlet now = new Date();\n\t\t\tvar endMeasure = this.cpuAverage();\n\t\t\tvar idleDifference = endMeasure.idle - lastCPU.idle;\n\t\t\tvar totalDifference = endMeasure.total - lastCPU.total;\n\t\t\tvar percentageCPU = 1 - idleDifference / totalDifference;\n\n\t\t\t// Original local code\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t\t) {\n\t\t\t\tawait MonitorCPUs.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: ResolveIOServer.getServerConfig()['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.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-cpu',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: now,\n\t\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t\t}\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 (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t\t) {\n\t\t\t\tawait MonitorMemorys.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: ResolveIOServer.getServerConfig()['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.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-memory',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: now,\n\t\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\t\tphysical: os.totalmem(),\n\t\t\t\t\t\ttype: 'memory'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\t}\n\n\tasync addMongoTracker(data: MongoMonitorModel) {\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t) {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tawait MonitorMongos.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: ResolveIOServer.getServerConfig()['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: Buffer.byteLength(data.query, 'utf8') < 15800000\n\t\t\t\t\t\t? data.query\n\t\t\t\t\t\t: 'Too Big'\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.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-mongo',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\t\tmethod: data.method,\n\t\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\t\tduration: data.duration,\n\t\t\t\t\t\tquery: Buffer.byteLength(data.query, 'utf8') < 15800000\n\t\t\t\t\t\t\t? data.query\n\t\t\t\t\t\t\t: 'Too Big'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tasync addFunctionTracker(data: MonitorFunction) {\n\t\tif (typeof(data.data) !== 'string') {\n\t\t\tdata.data = JSON.stringify(data.data);\n\t\t}\n\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t) {\n\t\t\tawait MonitorFunctions.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\tmetadata: {\n\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t},\n\t\t\t\tdate: new Date(data.startTime),\n\t\t\t\ttype: data.functionType,\n\t\t\t\tname: data.functionName,\n\t\t\t\tuser: data.user,\n\t\t\t\tduration: data.duration,\n\t\t\t\tdata: Buffer.byteLength(data.data, 'utf8') < 15800000\n\t\t\t\t\t? data.data\n\t\t\t\t\t: 'Too Big'\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-function',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date(data.startTime),\n\t\t\t\t\t\ttype: data.functionType,\n\t\t\t\t\t\tname: data.functionName,\n\t\t\t\t\t\tuser: data.user,\n\t\t\t\t\t\tduration: data.duration,\n\t\t\t\t\t\tdata: Buffer.byteLength(data.data, 'utf8') < 15800000\n\t\t\t\t\t\t\t? data.data\n\t\t\t\t\t\t\t: 'Too Big'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate pushMonitorData(data: LocalLogModel) {\n\t\tthis._monitorData.push(data);\n\n\t\t// If data is huge, flush immediately to file\n\t\tif (this.estimateBatchSize() >= MAX_BATCH_SIZE) {\n\t\t\tthis.flushMonitorData();\n\t\t}\n\t}\n\n\tprivate estimateBatchSize(): number {\n\t\treturn this._monitorData.reduce((total, item) => {\n\t\t\treturn total + Buffer.byteLength(JSON.stringify(item));\n\t\t}, 0);\n\t}\n\n\tsetupEventLoop() {\n\t\t// Flush every 2.5 seconds\n\t\tsetInterval(() => {\n\t\t\tif (this._monitorData.length > 0) {\n\t\t\t\tthis.flushMonitorData();\n\t\t\t}\n\t\t}, 2500);\n\t}\n\n\tprivate flushMonitorData() {\n\t\tconst batch = [];\n\t\tlet batchSize = 0;\n\n\t\twhile (this._monitorData.length > 0 && batchSize < MAX_BATCH_SIZE) {\n\t\t\tconst item = this._monitorData.shift();\n\t\t\tconst itemSize = Buffer.byteLength(JSON.stringify(item));\n\n\t\t\tif ((batchSize + itemSize) > MAX_BATCH_SIZE && batch.length > 0) {\n\t\t\t\t// put the item back for next round\n\t\t\t\tthis._monitorData.unshift(item);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbatch.push(item);\n\t\t\tbatchSize += itemSize;\n\t\t}\n\n\t\ttry {\n\t\t\t// Now, instead of calling an external HTTP endpoint, we write the batch to disk:\n\t\t\tResolveIOServer.getLocalLogManager().writeLogs(batch);\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(new Date(), 'MonitorManager', 'Failed to flush monitor data to file:', error);\n\t\t}\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() {}\n\n\tstatic create(method: string, collection: string, query: string) {\n\t\tconst monitorMongo = new MonitorMongo();\n\t\tmonitorMongo.initialize(method, collection, query);\n\t\treturn monitorMongo;\n\t}\n\n\tprivate initialize(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 async 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\tawait ResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport class MonitorManagerFunction {\n\tprivate _functionCnt = 0;\n\tprivate _functions: MonitorFunction[] = [];\n\tprivate _functionLastCompletedWS: { [id_socket: string]: MonitorFunction; } = {};\n\tprivate _functionLastCompleted: MonitorFunction;\n\n\tconstructor() {}\n\n\tstatic create() {\n\t\tconst monitorManagerFunction = new MonitorManagerFunction();\n\t\tmonitorManagerFunction.initialize();\n\t\treturn monitorManagerFunction;\n\t}\n\n\tprivate initialize() {\n\n\t}\n\n\tstartMonitorFunction(\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\n\t\tlet newMonitorFunction = MonitorFunction.create(\n\t\t\tthis._functionCnt++,\n\t\t\tfunctionType,\n\t\t\tfunctionName,\n\t\t\tuser,\n\t\t\tid_socket,\n\t\t\tdata\n\t\t);\n\n\t\tthis._functions.push(newMonitorFunction);\n\t\treturn newMonitorFunction.id;\n\t}\n\n\tasync finishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.find(a => a.id === id);\n\n\t\tif (monitor) {\n\t\t\tawait monitor.finish();\n\t\t\tthis._functionLastCompleted = monitor;\n\t\t\tthis._functionLastCompletedWS[monitor.id_socket] = monitor;\n\t\t\tthis._functions.splice(\n\t\t\t\tthis._functions.map(a => a.id).indexOf(id),\n\t\t\t\t1\n\t\t\t);\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\tgetLastCompletedMonitorFunctionWS() {\n\t\treturn this._functionLastCompletedWS;\n\t}\n}\n\nexport type MonitorFunctionType =\n\t'Cron Method'\n\t| 'Method'\n\t| 'User Specific Publication'\n\t| 'Publication';\n\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tpublic duration = 0;\n\tpublic functionType: MonitorFunctionType;\n\tpublic functionName: string;\n\tpublic user: string;\n\tpublic data: any;\n\tpublic startTime: Date = null;\n\tpublic endTime: Date = null;\n\tpublic lastTime: Date = null;\n\tpublic id_socket = '';\n\tpublic id = 0;\n\n\tconstructor() {}\n\n\tstatic create(\n\t\tid: number,\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\n\t\tconst monitorFunction = new MonitorFunction();\n\t\tmonitorFunction.initialize(id, functionType, functionName, user, id_socket, data);\n\t\treturn monitorFunction;\n\t}\n\n\tprivate initialize(\n\t\tid: number,\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\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\tthis.lastTime = new Date();\n\n\t\tthis._timer = setInterval(() => {\n\t\t\tlet diff = Date.now() - this.lastTime.getTime();\n\n\t\t\tif (diff > this.duration) {\n\t\t\t\tthis.duration = diff;\n\t\t\t}\n\n\t\t\tthis.lastTime = new Date();\n\t\t}, 1000);\n\t}\n\n\tpublic async 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\tif (this.duration >= 5000) {\n\t\t\t// Optional slow function logging or email\n\t\t}\n\n\t\tawait ResolveIOServer.getMainServer().getMonitorManager().addFunctionTracker(this);\n\t}\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":[],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorFunctions } from '../collections/monitor-function.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { objectIdHexString } from '../util/common';\nimport { LocalLogModel } from './local-log.manager';\n\nconst os = require('os');\nconst MAX_BATCH_SIZE = 8 * 1024 * 1024; // 8MB max for safety\n\nexport class MonitorManager {\n\tprivate _instanceHostname = '';\n\tprivate _monitorData: LocalLogModel[] = [];\n\n\tconstructor() {}\n\n\tstatic async create() {\n\t\tconst monitorManager = new MonitorManager();\n\t\tawait monitorManager.initialize();\n\t\treturn monitorManager;\n\t}\n\n\tprivate async initialize() {\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\t\tawait this.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\tcpuAverage() {\n\t\tvar totalIdle = 0, totalTick = 0;\n\t\tvar cpus = os.cpus();\n\n\t\tfor (var i = 0, len = cpus.length; i < len; i++) {\n\t\t\tvar cpu = cpus[i];\n\n\t\t\tfor (let type in cpu.times) {\n\t\t\t\ttotalTick += cpu.times[type];\n\t\t\t}\n\t\t\ttotalIdle += cpu.times.idle;\n\t\t}\n\n\t\treturn {\n\t\t\tidle: totalIdle / cpus.length,\n\t\t\ttotal: totalTick / cpus.length\n\t\t};\n\t}\n\n\tasync setupIntervals() {\n\t\t// Example: If not on production or localhost, do a health check\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'\n\t\t&& ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200'\n\t\t) {\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'\n\t\t\t\t\t\t\t\t? (<any>process.env.APP_VERSION).toString()\n\t\t\t\t\t\t\t\t: 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 {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\n\t\tsetInterval(async () => {\n\t\t\tlet now = new Date();\n\t\t\tvar endMeasure = this.cpuAverage();\n\t\t\tvar idleDifference = endMeasure.idle - lastCPU.idle;\n\t\t\tvar totalDifference = endMeasure.total - lastCPU.total;\n\t\t\tvar percentageCPU = 1 - idleDifference / totalDifference;\n\n\t\t\t// Original local code\n\t\t\tif (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t\t) {\n\t\t\t\tawait MonitorCPUs.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: ResolveIOServer.getServerConfig()['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.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-cpu',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: now,\n\t\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t\t}\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 (\n\t\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t\t) {\n\t\t\t\tawait MonitorMemorys.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: ResolveIOServer.getServerConfig()['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.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-memory',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: now,\n\t\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\t\tphysical: os.totalmem(),\n\t\t\t\t\t\ttype: 'memory'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\t}\n\n\tasync addMongoTracker(data: MongoMonitorModel) {\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t) {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tawait MonitorMongos.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: ResolveIOServer.getServerConfig()['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: Buffer.byteLength(data.query, 'utf8') < 15800000\n\t\t\t\t\t\t? data.query\n\t\t\t\t\t\t: 'Too Big'\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.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-mongo',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\t\tmethod: data.method,\n\t\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\t\tduration: data.duration,\n\t\t\t\t\t\tquery: Buffer.byteLength(data.query, 'utf8') < 15800000\n\t\t\t\t\t\t\t? data.query\n\t\t\t\t\t\t\t: 'Too Big'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tasync addFunctionTracker(data: MonitorFunction) {\n\t\tif (typeof(data.data) !== 'string') {\n\t\t\tdata.data = JSON.stringify(data.data);\n\t\t}\n\n\t\tif (\n\t\t\tResolveIOServer.getServerConfig()['ROOT_URL'] === 'https://resolveio.com'\n\t\t\t|| ResolveIOServer.getServerConfig()['ROOT_URL'] === 'http://localhost:4200'\n\t\t) {\n\t\t\tawait MonitorFunctions.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\tmetadata: {\n\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t},\n\t\t\t\tdate: new Date(data.startTime),\n\t\t\t\ttype: data.functionType,\n\t\t\t\tname: data.functionName,\n\t\t\t\tuser: data.user,\n\t\t\t\tduration: data.duration,\n\t\t\t\tdata: Buffer.byteLength(data.data, 'utf8') < 15800000\n\t\t\t\t\t? data.data\n\t\t\t\t\t: 'Too Big'\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis.pushMonitorData({\n\t\t\t\t\ttype: 'monitor-function',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\t\tclient: ResolveIOServer.getServerConfig()['CLIENT_NAME']\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date(data.startTime),\n\t\t\t\t\t\ttype: data.functionType,\n\t\t\t\t\t\tname: data.functionName,\n\t\t\t\t\t\tuser: data.user,\n\t\t\t\t\t\tduration: data.duration,\n\t\t\t\t\t\tdata: Buffer.byteLength(data.data, 'utf8') < 15800000\n\t\t\t\t\t\t\t? data.data\n\t\t\t\t\t\t\t: 'Too Big'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate pushMonitorData(data: LocalLogModel) {\n\t\tthis._monitorData.push(data);\n\n\t\t// If data is huge, flush immediately to file\n\t\tif (this.estimateBatchSize() >= MAX_BATCH_SIZE) {\n\t\t\tthis.flushMonitorData();\n\t\t}\n\t}\n\n\tprivate estimateBatchSize(): number {\n\t\treturn this._monitorData.reduce((total, item) => {\n\t\t\treturn total + Buffer.byteLength(JSON.stringify(item));\n\t\t}, 0);\n\t}\n\n\tsetupEventLoop() {\n\t\t// Flush every 2.5 seconds\n\t\tsetInterval(() => {\n\t\t\tif (this._monitorData.length > 0) {\n\t\t\t\tthis.flushMonitorData();\n\t\t\t}\n\t\t}, 2500);\n\t}\n\n\tprivate flushMonitorData() {\n\t\tconst batch = [];\n\t\tlet batchSize = 0;\n\n\t\twhile (this._monitorData.length > 0 && batchSize < MAX_BATCH_SIZE) {\n\t\t\tconst item = this._monitorData.shift();\n\t\t\tconst itemSize = Buffer.byteLength(JSON.stringify(item));\n\n\t\t\tif ((batchSize + itemSize) > MAX_BATCH_SIZE && batch.length > 0) {\n\t\t\t\t// put the item back for next round\n\t\t\t\tthis._monitorData.unshift(item);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbatch.push(item);\n\t\t\tbatchSize += itemSize;\n\t\t}\n\n\t\ttry {\n\t\t\t// Now, instead of calling an external HTTP endpoint, we write the batch to disk:\n\t\t\tResolveIOServer.getLocalLogManager().writeLogs(batch);\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.error(new Date(), 'MonitorManager', 'Failed to flush monitor data to file:', error);\n\t\t}\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() {}\n\n\tstatic create(method: string, collection: string, query: string) {\n\t\tconst monitorMongo = new MonitorMongo();\n\t\tmonitorMongo.initialize(method, collection, query);\n\t\treturn monitorMongo;\n\t}\n\n\tprivate initialize(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 async 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\tawait ResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport class MonitorManagerFunction {\n\tprivate _functionCnt = 0;\n\tprivate _functions: MonitorFunction[] = [];\n\tprivate _functionLastCompletedWS: { [id_socket: string]: MonitorFunction; } = {};\n\tprivate _functionLastCompleted: MonitorFunction;\n\n\tconstructor() {}\n\n\tstatic create() {\n\t\tconst monitorManagerFunction = new MonitorManagerFunction();\n\t\tmonitorManagerFunction.initialize();\n\t\treturn monitorManagerFunction;\n\t}\n\n\tprivate initialize() {\n\n\t}\n\n\tstartMonitorFunction(\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\n\t\tlet newMonitorFunction = MonitorFunction.create(\n\t\t\tthis._functionCnt++,\n\t\t\tfunctionType,\n\t\t\tfunctionName,\n\t\t\tuser,\n\t\t\tid_socket,\n\t\t\tdata\n\t\t);\n\n\t\tthis._functions.push(newMonitorFunction);\n\t\treturn newMonitorFunction.id;\n\t}\n\n\tasync finishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.find(a => a.id === id);\n\n\t\tif (monitor) {\n\t\t\tawait monitor.finish();\n\t\t\tthis._functionLastCompleted = monitor;\n\t\t\tthis._functionLastCompletedWS[monitor.id_socket] = monitor;\n\t\t\tthis._functions.splice(\n\t\t\t\tthis._functions.map(a => a.id).indexOf(id),\n\t\t\t\t1\n\t\t\t);\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\tgetLastCompletedMonitorFunctionWS() {\n\t\treturn this._functionLastCompletedWS;\n\t}\n}\n\nexport type MonitorFunctionType =\n\t'Cron Method'\n\t| 'Method'\n\t| 'User Specific Publication'\n\t| 'Publication';\n\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tpublic duration = 0;\n\tpublic functionType: MonitorFunctionType;\n\tpublic functionName: string;\n\tpublic user: string;\n\tpublic data: any;\n\tpublic startTime: Date = null;\n\tpublic endTime: Date = null;\n\tpublic lastTime: Date = null;\n\tpublic id_socket = '';\n\tpublic id = 0;\n\n\tconstructor() {}\n\n\tstatic create(\n\t\tid: number,\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\n\t\tconst monitorFunction = new MonitorFunction();\n\t\tmonitorFunction.initialize(id, functionType, functionName, user, id_socket, data);\n\t\treturn monitorFunction;\n\t}\n\n\tprivate initialize(\n\t\tid: number,\n\t\tfunctionType: MonitorFunctionType,\n\t\tfunctionName: string,\n\t\tuser: string,\n\t\tid_socket: string,\n\t\tdata: any\n\t) {\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\tthis.lastTime = new Date();\n\n\t\tthis._timer = setInterval(() => {\n\t\t\tlet diff = Date.now() - this.lastTime.getTime();\n\n\t\t\tif (diff > this.duration) {\n\t\t\t\tthis.duration = diff;\n\t\t\t}\n\n\t\t\tthis.lastTime = new Date();\n\t\t}, 1000);\n\t}\n\n\tpublic async 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\tif (this.duration >= 5000) {\n\t\t\t// Optional slow function logging or email\n\t\t}\n\n\t\tawait ResolveIOServer.getMainServer().getMonitorManager().addFunctionTracker(this);\n\t}\n}"]}
|