Merge pull request #846 from Fenny/master

🧹 update monitor
This commit is contained in:
Fenny 2020-09-29 02:32:15 +02:00 committed by GitHub
commit 823fe94659
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 57 deletions

View File

@ -94,20 +94,20 @@ var index = []byte(`<!DOCTYPE html>
<div class="row">
<div class="column">
<div class="metric">Response Time</div>
<h2 id="timeMetric">0ms</h2>
<h2 id="rtimeMetric">0ms</h2>
</div>
<div class="column">
<canvas id="timeChart"></canvas>
<canvas id="rtimeChart"></canvas>
</div>
</div>
<div class="row">
<div class="column">
<div class="metric">Open Connections</div>
<h2 id="reqMetric">0</h2>
<h2 id="connsMetric">0</h2>
</div>
<div class="column">
<canvas id="reqChart"></canvas>
<canvas id="connsChart"></canvas>
</div>
</div>
</section>
@ -126,7 +126,7 @@ var index = []byte(`<!DOCTYPE html>
scales: {
yAxes: [{
ticks: {
beginAtZero: false
beginAtZero: true
}
}],
xAxes: [{
@ -150,20 +150,20 @@ var index = []byte(`<!DOCTYPE html>
const cpuMetric = document.querySelector('#cpuMetric');
const ramMetric = document.querySelector('#ramMetric');
const timeMetric = document.querySelector('#timeMetric');
const reqMetric = document.querySelector('#reqMetric');
const rtimeMetric = document.querySelector('#rtimeMetric');
const connsMetric = document.querySelector('#connsMetric');
const cpuChartCtx = document.querySelector('#cpuChart').getContext('2d');
const ramChartCtx = document.querySelector('#ramChart').getContext('2d');
const timeChartCtx = document.querySelector('#timeChart').getContext('2d');
const reqChartCtx = document.querySelector('#reqChart').getContext('2d');
const rtimeChartCtx = document.querySelector('#rtimeChart').getContext('2d');
const connsChartCtx = document.querySelector('#connsChart').getContext('2d');
const cpuChart = createChart(cpuChartCtx);
const ramChart = createChart(ramChartCtx);
const timeChart = createChart(timeChartCtx);
const reqChart = createChart(reqChartCtx);
const rtimeChart = createChart(rtimeChartCtx);
const connsChart = createChart(connsChartCtx);
const charts = [cpuChart, ramChart, timeChart, reqChart];
const charts = [cpuChart, ramChart, rtimeChart, connsChart];
function createChart(ctx) {
return new Chart(ctx, {
@ -191,21 +191,21 @@ var index = []byte(`<!DOCTYPE html>
function update({
cpu,
ram,
time,
reqs
rtime,
conns
}) {
cpu = cpu.toFixed(2);
ram = (ram / 1e6).toFixed(2);
cpu = cpu.toFixed(1);
ram = (ram / 1e6).toFixed(1);
cpuMetric.innerHTML = cpu + '%';
ramMetric.innerHTML = ram + ' MB';
timeMetric.innerHTML = time + 'ms';
reqMetric.innerHTML = reqs;
rtimeMetric.innerHTML = rtime + 'ms';
connsMetric.innerHTML = conns;
cpuChart.data.datasets[0].data.push(cpu);
ramChart.data.datasets[0].data.push(Math.round(ram));
timeChart.data.datasets[0].data.push(time);
reqChart.data.datasets[0].data.push(reqs);
ramChart.data.datasets[0].data.push(ram);
rtimeChart.data.datasets[0].data.push(rtime);
connsChart.data.datasets[0].data.push(conns);
const timestamp = new Date().getTime();

View File

@ -92,20 +92,20 @@
<div class="row">
<div class="column">
<div class="metric">Response Time</div>
<h2 id="timeMetric">0ms</h2>
<h2 id="rtimeMetric">0ms</h2>
</div>
<div class="column">
<canvas id="timeChart"></canvas>
<canvas id="rtimeChart"></canvas>
</div>
</div>
<div class="row">
<div class="column">
<div class="metric">Open Connections</div>
<h2 id="reqMetric">0</h2>
<h2 id="connsMetric">0</h2>
</div>
<div class="column">
<canvas id="reqChart"></canvas>
<canvas id="connsChart"></canvas>
</div>
</div>
</section>
@ -124,7 +124,7 @@
scales: {
yAxes: [{
ticks: {
beginAtZero: false
beginAtZero: true
}
}],
xAxes: [{
@ -148,20 +148,20 @@
const cpuMetric = document.querySelector('#cpuMetric');
const ramMetric = document.querySelector('#ramMetric');
const timeMetric = document.querySelector('#timeMetric');
const reqMetric = document.querySelector('#reqMetric');
const rtimeMetric = document.querySelector('#rtimeMetric');
const connsMetric = document.querySelector('#connsMetric');
const cpuChartCtx = document.querySelector('#cpuChart').getContext('2d');
const ramChartCtx = document.querySelector('#ramChart').getContext('2d');
const timeChartCtx = document.querySelector('#timeChart').getContext('2d');
const reqChartCtx = document.querySelector('#reqChart').getContext('2d');
const rtimeChartCtx = document.querySelector('#rtimeChart').getContext('2d');
const connsChartCtx = document.querySelector('#connsChart').getContext('2d');
const cpuChart = createChart(cpuChartCtx);
const ramChart = createChart(ramChartCtx);
const timeChart = createChart(timeChartCtx);
const reqChart = createChart(reqChartCtx);
const rtimeChart = createChart(rtimeChartCtx);
const connsChart = createChart(connsChartCtx);
const charts = [cpuChart, ramChart, timeChart, reqChart];
const charts = [cpuChart, ramChart, rtimeChart, connsChart];
function createChart(ctx) {
return new Chart(ctx, {
@ -189,21 +189,21 @@
function update({
cpu,
ram,
time,
reqs
rtime,
conns
}) {
cpu = cpu.toFixed(2);
ram = (ram / 1e6).toFixed(2);
cpu = cpu.toFixed(1);
ram = (ram / 1e6).toFixed(1);
cpuMetric.innerHTML = cpu + '%';
ramMetric.innerHTML = ram + ' MB';
timeMetric.innerHTML = time + 'ms';
reqMetric.innerHTML = reqs;
rtimeMetric.innerHTML = rtime + 'ms';
connsMetric.innerHTML = conns;
cpuChart.data.datasets[0].data.push(cpu);
ramChart.data.datasets[0].data.push(Math.round(ram));
timeChart.data.datasets[0].data.push(time);
reqChart.data.datasets[0].data.push(reqs);
ramChart.data.datasets[0].data.push(ram);
rtimeChart.data.datasets[0].data.push(rtime);
connsChart.data.datasets[0].data.push(conns);
const timestamp = new Date().getTime();

View File

@ -10,22 +10,18 @@ import (
)
type stats struct {
CPU float64 `json:"cpu"`
RAM uint64 `json:"ram"`
Load float64 `json:"load"`
Time int64 `json:"time"`
Reqs uint32 `json:"reqs"`
Cpu float64 `json:"cpu"`
Ram uint64 `json:"ram"`
Rtime int64 `json:"rtime"`
Conns uint32 `json:"conns"`
}
var (
monitorCPU float64
monitorRAM uint64
)
var (
mutex sync.RWMutex
once sync.Once
data = &stats{}
mutex sync.RWMutex
once sync.Once
data = &stats{}
)
// New creates a new middleware handler
@ -50,10 +46,10 @@ func New() fiber.Handler {
return func(c *fiber.Ctx) error {
if c.Get(fiber.HeaderAccept) == fiber.MIMEApplicationJSON {
mutex.Lock()
data.CPU = monitorCPU
data.RAM = monitorRAM
data.Time = (time.Now().UnixNano() - c.Context().Time().UnixNano()) / 1000000
data.Reqs = c.App().Server().GetCurrentConcurrency()
data.Cpu = monitorCPU
data.Ram = monitorRAM
data.Rtime = (time.Now().UnixNano() - c.Context().Time().UnixNano()) / 1000000
data.Conns = c.App().Server().GetCurrentConcurrency()
mutex.Unlock()
return c.Status(fiber.StatusOK).JSON(data)
}