Merge pull request #1125 from hitalos/feature/improve-monitor

🚀 Adding total ram to monitor
pull/1131/head
Joey 2021-01-22 05:35:10 +01:00 committed by GitHub
commit ba7fc034c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 64 additions and 10 deletions

View File

@ -65,6 +65,14 @@ var index = []byte(`<!DOCTYPE html>
color: #777;
}
h2 span.ram_os {
color: rgba(255, 150, 0, .8);
}
h2 span.ram_total {
color: rgba(0, 200, 0, .8);
}
canvas {
width: 200px;
height: 180px;
@ -92,7 +100,7 @@ var index = []byte(`<!DOCTYPE html>
<div class="row">
<div class="column">
<div class="metric">Memory Usage</div>
<h2 id="ramMetric">0.00 MB</h2>
<h2 id="ramMetric" title="PID used / OS used / OS total">0.00 MB</h2>
</div>
<div class="column">
<canvas id="ramChart"></canvas>
@ -200,6 +208,21 @@ var index = []byte(`<!DOCTYPE html>
});
}
ramChart.data.datasets.push({
data: [],
lineTension: 0.2,
pointRadius: 0,
backgroundColor: 'rgba(255, 200, 0, .6)',
borderColor: 'rgba(255, 150, 0, .8)',
})
ramChart.data.datasets.push({
data: [],
lineTension: 0.2,
pointRadius: 0,
backgroundColor: 'rgba(0, 255, 0, .4)',
borderColor: 'rgba(0, 200, 0, .8)',
})
// function init() {
// charts.forEach(chart => {
// chart.data.datasets[0].data = JSON.parse(localStorage.getItem(chart.canvas.id)) || []
@ -212,11 +235,13 @@ var index = []byte(`<!DOCTYPE html>
cpuOS = json.os.cpu.toFixed(1);
cpuMetric.innerHTML = cpu + '% <span>' + cpuOS + '%</span>';
ramMetric.innerHTML = formatBytes(json.pid.ram) + ' <span>' + formatBytes(json.os.ram) + '</span>';
ramMetric.innerHTML = formatBytes(json.pid.ram) + '<span> / </span><span class="ram_os">' + formatBytes(json.os.ram) + '<span><span> / </span><span class="ram_total">' + formatBytes(json.os.total_ram) + '</span>';
rtimeMetric.innerHTML = rtime + 'ms <span>client</span>';
connsMetric.innerHTML = json.pid.conns + ' <span>' + json.os.conns + '</span>';
cpuChart.data.datasets[0].data.push(cpu);
ramChart.data.datasets[2].data.push((json.os.total_ram / 1e6).toFixed(2));
ramChart.data.datasets[1].data.push((json.os.ram / 1e6).toFixed(2));
ramChart.data.datasets[0].data.push((json.pid.ram / 1e6).toFixed(2));
rtimeChart.data.datasets[0].data.push(rtime);
connsChart.data.datasets[0].data.push(json.pid.conns);

View File

@ -63,6 +63,14 @@
color: #777;
}
h2 span.ram_os {
color: rgba(255, 150, 0, .8);
}
h2 span.ram_total {
color: rgba(0, 200, 0, .8);
}
canvas {
width: 200px;
height: 180px;
@ -90,7 +98,7 @@
<div class="row">
<div class="column">
<div class="metric">Memory Usage</div>
<h2 id="ramMetric">0.00 MB</h2>
<h2 id="ramMetric" title="PID used / OS used / OS total">0.00 MB</h2>
</div>
<div class="column">
<canvas id="ramChart"></canvas>
@ -198,6 +206,21 @@
});
}
ramChart.data.datasets.push({
data: [],
lineTension: 0.2,
pointRadius: 0,
backgroundColor: 'rgba(255, 200, 0, .6)',
borderColor: 'rgba(255, 150, 0, .8)',
})
ramChart.data.datasets.push({
data: [],
lineTension: 0.2,
pointRadius: 0,
backgroundColor: 'rgba(0, 255, 0, .4)',
borderColor: 'rgba(0, 200, 0, .8)',
})
// function init() {
// charts.forEach(chart => {
// chart.data.datasets[0].data = JSON.parse(localStorage.getItem(chart.canvas.id)) || []
@ -210,11 +233,13 @@
cpuOS = json.os.cpu.toFixed(1);
cpuMetric.innerHTML = cpu + '% <span>' + cpuOS + '%</span>';
ramMetric.innerHTML = formatBytes(json.pid.ram) + ' <span>' + formatBytes(json.os.ram) + '</span>';
ramMetric.innerHTML = formatBytes(json.pid.ram) + '<span> / </span><span class="ram_os">' + formatBytes(json.os.ram) + '<span><span> / </span><span class="ram_total">' + formatBytes(json.os.total_ram) + '</span>';
rtimeMetric.innerHTML = rtime + 'ms <span>client</span>';
connsMetric.innerHTML = json.pid.conns + ' <span>' + json.os.conns + '</span>';
cpuChart.data.datasets[0].data.push(cpu);
ramChart.data.datasets[2].data.push((json.os.total_ram / 1e6).toFixed(2));
ramChart.data.datasets[1].data.push((json.os.ram / 1e6).toFixed(2));
ramChart.data.datasets[0].data.push((json.pid.ram / 1e6).toFixed(2));
rtimeChart.data.datasets[0].data.push(rtime);
connsChart.data.datasets[0].data.push(json.pid.conns);

View File

@ -25,9 +25,10 @@ type statsPID struct {
Conns int `json:"conns"`
}
type statsOS struct {
CPU float64 `json:"cpu"`
RAM uint64 `json:"ram"`
Conns int `json:"conns"`
CPU float64 `json:"cpu"`
RAM uint64 `json:"ram"`
TotalRAM uint64 `json:"total_ram"`
Conns int `json:"conns"`
}
var (
@ -35,9 +36,10 @@ var (
monitPidRam atomic.Value
monitPidConns atomic.Value
monitOsCpu atomic.Value
monitOsRam atomic.Value
monitOsConns atomic.Value
monitOsCpu atomic.Value
monitOsRam atomic.Value
monitOsTotalRam atomic.Value
monitOsConns atomic.Value
)
var (
@ -78,6 +80,7 @@ func New() fiber.Handler {
data.OS.CPU = monitOsCpu.Load().(float64)
data.OS.RAM = monitOsRam.Load().(uint64)
data.OS.TotalRAM = monitOsTotalRam.Load().(uint64)
data.OS.Conns = monitOsConns.Load().(int)
mutex.Unlock()
return c.Status(fiber.StatusOK).JSON(data)
@ -101,6 +104,7 @@ func updateStatistics(p *process.Process) {
if osMem, _ := mem.VirtualMemory(); osMem != nil {
monitOsRam.Store(osMem.Used)
monitOsTotalRam.Store(osMem.Total)
}
pidConns, _ := net.ConnectionsPid("tcp", p.Pid)