mirror of
https://github.com/HackPlan/RootPanel.git
synced 2026-01-12 22:27:09 +08:00
121 lines
4.0 KiB
Plaintext
121 lines
4.0 KiB
Plaintext
extends ../../../core/view/layout
|
|
|
|
prepend header
|
|
title #{t('server_monitor')} | #{t(config.web.t_name)}
|
|
|
|
append header
|
|
link(rel='stylesheet', href='/plugin/linux/style/monitor.css')
|
|
|
|
block content
|
|
#content.container
|
|
.row
|
|
.col-md-4
|
|
.panel.panel-default
|
|
.panel-heading
|
|
h3.panel-title System
|
|
table.table
|
|
tbody
|
|
tr
|
|
td Hostname
|
|
td= system.hostname
|
|
tr
|
|
td System
|
|
td= system.system
|
|
tr
|
|
td CPU
|
|
td= system.cpu
|
|
tr
|
|
td Time
|
|
td= system.time
|
|
tr
|
|
td Uptime
|
|
td #{(system.uptime / 3600).toFixed(1)} hours
|
|
tr
|
|
td Loadavg
|
|
td= system.loadavg.join(', ')
|
|
tr
|
|
td Address
|
|
td= system.address.join(', ')
|
|
|
|
.col-md-8
|
|
.panel.panel-default
|
|
.panel-heading
|
|
h3.panel-title Memory & Storage
|
|
.panel-body
|
|
p Memory
|
|
.progress.multi-progress
|
|
.progress-bar.progress-bar-danger(role='progressbar', style='width: #{memory.used_per}%;')
|
|
span(title= '#{memory.used}M') #{memory.used_per}%
|
|
.progress-bar.progress-bar-info(role='progressbar', style='width: #{memory.cached_per}%;')
|
|
span(title= '#{memory.cached}M') #{memory.cached_per}%
|
|
.progress-bar.progress-bar-success(role='progressbar', style='width: #{memory.buffers_per}%;')
|
|
span(title= '#{memory.buffers}M') #{memory.buffers_per}%
|
|
.progress-bar.blank(role='progressbar', style='width: #{memory.free_per}%;')
|
|
span(title= '#{memory.free}M') #{memory.free_per}%
|
|
p SWAP
|
|
.progress.multi-progress
|
|
.progress-bar.progress-bar-warning(role='progressbar', style='width: #{memory.swap_used_per}%;')
|
|
span(title= '#{memory.swap_used_per}M') #{memory.swap_used_per}%
|
|
.progress-bar.blank(role='progressbar', style='width: #{memory.swap_free_per}%;')
|
|
span(title= '#{memory.swap_free}M') #{memory.swap_free_per}%
|
|
p Storage
|
|
.progress.multi-progress
|
|
.progress-bar.progress-bar-warning(role='progressbar', style='width: #{storage.used_per}%;')
|
|
span(title= '#{storage.used}G') #{storage.used_per}%
|
|
.progress-bar.blank(role='progressbar', style='width: #{storage.free_per}%;')
|
|
span(title= '#{storage.free}G') #{storage.free_per}%
|
|
|
|
.row
|
|
.panel.panel-default
|
|
.panel-heading
|
|
h3.panel-title Users
|
|
table.table.table-hover
|
|
thead
|
|
tr
|
|
th User
|
|
th Process
|
|
th CPU 1 Hour
|
|
th Memory 1 Hour
|
|
th Storage
|
|
tbody
|
|
for item in resources_usage
|
|
tr
|
|
td= item.username
|
|
td= item.process
|
|
td #{item.cpu}s
|
|
td #{item.memory.toFixed(1)}M
|
|
td #{(item.storage / 1024).toFixed(1)}M
|
|
|
|
.row
|
|
.panel.panel-default.process-list
|
|
.panel-heading
|
|
h3.panel-title Process
|
|
table.table.table-hover
|
|
thead
|
|
tr
|
|
th USER
|
|
th PID
|
|
th %CPU
|
|
th %MEM
|
|
th VSZ
|
|
th RSS
|
|
th TTY
|
|
th STAT
|
|
th START
|
|
th TIME
|
|
th COMMAND
|
|
tbody
|
|
for process in process_list
|
|
tr
|
|
td= process.user
|
|
td= process.pid
|
|
td= process.cpu_per
|
|
td= process.mem_per
|
|
td= process.vsz
|
|
td= process.rss
|
|
td= process.tty
|
|
td= process.stat
|
|
td= process.start
|
|
td= process.time
|
|
td!= _.escape(process.command).replace(/ /g, ' ')
|