Merge pull request #1130 from stanjg/feature/stats-page
Added a statistics page to monitor the panel usage
This commit is contained in:
commit
fd8d7c3571
14 changed files with 576 additions and 0 deletions
|
@ -473,3 +473,7 @@ label.control-label > span.field-optional:before {
|
|||
height: 42px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.number-info-box-content {
|
||||
padding: 15px 10px 0;
|
||||
}
|
||||
|
|
118
public/themes/pterodactyl/js/admin/statistics.js
Normal file
118
public/themes/pterodactyl/js/admin/statistics.js
Normal file
|
@ -0,0 +1,118 @@
|
|||
var freeDisk = Pterodactyl.totalNodeDisk - Pterodactyl.totalServerDisk;
|
||||
let diskChart = new Chart($('#disk_chart'), {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: ['Free Disk', 'Used Disk'],
|
||||
datasets: [
|
||||
{
|
||||
label: 'Disk (in MB)',
|
||||
backgroundColor: ['#51B060', '#ff0000'],
|
||||
data: [freeDisk, Pterodactyl.totalServerDisk]
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
var freeRam = Pterodactyl.totalNodeRam - Pterodactyl.totalServerRam;
|
||||
let ramChart = new Chart($('#ram_chart'), {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: ['Free RAM', 'Used RAM'],
|
||||
datasets: [
|
||||
{
|
||||
label: 'Memory (in MB)',
|
||||
backgroundColor: ['#51B060', '#ff0000'],
|
||||
data: [freeRam, Pterodactyl.totalServerRam]
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
var activeServers = Pterodactyl.servers.length - Pterodactyl.suspendedServers;
|
||||
let serversChart = new Chart($('#servers_chart'), {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: ['Active', 'Suspended'],
|
||||
datasets: [
|
||||
{
|
||||
label: 'Servers',
|
||||
backgroundColor: ['#51B060', '#E08E0B'],
|
||||
data: [activeServers, Pterodactyl.suspendedServers]
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
let statusChart = new Chart($('#status_chart'), {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: ['Online', 'Offline', 'Installing', 'Error'],
|
||||
datasets: [
|
||||
{
|
||||
label: '',
|
||||
backgroundColor: ['#51B060', '#b7b7b7', '#E08E0B', '#ff0000'],
|
||||
data: [0,0,0,0]
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
var servers = Pterodactyl.servers;
|
||||
var nodes = Pterodactyl.nodes;
|
||||
|
||||
for (let i = 0; i < servers.length; i++) {
|
||||
setTimeout(getStatus, 200 * i, servers[i]);
|
||||
}
|
||||
|
||||
function getStatus(server) {
|
||||
var uuid = server.uuid;
|
||||
var node = getNodeByID(server.node_id);
|
||||
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: node.scheme + '://' + node.fqdn + ':'+node.daemonListen+'/v1/server',
|
||||
timeout: 5000,
|
||||
headers: {
|
||||
'X-Access-Server': uuid,
|
||||
'X-Access-Token': Pterodactyl.tokens[node.id],
|
||||
}
|
||||
}).done(function (data) {
|
||||
|
||||
if (typeof data.status === 'undefined') {
|
||||
// Error
|
||||
statusChart.data.datasets[0].data[3]++;
|
||||
return;
|
||||
}
|
||||
|
||||
switch (data.status) {
|
||||
case 0:
|
||||
case 3:
|
||||
case 30:
|
||||
// Offline
|
||||
statusChart.data.datasets[0].data[1]++;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
// Online
|
||||
statusChart.data.datasets[0].data[0]++;
|
||||
break;
|
||||
case 20:
|
||||
// Installing
|
||||
statusChart.data.datasets[0].data[2]++;
|
||||
break;
|
||||
}
|
||||
statusChart.update();
|
||||
}).fail(function (jqXHR) {
|
||||
// Error
|
||||
statusChart.data.datasets[0].data[3]++;
|
||||
statusChart.update();
|
||||
});
|
||||
}
|
||||
|
||||
function getNodeByID(id) {
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
if (nodes[i].id === id) {
|
||||
return nodes[i];
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue