express-status-monitor
Advanced tools
Comparing version 1.2.11 to 1.3.0
@@ -88,3 +88,3 @@ { | ||
"max-len": "off", | ||
"max-lines": "error", | ||
"max-lines": "off", | ||
"max-nested-callbacks": "error", | ||
@@ -91,0 +91,0 @@ "max-params": "error", |
{ | ||
"name": "express-status-monitor", | ||
"version": "1.2.11", | ||
"version": "1.3.0", | ||
"description": "Realtime Monitoring for Express-based Node applications", | ||
@@ -62,2 +62,3 @@ "main": "index.js", | ||
"debug": "4.1.1", | ||
"event-loop-stats": "1.2.0", | ||
"handlebars": "^4.7.6", | ||
@@ -64,0 +65,0 @@ "on-headers": "1.0.2", |
@@ -64,2 +64,4 @@ # express-status-monitor | ||
load: true, | ||
eventLoop: true, | ||
heap: true, | ||
responseTime: true, | ||
@@ -66,0 +68,0 @@ rps: true, |
@@ -27,2 +27,4 @@ module.exports = { | ||
load: true, | ||
heap: true, | ||
eventLoop: true, | ||
responseTime: true, | ||
@@ -33,3 +35,3 @@ rps: true, | ||
ignoreStartsWith: '/admin', | ||
healthChecks: [] | ||
healthChecks: [], | ||
}; |
const pidusage = require('pidusage'); | ||
const os = require('os'); | ||
const v8 = require('v8'); | ||
const eventLoopStats = require('event-loop-stats'); | ||
const sendMetrics = require('./send-metrics'); | ||
@@ -29,5 +31,7 @@ const debug = require('debug')('express-status-monitor'); | ||
stat.timestamp = Date.now(); | ||
stat.heap = v8.getHeapStatistics(); | ||
stat.loop = eventLoopStats.sense(); | ||
span.os.push(stat); | ||
if (!span.responses[0] || last.timestamp + (span.interval * 1000) < Date.now()) { | ||
if (!span.responses[0] || (last.timestamp + span.interval) * 1000 < Date.now()) { | ||
span.responses.push(defaultResponse); | ||
@@ -34,0 +38,0 @@ } |
@@ -15,3 +15,3 @@ /* eslint strict: "off", init-declarations: "off" */ | ||
}); | ||
} | ||
}; | ||
@@ -28,3 +28,4 @@ module.exports = (server, config) => { | ||
if (config.authorize) { | ||
config.authorize(socket) | ||
config | ||
.authorize(socket) | ||
.then(authorized => { | ||
@@ -31,0 +32,0 @@ if (!authorized) socket.disconnect('unauthorized'); |
@@ -16,3 +16,5 @@ /* | ||
var socket = io(location.protocol + '//' + location.hostname + ':' + (port || location.port), { path: socketPath }); | ||
var socket = io(location.protocol + '//' + location.hostname + ':' + (port || location.port), { | ||
path: socketPath, | ||
}); | ||
var defaultSpan = 0; | ||
@@ -31,16 +33,20 @@ var spans = []; | ||
scales: { | ||
yAxes: [{ | ||
ticks: { | ||
beginAtZero: true, | ||
yAxes: [ | ||
{ | ||
ticks: { | ||
beginAtZero: true, | ||
}, | ||
}, | ||
}], | ||
xAxes: [{ | ||
type: 'time', | ||
time: { | ||
unitStepSize: 30, | ||
], | ||
xAxes: [ | ||
{ | ||
type: 'time', | ||
time: { | ||
unitStepSize: 30, | ||
}, | ||
gridLines: { | ||
display: false, | ||
}, | ||
}, | ||
gridLines: { | ||
display: false, | ||
}, | ||
}], | ||
], | ||
}, | ||
@@ -73,2 +79,4 @@ tooltips: { | ||
var loadDataset = [Object.create(defaultDataset)]; | ||
var heapDataset = [Object.create(defaultDataset)]; | ||
var eventLoopDataset = [Object.create(defaultDataset)]; | ||
var responseTimeDataset = [Object.create(defaultDataset)]; | ||
@@ -80,2 +88,4 @@ var rpsDataset = [Object.create(defaultDataset)]; | ||
var loadStat = document.getElementById('loadStat'); | ||
var heapStat = document.getElementById('heapStat'); | ||
var eventLoopStat = document.getElementById('eventLoopStat'); | ||
var responseTimeStat = document.getElementById('responseTimeStat'); | ||
@@ -87,2 +97,4 @@ var rpsStat = document.getElementById('rpsStat'); | ||
var loadChartCtx = document.getElementById('loadChart'); | ||
var heapChartCtx = document.getElementById('heapChart'); | ||
var eventLoopChartCtx = document.getElementById('eventLoopChart'); | ||
var responseTimeChartCtx = document.getElementById('responseTimeChart'); | ||
@@ -94,2 +106,4 @@ var rpsChartCtx = document.getElementById('rpsChart'); | ||
var memChart = createChart(memChartCtx, memDataset); | ||
var heapChart = createChart(heapChartCtx, heapDataset); | ||
var eventLoopChart = createChart(eventLoopChartCtx, eventLoopDataset); | ||
var loadChart = createChart(loadChartCtx, loadDataset); | ||
@@ -116,3 +130,12 @@ var responseTimeChart = createChart(responseTimeChartCtx, responseTimeDataset); | ||
var charts = [cpuChart, memChart, loadChart, responseTimeChart, rpsChart, statusCodesChart]; | ||
var charts = [ | ||
cpuChart, | ||
memChart, | ||
loadChart, | ||
responseTimeChart, | ||
rpsChart, | ||
statusCodesChart, | ||
heapChart, | ||
eventLoopChart, | ||
]; | ||
@@ -170,2 +193,12 @@ var onSpanChange = function (e) { | ||
heapChart.data.datasets[0].data = data[defaultSpan].os.map(function (point) { | ||
return point.heap.used_heap_size / 1024 / 1024; | ||
}); | ||
heapChart.data.labels = data[defaultSpan].os.map(addTimestamp); | ||
eventLoopChart.data.datasets[0].data = data[defaultSpan].os.map(function (point) { | ||
return point.loop.sum; | ||
}); | ||
eventLoopChart.data.labels = data[defaultSpan].os.map(addTimestamp); | ||
var lastResponseMetric = data[defaultSpan].responses[data[defaultSpan].responses.length - 1]; | ||
@@ -191,3 +224,4 @@ | ||
if (data[defaultSpan].responses.length >= 2) { | ||
var deltaTime = lastResponseMetric.timestamp - | ||
var deltaTime = | ||
lastResponseMetric.timestamp - | ||
data[defaultSpan].responses[data[defaultSpan].responses.length - 2].timestamp; | ||
@@ -229,4 +263,8 @@ | ||
socket.on('esm_stats', function (data) { | ||
if (data.retention === spans[defaultSpan].retention && | ||
data.interval === spans[defaultSpan].interval) { | ||
console.log(data); | ||
if ( | ||
data.retention === spans[defaultSpan].retention && | ||
data.interval === spans[defaultSpan].interval | ||
) { | ||
var os = data.os; | ||
@@ -256,2 +294,16 @@ var responses = data.responses; | ||
heapStat.textContent = '0'; | ||
if (os) { | ||
heapStat.textContent = (os.heap.used_heap_size / 1024 / 1024).toFixed(1) + 'MB'; | ||
heapChart.data.datasets[0].data.push(os.heap.used_heap_size / 1024 / 1024); | ||
heapChart.data.labels.push(os.timestamp); | ||
} | ||
eventLoopStat.textContent = '0'; | ||
if (os) { | ||
eventLoopStat.textContent = os.loop.sum.toFixed(2) + 'ms'; | ||
eventLoopChart.data.datasets[0].data.push(os.loop.sum); | ||
eventLoopChart.data.labels.push(os.timestamp); | ||
} | ||
responseTimeStat.textContent = '0.00ms'; | ||
@@ -258,0 +310,0 @@ if (responses) { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
52827
1240
141
7
3
+ Addedevent-loop-stats@1.2.0
+ Addedevent-loop-stats@1.2.0(transitive)
+ Addednan@2.20.0(transitive)