Browse Source

前端目录修改

demon 8 years ago
parent
commit
f4589fb56e

+ 0 - 176
src/main/java/com/yihu/hos/monitor/service/ServerMonitorService.java

@ -2,21 +2,14 @@ package com.yihu.hos.monitor.service;
import com.mongodb.*;
import com.yihu.hos.core.datatype.DateUtil;
import com.yihu.hos.core.datatype.NumberUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.monitor.model.BusinessLog;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.Result;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
/**
 * Created by chenweida on 2016/1/27.
 */
@ -133,174 +126,5 @@ public class ServerMonitorService {
        return result;
    }
    public Result bandwidth(String beginTime, String endTime) {
        DBCollection businessLog = mongoOperations.getCollection(mongoOperations
                .getCollectionName(BusinessLog.class));
        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
                new BasicDBObject[]{
                        new BasicDBObject().append("fireTime",
                                new BasicDBObject().append(QueryOperators.GTE, DateUtil.toTimestamp(beginTime))),
                        new BasicDBObject().append("fireTime",
                                new BasicDBObject().append(QueryOperators.LT, DateUtil.toTimestamp(endTime)))});
        DBObject match = new BasicDBObject("$match", queryObject);
        // Now the $group operation
        DBObject groupFields = new BasicDBObject( "_id", "$breadcrumbId");
        groupFields.put("count", new BasicDBObject( "$sum", 1));
        groupFields.put("beginTime", new BasicDBObject( "$first", "$fireTimeSource"));
        groupFields.put("endTime", new BasicDBObject( "$last", "$fireTimeSource"));
        DBObject group = new BasicDBObject("$group", groupFields);
        // build the $sort operation
        DBObject sortFields =  new BasicDBObject( "_id", 1);
        DBObject sort = new BasicDBObject("$sort", sortFields );
        // run aggregation
        AggregationOutput output = businessLog.aggregate(match, group, sort);
        Integer calls = 0;
        long interval = 0;
        for (DBObject dbObject : output.results()) {
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            if (count >= 2) {
                calls++;
                String begin = StringUtil.toString(dbObject.get("beginTime"));
                String end = StringUtil.toString(dbObject.get("endTime"));
                Date from = DateUtil.toTimestamp(begin, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
                Date to = DateUtil.toTimestamp(end, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
                interval += (to.getTime() - from.getTime())/1000;
            }
        }
        JSONObject result = new JSONObject();
        result.put("bandwidth", NumberUtil.divideBigDecimal(BigDecimal.valueOf(calls), BigDecimal.valueOf(interval)));
        return Result.success(result.toString());
    }
    public Result qps(String beginTime, String endTime) {
        DBCollection businessLog = mongoOperations.getCollection(mongoOperations
                .getCollectionName(BusinessLog.class));
        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
                new BasicDBObject[]{
                        new BasicDBObject().append("fireTime",
                                new BasicDBObject().append(QueryOperators.GTE, DateUtil.toTimestamp(beginTime))),
                        new BasicDBObject().append("fireTime",
                                new BasicDBObject().append(QueryOperators.LT, DateUtil.toTimestamp(endTime)))});
        DBObject match = new BasicDBObject("$match", queryObject);
        // Now the $group operation
        DBObject groupFields = new BasicDBObject( "_id", "$breadcrumbId");
        groupFields.put("count", new BasicDBObject( "$sum", 1));
        groupFields.put("total", new BasicDBObject( "$first", "$totalServers"));
        groupFields.put("beginTime", new BasicDBObject( "$first", "$fireTimeSource"));
        groupFields.put("endTime", new BasicDBObject( "$last", "$fireTimeSource"));
        DBObject group = new BasicDBObject("$group", groupFields);
        // build the $sort operation
        DBObject sortFields =  new BasicDBObject( "_id", 1);
        DBObject sort = new BasicDBObject("$sort", sortFields );
        // run aggregation
        AggregationOutput output = businessLog.aggregate(match, group, sort);
        Integer calls = 0;
        long interval = 0;
        for (DBObject dbObject : output.results()) {
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            if (count >= 2) {
                Integer total = Integer.parseInt(StringUtil.toString(dbObject.get("total")));
                if (total == count) {
                    calls++;
                    String begin = StringUtil.toString(dbObject.get("beginTime"));
                    String end = StringUtil.toString(dbObject.get("endTime"));
                    Date from = DateUtil.toTimestamp(begin, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
                    Date to = DateUtil.toTimestamp(end, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
                    interval += (to.getTime() - from.getTime())/1000;
                }
            }
        }
        JSONObject result = new JSONObject();
        result.put("qps", NumberUtil.divideBigDecimal(BigDecimal.valueOf(calls), BigDecimal.valueOf(interval)));
        return Result.success(result.toString());
    }
    public Result usage(String beginTime, String endTime) {
        DBCollection businessLog = mongoOperations.getCollection(mongoOperations
                .getCollectionName(BusinessLog.class));
        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
                new BasicDBObject[]{
                        new BasicDBObject().append("fireTime",
                                new BasicDBObject().append(QueryOperators.GTE, DateUtil.toTimestamp(beginTime))),
                        new BasicDBObject().append("fireTime",
                                new BasicDBObject().append(QueryOperators.LT, DateUtil.toTimestamp(endTime)))});
        DBObject match = new BasicDBObject("$match", queryObject);
        // Now the $group operation
        DBObject groupFields = new BasicDBObject( "_id", "$breadcrumbId");
        groupFields.put("count", new BasicDBObject( "$sum", 1));
        groupFields.put("total", new BasicDBObject( "$first", "$totalServers"));
        DBObject group = new BasicDBObject("$group", groupFields);
        // build the $sort operation
        DBObject sortFields =  new BasicDBObject( "_id", 1);
        DBObject sort = new BasicDBObject("$sort", sortFields );
        // run aggregation
        AggregationOutput output = businessLog.aggregate(match, group, sort);
        Integer successCount = 0;
        Integer failureCount = 0;
        for (DBObject dbObject : output.results()) {
            Integer total = Integer.parseInt(StringUtil.toString(dbObject.get("total")));
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            if (total == count) {
                successCount++;
            } else {
                failureCount++;
            }
        }
        JSONObject result = new JSONObject();
        result.put("totalCount", successCount + failureCount);
        result.put("successCount", successCount);
        result.put("failureCount", failureCount);
        return Result.success(result.toString());
    }
    public Result delay(String beginTime, String endTime) {
        DBCollection businessLog = mongoOperations.getCollection(mongoOperations
                .getCollectionName(BusinessLog.class));
        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
                new BasicDBObject[]{
                        new BasicDBObject().append("fireTime",
                                new BasicDBObject().append(QueryOperators.GTE, DateUtil.toTimestamp(beginTime))),
                        new BasicDBObject().append("fireTime",
                                new BasicDBObject().append(QueryOperators.LT, DateUtil.toTimestamp(endTime)))});
        DBObject match = new BasicDBObject("$match", queryObject);
        // Now the $group operation
        DBObject groupFields = new BasicDBObject( "_id", "$breadcrumbId");
        groupFields.put("count", new BasicDBObject( "$sum", 1));
        groupFields.put("beginTime", new BasicDBObject( "$first", "$fireTimeSource"));
        groupFields.put("endTime", new BasicDBObject( "$last", "$fireTimeSource"));
        DBObject group = new BasicDBObject("$group", groupFields);
        // build the $sort operation
        DBObject sortFields =  new BasicDBObject( "_id", 1);
        DBObject sort = new BasicDBObject("$sort", sortFields );
        // run aggregation
        AggregationOutput output = businessLog.aggregate(match, group, sort);
        Integer calls = 0;
        long interval = 0;
        for (DBObject dbObject : output.results()) {
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            if (count >= 2) {
                calls++;
                String begin = StringUtil.toString(dbObject.get("beginTime"));
                String end = StringUtil.toString(dbObject.get("endTime"));
                Date from = DateUtil.toTimestamp(begin, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
                Date to = DateUtil.toTimestamp(end, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
                interval += (to.getTime() - from.getTime())/1000;
            }
        }
        JSONObject result = new JSONObject();
        result.put("delay", NumberUtil.divideBigDecimal(BigDecimal.valueOf(interval), BigDecimal.valueOf(calls)));
        return Result.success(result.toString());
    }
}

+ 139 - 0
src/main/webapp/WEB-INF/ehr/jsp/monitor/server/monitor.jsp

@ -0,0 +1,139 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<head>
	<meta charset="utf-8">
	<title>服务器健康监控</title>
	<%@include file="/WEB-INF/ehr/commons/jsp/commonHead.jsp" %>
	<script>
		//加载js模块组件
		//        seajs.use(['jquery','i18n','app/monitor/monitor'], function ($,i18n, Monitor) {
		//        });
	</script>
</head>
<body>
<!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
</body>
<script type="text/javascript">
//	// 基于准备好的dom,初始化echarts实例
//	var myChart = echarts.init(document.getElementById('main'));
//
//	// 指定图表的配置项和数据
//	var option = {
//		title: {
//			text: 'Echarts Test',
//			left: 'center'
//		},
//		tooltip: {
//			trigger: 'item',
//			formatter: '{a} <br/>{b} : {c}'
//		},
//		legend: {
//			left: 'left',
//			data: ['2的指数', '3的指数']
//		},
//		xAxis: {
//			type: 'category',
//			name: 'x',
//			splitLine: {show: false},
//			data: ['一', '二', '三', '四', '五', '六', '七', '八', '九']
//		},
//		grid: {
//			left: '3%',
//			right: '4%',
//			bottom: '3%',
//			containLabel: true
//		},
//		yAxis: {
//			type: 'log',
//			name: 'y'
//		},
//		series: [
//			{
//				name: 'value',
//				type: 'line',
//				data: [1, 3, 9, 27, 33, 44, 32, 44, 55]
//			}
//		]
//	};
	//动态时间轴+数据
//	function randomData() {
//		now = new Date(+now + oneDay);
//		value = value + Math.random() * 21 - 10;
//		return {
//			name: now.toString(),
//			value: [
//				[now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'),
//				Math.round(value)
//			]
//		}
//	}
//
//	var data = [];
//	var now = +new Date(1997, 9, 3);
//	var oneDay = 24 * 3600 * 1000;
//	var value = Math.random() * 1000;
//	for (var i = 0; i < 1000; i++) {
//		data.push(randomData());
//	}
//
//	var option = {
//		title: {
//			text: '动态数据 + 时间坐标轴'
//		},
//		tooltip: {
//			trigger: 'axis',
//			formatter: function (params) {
//				params = params[0];
//				var date = new Date(params.name);
//				return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];
//			},
//			axisPointer: {
//				animation: false
//			}
//		},
//		xAxis: {
//			type: 'time',
//			splitLine: {
//				show: false
//			}
//		},
//		yAxis: {
//			type: 'value',
//			boundaryGap: [0, '100%'],
//			splitLine: {
//				show: false
//			}
//		},
//		series: [{
//			name: '模拟数据',
//			type: 'line',
//			showSymbol: false,
//			hoverAnimation: false,
//			data: data
//		}]
//	};
//
//	 setInterval(function () {
//
//		for (var i = 0; i < 5; i++) {
//			data.shift();
//			data.push(randomData());
//		}
//
//		myChart.setOption({
//			series: [{
//				data: data
//			}]
//		});
//	}, 1000);
	// 使用刚指定的配置项和数据显示图表。
//	myChart.setOption(option);
</script>

src/main/webapp/WEB-INF/ehr/jsp/server/monitorJs.jsp → src/main/webapp/WEB-INF/ehr/jsp/monitor/server/monitorJs.jsp


+ 101 - 0
src/main/webapp/WEB-INF/ehr/jsp/monitor/server/sEnvManage.jsp

@ -0,0 +1,101 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<style>
    .c-item{float:left;height: 30px;line-height: 30px;width: 150px;background: #fff;color:#000;text-align: center;font-size: 12px;border:1px solid #dcdcdc;}
    .c-bor-r{border-right: 0;}
    .c-item.active{background: #16B3EE;color:#fff}
    .ml50{margin-left: 50px;}
    .mt20{margin-top: 20px;}
    .mb20{margin-bottom: 20px;}
    .f-dis-inline{display: inline-block;}
    .f-fs12{font-size: 12px;}
    .f-fs14{font-size: 14px;}
    .c-fwb{font-weight: bold;}
    .div-item{width:50%;float: left;}
    .c-item{font-size: 12px;display: inline-block;width: 100px;}
    .c-content{font-size: 16px;display: inline-block;width: 100px;font-weight: bold;}
    .div-right-item{font-size: 12px;width: 150px;}
</style>
<!-- ####### 页面部分 ####### -->
<div id="div_wrapper">
    <!--左边 区域-->
    <div position="left"  style="margin-left:10px;margin-top:10px;">
        <div class="m-form-control" style="margin-bottom: 15px">
            <input type="text" id="div_wrapper_left_inp_search" placeholder="请输入服务器名"/>
        </div>
        <ul id="div_wrapper_left_ul_resourcetree" class="m-snav"></ul>
    </div>
    <div position="center" style="margin-left:10px;margin-top:10px;margin-right:10px;">
        <!-- ####### 查询条件部分 ####### -->
        <div class="m-form-inline" data-role-form>
            <div class="m-form-group">
                <label style="width: 100px;">开始时间:</label>
                <div class="m-form-control">
                    <input id="repeatStartTime" type="text" />
                </div>
                <label style="width: 100px;">结束时间:</label>
                <div class="m-form-control">
                    <input id="repeatEndTime" type="text" />
                </div>
                <div class="m-form-control">
                    <div id="btnSearch" class="l-button">
                        <span>搜索</span>
                    </div>
                </div>
            </div>
        <%-- 选显卡部分--%>
        <div style="margin-bottom: 10px;height: 30px;" class="div-menu">
            <div class="c-item c-bor-r active" data-item="cpu">CPU</div>
            <div class="c-item c-bor-r" data-item="memory">内存</div>
            <div class="c-item c-bor-r" data-item="files">磁盘</div>
            <div class="c-item" data-item="net">网络</div>
        </div>
            <%-- echarts 数据--%>
        <div id="main" style="width: 600px;height:400px;border: solid deepskyblue 1px;"></div>
            <%-- 详细数据 --%>
            <div class="ml50 mt20">
                <div class="div-item">
                    <div>
                        <div class="c-item">利用率</div>
                        <div class="c-item">速度</div>
                    </div>
                    <div class="mb20">
                        <div class="c-content">53%</div>
                        <div class="c-content">2.18GHZ</div>
                    </div>
                    <div>
                        <div class="c-item">进程</div>
                        <div class="c-item">线程</div>
                        <div class="c-item">句柄</div>
                    </div>
                    <div class="mb20">
                        <div class="c-content">107</div>
                        <div class="c-content">1720</div>
                        <div class="c-content">59868</div>
                    </div>
                    <div class="f-dis-inline f-fs12">正常运行时间</div>
                    <div class="mb20">
                        <div class="c-content">11:19:15:40</div>
                    </div>
                </div>
                <div class="div-item">
                    <div class="div-right-item">最大速度:<span class="f-fs14 c-fwb">2.19GHZ</span></div>
                    <div class="div-right-item">插槽:<span class="f-fs14 c-fwb">1</span></div>
                    <div class="div-right-item">内核:<span class="f-fs14 c-fwb">2</span></div>
                    <div class="div-right-item">编辑处理器:<span class="f-fs14 c-fwb">4</span></div>
                    <div class="div-right-item">虚拟化:<span class="f-fs14 c-fwb">已启用</span></div>
                    <div class="div-right-item">L1缓存:<span class="f-fs14 c-fwb">121KB</span></div>
                    <div class="div-right-item">L2缓存:<span class="f-fs14 c-fwb">512KB</span></div>
                    <div class="div-right-item">L3缓存:<span class="f-fs14 c-fwb">3.0MB</span></div>
                </div>
            </div>
        </div>
    </div>
</div>

src/main/webapp/WEB-INF/ehr/jsp/server/sEnvManageJs.jsp → src/main/webapp/WEB-INF/ehr/jsp/monitor/server/sEnvManageJs.jsp


+ 0 - 103
src/main/webapp/WEB-INF/ehr/jsp/server/sEnvManage.jsp

@ -1,103 +0,0 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<style>
    .c-item{float:left;height: 30px;line-height: 30px;width: 150px;background: #fff;color:#000;text-align: center;font-size: 12px;border:1px solid #dcdcdc;}
    .c-bor-r{border-right: 0;}
    .c-item.active{background: #16B3EE;color:#fff}
    .div-inline{ float:left;width:49%;}
    ul{ display:inline}
</style>
<!-- ####### 页面部分 ####### -->
<div id="div_wrapper">
    <!--左边 区域-->
    <div position="left"  style="margin-left:10px;margin-top:10px;">
        <div class="m-form-control" style="margin-bottom: 15px">
            <input type="text" id="div_wrapper_left_inp_search" placeholder="请输入服务器名"/>
        </div>
        <ul id="div_wrapper_left_ul_resourcetree" class="m-snav"></ul>
    </div>
    <div position="center" style="margin-left:10px;margin-top:10px;margin-right:10px;">
        <!-- ####### 查询条件部分 ####### -->
        <div class="m-form-inline" data-role-form>
            <div class="m-form-group">
                <label style="width: 100px;">开始时间:</label>
                <div class="m-form-control">
                    <input id="repeatStartTime" type="text" />
                </div>
                <label style="width: 100px;">结束时间:</label>
                <div class="m-form-control">
                    <input id="repeatEndTime" type="text" />
                </div>
                <div class="m-form-control">
                    <div id="btnSearch" class="l-button">
                        <span>搜索</span>
                    </div>
                </div>
            </div>
        <%-- 选显卡部分--%>
        <div style="margin-bottom: 10px;height: 30px;" class="div-menu">
            <div class="c-item c-bor-r active" data-item="cpu">CPU</div>
            <div class="c-item c-bor-r" data-item="memory">内存</div>
            <div class="c-item c-bor-r" data-item="files">磁盘</div>
            <div class="c-item" data-item="net">网络</div>
        </div>
            <%-- echarts 数据--%>
        <div id="main" style="width: 600px;height:400px;border: solid deepskyblue 1px;"></div>
            <%-- 详细数据 --%>
            <div id="info" style="width: 600px;height:300px;border: solid red 1px;">
                <div class="div-inline"  style="margin-left:10px;margin-top:10px;display:inline;width: 50%;height:300px;border: solid palevioletred 1px;">
                    <table style="border-collapse:separate; border-spacing:0px 10px;" border="1" width="100%">
                        <tr>
                            <td align="center">利用率</td>
                            <td align="center">速度</td>
                        </tr>
                        <tr>
                            <td align="center">53%/td>
                            <td align="center">$241.10</td>
                        </tr>
                        <tr>
                            <td align="center">进程</td>
                            <td align="center">线程</td>
                            <td align="center">句柄</td>
                        </tr>
                        <tr>
                            <td align="center">食物</td>
                            <td align="center">$730.40</td>
                            <td align="center">$650.00</td>
                        </tr>
                        <tr>
                            <td colspan="3" align="left">正常运行时间</td>
                        </tr>
                        <tr>
                            <td colspan="3"  align="left">$650.00</td>
                        </tr>
                    </table>
                </div>
                <div class="div-inline"  style="margin-left:10px;margin-top:10px;margin-right:10px;display:inline;width: 40%;height:300px;border: solid mediumblue 1px;">
                    <ul>
                        <li>最大速度</li>
                        <li>插槽</li>
                        <li>内核</li>
                        <li>逻辑处理器</li>
                        <li>虚拟化</li>
                        <li>缓存</li>
                    </ul>
                    <ul>
                        <li>最大速度</li>
                        <li>插槽</li>
                        <li>内核</li>
                        <li>逻辑处理器</li>
                        <li>虚拟化</li>
                        <li>缓存</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>