Browse Source

修改bug

chenweida 6 years ago
parent
commit
f5bac5ef24

+ 31 - 5
admin/admin-server-starter/src/main/java/com/yihu/admin/server/log/LogEndPoint.java

@ -70,7 +70,8 @@ public class LogEndPoint {
            @RequestParam(value = "time", required = false) Integer time,  // GET POST DELETE PUT
            @RequestParam(value = "eventname", required = false) String eventname,
            @RequestParam(value = "method", required = false) String method,
            @RequestParam(value = "uri", required = false) String uri
            @RequestParam(value = "uri", required = false) String uri,
            @RequestParam(value = "sort", required = false) String sort
    ) {
        if (!StringUtils.isEmpty(spanname)) {
            spanname = spanname.toLowerCase();
@ -79,7 +80,7 @@ public class LogEndPoint {
        StringBuffer sql = new StringBuffer("SELECT * FROM " + adminServerProperties.getDefaultIndexName());
        StringBuffer whereSQL = initWhere(traceId, spanname, eventname, time, uri, method);
        StringBuffer groupBY = new StringBuffer("order by eventstarttime desc");
        StringBuffer groupBY = new StringBuffer("order by eventstarttime "+sort);
        String finalSQL = sql.append(whereSQL).append(groupBY).toString();
@ -177,8 +178,8 @@ public class LogEndPoint {
        return whereSQL;
    }
    @GetMapping("spanNamelist")
    public List<QuotaModel> spanNamelist(
    @GetMapping("spanNameHttplist")
    public List<QuotaModel> spanNameHttplist(
            @RequestParam(value = "spanname", required = true) String spanname) {
        spanname = spanname.toLowerCase();
        List<QuotaModel> logs = new ArrayList<>();
@ -198,11 +199,36 @@ public class LogEndPoint {
                    quotaModel.setAvgtime(Double.valueOf(one.get("avgtime").toString()));
                    quotaModel.setMaxtime(Double.valueOf(one.get("maxtime").toString()).intValue());
                    BeanUtils.copyProperties(one, quotaModel);
                    logs.add(quotaModel);
                }
            }
        }
        return logs;
    }
    @GetMapping("spanNameSQLlist")
    public List<QuotaSQLModel> spanNameSQLlist(
            @RequestParam(value = "spanname", required = true) String spanname) {
        spanname = spanname.toLowerCase();
        List<QuotaSQLModel> logs = new ArrayList<>();
        StringBuffer sql = new StringBuffer("SELECT sql,excutetime,eventstarttime FROM  " + adminServerProperties.getDefaultIndexName() + " " +
                " where spanname ='" + spanname + "' and eventname='system_sql_tracer'  ");
        List<Map<String, Object>> traceidList = elastricSearchHelper.excuceSQL(sql.toString());
        if (traceidList.size() > 0) {
            for (Map<String, Object> one : traceidList) {
                if (one.size() > 0) {
                    QuotaSQLModel quotaSQLModel = new QuotaSQLModel();
                    quotaSQLModel.setSql(one.get("sql").toString());
                    quotaSQLModel.setExcutetime(Double.valueOf(one.get("excutetime").toString()).intValue());
                    if (one.containsKey("eventstarttime") && one.get("eventstarttime") != null) {
                        Long startTime = (Long) one.get("eventstarttime");
                        quotaSQLModel.setEventstarttime(startTime);
                        quotaSQLModel.setEventstarttimestr(DateUtil.dateToStr(new Date(startTime), DateUtil.YYYY_MM_DD_HH_MM_SS_SSS));
                    }
                    logs.add(quotaSQLModel);
                }
            }
        }
        return logs;
    }
}

+ 44 - 0
admin/admin-server-starter/src/main/java/com/yihu/admin/server/log/QuotaSQLModel.java

@ -0,0 +1,44 @@
package com.yihu.admin.server.log;
/**
 * Created by chenweida on 2018/5/24 0024.1
 */
public class QuotaSQLModel {
    private String sql;
    private Integer excutetime;
    private Long eventstarttime;
    private String eventstarttimestr;
    public String getSql() {
        return sql;
    }
    public void setSql(String sql) {
        this.sql = sql;
    }
    public Integer getExcutetime() {
        return excutetime;
    }
    public void setExcutetime(Integer excutetime) {
        this.excutetime = excutetime;
    }
    public Long getEventstarttime() {
        return eventstarttime;
    }
    public void setEventstarttime(Long eventstarttime) {
        this.eventstarttime = eventstarttime;
    }
    public String getEventstarttimestr() {
        return eventstarttimestr;
    }
    public void setEventstarttimestr(String eventstarttimestr) {
        this.eventstarttimestr = eventstarttimestr;
    }
}

+ 8 - 0
admin/admin-server-ui-starter/src/main/resources/admin/index/index.html

@ -74,6 +74,14 @@
                                </li>
                            </ul>
                        </li>
                        <li>
                            <a href="#">微服务SQL统计分析 <span class="fa arrow"></span></a>
                            <ul class="nav nav-third-level">
                                <li v-for="log in logs">
                                    <a class="J_menuItem" :href="'../log/html/spanSQLQuota.html?appName='+log.appName" >{{log.appName}}</a>
                                </li>
                            </ul>
                        </li>
                        <li>
                            <a class="J_menuItem" href="../log/html/distributedLog.html" >分布式链路追踪</a>
                        </li>

+ 10 - 10
admin/admin-server-ui-starter/src/main/resources/admin/log/html/distributedLogDetail.html

@ -27,31 +27,31 @@
        <div id="vertical-timeline" class="vertical-container light-timeline"
             v-for="message in messages">
            <div class="vertical-timeline-block" onclick="closeOrOpen(this)">
            <div class="vertical-timeline-block">
                <template v-if="message.method != null && message.method === 'GET'">
                    <div class="vertical-timeline-icon blue-bg">
                <template v-if="message.method != null && message.method === 'GET'" >
                    <div class="vertical-timeline-icon blue-bg" onclick="closeOrOpen(this)">
                        <i class="fa fa-briefcase"></i>
                    </div>
                </template>
                <template v-if="message.method != null && message.method === 'POST'">
                    <div class="vertical-timeline-icon lazur-bg">
                    <div class="vertical-timeline-icon lazur-bg"  onclick="closeOrOpen(this)">
                        <i class="fa fa-briefcase"></i>
                    </div>
                </template>
                <template v-if="message.method != null && message.method === 'PUT'">
                    <div class="vertical-timeline-icon yellow-bg">
                    <div class="vertical-timeline-icon yellow-bg" onclick="closeOrOpen(this)">
                        <i class="fa fa-briefcase"></i>
                    </div>
                </template>
                <template v-if="message.method != null && message.method === 'DELETE'">
                    <div class="vertical-timeline-icon red-bg">
                    <div class="vertical-timeline-icon red-bg" onclick="closeOrOpen(this)">
                        <i class="fa fa-briefcase"></i>
                    </div>
                </template>
                <template v-if="message.method == null ">
                    <div class="vertical-timeline-icon gray-bg">
                    <div class="vertical-timeline-icon gray-bg" onclick="closeOrOpen(this)">
                        <i class="fa fa-briefcase"></i>
                    </div>
                </template>
@ -63,8 +63,8 @@
                    <div style="display: none">
                        <p>流程ID:{{message.traceid}}</p>
                        <p>模块ID:{{message.spanid}}</p>
                        <p>事件开始时间:{{message.eventstartstr}}</p>
                        <p>事件结束时间:{{message.eventendstr}}</p>
                        <p>事件开始时间:{{message.eventstarttimestr}}</p>
                        <p>事件结束时间:{{message.eventendtimestr}}</p>
                        <p>事件执行时间:{{message.excutetime}} ms</p>
                        <template v-if="message.eventname === 'system_http_tracer'">
                            <p>请求用户IP地址:{{message.ip}}</p>
@ -74,7 +74,7 @@
                            <p>请求参数:{{message.requestparams}}</p>
                            <p>返回参数:{{message.responseparams}}</p>
                        </template>
                        <template v-if="message.eventname === 'system_sql_tracer'">
                        <template v-else-if="message.eventname === 'system_sql_tracer'">
                            <p>sql语句:{{message.sql}}</p>
                        </template>
                    </div>

+ 6 - 6
admin/admin-server-ui-starter/src/main/resources/admin/log/html/spanLog.html

@ -79,24 +79,24 @@
        <div class="" id="ibox-content-log-detail">
            <div id="vertical-timeline" class="vertical-container light-timeline" v-for="message in messages">
                <div class="vertical-timeline-block" onclick="closeOrOpen(this)">
                    <template v-if="message.method === 'GET'">
                        <div class="vertical-timeline-icon blue-bg">
                        <div class="vertical-timeline-icon blue-bg" onclick="closeOrOpen(this)">
                            <i class="fa fa-briefcase"></i>
                        </div>
                    </template>
                    <template v-if="message.method === 'POST'">
                        <div class="vertical-timeline-icon lazur-bg">
                        <div class="vertical-timeline-icon lazur-bg" onclick="closeOrOpen(this)">
                            <i class="fa fa-briefcase"></i>
                        </div>
                    </template>
                    <template v-if="message.method === 'PUT'">
                        <div class="vertical-timeline-icon yellow-bg">
                        <div class="vertical-timeline-icon yellow-bg"onclick="closeOrOpen(this)">
                            <i class="fa fa-briefcase"></i>
                        </div>
                    </template>
                    <template v-if="message.method === 'DELETE'">
                        <div class="vertical-timeline-icon red-bg">
                        <div class="vertical-timeline-icon red-bg"onclick="closeOrOpen(this)">
                            <i class="fa fa-briefcase"></i>
                        </div>
                    </template>
@ -104,6 +104,7 @@
                    <div class="vertical-timeline-content">
                        <h2>请求路径:{{message.uri}}</h2>
                        <p>事件开始时间:{{message.eventstarttimestr}}</p>
                        <div style="display: none">
                            <p>请求用户IP地址:   {{message.ip}}</p>
                            <p>请求方式:   {{message.method}}</p>
@ -119,7 +120,6 @@
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

+ 48 - 0
admin/admin-server-ui-starter/src/main/resources/admin/log/html/spanSQLQuota.html

@ -0,0 +1,48 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="../../common/css/bootstrap/bootstrap.min.css?v=3.4.0" rel="stylesheet">
    <link href="../../common/css/bootstrap/font-awesome.min.css?v=4.3.0" rel="stylesheet">
    <link href="../../common/css/bootstrap/animate.min.css" rel="stylesheet">
    <link href="../../common/css/bootstrap/style.min.css?v=3.0.0" rel="stylesheet">
    <!-- Data Tables -->
    <link href="../../common/css/bootstrap/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">
    <link href="../../common/css/jw.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="ibox-content">
    <div class="" id="ibox-content-jqGrid_wrapper">
        <div class="jqGrid_wrapper">
            <table id="table_list_1"></table>
            <!--<div id="pager_list_1"></div>-->
        </div>
    </div>
</div>
<!-- 全局js -->
<script type="text/javascript" src="../../common/js/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../common/js/bootstrap/bootstrap.min.js"></script>
<script  type="text/javascript"src="../../common/js/content.min.js?v=1.0.0"></script>
<script type="text/javascript" src="../../common/js/layer/layer.min.js"></script>
<script type="text/javascript" src="../../common/js/plugins/iCheck/icheck.min.js"></script>
<script type="text/javascript" src="../../common/js/vue/vue.min.js"></script>
<script type="text/javascript" src="../../common/js/util/util.js"></script>
<script type="text/javascript" src="../../common/js/common.js"></script>
<script src="../../common/js/plugins/jqgrid/i18n/grid.locale-cn.js_0820"></script>
<script src="../../common/js/plugins/jqgrid/jquery.jqGrid.min.js_0820"></script>
<script type="text/javascript" src="../js/spanSQLQuota.js"></script>
</body>
</html>

+ 4 - 2
admin/admin-server-ui-starter/src/main/resources/admin/log/js/distributedLogDetail.js

@ -1,4 +1,5 @@
var traceId = GetRequest().traceId.replace("?v","");
var sort="asc"
var contentLogDetail = new Vue({
    el: '#ibox-content-log-detail',
    data: {
@ -8,7 +9,8 @@ var contentLogDetail = new Vue({
do_get(
    server + "admin_log/tracelist",
    {
        traceId: traceId
        traceId: traceId,
        sort:sort
    },
    function (data) {
        contentLogDetail.messages = data
@ -18,6 +20,6 @@ do_get(
    }
)
function closeOrOpen(div){
    var childDiv= $($($(div).children("div")[1]).children("div")[0]);
    var childDiv= $($($($(div).parent()).children("div")[1]).children("div")[0]);
    childDiv.toggle(1000);
}

+ 5 - 2
admin/admin-server-ui-starter/src/main/resources/admin/log/js/spanLog.js

@ -1,6 +1,7 @@
var appName = GetRequest().appName.replace("?v","");
var page = 0
var pageSize = 20
var sort="desc"
var contentLogDetail = new Vue({
    el: '#ibox-content-log-detail',
    data: {
@ -11,7 +12,8 @@ do_get(
    server + "admin_log/tracelist",
    {
        spanname: appName,
        eventname:"system_http_tracer"
        eventname:"system_http_tracer",
        sort:sort
    },
    function (data) {
        contentLogDetail.messages = data
@ -27,6 +29,7 @@ function searchSpanLog() {
            page: page,
            pageSize: pageSize,
            spanname: appName,
            sort:sort,
            eventname:"system_http_tracer",
            uri: $("#spanLog_search_url").val()?$("#spanLog_search_url").val():"",
            time:$("#spanLog_time_search").val()?$("#spanLog_time_search").val():0
@ -46,6 +49,6 @@ function clearSpanLog() {
}
function closeOrOpen(div){
    var childDiv= $($($(div).children("div")[1]).children("div")[0]);
    var childDiv= $($($($(div).parent()).children("div")[1]).children("div")[0]);
    childDiv.toggle(1000);
}

+ 1 - 1
admin/admin-server-ui-starter/src/main/resources/admin/log/js/spanQuota.js

@ -3,7 +3,7 @@ var appName = GetRequest().appName.replace("?v", "");
$.jgrid.defaults.styleUI = "Bootstrap";
//SELECT sum(success) success,sum(fail) fail,avg(excutetime) avgtime ,max(excutetime) maxtime ,count(*) allcount FROM  admin_log where spanname ="demo-socket-client" group by  uri
$("#table_list_1").jqGrid({
    url:server + "admin_log/spanNamelist?spanname="+appName,
    url:server + "admin_log/spanNameHttplist?spanname="+appName,
    datatype: "json",
    mtype: "GET",
    height: "100%",

+ 25 - 0
admin/admin-server-ui-starter/src/main/resources/admin/log/js/spanSQLQuota.js

@ -0,0 +1,25 @@
var appName = GetRequest().appName.replace("?v", "");
$.jgrid.defaults.styleUI = "Bootstrap";
//SELECT sum(success) success,sum(fail) fail,avg(excutetime) avgtime ,max(excutetime) maxtime ,count(*) allcount FROM  admin_log where spanname ="demo-socket-client" group by  uri
$("#table_list_1").jqGrid({
    url:server + "admin_log/spanNameSQLlist?spanname="+appName,
    datatype: "json",
    mtype: "GET",
    height: "100%",
    autowidth: true,
    shrinkToFit: true,
    //colNames: ["序号", "接口路径", "请求总次数", "成功次数", "失败次数", "请求平均时间(ms)", "最长请求时间(ms)"],
    colModel: [
        //{label:"序号",name: "id",width: 30, sorttype: "int", align: "center" },
        {label:"sql语句",name: "sql",width: "80%",align: "left"},
        {label:"请求时间(ms)",name: "excutetime",width: "10%",align: "right", sorttype: "int"},
        {label:"执行时间",name: "eventstarttimestr",width: "10%",align: "right", sorttype: "int"},
    ],
    loadonce: true,
    // pager: "#pager_list_1",
    viewrecords: true,
    caption: "接口统计分析",
    hidegrid: false
});