Browse Source

服务指标获取

zhenglingfeng 8 years ago
parent
commit
dbb58a1c73

+ 7 - 7
hos-broker/src/main/java/com/yihu/hos/common/scheduler/MonitorScheduler.java

@ -37,11 +37,11 @@ public class MonitorScheduler {
        System.out.println("每分钟执行一次。开始============================================");
        //TODO 采集服务器健康监控指标数据 statusTask.healthCheck();
//        collectEnvHealth();
//        try {
//            collectServiceHealth();
//        } catch (JsonProcessingException e) {
//            e.printStackTrace();
//        }
        try {
            collectServiceHealth();
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        System.out.println("每分钟执行一次。结束。");
    }
@ -86,8 +86,8 @@ public class MonitorScheduler {
    public void collectServiceHealth() throws JsonProcessingException {
        Date now = new Date();
        Date beforeDate = new Date(now.getTime() - 60000);
        String beginTime = DateUtil.toString(beforeDate, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
        String endTime = DateUtil.toString(now, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
        String beginTime = DateUtil.toString(beforeDate, DateUtil.DEFAULT_TIMESTAMP_FORMAT);
        String endTime = DateUtil.toString(now, DateUtil.DEFAULT_TIMESTAMP_FORMAT);
        serviceMonitorService.bandwidth(beginTime, endTime);
        serviceMonitorService.qps(beginTime, endTime);
        serviceMonitorService.delay(beginTime, endTime);

+ 129 - 44
hos-broker/src/main/java/com/yihu/hos/services/ServiceMonitorService.java

@ -14,7 +14,7 @@ import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.*;
/**
 * Created by chenweida on 2016/1/27.
@ -91,7 +91,6 @@ public class ServiceMonitorService {
    }
    public void bandwidth(String beginTime, String endTime) {
        DBObject match = getMatchFields(beginTime, endTime);
        DBObject flowGroup = getFlowGroupFields();
        DBObject sort = getSortFields();
@ -100,56 +99,74 @@ public class ServiceMonitorService {
        AggregationOutput flowOutput = getBusinessLog().aggregate(match, flowGroup, sort);
        // run aggregation
        AggregationOutput serviceOutput = getBusinessLog().aggregate(match, serviceGroup, sort);
        Integer calls = 0;
        //流程带宽
        Integer flowCalls = 0;
        String routeId = "";
        for (DBObject dbObject : flowOutput.results()) {
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            BasicDBObject id = (BasicDBObject) dbObject.get("_id");
            routeId = StringUtil.toString(id.get("routeId"));
            if (count >= 2) {
                calls++;
                flowCalls++;
            }
        }
        long interval = getInterval(beginTime, endTime);
        BigDecimal bandwidth = NumberUtil.divideBigDecimal(BigDecimal.valueOf(calls), BigDecimal.valueOf(interval));
        saveServiceMetrics(routeId, "bandwidth", bandwidth.toString(), endTime);
        Integer calls1 = 0;
        BigDecimal flowBandwidth = NumberUtil.divideBigDecimal(BigDecimal.valueOf(flowCalls), BigDecimal.valueOf(interval));
        saveServiceMetrics(routeId, "bandwidth", flowBandwidth.toString(), endTime);
        //服务带宽
        Integer serviceCalls = 0;
        String code = "";
        for (DBObject dbObject : serviceOutput.results()) {
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            BasicDBObject id = (BasicDBObject) dbObject.get("_id");
            code = StringUtil.toString(id.get("code"));
            calls++;
            serviceCalls++;
        }
        BigDecimal bandwidth1 = NumberUtil.divideBigDecimal(BigDecimal.valueOf(calls1), BigDecimal.valueOf(interval));
        saveServiceMetrics(code, "bandwidth", bandwidth1.toString(), endTime);
        serviceCalls = serviceCalls/2;
        BigDecimal serviceBandwidth = NumberUtil.divideBigDecimal(BigDecimal.valueOf(serviceCalls), BigDecimal.valueOf(interval));
        saveServiceMetrics(code, "bandwidth", serviceBandwidth.toString(), endTime);
    }
    public void qps(String beginTime, String endTime) {
        DBObject match = getMatchFields(beginTime, endTime);
        DBObject group = getFlowGroupFields();
        DBObject flowGroup = getFlowGroupFields();
        DBObject sort = getSortFields();
        DBObject serviceGroup = getServiceGroupFields();
        // run aggregation
        AggregationOutput output = getBusinessLog().aggregate(match, group, sort);
        Integer calls = 0;
        AggregationOutput flowOutput = getBusinessLog().aggregate(match, flowGroup, sort);
        // run aggregation
        AggregationOutput serviceOutput = getBusinessLog().aggregate(match, serviceGroup, sort);
        //流程qps
        Integer flowCalls = 0;
        String routeId = "";
        for (DBObject dbObject : output.results()) {
        for (DBObject dbObject : flowOutput.results()) {
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            BasicDBObject id = (BasicDBObject) dbObject.get("_id");
            routeId = StringUtil.toString(id.get("routeId"));
            if (count >= 2) {
                Integer total = Integer.parseInt(StringUtil.toString(dbObject.get("total")));
                if (total == count) {
                    calls++;
                if (total == count/2) {
                    flowCalls++;
                }
            }
        }
        long interval = getInterval(beginTime, endTime);
        BigDecimal qps = NumberUtil.divideBigDecimal(BigDecimal.valueOf(calls), BigDecimal.valueOf(interval));
        saveServiceMetrics(routeId, "qps", qps.toString(), endTime);
        BigDecimal flowQps = NumberUtil.divideBigDecimal(BigDecimal.valueOf(flowCalls), BigDecimal.valueOf(interval));
        saveServiceMetrics(routeId, "qps", flowQps.toString(), endTime);
        //服务带宽
        Integer serviceCalls = 0;
        String code = "";
        for (DBObject dbObject : serviceOutput.results()) {
            BasicDBObject id = (BasicDBObject) dbObject.get("_id");
            code = StringUtil.toString(id.get("code"));
            serviceCalls++;
        }
        serviceCalls = serviceCalls/2;
        BigDecimal serviceQps = NumberUtil.divideBigDecimal(BigDecimal.valueOf(serviceCalls), BigDecimal.valueOf(interval));
        saveServiceMetrics(code, "bandwidth", serviceQps.toString(), endTime);
    }
    public void usage(String beginTime, String endTime) throws JsonProcessingException {
@ -157,53 +174,117 @@ public class ServiceMonitorService {
        DBObject group = getFlowGroupFields();
        DBObject sort = getSortFields();
        // run aggregation
        AggregationOutput output = getBusinessLog().aggregate(match, group, sort);
        Integer successCount = 0;
        Integer failureCount = 0;
        AggregationOutput flowOutput = getBusinessLog().aggregate(match, group, sort);
        Integer successCountF = 0;
        Integer failureCountF = 0;
        String routeId = "";
        for (DBObject dbObject : output.results()) {
        for (DBObject dbObject : flowOutput.results()) {
            Integer total = Integer.parseInt(StringUtil.toString(dbObject.get("total")));
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            BasicDBObject id = (BasicDBObject) dbObject.get("_id");
            routeId = StringUtil.toString(id.get("routeId"));
            if (total == count) {
                successCount++;
                successCountF++;
            } else {
                 failureCount++;
                failureCountF++;
            }
        }
        JSONObject result = new JSONObject();
        result.put("totalCount", successCount + failureCount);
        result.put("successCount", successCount);
        result.put("failureCount", failureCount);
        ObjectMapper objectMapper = new ObjectMapper();
        saveServiceMetrics(routeId, "usage", objectMapper.writeValueAsString(result.toString()), endTime);
        JSONObject resultF = new JSONObject();
        resultF.put("totalCount", successCountF + failureCountF);
        resultF.put("successCount", successCountF);
        resultF.put("failureCount", failureCountF);
        saveServiceMetrics(routeId, "usage", objectMapper.writeValueAsString(resultF.toString()), endTime);
        DBCursor serviceOutput = getBusinessLog().find(getQueryObject(beginTime, endTime));
        Map<String, Integer> usageMap = new HashMap<>();
        Map<String, Integer> usageFailMap = new HashMap<>();
        Map<String, DBObject> serviceMap = new HashMap<>();
        for (DBObject dbObject : serviceOutput.toArray()) {
            String code = StringUtil.toString(dbObject.get("code"));
            if (!usageMap.containsKey(code)) {
                usageMap.put(code, 0);
            }
            if (serviceMap.containsKey(code)) {
                serviceMap.remove(code);
                Integer usageTemp = usageMap.get(code);
                usageMap.put(code, ++usageTemp);
                usageFailMap.put(code, 0);
            } else {
                serviceMap.put(code, dbObject);
                Integer usageTemp = usageMap.get(code);
                usageFailMap.put(code, ++usageTemp);
            }
        }
        for (String code : usageMap.keySet()) {
            JSONObject resultS = new JSONObject();
            resultS.put("totalCount", usageMap.get(code) + usageFailMap.get(code));
            resultS.put("successCount", usageMap.get(code));
            resultS.put("failureCount", usageFailMap.get(code));
            saveServiceMetrics(code, "usage", objectMapper.writeValueAsString(resultS.toString()), endTime);
        }
    }
    public void delay(String beginTime, String endTime) {
        DBObject match = getMatchFields(beginTime, endTime);
        DBObject group = getFlowGroupFields();
        DBObject flowGroup = getFlowGroupFields();
        DBObject sort = getSortFields();
        // run aggregation
        AggregationOutput output = getBusinessLog().aggregate(match, group, sort);
        Integer calls = 0;
        AggregationOutput flowOutput = getBusinessLog().aggregate(match, flowGroup, sort);
        BigDecimal flowDelay = BigDecimal.ZERO;
        String routeId = "";
        for (DBObject dbObject : output.results()) {
        for (DBObject dbObject : flowOutput.results()) {
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            BasicDBObject id = (BasicDBObject) dbObject.get("_id");
            routeId = StringUtil.toString(id.get("routeId"));
            if (count >= 2) {
                calls++;
                String begin = StringUtil.toString(dbObject.get("beginTime"));
                String end = StringUtil.toString(dbObject.get("endTime"));
                long interval = getInterval(begin, end);
                flowDelay = flowDelay.add(BigDecimal.valueOf(interval));
            }
        }
        saveServiceMetrics(routeId, "delay", flowDelay.toString(), endTime);
        long interval = getInterval(beginTime, endTime);
        BigDecimal delay =  NumberUtil.divideBigDecimal(BigDecimal.valueOf(interval), BigDecimal.valueOf(calls));
        saveServiceMetrics(routeId, "delay", delay.toString(), endTime);
        DBCursor serviceOutput = getBusinessLog().find(getQueryObject(beginTime, endTime));
        Map<String, BigDecimal> delayMap = new HashMap<>();
        Map<String, DBObject> serviceMap = new HashMap<>();
        for (DBObject dbObject : serviceOutput.toArray()) {
            String code = StringUtil.toString(dbObject.get("code"));
            if (serviceMap.containsKey(code)) {
                DBObject dbObjectTemp = serviceMap.remove(code);
                String begin = StringUtil.toString(dbObjectTemp.get("fireTime"));
                String end = StringUtil.toString(dbObject.get("fireTime"));
                long interval = getInterval(begin, end);
                if (delayMap.containsKey(code)) {
                    BigDecimal delayTemp = delayMap.get(code);
                    delayMap.put(code, delayTemp.add(BigDecimal.valueOf(interval)));
                } else {
                    delayMap.put(code, BigDecimal.valueOf(interval));
                }
            } else {
                serviceMap.put(code, dbObject);
            }
        }
        for (String code : delayMap.keySet()) {
            saveServiceMetrics(code, "delay", delayMap.get(code).toString(), endTime);
        }
    }
    public DBObject getMatchFields(String beginTime, String endTime) {
        return new BasicDBObject("$match", getQueryObject(beginTime, endTime));
    }
    public DBObject getQueryObject(String beginTime, String endTime) {
        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
                new BasicDBObject[]{
                        new BasicDBObject().append("fireTime",
@ -211,9 +292,10 @@ public class ServiceMonitorService {
                        new BasicDBObject().append("fireTime",
                                new BasicDBObject().append(QueryOperators.LT, DateUtil.toTimestamp(endTime)))});
        return new BasicDBObject("$match", queryObject);
        return queryObject;
    }
    public DBObject getServiceGroupFields() {
        // Now the $group operation
@ -233,6 +315,9 @@ public class ServiceMonitorService {
                        .append("routeId", "$routeId"));
        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"));
        return new BasicDBObject("$group", groupFields);
    }
@ -242,8 +327,8 @@ public class ServiceMonitorService {
    }
    public long getInterval(String beginTime, String endTime) {
        Date from = DateUtil.toTimestamp(beginTime, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
        Date to = DateUtil.toTimestamp(endTime, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
        Date from = DateUtil.toTimestamp(beginTime, DateUtil.DEFAULT_TIMESTAMP_FORMAT);
        Date to = DateUtil.toTimestamp(endTime, DateUtil.DEFAULT_TIMESTAMP_FORMAT);
        long interval = (to.getTime() - from.getTime())/1000;
        return interval;
    }

+ 11 - 4
hos-camel/pom.xml

@ -4,14 +4,21 @@
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>hos-camel-class</groupId>
    <artifactId>hos-camel-class</artifactId>
    <groupId>hos-camel</groupId>
    <artifactId>hos-camel</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>com.yihu.hos</groupId>
        <artifactId>hos-web-framework-dependencies</artifactId>
        <artifactId>hos-web-camel-dependencies</artifactId>
        <version>1.1.1-SNAPSHOT</version>
        <relativePath>../hos-web-framework-dependencies</relativePath> <!-- lookup parent from repository -->
        <relativePath>../hos-web-camel-dependencies</relativePath><!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>com.yihu.hos</groupId>
            <artifactId>hos-web-framework</artifactId>
            <version>1.1.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

+ 5 - 3
hos-camel/src/main/java/qlc/route/QlcRouteBulider.java

@ -2,22 +2,24 @@ package qlc.route;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
import qlc.processor.Processor1;
import qlc.processor.Processor2;
/**
 * Created by lingfeng on 2016/7/25.
 */
@Component
public class QlcRouteBulider extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("jetty:http4://192.168.131.101:8066/qlc").routeId("qlc")
                .process(new Processor1()).setHeader(Exchange.HTTP_METHOD, constant("POST"))
                .process(new Processor1()).setHeader(Exchange.HTTP_METHOD, constant("POST")).log("servers: 3,code: queryUserInfo")
                .to("http4://192.168.131.101:8088/api/v1.0/qlc/queryUserInfo").log("servers: 3,code: queryUserInfo")
                .process(new Processor2()).setHeader(Exchange.HTTP_METHOD, constant("POST"))
                .process(new Processor2()).setHeader(Exchange.HTTP_METHOD, constant("POST")).log("servers: 3,code: patientInformation")
                .to("http4://192.168.131.101:8088/api/v1.0/qlc/patientInformation").log("servers: 3,code: patientInformation")
                .process(new Processor2()).setHeader(Exchange.HTTP_METHOD, constant("POST"))
                .process(new Processor2()).setHeader(Exchange.HTTP_METHOD, constant("POST")).log("servers: 3,code: patient")
                .to("http4://192.168.131.101:8088/crawler/patient").log("servers: 3,code: patient").to("stream:out"); // 2. 为路由配置组件或终端节点.
    }
}

+ 5 - 0
hos-web-camel-dependencies/pom.xml

@ -104,6 +104,11 @@
            <artifactId>camel-stream</artifactId>
            <version>${camel.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-jetty</artifactId>
            <version>${camel.version}</version> <!-- use the same version as your Camel core version -->
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-camel -->
        <dependency>
            <groupId>xom</groupId>

+ 0 - 13
src/main/java/com/yihu/hos/monitor/controller/ServiceMonitorController.java

@ -63,17 +63,4 @@ public class ServiceMonitorController {
            return Result.error("获取服务树列表失败");
        }
    }
    @RequestMapping(value = "/info", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "获取服务树列表", produces = "application/json", notes = "获取服务树列表")
    public Result getServiceInfo(
            @ApiParam(name = "code", value = "服务器IP", required = true)
            @RequestParam(value = "host") String code) {
        try {
            return monitorService.getServiceTreeList();
        } catch (Exception e) {
            return Result.error("获取服务树列表失败");
        }
    }
}

+ 7 - 0
src/main/java/com/yihu/hos/monitor/dao/ServiceMonitorDao.java

@ -27,4 +27,11 @@ public class ServiceMonitorDao extends SQLGeneralDAO {
        return (List<SystemServiceEndpoint>) super.hibernateTemplate.find("from SystemServiceEndpoint");
    }
    public SystemServiceFlow  getFlowById(Integer id) throws Exception {
        return (SystemServiceFlow) super.hibernateTemplate.find("from SystemServiceFlow s where s.id=?", id).get(0);
    }
    public SystemServiceEndpoint getEndpointById(String id) throws Exception {
        return (SystemServiceEndpoint) super.hibernateTemplate.find("from SystemServiceEndpoint s where s.id=?", id).get(0);
    }
}

+ 25 - 10
src/main/java/com/yihu/hos/monitor/service/ServiceMonitorService.java

@ -1,6 +1,7 @@
package com.yihu.hos.monitor.service;
import com.mongodb.*;
import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.monitor.dao.ServiceMonitorDao;
import com.yihu.hos.system.model.SystemServiceEndpoint;
import com.yihu.hos.system.model.SystemServiceFlow;
@ -96,15 +97,24 @@ public class ServiceMonitorService {
    public Result metrics(String id, String beginTime, String endTime) throws Exception {
        String name;
        String code;
        String description;
        if (id.contains("flow")) {
            Integer flowId = Integer.parseInt(id.replace("flow", ""));
            SystemServiceFlow systemServiceFlow = (SystemServiceFlow) serviceMonitorDao.get(SystemServiceFlow.class, "system_service_flow", flowId);
            SystemServiceFlow systemServiceFlow = serviceMonitorDao.getFlowById(flowId);
            name = systemServiceFlow.getName();
            code = systemServiceFlow.getCode();
            description = systemServiceFlow.getDescription();
        } else {
            String endpointId =id.replace("endpoint", "");
            SystemServiceEndpoint systemServiceEndpoint = (SystemServiceEndpoint) serviceMonitorDao.get(SystemServiceEndpoint.class, "system_service_endpoint", endpointId);
            SystemServiceEndpoint systemServiceEndpoint = serviceMonitorDao.getEndpointById(endpointId);
            name = systemServiceEndpoint.getName();
            code = systemServiceEndpoint.getCode();
            description = systemServiceEndpoint.getDescription();
        }
        JSONObject serviceInfo = new JSONObject();
        serviceInfo.put("name", name);
        serviceInfo.put("description", description);
        mongoOperations = new MongoTemplate(mongo, dbName);
        DBCollection metrics = mongoOperations.getCollection(tableName);
@ -114,7 +124,7 @@ public class ServiceMonitorService {
                                new BasicDBObject().append(QueryOperators.GTE, beginTime)),
                        new BasicDBObject().append("createTime",
                                new BasicDBObject().append(QueryOperators.LT, endTime)),
                        new BasicDBObject("name", name)});
                        new BasicDBObject("name", code)});
        JSONObject result = new JSONObject();
        DBCursor cursor = metrics.find(queryObject);
@ -138,6 +148,7 @@ public class ServiceMonitorService {
        result.put("qps", qps);
        result.put("usage", usage);
        result.put("delay", delay);
        result.put("serviceInfo", serviceInfo);
        return Result.success(result.toString());
    }
@ -167,18 +178,22 @@ public class ServiceMonitorService {
        for (SystemServiceFlow flow : flowList) {
            TreeView rootTree = new TreeView();
            rootTree.setIschecked(false);
            rootTree.setId("flow" + flow.getId());
            rootTree.setPid("-1");
            rootTree.setText(flow.getName());
            treeList.add(rootTree);
            List<String> endpointIdList = flowEndpointMap.get(flow.getId());
            for (String endpointId : endpointIdList) {
                SystemServiceEndpoint endpoint = endpointMap.get(endpointId);
                TreeView childTree = new TreeView();
                childTree.setId("endpoint" + endpoint.getId());
                childTree.setPid(flow.getCode());
                childTree.setText(endpoint.getName());
                treeList.add(childTree);
            if (!CollectionUtil.isEmpty(endpointIdList)) {
                for (String endpointId : endpointIdList) {
                    SystemServiceEndpoint endpoint = endpointMap.get(endpointId);
                    TreeView childTree = new TreeView();
                    childTree.setIschecked(false);
                    childTree.setId("endpoint" + endpoint.getId());
                    childTree.setPid("flow" + flow.getId());
                    childTree.setText(endpoint.getName());
                    treeList.add(childTree);
                }
            }
        }
        JSONArray jsonArray = new JSONArray(treeList);

+ 2 - 2
src/main/webapp/WEB-INF/ehr/jsp/monitor/service/sEnvManage.jsp

@ -30,10 +30,10 @@
        <div class="m-form-inline" data-role-form>
            <div class="m-form-group">
                <div class="m-form-control">
                    <label id="serviceName">dddd</label>
                    <label stype="" id="serviceName"></label>
                </div>
                <div class="m-form-control">
                    <label id="serviceDescription">eeeee</label>
                    <label id="serviceDescription"></label>
                </div>
            </div>
            <%-- echarts 数据--%>

+ 9 - 6
src/main/webapp/WEB-INF/ehr/jsp/monitor/service/sEnvManageJs.jsp

@ -12,7 +12,6 @@
            isLeftCollapse: false,//左边区域初始化不可以隐藏
            allowLeftCollapse: false//左边区域不可以隐藏
        });
        debugger;
        //初始化树
        getServiceTree();
    });
@ -24,25 +23,24 @@
            type: "GET",
            url: "${contextRoot}/monitor/service/trees",
            success: function (msg) {
                debugger;
                if (msg.successFlg) {
                    // 初始化树形菜单
                    var message = JSON.parse(msg.message);
                    serviceTree = serviceTree.ligerTree({
                        data: JSON.parse(msg.message),
                        data: message,
                        idFieldName: 'id',
                        nodeWidth: 200,
                        parentIDFieldName: 'pid',
                        isExpand: false,
                        onClick: function (obj) {
                            debugger;
                            //初始化图表
                             getServiceInfo(obj.id);
                        },
                        onSuccess: function (data) {
                            debugger;
                            getServiceInfo(data[0].id);
                        }
                    });
                    getServiceInfo(message[0].id);
                }
            }
        });
@ -56,9 +54,14 @@
            data:{id:id},
            cache:false,
            success :function(re){
                debugger;
                if(re.successFlg) {
                    //TODO 设置图表
                    var message = JSON.parse(re.message);
                    var serviceInfo = message.serviceInfo;
                    $("#serviceName").text(serviceInfo.name);
                    $("#serviceDescription").text(serviceInfo.description);
                    service.bandwidth(message.bandwidth);
                    service.qps(message.qps);
                    service.delay(message.delay);