| 
					
				 | 
			
			
				@ -97,9 +97,7 @@ public class ServiceMonitorService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        DBObject serviceGroup = getServiceGroupFields(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // run aggregation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        AggregationOutput flowOutput = getBusinessLog().aggregate(match, flowGroup, sort); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // run aggregation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        AggregationOutput serviceOutput = getBusinessLog().aggregate(match, serviceGroup, sort); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //流程带宽 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       //流程带宽 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer flowCalls = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String routeId = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (DBObject dbObject : flowOutput.results()) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -114,16 +112,25 @@ public class ServiceMonitorService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BigDecimal flowBandwidth = NumberUtil.divideBigDecimal(BigDecimal.valueOf(flowCalls), BigDecimal.valueOf(interval)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        saveServiceMetrics(routeId, "bandwidth", flowBandwidth.toString(), endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //服务带宽 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer serviceCalls = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String code = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // run aggregation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        AggregationOutput serviceOutput = getBusinessLog().aggregate(match, serviceGroup, sort); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Integer> bandwidthMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (DBObject dbObject : serviceOutput.results()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BasicDBObject id = (BasicDBObject) dbObject.get("_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            code = StringUtil.toString(id.get("code")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            serviceCalls++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String code = StringUtil.toString(id.get("code")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (bandwidthMap.containsKey(code)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer serviceCalls = bandwidthMap.get(code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                bandwidthMap.put(code, ++serviceCalls); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                bandwidthMap.put(code, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String code : bandwidthMap.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer serviceCalls = bandwidthMap.get(code)/2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BigDecimal serviceBandwidth = NumberUtil.divideBigDecimal(BigDecimal.valueOf(serviceCalls), BigDecimal.valueOf(interval)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            saveServiceMetrics(code, "bandwidth", serviceBandwidth.toString(), endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        serviceCalls = serviceCalls/2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BigDecimal serviceBandwidth = NumberUtil.divideBigDecimal(BigDecimal.valueOf(serviceCalls), BigDecimal.valueOf(interval)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        saveServiceMetrics(code, "bandwidth", serviceBandwidth.toString(), endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -134,9 +141,6 @@ public class ServiceMonitorService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        DBObject serviceGroup = getServiceGroupFields(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // run aggregation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        AggregationOutput flowOutput = getBusinessLog().aggregate(match, flowGroup, sort); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // run aggregation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        AggregationOutput serviceOutput = getBusinessLog().aggregate(match, serviceGroup, sort); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //流程qps 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer flowCalls = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String routeId = ""; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -157,16 +161,28 @@ public class ServiceMonitorService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BigDecimal flowQps = NumberUtil.divideBigDecimal(BigDecimal.valueOf(flowCalls), BigDecimal.valueOf(interval)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        saveServiceMetrics(routeId, "qps", flowQps.toString(), endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //服务带宽 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer serviceCalls = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String code = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // run aggregation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        AggregationOutput serviceOutput = getBusinessLog().aggregate(match, serviceGroup, sort); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Integer> qpsMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (DBObject dbObject : serviceOutput.results()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BasicDBObject id = (BasicDBObject) dbObject.get("_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            code = StringUtil.toString(id.get("code")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            serviceCalls++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String code = StringUtil.toString(id.get("code")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (qpsMap.containsKey(code)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer serviceCalls = qpsMap.get(code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                qpsMap.put(code, ++serviceCalls); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                qpsMap.put(code, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String code : qpsMap.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (qpsMap.get(code) > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer serviceCalls = qpsMap.get(code)/2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                BigDecimal serviceBandwidth = NumberUtil.divideBigDecimal(BigDecimal.valueOf(serviceCalls), BigDecimal.valueOf(interval)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                saveServiceMetrics(code, "qps", serviceBandwidth.toString(), endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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 { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -183,7 +199,7 @@ public class ServiceMonitorService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BasicDBObject id = (BasicDBObject) dbObject.get("_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            routeId = StringUtil.toString(id.get("routeId")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (total == count) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (total == count/2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                successCountF++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                failureCountF++; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -262,8 +278,8 @@ public class ServiceMonitorService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String begin = StringUtil.toString(dbObjectTemp.get("fireTimeSource")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String end = StringUtil.toString(dbObject.get("fireTimeSource")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                long interval = getIntervalExact(begin, end); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (delayMap.containsKey(code)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    BigDecimal delayTemp = delayMap.get(code); 
			 |