|
@ -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);
|