[collector] 系统默认数据解析http响应数据
This commit is contained in:
@@ -1,13 +1,9 @@
|
||||
package com.usthe.collector.collect.http;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.jayway.jsonpath.Configuration;
|
||||
import com.jayway.jsonpath.Option;
|
||||
import com.jayway.jsonpath.spi.cache.CacheProvider;
|
||||
import com.jayway.jsonpath.spi.cache.LRUCache;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.usthe.collector.collect.AbstractCollect;
|
||||
import com.usthe.collector.common.http.HttpClientPool;
|
||||
import com.usthe.collector.dispatch.DispatchConstants;
|
||||
@@ -28,7 +24,6 @@ import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpUriRequest;
|
||||
import org.apache.http.client.methods.RequestBuilder;
|
||||
import org.apache.http.client.protocol.HttpClientContext;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.BasicCredentialsProvider;
|
||||
import org.apache.http.protocol.HttpContext;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
@@ -173,8 +168,7 @@ public class HttpCollectImpl extends AbstractCollect {
|
||||
}
|
||||
|
||||
private void parseResponseByDefault(String resp, List<String> aliasFields, CollectRep.MetricsData.Builder builder) {
|
||||
Gson gson = new Gson();
|
||||
JsonElement element = gson.toJsonTree(resp);
|
||||
JsonElement element = JsonParser.parseString(resp);
|
||||
if (element.isJsonArray()) {
|
||||
JsonArray array = element.getAsJsonArray();
|
||||
for (JsonElement jsonElement : array) {
|
||||
@@ -196,18 +190,15 @@ public class HttpCollectImpl extends AbstractCollect {
|
||||
} else if (element.isJsonObject()) {
|
||||
JsonObject object = element.getAsJsonObject();
|
||||
CollectRep.ValueRow.Builder valueRowBuilder = CollectRep.ValueRow.newBuilder();
|
||||
StringBuilder instance = new StringBuilder();
|
||||
for (String alias : aliasFields) {
|
||||
JsonElement valueElement = object.get(alias);
|
||||
if (valueElement != null) {
|
||||
String value = valueElement.getAsString();
|
||||
valueRowBuilder.addColumns(value);
|
||||
instance.append(value);
|
||||
} else {
|
||||
valueRowBuilder.addColumns(CommonConstants.NULL_VALUE);
|
||||
}
|
||||
}
|
||||
valueRowBuilder.setInstance(instance.toString());
|
||||
builder.addValues(valueRowBuilder.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user