提交 6d46e85a 编写于 作者: A ascrutae

fix time bucket issue

上级 cf4430a2
...@@ -43,7 +43,7 @@ public class ServiceNameRegisterSerialWorker extends AbstractLocalAsyncWorker { ...@@ -43,7 +43,7 @@ public class ServiceNameRegisterSerialWorker extends AbstractLocalAsyncWorker {
if (serviceId == 0) { if (serviceId == 0) {
int min = dao.getMinServiceId(); int min = dao.getMinServiceId();
if (min == 0) { if (min == 0) {
ServiceNameDataDefine.ServiceName noneServiceName = new ServiceNameDataDefine.ServiceName("1", Const.NONE_SERVICE_Name, 0, Const.NONE_SERVICE_ID); ServiceNameDataDefine.ServiceName noneServiceName = new ServiceNameDataDefine.ServiceName("1", Const.NONE_SERVICE_NAME, 0, Const.NONE_SERVICE_ID);
dao.save(noneServiceName); dao.save(noneServiceName);
serviceName.setServiceId(-1); serviceName.setServiceId(-1);
......
...@@ -7,7 +7,7 @@ public class Const { ...@@ -7,7 +7,7 @@ public class Const {
public static final String ID_SPLIT = "_"; public static final String ID_SPLIT = "_";
public static final int USER_ID = 1; public static final int USER_ID = 1;
public static final int NONE_SERVICE_ID = 1; public static final int NONE_SERVICE_ID = 1;
public static final String NONE_SERVICE_Name = "None"; public static final String NONE_SERVICE_NAME = "None";
public static final String USER_CODE = "User"; public static final String USER_CODE = "User";
public static final String SEGMENT_SPAN_SPLIT = "S"; public static final String SEGMENT_SPAN_SPLIT = "S";
public static final String UNKNOWN = "Unknown"; public static final String UNKNOWN = "Unknown";
......
...@@ -88,6 +88,17 @@ public enum TimeBucketUtils { ...@@ -88,6 +88,17 @@ public enum TimeBucketUtils {
} }
} }
public long addSecondForSecondTimeBucket(String timeBucketType, long timeBucket, int second) {
if (!TimeBucketType.SECOND.name().equals(timeBucketType)) {
throw new UnexpectedException("time bucket type must be second ");
}
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(changeTimeBucket2TimeStamp(timeBucketType, timeBucket));
calendar.add(Calendar.SECOND, second);
return getSecondTimeBucket(calendar.getTimeInMillis());
}
public enum TimeBucketType { public enum TimeBucketType {
SECOND, MINUTE, HOUR, DAY SECOND, MINUTE, HOUR, DAY
} }
......
...@@ -6,6 +6,7 @@ import org.elasticsearch.action.get.MultiGetItemResponse; ...@@ -6,6 +6,7 @@ import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetRequestBuilder; import org.elasticsearch.action.get.MultiGetRequestBuilder;
import org.elasticsearch.action.get.MultiGetResponse; import org.elasticsearch.action.get.MultiGetResponse;
import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable; import org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
...@@ -27,13 +28,13 @@ public class CpuMetricEsDAO extends EsDAO implements ICpuMetricDAO { ...@@ -27,13 +28,13 @@ public class CpuMetricEsDAO extends EsDAO implements ICpuMetricDAO {
@Override public JsonArray getMetric(int instanceId, long startTimeBucket, long endTimeBucket) { @Override public JsonArray getMetric(int instanceId, long startTimeBucket, long endTimeBucket) {
MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet(); MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet();
int i = 0; long timeBucket = startTimeBucket;
do { do {
String id = (startTimeBucket + i) + Const.ID_SPLIT + instanceId; timeBucket = TimeBucketUtils.INSTANCE.addSecondForSecondTimeBucket(TimeBucketUtils.TimeBucketType.SECOND.name(), timeBucket, 1);
String id = timeBucket + Const.ID_SPLIT + instanceId;
prepareMultiGet.add(CpuMetricTable.TABLE, CpuMetricTable.TABLE_TYPE, id); prepareMultiGet.add(CpuMetricTable.TABLE, CpuMetricTable.TABLE_TYPE, id);
i++;
} }
while (startTimeBucket + i <= endTimeBucket); while (timeBucket <= endTimeBucket);
JsonArray metrics = new JsonArray(); JsonArray metrics = new JsonArray();
MultiGetResponse multiGetResponse = prepareMultiGet.get(); MultiGetResponse multiGetResponse = prepareMultiGet.get();
......
...@@ -16,6 +16,7 @@ import org.elasticsearch.search.aggregations.AggregationBuilders; ...@@ -16,6 +16,7 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.metrics.sum.Sum; import org.elasticsearch.search.aggregations.metrics.sum.Sum;
import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.skywalking.apm.collector.storage.define.jvm.GCMetricTable; import org.skywalking.apm.collector.storage.define.jvm.GCMetricTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
import org.skywalking.apm.network.proto.GCPhrase; import org.skywalking.apm.network.proto.GCPhrase;
...@@ -89,13 +90,13 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO { ...@@ -89,13 +90,13 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO {
JsonObject response = new JsonObject(); JsonObject response = new JsonObject();
MultiGetRequestBuilder youngPrepareMultiGet = getClient().prepareMultiGet(); MultiGetRequestBuilder youngPrepareMultiGet = getClient().prepareMultiGet();
int i = 0; long timeBucket = startTimeBucket;
do { do {
String youngId = (startTimeBucket + i) + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + GCPhrase.NEW_VALUE; timeBucket = TimeBucketUtils.INSTANCE.addSecondForSecondTimeBucket(TimeBucketUtils.TimeBucketType.SECOND.name(), timeBucket, 1);
String youngId = timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + GCPhrase.NEW_VALUE;
youngPrepareMultiGet.add(GCMetricTable.TABLE, GCMetricTable.TABLE_TYPE, youngId); youngPrepareMultiGet.add(GCMetricTable.TABLE, GCMetricTable.TABLE_TYPE, youngId);
i++;
} }
while (startTimeBucket + i <= endTimeBucket); while (timeBucket <= endTimeBucket);
JsonArray youngArray = new JsonArray(); JsonArray youngArray = new JsonArray();
MultiGetResponse multiGetResponse = youngPrepareMultiGet.get(); MultiGetResponse multiGetResponse = youngPrepareMultiGet.get();
...@@ -109,13 +110,13 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO { ...@@ -109,13 +110,13 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO {
response.add("ygc", youngArray); response.add("ygc", youngArray);
MultiGetRequestBuilder oldPrepareMultiGet = getClient().prepareMultiGet(); MultiGetRequestBuilder oldPrepareMultiGet = getClient().prepareMultiGet();
i = 0; timeBucket = startTimeBucket;
do { do {
String oldId = (startTimeBucket + i) + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + GCPhrase.OLD_VALUE; timeBucket = TimeBucketUtils.INSTANCE.addSecondForSecondTimeBucket(TimeBucketUtils.TimeBucketType.SECOND.name(), timeBucket, 1);
String oldId = timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + GCPhrase.OLD_VALUE;
oldPrepareMultiGet.add(GCMetricTable.TABLE, GCMetricTable.TABLE_TYPE, oldId); oldPrepareMultiGet.add(GCMetricTable.TABLE, GCMetricTable.TABLE_TYPE, oldId);
i++;
} }
while (startTimeBucket + i <= endTimeBucket); while (timeBucket <= endTimeBucket);
JsonArray oldArray = new JsonArray(); JsonArray oldArray = new JsonArray();
......
...@@ -17,6 +17,7 @@ import org.elasticsearch.search.aggregations.AggregationBuilders; ...@@ -17,6 +17,7 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.metrics.sum.Sum; import org.elasticsearch.search.aggregations.metrics.sum.Sum;
import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.skywalking.apm.collector.storage.define.instance.InstPerformanceTable; import org.skywalking.apm.collector.storage.define.instance.InstPerformanceTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
...@@ -80,13 +81,13 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO { ...@@ -80,13 +81,13 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO {
@Override public JsonArray getTpsMetric(int instanceId, long startTimeBucket, long endTimeBucket) { @Override public JsonArray getTpsMetric(int instanceId, long startTimeBucket, long endTimeBucket) {
MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet(); MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet();
int i = 0; long timeBucket = startTimeBucket;
do { do {
String id = (startTimeBucket + i) + Const.ID_SPLIT + instanceId; String id = timeBucket + Const.ID_SPLIT + instanceId;
prepareMultiGet.add(InstPerformanceTable.TABLE, InstPerformanceTable.TABLE_TYPE, id); prepareMultiGet.add(InstPerformanceTable.TABLE, InstPerformanceTable.TABLE_TYPE, id);
i++; timeBucket = TimeBucketUtils.INSTANCE.addSecondForSecondTimeBucket(TimeBucketUtils.TimeBucketType.SECOND.name(), timeBucket, 1);
} }
while (startTimeBucket + i <= endTimeBucket); while (timeBucket <= endTimeBucket);
JsonArray metrics = new JsonArray(); JsonArray metrics = new JsonArray();
MultiGetResponse multiGetResponse = prepareMultiGet.get(); MultiGetResponse multiGetResponse = prepareMultiGet.get();
...@@ -116,12 +117,14 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO { ...@@ -116,12 +117,14 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO {
MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet(); MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet();
int i = 0; int i = 0;
long timeBucket;
do { do {
String id = (startTimeBucket + i) + Const.ID_SPLIT + instanceId; timeBucket = TimeBucketUtils.INSTANCE.addSecondForSecondTimeBucket(TimeBucketUtils.TimeBucketType.SECOND.name(), startTimeBucket, i);
String id = timeBucket + Const.ID_SPLIT + instanceId;
prepareMultiGet.add(InstPerformanceTable.TABLE, InstPerformanceTable.TABLE_TYPE, id); prepareMultiGet.add(InstPerformanceTable.TABLE, InstPerformanceTable.TABLE_TYPE, id);
i++; i++;
} }
while (startTimeBucket + i <= endTimeBucket); while (timeBucket <= endTimeBucket);
JsonArray metrics = new JsonArray(); JsonArray metrics = new JsonArray();
MultiGetResponse multiGetResponse = prepareMultiGet.get(); MultiGetResponse multiGetResponse = prepareMultiGet.get();
......
...@@ -7,6 +7,7 @@ import org.elasticsearch.action.get.MultiGetItemResponse; ...@@ -7,6 +7,7 @@ import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetRequestBuilder; import org.elasticsearch.action.get.MultiGetRequestBuilder;
import org.elasticsearch.action.get.MultiGetResponse; import org.elasticsearch.action.get.MultiGetResponse;
import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.skywalking.apm.collector.storage.define.jvm.MemoryMetricTable; import org.skywalking.apm.collector.storage.define.jvm.MemoryMetricTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
...@@ -36,22 +37,25 @@ public class MemoryMetricEsDAO extends EsDAO implements IMemoryMetricDAO { ...@@ -36,22 +37,25 @@ public class MemoryMetricEsDAO extends EsDAO implements IMemoryMetricDAO {
MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet(); MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet();
int i = 0; int i = 0;
long timeBucket = startTimeBucket;
do { do {
String id = (startTimeBucket + i) + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + isHeap; timeBucket = TimeBucketUtils.INSTANCE.addSecondForSecondTimeBucket(TimeBucketUtils.TimeBucketType.SECOND.name(), timeBucket, 1);
String id = timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + isHeap;
prepareMultiGet.add(MemoryMetricTable.TABLE, MemoryMetricTable.TABLE_TYPE, id); prepareMultiGet.add(MemoryMetricTable.TABLE, MemoryMetricTable.TABLE_TYPE, id);
i++;
} }
while (startTimeBucket + i <= endTimeBucket); while (timeBucket <= endTimeBucket);
JsonObject metric = new JsonObject(); JsonObject metric = new JsonObject();
JsonArray usedMetric = new JsonArray(); JsonArray usedMetric = new JsonArray();
MultiGetResponse multiGetResponse = prepareMultiGet.get(); MultiGetResponse multiGetResponse = prepareMultiGet.get();
for (MultiGetItemResponse response : multiGetResponse.getResponses()) { for (MultiGetItemResponse response : multiGetResponse.getResponses()) {
if (response.getResponse().isExists()) { if (response.getResponse().isExists()) {
metric.addProperty("max", ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_MAX)).intValue()); metric.addProperty("max", ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_MAX)).longValue());
metric.addProperty("init", ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_INIT)).intValue()); metric.addProperty("init", ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_INIT)).longValue());
usedMetric.add(((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_USED)).intValue()); usedMetric.add(((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_USED)).longValue());
} else { } else {
metric.addProperty("max", 0);
metric.addProperty("init",0);
usedMetric.add(0); usedMetric.add(0);
} }
} }
......
...@@ -7,6 +7,7 @@ import org.elasticsearch.action.get.MultiGetItemResponse; ...@@ -7,6 +7,7 @@ import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetRequestBuilder; import org.elasticsearch.action.get.MultiGetRequestBuilder;
import org.elasticsearch.action.get.MultiGetResponse; import org.elasticsearch.action.get.MultiGetResponse;
import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.skywalking.apm.collector.storage.define.jvm.MemoryPoolMetricTable; import org.skywalking.apm.collector.storage.define.jvm.MemoryPoolMetricTable;
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
...@@ -36,23 +37,25 @@ public class MemoryPoolMetricEsDAO extends EsDAO implements IMemoryPoolMetricDAO ...@@ -36,23 +37,25 @@ public class MemoryPoolMetricEsDAO extends EsDAO implements IMemoryPoolMetricDAO
int poolType) { int poolType) {
MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet(); MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet();
int i = 0; long timeBucket = startTimeBucket;
do { do {
String id = (startTimeBucket + i) + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + isHeap + Const.ID_SPLIT + poolType; timeBucket = TimeBucketUtils.INSTANCE.addSecondForSecondTimeBucket(TimeBucketUtils.TimeBucketType.SECOND.name(), timeBucket, 1);
String id = timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + isHeap + Const.ID_SPLIT + poolType;
prepareMultiGet.add(MemoryPoolMetricTable.TABLE, MemoryPoolMetricTable.TABLE_TYPE, id); prepareMultiGet.add(MemoryPoolMetricTable.TABLE, MemoryPoolMetricTable.TABLE_TYPE, id);
i++;
} }
while (startTimeBucket + i <= endTimeBucket); while (timeBucket <= endTimeBucket);
JsonObject metric = new JsonObject(); JsonObject metric = new JsonObject();
JsonArray usedMetric = new JsonArray(); JsonArray usedMetric = new JsonArray();
MultiGetResponse multiGetResponse = prepareMultiGet.get(); MultiGetResponse multiGetResponse = prepareMultiGet.get();
for (MultiGetItemResponse response : multiGetResponse.getResponses()) { for (MultiGetItemResponse response : multiGetResponse.getResponses()) {
if (response.getResponse().isExists()) { if (response.getResponse().isExists()) {
metric.addProperty("max", ((Number)response.getResponse().getSource().get(MemoryPoolMetricTable.COLUMN_MAX)).intValue()); metric.addProperty("max", ((Number)response.getResponse().getSource().get(MemoryPoolMetricTable.COLUMN_MAX)).longValue());
metric.addProperty("init", ((Number)response.getResponse().getSource().get(MemoryPoolMetricTable.COLUMN_INIT)).intValue()); metric.addProperty("init", ((Number)response.getResponse().getSource().get(MemoryPoolMetricTable.COLUMN_INIT)).longValue());
usedMetric.add(((Number)response.getResponse().getSource().get(MemoryPoolMetricTable.COLUMN_USED)).intValue()); usedMetric.add(((Number)response.getResponse().getSource().get(MemoryPoolMetricTable.COLUMN_USED)).longValue());
} else { } else {
metric.addProperty("max", 0);
metric.addProperty("init", 0);
usedMetric.add(0); usedMetric.add(0);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册