Added CPU to server graph.

This commit is contained in:
Ylian Saint-Hilaire 2021-06-22 09:55:31 -07:00
parent f48536c40d
commit 83117f3409
2 changed files with 31 additions and 5 deletions

View File

@ -1716,7 +1716,6 @@ function CreateMeshCentralServer(config, args) {
time: new Date(),
expire: expire,
mem: process.memoryUsage(),
//cpu: process.cpuUsage(),
conn: {
ca: Object.keys(obj.webserver.wsagents).length,
cu: Object.keys(obj.webserver.wssessions).length,
@ -1725,6 +1724,7 @@ function CreateMeshCentralServer(config, args) {
},
traffic: trafficStats.delta
};
try { data.cpu = require('os').loadavg(); } catch (ex) { }
if (obj.mpsserver != null) {
data.conn.am = 0;
for (var i in obj.mpsserver.ciraConnections) { data.conn.am += obj.mpsserver.ciraConnections[i].length; }

View File

@ -1037,6 +1037,7 @@
<select id=p40type onchange=updateServerTimelineStats()>
<option value=0>Connections</option>
<option value=1>Memory</option>
<option value=5>CPU</option>
<option value=3>Inbound Traffic</option>
<option value=4>Outbound Traffic</option>
</select>&nbsp;
@ -1934,6 +1935,7 @@
if ('{{currentNode}}'.toLowerCase() == '') { meshserver.send({ action: 'files' }); }
if ('{{viewmode}}'.toLowerCase() == '') { go(1); }
authCookieRenewTimer = setInterval(function () { meshserver.send({ action: 'authcookie' }); }, 1800000); // Request a cookie refresh every 30 minutes.
if (xxcurrentView == 40) { refreshServerTimelineStats(); }
}
}
@ -14696,7 +14698,7 @@
}
};
function refreshServerTimelineStats(stats) { meshserver.send({ action: 'servertimelinestats', hours: 24 * 30 }); }
function refreshServerTimelineStats(stats) { if ((meshserver != null) && (meshserver.State == 2)) { meshserver.send({ action: 'servertimelinestats', hours: 24 * 30 }); } }
function pastDate(hours) { var t = new Date(); t.setTime(t.getTime() - (60 * 60 * 1000 * hours)); return t; }
function setServerTimelineStats(stats) { serverTimelineStats = stats; updateServerTimelineStats(); }
function addServerTimelineStats(stats) {
@ -14712,19 +14714,21 @@
serverTimelineStats.push(stats);
var chartType = Q('p40type').value;
if (chartType == 0) {
if (chartType == 0) { // Connections
serverTimelineConfig.data.datasets[0].data.push({ x: stats.time, y: stats.conn.ca });
serverTimelineConfig.data.datasets[1].data.push({ x: stats.time, y: stats.conn.cu });
serverTimelineConfig.data.datasets[2].data.push({ x: stats.time, y: stats.conn.us });
serverTimelineConfig.data.datasets[3].data.push({ x: stats.time, y: stats.conn.rs });
if (stats.conn.am != null) { serverTimelineConfig.data.datasets[4].data.push({ x: stats.time, y: stats.conn.am }); }
} else if (chartType == 1) {
} else if (chartType == 1) { // Memory
serverTimelineConfig.data.datasets[0].data.push({ x: stats.time, y: stats.mem.external / (1024 * 1024) });
serverTimelineConfig.data.datasets[1].data.push({ x: stats.time, y: stats.mem.heapUsed / (1024 * 1024) });
serverTimelineConfig.data.datasets[2].data.push({ x: stats.time, y: stats.mem.heapTotal / (1024 * 1024) });
serverTimelineConfig.data.datasets[3].data.push({ x: stats.time, y: stats.mem.rss / (1024 * 1024) });
} else if ((chartType == 3) || (chartType == 4)) {
} else if ((chartType == 3) || (chartType == 4)) { // Traffic
updateServerTimelineStats();
} else if (chartType == 5) { // CPU
if ((typeof stats.cpu == 'object') && (typeof stats.cpu[0] == 'number')) { serverTimelineConfig.data.datasets[0].data.push({ x: stats.time, y: stats.cpu[0] }); }
}
/* else if (chartType == 2) {
serverTimelineConfig.data.datasets[0].data.push({ x: stats.time, y: stats.db.meshes });
@ -14891,6 +14895,28 @@
if (seriesWithData & 0x0800) { data.datasets[z++].data.push({ x: serverTimelineStats[i].time, y: (serverTimelineStats[i].traffic.desktopMultiplex && serverTimelineStats[i].traffic.desktopMultiplex.out) ? (serverTimelineStats[i].traffic.desktopMultiplex.out / 0x100000) : 0 }); }
}
}
} else if (chartType == 5) { // CPU
serverTimelineConfig.options.scales.yAxes[0].scaleLabel.labelString = "Usage";
data = {
labels: [pastDate(0), timeAfter],
datasets: [
{ label: "CPU", data: [], backgroundColor: 'rgba(158, 151, 16, .1)', borderColor: 'rgb(158, 151, 16)', fill: true }
]
};
for (var i = 0; i < serverTimelineStats.length; i++) {
if ((typeof serverTimelineStats[i].cpu == 'object') && (typeof serverTimelineStats[i].cpu[0] == 'number')) {
if ((serverTimelineStats[i].s != null) && (servers.indexOf(serverTimelineStats[i].s) == -1)) {
servers.push(serverTimelineStats[i].s);
if (serverAutoSelect) { selectedServer = serverTimelineStats[i].s; serverAutoSelect = false; }
}
if (serverTimelineStats[i].s == null) { serverEmptyExists = true; }
if (serverTimelineStats[i].s != selectedServer) { continue; }
if (serverTimelineStats[i].first == true) {
data.datasets[0].data.push({ x: serverTimelineStats[i].time - 1, y: NaN });
}
data.datasets[0].data.push({ x: serverTimelineStats[i].time, y: serverTimelineStats[i].cpu[0] });
}
}
}
/*else if (chartType == 2) { // Database
serverTimelineConfig.options.scales.yAxes[0].scaleLabel.labelString = 'Records';