|
|
@@ -1,6 +1,5 @@
|
|
|
package com.usthe.collector.dispatch;
|
|
|
|
|
|
-import com.google.protobuf.ProtocolStringList;
|
|
|
import com.googlecode.aviator.AviatorEvaluator;
|
|
|
import com.googlecode.aviator.Expression;
|
|
|
import com.usthe.collector.collect.AbstractCollect;
|
|
|
@@ -15,6 +14,7 @@ import com.usthe.common.util.CommonUtil;
|
|
|
import lombok.Data;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
+import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
@@ -135,22 +135,21 @@ public class MetricsCollect implements Runnable, Comparable<MetricsCollect> {
|
|
|
|
|
|
/**
|
|
|
* 根据 calculates 和 aliasFields 配置计算出真正的指标(fields)值
|
|
|
+ * 计算instance实例值
|
|
|
* @param metrics 指标组配置
|
|
|
* @param collectData 采集数据
|
|
|
*/
|
|
|
private void calculateFields(Metrics metrics, CollectRep.MetricsData.Builder collectData) {
|
|
|
collectData.addAllFields(metrics.getFields().stream().map(Metrics.Field::getField).collect(Collectors.toSet()));
|
|
|
- // 若不存在需要计算的表达式,则 别名指标aliasFields 的数据就是真正指标 fields的数据
|
|
|
- // 即直接使用 valueList 即可
|
|
|
- if (metrics.getCalculates() == null || metrics.getCalculates().isEmpty()) {
|
|
|
- return;
|
|
|
- }
|
|
|
List<CollectRep.ValueRow> aliasRowList = collectData.getValuesList();
|
|
|
if (aliasRowList == null || aliasRowList.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
collectData.clearValues();
|
|
|
// 先预处理 calculates
|
|
|
+ if (metrics.getCalculates() == null) {
|
|
|
+ metrics.setCalculates(Collections.emptyList());
|
|
|
+ }
|
|
|
Map<String, Expression> fieldExpressionMap = metrics.getCalculates()
|
|
|
.stream()
|
|
|
.map(cal -> {
|
|
|
@@ -214,7 +213,7 @@ public class MetricsCollect implements Runnable, Comparable<MetricsCollect> {
|
|
|
}
|
|
|
realValueRowBuilder.addColumns(value);
|
|
|
fieldValueMap.clear();
|
|
|
- if (field.isInstance()) {
|
|
|
+ if (field.isInstance() && !CommonConstants.NULL_VALUE.equals(value)) {
|
|
|
instanceBuilder.append(value);
|
|
|
}
|
|
|
}
|
|
|
@@ -234,9 +233,9 @@ public class MetricsCollect implements Runnable, Comparable<MetricsCollect> {
|
|
|
builder.setTime(endTime);
|
|
|
log.debug("[Collect]: newTime: {}, startTime: {}, spendTime: {}.", newTime, startTime, endTime - startTime);
|
|
|
if (builder.getCode() != CollectRep.Code.SUCCESS) {
|
|
|
- log.info("[Collect Fail]-reason:{}", builder.getMsg());
|
|
|
+ log.info("[Collect Fail] Reason: {}", builder.getMsg());
|
|
|
} else {
|
|
|
- log.info("[Collect Success]-{},{},{}.", builder.getId(), builder.getApp(), builder.getMetrics());
|
|
|
+ log.info("[Collect Success].");
|
|
|
}
|
|
|
return builder.build();
|
|
|
}
|