springboot+mybatis+shiro+beetl前端做 服务监控页面

在这里插入图片描述

<%/* Copyright (c) 2013-Now http://jeesite.com All rights reserved. */ %>
<% layout('/layouts/default.html', {title: '服务器监控', libs: ['layout','dataGrid']}){ %>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<div class="content pb0">
    <div class="row">
        <div class="col-sm-6 col-xs-12">
            <div class="box box-widget">
                <div class="box-header">
                    <i class="fa icon-speedometer"></i>
                    <h3 class="box-title">CPU</h3>
                    <div class="box-tools pull-right">
                        <button type="button" class="btn btn-box-tool" data-widget="collapse">
                            <i class="fa fa-minus"></i>
                        </button>
                    </div>
                </div>
                <div class="box-body no-padding">
                    <table class="table table-striped table-hover text-center">
                        <tr>
                            <th width="50%">${text("属性")}</th>
                            <th width="50%">${text("值")}</th>
                        </tr>
                        <tr>
                            <td>${text("核心数")}</td>
                            <td class="rtInfo" data-key="cpu.cpuNum">${server.cpu.cpuNum}</td>
                        </tr>
                        <tr>
                            <td>${text("用户使用率")}</td>
                            <td class="rtInfo" data-key="cpu.used">${server.cpu.used + '%'}</td>
                        </tr>
                        <tr>
                            <td>${text("系统使用率")}</td>
                            <td class="rtInfo" data-key="cpu.sys">${server.cpu.sys + '%'}</td>
                        </tr>
                        <tr>
                            <td>${text("当前空闲率")}</td>
                            <td class="rtInfo" data-key="cpu.free">${server.cpu.free + '%'}</td>
                        </tr>
                    </table>
                </div>
            </div>
        </div>
        <div class="col-sm-6 col-xs-12">
            <div class="box box-widget">
                <div class="box-header">
                    <i class="fa icon-fire"></i>
                    <h3 class="box-title">${text("内存")}</h3>
                    <div class="box-tools pull-right">
                        <button type="button" class="btn btn-box-tool" data-widget="collapse">
                            <i class="fa fa-minus"></i>
                        </button>
                    </div>
                </div>
                <div class="box-body no-padding">
                    <table class="table table-striped table-hover text-center">
                        <tr>
                            <th width="33%">${text("属性")}</th>
                            <th width="33%">${text("内存")}</th>
                            <th width="33%">JVM</th>
                        </tr>
                        <tr>
                            <td>${text("总内存")}</td>
                            <td class="rtInfo" data-key="mem.total">${server.mem.total + 'G'}</td>
                            <td class="rtInfo" data-key="jvm.total">${server.jvm.total + 'M'}</td>
                        </tr>
                        <tr>
                            <td>${text("已用内存")}</td>
                            <td class="rtInfo" data-key="mem.used">${server.mem.used + 'G'}</td>
                            <td class="rtInfo" data-key="jvm.used">${server.jvm.used + 'M'}</td>
                        </tr>
                        <tr>
                            <td>${text("剩余内存")}</td>
                            <td class="rtInfo" data-key="mem.free">${server.mem.free + 'G'}</td>
                            <td class="rtInfo" data-key="jvm.free">${server.jvm.free + 'M'}</td>
                        </tr>
                        <tr>
                            <td>${text("使用率")}</td>
                            <td class="${server.mem.usage > 80 ? 'label-danger' : ''}">${server.mem.usage}%</td>
                            <td class="${server.jvm.usage > 80 ? 'label-danger' : ''}">${server.jvm.usage}%</td>
                        </tr>
                    </table>
                </div>
            </div>
        </div>
        <div class="col-xs-12">
            <div class="box box-widget">
                <div class="box-header">
                    <i class="fa icon-screen-tablet"></i>
                    <h3 class="box-title">${text("服务器信息")}</h3>
                    <div class="box-tools pull-right">
                        <button type="button" class="btn btn-box-tool" data-widget="collapse">
                            <i class="fa fa-minus"></i>
                        </button>
                    </div>
                </div>
                <div class="box-body no-padding table-responsive">
                    <table class="table table-striped table-hover">
                        <tr>
                            <td width="15%">${text("服务器名称")}</td>
                            <td width="30%">${server.sys.computerName}</td>
                            <td width="15%">${text("操作系统")}</td>
                            <td>${server.sys.osName}, ${text("版本")} ${server.jvm.version}</td>
                        </tr>
                        <tr>
                            <td>${text("服务器IP")}</td>
                            <td>${server.sys.computerIp}</td>
                            <td>${text("系统架构")}</td>
                            <td>${server.sys.osArch}</td>
                        </tr>
                    </table>
                </div>
            </div>
        </div>
        <div class="col-xs-12">
            <div class="box box-widget">
                <div class="box-header">
                    <i class="fa icon-cup"></i>
                    <h3 class="box-title">${text("Java虚拟机信息")}</h3>
                    <div class="box-tools pull-right">
                        <button type="button" class="btn btn-box-tool" data-widget="collapse">
                            <i class="fa fa-minus"></i>
                        </button>
                    </div>
                </div>
                <div class="box-body no-padding table-responsive">
                    <table class="table table-striped table-hover">
                        <tr>
                            <td width="15%">${text("Java名称")}</td>
                            <td width="30%">${server.jvm.name}</td>
                            <td width="15%">${text("Java版本")}</td>
                            <td>${server.jvm.version}, ${text("供应商")} 0000000</td>
                        </tr>
                        <tr>
                            <td>${text("启动时间")}</td>
                            <td>${server.jvm.startTime}</td>
                            <td>${text("运行时长")}</td>
                            <td>${server.jvm.runTime}</td>
                        </tr>
                        <tr>
                            <td>${text("安装路径")}</td>
                            <td colspan="3">${server.jvm.home}</td>
                        </tr>
                        <tr>
                            <td colspan="1">项目路径</td>
                            <td colspan="3">${server.sys.userDir}</td>
                        </tr>
                    </table>
                </div>
                <div class="col-xs-12">
                    <div class="box box-widget">
                        <div class="box-header">
                            <i class="fa icon-drawer"></i>
                            <h3 class="box-title">${text("磁盘状态")}</h3>
                            <div class="box-tools pull-right">
                                <button type="button" class="btn btn-box-tool" data-widget="collapse">
                                    <i class="fa fa-minus"></i>
                                </button>
                            </div>
                        </div>
                        <div class="box-body no-padding table-responsive">
                            <table class="table table-striped table-hover text-center">
                                <tr>
                                    <th>${text("盘符路径")}</th>
                                    <th>${text("文件系统")}</th>
                                    <th>${text("盘符类型")}</th>
                                    <th>${text("总大小")}</th>
                                    <th>${text("可用大小")}</th>
                                    <th>${text("已用大小")}</th>
                                    <th>${text("已用百分比")}</th>
                                </tr>
                                <%
                                for(sysFile in server.sysFiles){
                                %>
                                <tr>
                                    <td>${sysFile.dirName}</td>
                                    <td>${sysFile.sysTypeName}</td>
                                    <td>${sysFile.typeName}</td>
                                    <td>${sysFile.total}</td>
                                    <td>${sysFile.free}</td>
                                    <td>${sysFile.used}</td>
                                    <td class="${sysFile.usage > 80 ? 'label-danger' : ''}">${sysFile.usage}%</td>
                                </tr>
                                <%}%>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<% } %>
<script>
    var rtInfoRefresh = function(){
        $.get('${ctx}/state/server/rtInfo?__notUpdateSession=true&__t='
            +new Date().getTime(), function(data){
            $('.rtInfo').each(function(){
                var key = $(this).data('key');
                var val = js.val(data, key);
                if (js.endWith(val, '%')){
                    var i = parseInt(val.replace('%', ''));
                    if (i <= 80){
                        val = '<font color="green">' + val + '</font>';
                    }else{
                        val = '<font color="red">' + val + '</font>';
                    }
                }
                $(this).html(val);
            });
        });
    }
    rtInfoRefresh();
    setInterval(rtInfoRefresh, 3*1000);
    // 执行垃圾回收
    $('#btnGC').click(function(){
        js.ajaxSubmit("${ctx}/state/server/gc", function(data){
            js.showMessage(data.message);
        });
    });
</script>

@Controller
@RequestMapping("/monitor/server")
public class ServerController extends BaseController
{
    private String prefix = "monitor/server";
    @RequiresPermissions("monitor:server:view")
    @GetMapping()
    public String server(ModelMap mmap) throws Exception{
        Server server = new Server();
        server.copyTo();
        mmap.put("server", server);
        return prefix + "/server.html";
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值