From 69bdfbad253f10d0f4c8051c272d93da8e402e19 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Tue, 9 Jan 2018 15:38:38 +0800 Subject: [PATCH] GC metric pyramid aggregate test successful. --- .../handler/JVMMetricsServiceHandler.java | 2 +- .../JVMMetricServiceHandlerTestCase.java | 11 +++++ .../jvm/provider/service/GCMetricService.java | 8 +++- .../worker/gc/GCDayMetricTransformNode.java | 7 ++-- .../worker/gc/GCHourMetricTransformNode.java | 7 ++-- .../jvm/provider/worker/gc/GCMetricCopy.java | 42 +++++++++++++++++++ .../gc/GCMinuteMetricTransformNode.java | 7 ++-- .../worker/gc/GCMonthMetricTransformNode.java | 7 ++-- .../apm/collector/storage/StorageModule.java | 9 ++++ .../collector/storage/table/jvm/GCMetric.java | 11 ++--- .../storage/table/jvm/GCMetricTable.java | 3 +- .../storage/es/StorageModuleEsProvider.java | 13 ++++++ .../AbstractGCMetricEsPersistenceDAO.java | 16 ++++++- .../AbstractGCMetricEsTableDefine.java} | 21 ++++------ .../define/gc/GCDayMetricEsTableDefine.java | 37 ++++++++++++++++ .../define/gc/GCHourMetricEsTableDefine.java | 37 ++++++++++++++++ .../gc/GCMinuteMetricEsTableDefine.java | 37 ++++++++++++++++ .../define/gc/GCMonthMetricEsTableDefine.java | 37 ++++++++++++++++ .../gc/GCSecondMetricEsTableDefine.java | 37 ++++++++++++++++ .../resources/META-INF/defines/storage.define | 8 +++- .../dao/GCSecondMetricH2PersistenceDAO.java | 1 - .../h2/define/GCMetricH2TableDefine.java | 2 +- 22 files changed, 321 insertions(+), 39 deletions(-) create mode 100644 apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMetricCopy.java rename apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/{GCMetricEsTableDefine.java => gc/AbstractGCMetricEsTableDefine.java} (74%) create mode 100644 apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCDayMetricEsTableDefine.java create mode 100644 apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCHourMetricEsTableDefine.java create mode 100644 apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCMinuteMetricEsTableDefine.java create mode 100644 apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCMonthMetricEsTableDefine.java create mode 100644 apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCSecondMetricEsTableDefine.java diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricsServiceHandler.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricsServiceHandler.java index 403698a59..e89788935 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricsServiceHandler.java +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricsServiceHandler.java @@ -70,7 +70,7 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe // sendToCpuMetricService(instanceId, time, metric.getCpu()); sendToMemoryMetricService(instanceId, time, metric.getMemoryList()); sendToMemoryPoolMetricService(instanceId, time, metric.getMemoryPoolList()); -// sendToGCMetricService(instanceId, time, metric.getGcList()); + sendToGCMetricService(instanceId, time, metric.getGcList()); }); responseObserver.onNext(Downstream.newBuilder().build()); diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/test/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricServiceHandlerTestCase.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/test/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricServiceHandlerTestCase.java index ab7417e86..079696574 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/test/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricServiceHandlerTestCase.java +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/test/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricServiceHandlerTestCase.java @@ -20,6 +20,8 @@ package org.apache.skywalking.apm.collector.agent.grpc.provider.handler; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; +import org.apache.skywalking.apm.network.proto.GC; +import org.apache.skywalking.apm.network.proto.GCPhrase; import org.apache.skywalking.apm.network.proto.JVMMetric; import org.apache.skywalking.apm.network.proto.JVMMetrics; import org.apache.skywalking.apm.network.proto.JVMMetricsServiceGrpc; @@ -42,6 +44,7 @@ public class JVMMetricServiceHandlerTestCase { JVMMetric.Builder metricBuilder = JVMMetric.newBuilder(); metricBuilder.setTime(System.currentTimeMillis()); + buildGCMetric(metricBuilder); buildMemoryMetric(metricBuilder); buildMemoryPoolMetric(metricBuilder); @@ -71,4 +74,12 @@ public class JVMMetricServiceHandlerTestCase { metricBuilder.addMemory(builder); } + + private static void buildGCMetric(JVMMetric.Builder metricBuilder) { + GC.Builder builder = GC.newBuilder(); + builder.setPhrase(GCPhrase.NEW); + builder.setCount(2); + + metricBuilder.addGc(builder); + } } diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/GCMetricService.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/GCMetricService.java index dad3d8653..0729bca9b 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/GCMetricService.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/GCMetricService.java @@ -45,12 +45,16 @@ public class GCMetricService implements IGCMetricService { } @Override public void send(int instanceId, long timeBucket, int phraseValue, long count, long time) { + String metricId = instanceId + Const.ID_SPLIT + String.valueOf(phraseValue); + String id = timeBucket + Const.ID_SPLIT + metricId; + GCMetric gcMetric = new GCMetric(); - gcMetric.setId(timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + String.valueOf(phraseValue)); + gcMetric.setId(id); + gcMetric.setMetricId(metricId); gcMetric.setInstanceId(instanceId); gcMetric.setPhrase(phraseValue); gcMetric.setCount(count); - gcMetric.setTime(time); + gcMetric.setTimes(1L); gcMetric.setTimeBucket(timeBucket); logger.debug("push to gc metric graph, id: {}", gcMetric.getId()); diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCDayMetricTransformNode.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCDayMetricTransformNode.java index 273246231..edc349e1c 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCDayMetricTransformNode.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCDayMetricTransformNode.java @@ -36,9 +36,10 @@ public class GCDayMetricTransformNode implements NodeProcessor next) { long timeBucket = TimeBucketUtils.INSTANCE.secondToDay(gcMetric.getTimeBucket()); - gcMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + gcMetric.getMetricId()); - gcMetric.setTimeBucket(timeBucket); - next.execute(gcMetric); + GCMetric newGCMetric = GCMetricCopy.copy(gcMetric); + newGCMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + gcMetric.getMetricId()); + newGCMetric.setTimeBucket(timeBucket); + next.execute(newGCMetric); } } diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCHourMetricTransformNode.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCHourMetricTransformNode.java index 4f4615e4f..33d870a0f 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCHourMetricTransformNode.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCHourMetricTransformNode.java @@ -36,9 +36,10 @@ public class GCHourMetricTransformNode implements NodeProcessor next) { long timeBucket = TimeBucketUtils.INSTANCE.secondToHour(gcMetric.getTimeBucket()); - gcMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + gcMetric.getMetricId()); - gcMetric.setTimeBucket(timeBucket); - next.execute(gcMetric); + GCMetric newGCMetric = GCMetricCopy.copy(gcMetric); + newGCMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + gcMetric.getMetricId()); + newGCMetric.setTimeBucket(timeBucket); + next.execute(newGCMetric); } } diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMetricCopy.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMetricCopy.java new file mode 100644 index 000000000..b914a294b --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMetricCopy.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.jvm.provider.worker.gc; + +import org.apache.skywalking.apm.collector.storage.table.jvm.GCMetric; + +/** + * @author peng-yongsheng + */ +public class GCMetricCopy { + + public static GCMetric copy(GCMetric gcMetric) { + GCMetric newGCMetric = new GCMetric(); + newGCMetric.setId(gcMetric.getId()); + newGCMetric.setMetricId(gcMetric.getMetricId()); + + newGCMetric.setInstanceId(gcMetric.getInstanceId()); + newGCMetric.setPhrase(gcMetric.getPhrase()); + + newGCMetric.setCount(gcMetric.getCount()); + newGCMetric.setTimes(gcMetric.getTimes()); + + newGCMetric.setTimeBucket(gcMetric.getTimeBucket()); + return newGCMetric; + } +} diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMinuteMetricTransformNode.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMinuteMetricTransformNode.java index 49e37ed38..8f04d3150 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMinuteMetricTransformNode.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMinuteMetricTransformNode.java @@ -36,9 +36,10 @@ public class GCMinuteMetricTransformNode implements NodeProcessor next) { long timeBucket = TimeBucketUtils.INSTANCE.secondToMinute(gcMetric.getTimeBucket()); - gcMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + gcMetric.getMetricId()); - gcMetric.setTimeBucket(timeBucket); - next.execute(gcMetric); + GCMetric newGCMetric = GCMetricCopy.copy(gcMetric); + newGCMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + gcMetric.getMetricId()); + newGCMetric.setTimeBucket(timeBucket); + next.execute(newGCMetric); } } diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMonthMetricTransformNode.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMonthMetricTransformNode.java index 540aca2d3..05fd93927 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMonthMetricTransformNode.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/gc/GCMonthMetricTransformNode.java @@ -36,9 +36,10 @@ public class GCMonthMetricTransformNode implements NodeProcessor next) { long timeBucket = TimeBucketUtils.INSTANCE.secondToMonth(gcMetric.getTimeBucket()); - gcMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + gcMetric.getMetricId()); - gcMetric.setTimeBucket(timeBucket); - next.execute(gcMetric); + GCMetric newGCMetric = GCMetricCopy.copy(gcMetric); + newGCMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + gcMetric.getMetricId()); + newGCMetric.setTimeBucket(timeBucket); + next.execute(newGCMetric); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java index 8ac2e96e4..c607d8042 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java @@ -72,6 +72,10 @@ import org.apache.skywalking.apm.collector.storage.dao.cache.IInstanceCacheDAO; import org.apache.skywalking.apm.collector.storage.dao.cache.INetworkAddressCacheDAO; import org.apache.skywalking.apm.collector.storage.dao.cache.IServiceNameCacheDAO; import org.apache.skywalking.apm.collector.storage.dao.cpump.ICpuSecondMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCDayMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCHourMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCMinuteMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCMonthMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCSecondMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.imp.IInstanceDayMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.imp.IInstanceHourMetricPersistenceDAO; @@ -148,7 +152,12 @@ public class StorageModule extends Module { private void addPersistenceDAO(List classes) { classes.add(ICpuSecondMetricPersistenceDAO.class); + classes.add(IGCSecondMetricPersistenceDAO.class); + classes.add(IGCMinuteMetricPersistenceDAO.class); + classes.add(IGCHourMetricPersistenceDAO.class); + classes.add(IGCDayMetricPersistenceDAO.class); + classes.add(IGCMonthMetricPersistenceDAO.class); classes.add(IMemorySecondMetricPersistenceDAO.class); classes.add(IMemoryMinuteMetricPersistenceDAO.class); diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/GCMetric.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/GCMetric.java index 68050dc2d..3e4f59218 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/GCMetric.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/GCMetric.java @@ -20,6 +20,7 @@ package org.apache.skywalking.apm.collector.storage.table.jvm; import org.apache.skywalking.apm.collector.core.data.Column; import org.apache.skywalking.apm.collector.core.data.StreamData; +import org.apache.skywalking.apm.collector.core.data.operator.AddOperation; import org.apache.skywalking.apm.collector.core.data.operator.CoverOperation; import org.apache.skywalking.apm.collector.core.data.operator.NonOperation; @@ -34,8 +35,8 @@ public class GCMetric extends StreamData { }; private static final Column[] LONG_COLUMNS = { - new Column(GCMetricTable.COLUMN_COUNT, new CoverOperation()), - new Column(GCMetricTable.COLUMN_TIME, new CoverOperation()), + new Column(GCMetricTable.COLUMN_COUNT, new AddOperation()), + new Column(GCMetricTable.COLUMN_TIMES, new AddOperation()), new Column(GCMetricTable.COLUMN_TIME_BUCKET, new CoverOperation()), }; @@ -78,12 +79,12 @@ public class GCMetric extends StreamData { setDataLong(0, count); } - public Long getTime() { + public Long getTimes() { return getDataLong(1); } - public void setTime(Long time) { - setDataLong(1, time); + public void setTimes(Long times) { + setDataLong(1, times); } public Long getTimeBucket() { diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/GCMetricTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/GCMetricTable.java index eb42e1527..7644364ed 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/GCMetricTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/GCMetricTable.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.storage.table.jvm; import org.apache.skywalking.apm.collector.core.data.CommonTable; @@ -29,5 +28,5 @@ public class GCMetricTable extends CommonTable { public static final String COLUMN_INSTANCE_ID = "instance_id"; public static final String COLUMN_PHRASE = "phrase"; public static final String COLUMN_COUNT = "count"; - public static final String COLUMN_TIME = "time"; + public static final String COLUMN_TIMES = "times"; } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java index d460d82c7..d4225309e 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java @@ -81,6 +81,10 @@ import org.apache.skywalking.apm.collector.storage.dao.cache.IInstanceCacheDAO; import org.apache.skywalking.apm.collector.storage.dao.cache.INetworkAddressCacheDAO; import org.apache.skywalking.apm.collector.storage.dao.cache.IServiceNameCacheDAO; import org.apache.skywalking.apm.collector.storage.dao.cpump.ICpuSecondMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCDayMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCHourMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCMinuteMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCMonthMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.gcmp.IGCSecondMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.imp.IInstanceDayMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.imp.IInstanceHourMetricPersistenceDAO; @@ -168,6 +172,10 @@ import org.apache.skywalking.apm.collector.storage.es.dao.cache.InstanceEsCacheD import org.apache.skywalking.apm.collector.storage.es.dao.cache.NetworkAddressEsCacheDAO; import org.apache.skywalking.apm.collector.storage.es.dao.cache.ServiceNameEsCacheDAO; import org.apache.skywalking.apm.collector.storage.es.dao.cpump.CpuSecondMetricEsPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.es.dao.gcmp.GCDayMetricEsPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.es.dao.gcmp.GCHourMetricEsPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.es.dao.gcmp.GCMinuteMetricEsPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.es.dao.gcmp.GCMonthMetricEsPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.dao.gcmp.GCSecondMetricEsPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.dao.imp.InstanceDayMetricEsPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.dao.imp.InstanceHourMetricEsPersistenceDAO; @@ -294,7 +302,12 @@ public class StorageModuleEsProvider extends ModuleProvider { private void registerPersistenceDAO() throws ServiceNotProvidedException { this.registerServiceImplementation(ICpuSecondMetricPersistenceDAO.class, new CpuSecondMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IGCSecondMetricPersistenceDAO.class, new GCSecondMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IGCMinuteMetricPersistenceDAO.class, new GCMinuteMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IGCHourMetricPersistenceDAO.class, new GCHourMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IGCDayMetricPersistenceDAO.class, new GCDayMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IGCMonthMetricPersistenceDAO.class, new GCMonthMetricEsPersistenceDAO(elasticSearchClient)); this.registerServiceImplementation(IMemorySecondMetricPersistenceDAO.class, new MemorySecondMetricEsPersistenceDAO(elasticSearchClient)); this.registerServiceImplementation(IMemoryMinuteMetricPersistenceDAO.class, new MemoryMinuteMetricEsPersistenceDAO(elasticSearchClient)); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/gcmp/AbstractGCMetricEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/gcmp/AbstractGCMetricEsPersistenceDAO.java index 893626c85..b87d5fb33 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/gcmp/AbstractGCMetricEsPersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/gcmp/AbstractGCMetricEsPersistenceDAO.java @@ -39,7 +39,19 @@ public abstract class AbstractGCMetricEsPersistenceDAO extends AbstractPersisten } @Override protected final GCMetric esDataToStreamData(Map source) { - return null; + GCMetric gcMetric = new GCMetric(); + gcMetric.setId((String)source.get(GCMetricTable.COLUMN_ID)); + gcMetric.setMetricId((String)source.get(GCMetricTable.COLUMN_METRIC_ID)); + + gcMetric.setInstanceId(((Number)source.get(GCMetricTable.COLUMN_INSTANCE_ID)).intValue()); + gcMetric.setPhrase(((Number)source.get(GCMetricTable.COLUMN_PHRASE)).intValue()); + + gcMetric.setCount(((Number)source.get(GCMetricTable.COLUMN_COUNT)).longValue()); + gcMetric.setTimes(((Number)source.get(GCMetricTable.COLUMN_TIMES)).longValue()); + + gcMetric.setTimeBucket(((Number)source.get(GCMetricTable.COLUMN_TIME_BUCKET)).longValue()); + + return gcMetric; } @Override protected final Map esStreamDataToEsData(GCMetric streamData) { @@ -50,7 +62,7 @@ public abstract class AbstractGCMetricEsPersistenceDAO extends AbstractPersisten source.put(GCMetricTable.COLUMN_INSTANCE_ID, streamData.getInstanceId()); source.put(GCMetricTable.COLUMN_PHRASE, streamData.getPhrase()); source.put(GCMetricTable.COLUMN_COUNT, streamData.getCount()); - source.put(GCMetricTable.COLUMN_TIME, streamData.getTime()); + source.put(GCMetricTable.COLUMN_TIMES, streamData.getTimes()); source.put(GCMetricTable.COLUMN_TIME_BUCKET, streamData.getTimeBucket()); return source; diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/GCMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/AbstractGCMetricEsTableDefine.java similarity index 74% rename from apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/GCMetricEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/AbstractGCMetricEsTableDefine.java index 235eed56c..efbdc7fd0 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/GCMetricEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/AbstractGCMetricEsTableDefine.java @@ -16,31 +16,28 @@ * */ - -package org.apache.skywalking.apm.collector.storage.es.define; +package org.apache.skywalking.apm.collector.storage.es.define.gc; import org.apache.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; -import org.apache.skywalking.apm.collector.storage.table.jvm.GCMetricTable; import org.apache.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.apache.skywalking.apm.collector.storage.table.jvm.GCMetricTable; /** * @author peng-yongsheng */ -public class GCMetricEsTableDefine extends ElasticSearchTableDefine { +public abstract class AbstractGCMetricEsTableDefine extends ElasticSearchTableDefine { - public GCMetricEsTableDefine() { - super(GCMetricTable.TABLE); + public AbstractGCMetricEsTableDefine(String name) { + super(name); } - @Override public int refreshInterval() { - return 1; - } - - @Override public void initialize() { + @Override public final void initialize() { + addColumn(new ElasticSearchColumnDefine(GCMetricTable.COLUMN_ID, ElasticSearchColumnDefine.Type.Keyword.name())); + addColumn(new ElasticSearchColumnDefine(GCMetricTable.COLUMN_METRIC_ID, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(GCMetricTable.COLUMN_INSTANCE_ID, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(GCMetricTable.COLUMN_PHRASE, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(GCMetricTable.COLUMN_COUNT, ElasticSearchColumnDefine.Type.Long.name())); - addColumn(new ElasticSearchColumnDefine(GCMetricTable.COLUMN_TIME, ElasticSearchColumnDefine.Type.Long.name())); + addColumn(new ElasticSearchColumnDefine(GCMetricTable.COLUMN_TIMES, ElasticSearchColumnDefine.Type.Long.name())); addColumn(new ElasticSearchColumnDefine(GCMetricTable.COLUMN_TIME_BUCKET, ElasticSearchColumnDefine.Type.Long.name())); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCDayMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCDayMetricEsTableDefine.java new file mode 100644 index 000000000..7cc793382 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCDayMetricEsTableDefine.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.storage.es.define.gc; + +import org.apache.skywalking.apm.collector.core.storage.TimePyramid; +import org.apache.skywalking.apm.collector.core.util.Const; +import org.apache.skywalking.apm.collector.storage.table.jvm.GCMetricTable; + +/** + * @author peng-yongsheng + */ +public class GCDayMetricEsTableDefine extends AbstractGCMetricEsTableDefine { + + public GCDayMetricEsTableDefine() { + super(GCMetricTable.TABLE + Const.ID_SPLIT + TimePyramid.Day.getName()); + } + + @Override public int refreshInterval() { + return 1; + } +} diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCHourMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCHourMetricEsTableDefine.java new file mode 100644 index 000000000..d5bcbfc72 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCHourMetricEsTableDefine.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.storage.es.define.gc; + +import org.apache.skywalking.apm.collector.core.storage.TimePyramid; +import org.apache.skywalking.apm.collector.core.util.Const; +import org.apache.skywalking.apm.collector.storage.table.jvm.GCMetricTable; + +/** + * @author peng-yongsheng + */ +public class GCHourMetricEsTableDefine extends AbstractGCMetricEsTableDefine { + + public GCHourMetricEsTableDefine() { + super(GCMetricTable.TABLE + Const.ID_SPLIT + TimePyramid.Hour.getName()); + } + + @Override public int refreshInterval() { + return 1; + } +} diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCMinuteMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCMinuteMetricEsTableDefine.java new file mode 100644 index 000000000..ef0cefb3f --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCMinuteMetricEsTableDefine.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.storage.es.define.gc; + +import org.apache.skywalking.apm.collector.core.storage.TimePyramid; +import org.apache.skywalking.apm.collector.core.util.Const; +import org.apache.skywalking.apm.collector.storage.table.jvm.GCMetricTable; + +/** + * @author peng-yongsheng + */ +public class GCMinuteMetricEsTableDefine extends AbstractGCMetricEsTableDefine { + + public GCMinuteMetricEsTableDefine() { + super(GCMetricTable.TABLE + Const.ID_SPLIT + TimePyramid.Minute.getName()); + } + + @Override public int refreshInterval() { + return 1; + } +} diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCMonthMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCMonthMetricEsTableDefine.java new file mode 100644 index 000000000..c10763571 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCMonthMetricEsTableDefine.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.storage.es.define.gc; + +import org.apache.skywalking.apm.collector.core.storage.TimePyramid; +import org.apache.skywalking.apm.collector.core.util.Const; +import org.apache.skywalking.apm.collector.storage.table.jvm.GCMetricTable; + +/** + * @author peng-yongsheng + */ +public class GCMonthMetricEsTableDefine extends AbstractGCMetricEsTableDefine { + + public GCMonthMetricEsTableDefine() { + super(GCMetricTable.TABLE + Const.ID_SPLIT + TimePyramid.Month.getName()); + } + + @Override public int refreshInterval() { + return 1; + } +} diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCSecondMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCSecondMetricEsTableDefine.java new file mode 100644 index 000000000..b9d4800b7 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/gc/GCSecondMetricEsTableDefine.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.storage.es.define.gc; + +import org.apache.skywalking.apm.collector.core.storage.TimePyramid; +import org.apache.skywalking.apm.collector.core.util.Const; +import org.apache.skywalking.apm.collector.storage.table.jvm.GCMetricTable; + +/** + * @author peng-yongsheng + */ +public class GCSecondMetricEsTableDefine extends AbstractGCMetricEsTableDefine { + + public GCSecondMetricEsTableDefine() { + super(GCMetricTable.TABLE + Const.ID_SPLIT + TimePyramid.Second.getName()); + } + + @Override public int refreshInterval() { + return 1; + } +} diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define index ca43e611e..aae5c67bf 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define @@ -75,4 +75,10 @@ org.apache.skywalking.apm.collector.storage.es.define.memory.MemorySecondMetricE org.apache.skywalking.apm.collector.storage.es.define.memory.MemoryMinuteMetricEsTableDefine org.apache.skywalking.apm.collector.storage.es.define.memory.MemoryHourMetricEsTableDefine org.apache.skywalking.apm.collector.storage.es.define.memory.MemoryDayMetricEsTableDefine -org.apache.skywalking.apm.collector.storage.es.define.memory.MemoryMonthMetricEsTableDefine \ No newline at end of file +org.apache.skywalking.apm.collector.storage.es.define.memory.MemoryMonthMetricEsTableDefine + +org.apache.skywalking.apm.collector.storage.es.define.gc.GCSecondMetricEsTableDefine +org.apache.skywalking.apm.collector.storage.es.define.gc.GCMinuteMetricEsTableDefine +org.apache.skywalking.apm.collector.storage.es.define.gc.GCHourMetricEsTableDefine +org.apache.skywalking.apm.collector.storage.es.define.gc.GCDayMetricEsTableDefine +org.apache.skywalking.apm.collector.storage.es.define.gc.GCMonthMetricEsTableDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/GCSecondMetricH2PersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/GCSecondMetricH2PersistenceDAO.java index 2904a14c7..d6c9e3388 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/GCSecondMetricH2PersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/GCSecondMetricH2PersistenceDAO.java @@ -49,7 +49,6 @@ public class GCSecondMetricH2PersistenceDAO extends H2DAO implements IGCSecondMe source.put(GCMetricTable.COLUMN_INSTANCE_ID, data.getInstanceId()); source.put(GCMetricTable.COLUMN_PHRASE, data.getPhrase()); source.put(GCMetricTable.COLUMN_COUNT, data.getCount()); - source.put(GCMetricTable.COLUMN_TIME, data.getTime()); source.put(GCMetricTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); String sql = SqlBuilder.buildBatchInsertSql(GCMetricTable.TABLE, source.keySet()); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/GCMetricH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/GCMetricH2TableDefine.java index c6e3164b5..c62e38944 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/GCMetricH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/GCMetricH2TableDefine.java @@ -37,7 +37,7 @@ public class GCMetricH2TableDefine extends H2TableDefine { addColumn(new H2ColumnDefine(GCMetricTable.COLUMN_INSTANCE_ID, H2ColumnDefine.Type.Int.name())); addColumn(new H2ColumnDefine(GCMetricTable.COLUMN_PHRASE, H2ColumnDefine.Type.Int.name())); addColumn(new H2ColumnDefine(GCMetricTable.COLUMN_COUNT, H2ColumnDefine.Type.Bigint.name())); - addColumn(new H2ColumnDefine(GCMetricTable.COLUMN_TIME, H2ColumnDefine.Type.Bigint.name())); + addColumn(new H2ColumnDefine(GCMetricTable.COLUMN_TIMES, H2ColumnDefine.Type.Bigint.name())); addColumn(new H2ColumnDefine(GCMetricTable.COLUMN_TIME_BUCKET, H2ColumnDefine.Type.Bigint.name())); } }