mirror of https://github.com/gofiber/fiber.git
Merge pull request #1125 from hitalos/feature/improve-monitor
🚀 Adding total ram to monitor
pull/1131/head
commit
ba7fc034c2
|
@ -65,6 +65,14 @@ var index = []byte(`<!DOCTYPE html>
|
||||||
color: #777;
|
color: #777;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h2 span.ram_os {
|
||||||
|
color: rgba(255, 150, 0, .8);
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 span.ram_total {
|
||||||
|
color: rgba(0, 200, 0, .8);
|
||||||
|
}
|
||||||
|
|
||||||
canvas {
|
canvas {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 180px;
|
height: 180px;
|
||||||
|
@ -92,7 +100,7 @@ var index = []byte(`<!DOCTYPE html>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="metric">Memory Usage</div>
|
<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>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<canvas id="ramChart"></canvas>
|
<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() {
|
// function init() {
|
||||||
// charts.forEach(chart => {
|
// charts.forEach(chart => {
|
||||||
// chart.data.datasets[0].data = JSON.parse(localStorage.getItem(chart.canvas.id)) || []
|
// 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);
|
cpuOS = json.os.cpu.toFixed(1);
|
||||||
|
|
||||||
cpuMetric.innerHTML = cpu + '% <span>' + cpuOS + '%</span>';
|
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>';
|
rtimeMetric.innerHTML = rtime + 'ms <span>client</span>';
|
||||||
connsMetric.innerHTML = json.pid.conns + ' <span>' + json.os.conns + '</span>';
|
connsMetric.innerHTML = json.pid.conns + ' <span>' + json.os.conns + '</span>';
|
||||||
|
|
||||||
cpuChart.data.datasets[0].data.push(cpu);
|
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));
|
ramChart.data.datasets[0].data.push((json.pid.ram / 1e6).toFixed(2));
|
||||||
rtimeChart.data.datasets[0].data.push(rtime);
|
rtimeChart.data.datasets[0].data.push(rtime);
|
||||||
connsChart.data.datasets[0].data.push(json.pid.conns);
|
connsChart.data.datasets[0].data.push(json.pid.conns);
|
||||||
|
|
|
@ -63,6 +63,14 @@
|
||||||
color: #777;
|
color: #777;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h2 span.ram_os {
|
||||||
|
color: rgba(255, 150, 0, .8);
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 span.ram_total {
|
||||||
|
color: rgba(0, 200, 0, .8);
|
||||||
|
}
|
||||||
|
|
||||||
canvas {
|
canvas {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 180px;
|
height: 180px;
|
||||||
|
@ -90,7 +98,7 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="metric">Memory Usage</div>
|
<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>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<canvas id="ramChart"></canvas>
|
<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() {
|
// function init() {
|
||||||
// charts.forEach(chart => {
|
// charts.forEach(chart => {
|
||||||
// chart.data.datasets[0].data = JSON.parse(localStorage.getItem(chart.canvas.id)) || []
|
// chart.data.datasets[0].data = JSON.parse(localStorage.getItem(chart.canvas.id)) || []
|
||||||
|
@ -210,11 +233,13 @@
|
||||||
cpuOS = json.os.cpu.toFixed(1);
|
cpuOS = json.os.cpu.toFixed(1);
|
||||||
|
|
||||||
cpuMetric.innerHTML = cpu + '% <span>' + cpuOS + '%</span>';
|
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>';
|
rtimeMetric.innerHTML = rtime + 'ms <span>client</span>';
|
||||||
connsMetric.innerHTML = json.pid.conns + ' <span>' + json.os.conns + '</span>';
|
connsMetric.innerHTML = json.pid.conns + ' <span>' + json.os.conns + '</span>';
|
||||||
|
|
||||||
cpuChart.data.datasets[0].data.push(cpu);
|
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));
|
ramChart.data.datasets[0].data.push((json.pid.ram / 1e6).toFixed(2));
|
||||||
rtimeChart.data.datasets[0].data.push(rtime);
|
rtimeChart.data.datasets[0].data.push(rtime);
|
||||||
connsChart.data.datasets[0].data.push(json.pid.conns);
|
connsChart.data.datasets[0].data.push(json.pid.conns);
|
||||||
|
|
|
@ -27,6 +27,7 @@ type statsPID struct {
|
||||||
type statsOS struct {
|
type statsOS struct {
|
||||||
CPU float64 `json:"cpu"`
|
CPU float64 `json:"cpu"`
|
||||||
RAM uint64 `json:"ram"`
|
RAM uint64 `json:"ram"`
|
||||||
|
TotalRAM uint64 `json:"total_ram"`
|
||||||
Conns int `json:"conns"`
|
Conns int `json:"conns"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,6 +38,7 @@ var (
|
||||||
|
|
||||||
monitOsCpu atomic.Value
|
monitOsCpu atomic.Value
|
||||||
monitOsRam atomic.Value
|
monitOsRam atomic.Value
|
||||||
|
monitOsTotalRam atomic.Value
|
||||||
monitOsConns atomic.Value
|
monitOsConns atomic.Value
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -78,6 +80,7 @@ func New() fiber.Handler {
|
||||||
|
|
||||||
data.OS.CPU = monitOsCpu.Load().(float64)
|
data.OS.CPU = monitOsCpu.Load().(float64)
|
||||||
data.OS.RAM = monitOsRam.Load().(uint64)
|
data.OS.RAM = monitOsRam.Load().(uint64)
|
||||||
|
data.OS.TotalRAM = monitOsTotalRam.Load().(uint64)
|
||||||
data.OS.Conns = monitOsConns.Load().(int)
|
data.OS.Conns = monitOsConns.Load().(int)
|
||||||
mutex.Unlock()
|
mutex.Unlock()
|
||||||
return c.Status(fiber.StatusOK).JSON(data)
|
return c.Status(fiber.StatusOK).JSON(data)
|
||||||
|
@ -101,6 +104,7 @@ func updateStatistics(p *process.Process) {
|
||||||
|
|
||||||
if osMem, _ := mem.VirtualMemory(); osMem != nil {
|
if osMem, _ := mem.VirtualMemory(); osMem != nil {
|
||||||
monitOsRam.Store(osMem.Used)
|
monitOsRam.Store(osMem.Used)
|
||||||
|
monitOsTotalRam.Store(osMem.Total)
|
||||||
}
|
}
|
||||||
|
|
||||||
pidConns, _ := net.ConnectionsPid("tcp", p.Pid)
|
pidConns, _ := net.ConnectionsPid("tcp", p.Pid)
|
||||||
|
|
Loading…
Reference in New Issue