A web application allowing people to create an account, configure a profile, and share a list of URLs on that profile.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

140 lines
7.0 KiB

extends ../layouts/main
block content
- var latestReport = stats[stats.length - 1];
mixin renderCpuStatsGraph (cpu)
- var totalTime = cpu.user + cpu.nice + cpu.sys + cpu.idle + cpu.irq
.no-select
canvas(width="320", height="100", class= {
'cpu-overload': ((cpu.idle / totalTime) < 0.1),
}).dtp-cpu-graph
.dtp-stats-bar
.dtp-cpu-stat-bar.dtp-cpu-user(style=`width: ${(cpu.user / totalTime) * 100}%;`)= numeral(cpu.user / totalTime).format('0%')
.dtp-cpu-stat-bar.dtp-cpu-nice(style=`width: ${(cpu.nice / totalTime) * 100}%;`)= numeral(cpu.nice / totalTime).format('0%')
.dtp-cpu-stat-bar.dtp-cpu-sys(style=`width: ${(cpu.sys / totalTime) * 100}%;`)= numeral(cpu.sys / totalTime).format('0%')
.dtp-cpu-stat-bar.dtp-cpu-irq(style=`width: ${(cpu.irq / totalTime) * 100}%;`)= numeral(cpu.irq / totalTime).format('0%')
.dtp-cpu-stat-bar.dtp-cpu-idle(style=`width: ${(cpu.idle / totalTime) * 100}%;`)= numeral(cpu.idle / totalTime).format('0%')
mixin renderStatCell (label, value)
.dtp-stat-cell.uk-width-auto
.uk-text-bold= value
.uk-text-small= label
.uk-margin
.uk-overflow-auto
table.uk-table.uk-table-small.uk-table-divider
thead
th Host
th Status
th Memory
th Disk
th Platform
th Arch
th Created
th Updated
tbody
tr
td
a(href=`/admin/host/${host._id}`)= host.hostname
td= host.status
td= numeral((host.totalmem - host.freemem) / host.totalmem).format('0.00%')
td= numeral(latestReport.disk.cache.pctUsed / 100.0).format('0.00%')
td= host.platform
td= host.arch
td= moment(host.created).fromNow()
td= host.updated ? moment(host.updated).fromNow() : 'N/A'
.dtp-dashboard-cluster.uk-margin
fieldset
legend [Processor]
div(uk-grid).uk-grid-small.uk-flex-between
each cpu in latestReport.cpus
div(class="uk-width-1-1 uk-width-auto@m")
+renderCpuStatsGraph(cpu)
.dtp-dashboard-cluster.uk-margin
div(uk-grid).uk-flex-between
div(class="uk-width-1-1 uk-width-auto@m")
fieldset
legend [Core Memory]
.dtp-stats-bar
.dtp-mem-stat-bar.dtp-mem-used(style=`width: ${(latestReport.memory.active / latestReport.memory.total) * 100}%;`)= numeral(latestReport.memory.active / latestReport.memory.total).format('0%')
.dtp-mem-stat-bar.dtp-mem-available(style=`width: ${(latestReport.memory.available / latestReport.memory.total) * 100}%;`)= numeral(latestReport.memory.available / latestReport.memory.total).format('0%')
.uk-margin-small-top
div(uk-grid)
+renderStatCell('total', numeral(latestReport.memory.total).format('0,0.0 b'))
+renderStatCell('avail.', numeral(latestReport.memory.available).format('0,0.0 b'))
+renderStatCell('active', numeral(latestReport.memory.active).format('0,0.0 b'))
+renderStatCell('used', numeral(latestReport.memory.used).format('0,0.0 b'))
+renderStatCell('free', numeral(latestReport.memory.free).format('0,0.0 b'))
div(class="uk-width-1-1 uk-width-auto@m")
fieldset
legend [Buffers]
.dtp-stats-bar
.dtp-mem-stat-bar.dtp-mem-cached(style=`width: ${(latestReport.memory.cached / latestReport.memory.buffcache) * 100}%;`)= numeral(latestReport.memory.cached / latestReport.memory.buffcache).format('0%')
.dtp-mem-stat-bar.dtp-mem-buffers(style=`width: ${(latestReport.memory.buffers / latestReport.memory.buffcache) * 100}%;`)= numeral(latestReport.memory.buffers / latestReport.memory.buffcache).format('0%')
.dtp-mem-stat-bar.dtp-mem-slab(style=`width: ${(latestReport.memory.slab / latestReport.memory.buffcache) * 100}%;`)= numeral(latestReport.memory.slab / latestReport.memory.buffcache).format('0%')
.uk-margin-small-top
div(uk-grid)
+renderStatCell('buffers', numeral(latestReport.memory.buffers).format('0,0.0 b'))
+renderStatCell('cached', numeral(latestReport.memory.cached).format('0,0.0 b'))
+renderStatCell('slab', numeral(latestReport.memory.slab).format('0,0.0 b'))
+renderStatCell('buffcache', numeral(latestReport.memory.buffcache).format('0,0.0 b'))
div(class="uk-width-1-1 uk-width-auto@m")
fieldset
legend [Swap]
.dtp-stats-bar
.dtp-mem-stat-bar.dtp-mem-used(style=`width: ${(latestReport.memory.swapused / latestReport.memory.swaptotal) * 100}%;`)= numeral(latestReport.memory.swapused / latestReport.memory.swaptotal).format('0%')
.dtp-mem-stat-bar.dtp-mem-available(style=`width: ${(latestReport.memory.swapfree / latestReport.memory.swaptotal) * 100}%;`)= numeral(latestReport.memory.swapfree / latestReport.memory.swaptotal).format('0%')
.uk-margin-small-top
div(uk-grid)
+renderStatCell('used', numeral(latestReport.memory.swapused).format('0,0.0 b'))
+renderStatCell('free', numeral(latestReport.memory.swapfree).format('0,0.0 b'))
+renderStatCell('total', numeral(latestReport.memory.swaptotal).format('0,0.0 b'))
div(class="uk-width-1-1 uk-width-auto@m")
fieldset
legend [Load Avg]
div(uk-grid)
+renderStatCell('1 min', latestReport.load[0])
+renderStatCell('5 min', latestReport.load[1])
+renderStatCell('15 min', latestReport.load[2])
.dtp-dashboard-cluster.uk-margin
fieldset
legend [Host Cache]
div(uk-grid).uk-flex-between
+renderStatCell('objects', numeral(latestReport.cache.itemCount).format('0,0'))
+renderStatCell('data size', numeral(latestReport.cache.dataSize).format('0,0.00b'))
+renderStatCell('expire count', numeral(latestReport.cache.expireCount).format('0,0'))
+renderStatCell('expire size', numeral(latestReport.cache.expireDataSize).format('0,0.00b'))
+renderStatCell('hits', numeral(latestReport.cache.hitCount).format('0,0'))
+renderStatCell('hit size', numeral(latestReport.cache.hitDataSize).format('0,0.00b'))
+renderStatCell('misses', numeral(latestReport.cache.missCount).format('0,0'))
+renderStatCell('miss size', numeral(latestReport.cache.missDataSize).format('0,0.00b'))
.dtp-dashboard-cluster.uk-margin
div(uk-grid).uk-grid-small
each iface in latestReport.network
div(class="uk-width-1-1 uk-width-auto@m")
fieldset
legend= `[${iface.iface}]`
canvas(data-iface= iface.iface, width="300", height="100").dtp-iface-graph
block viewjs
script(src="/chart.js/chart.min.js")
script.
const dtp = window.dtp = window.dtp || { };
dtp.hostStats = !{JSON.stringify(stats)};
window.addEventListener('dtp-load-admin', ( ) => {
dtp.adminApp.prepareGraphData();
dtp.adminApp.renderCpuGraphs();
dtp.adminApp.renderNetworkGraphs();
});