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 b9a468ec8..403698a59 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 @@ -68,7 +68,7 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe long time = TimeBucketUtils.INSTANCE.getSecondTimeBucket(metric.getTime()); // sendToInstanceHeartBeatService(instanceId, metric.getTime()); // sendToCpuMetricService(instanceId, time, metric.getCpu()); -// sendToMemoryMetricService(instanceId, time, metric.getMemoryList()); + sendToMemoryMetricService(instanceId, time, metric.getMemoryList()); sendToMemoryPoolMetricService(instanceId, time, metric.getMemoryPoolList()); // sendToGCMetricService(instanceId, time, metric.getGcList()); }); 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 5a32219e5..ab7417e86 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 @@ -23,6 +23,7 @@ import io.grpc.ManagedChannelBuilder; import org.apache.skywalking.apm.network.proto.JVMMetric; import org.apache.skywalking.apm.network.proto.JVMMetrics; import org.apache.skywalking.apm.network.proto.JVMMetricsServiceGrpc; +import org.apache.skywalking.apm.network.proto.Memory; import org.apache.skywalking.apm.network.proto.MemoryPool; import org.apache.skywalking.apm.network.proto.PoolType; @@ -41,7 +42,9 @@ public class JVMMetricServiceHandlerTestCase { JVMMetric.Builder metricBuilder = JVMMetric.newBuilder(); metricBuilder.setTime(System.currentTimeMillis()); + buildMemoryMetric(metricBuilder); buildMemoryPoolMetric(metricBuilder); + builder.addMetrics(metricBuilder.build()); blockingStub.collect(builder.build()); @@ -57,4 +60,15 @@ public class JVMMetricServiceHandlerTestCase { metricBuilder.addMemoryPool(builder); } + + private static void buildMemoryMetric(JVMMetric.Builder metricBuilder) { + Memory.Builder builder = Memory.newBuilder(); + builder.setInit(20); + builder.setMax(50); + builder.setCommitted(20); + builder.setUsed(15); + builder.setIsHeap(true); + + metricBuilder.addMemory(builder); + } } diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-define/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/define/service/IMemoryMetricService.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-define/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/define/service/IMemoryMetricService.java index e793ecc04..522d45ec3 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-define/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/define/service/IMemoryMetricService.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-define/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/define/service/IMemoryMetricService.java @@ -24,5 +24,5 @@ import org.apache.skywalking.apm.collector.core.module.Service; * @author peng-yongsheng */ public interface IMemoryMetricService extends Service { - void send(int instanceId, long timeBucket, boolean isHeap, long init, long max, long used, long commited); + void send(int instanceId, long timeBucket, boolean isHeap, long init, long max, long used, long committed); } diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/MemoryMetricService.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/MemoryMetricService.java index 7b0412f84..c9ed19bed 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/MemoryMetricService.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/service/MemoryMetricService.java @@ -45,15 +45,20 @@ public class MemoryMetricService implements IMemoryMetricService { } @Override - public void send(int instanceId, long timeBucket, boolean isHeap, long init, long max, long used, long commited) { + public void send(int instanceId, long timeBucket, boolean isHeap, long init, long max, long used, long committed) { + String metricId = instanceId + Const.ID_SPLIT + String.valueOf(isHeap); + String id = timeBucket + Const.ID_SPLIT + metricId; + MemoryMetric memoryMetric = new MemoryMetric(); - memoryMetric.setId(timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + String.valueOf(isHeap)); + memoryMetric.setId(id); + memoryMetric.setMetricId(metricId); memoryMetric.setInstanceId(instanceId); memoryMetric.setIsHeap(isHeap); memoryMetric.setInit(init); memoryMetric.setMax(max); memoryMetric.setUsed(used); - memoryMetric.setCommitted(commited); + memoryMetric.setCommitted(committed); + memoryMetric.setTimes(1L); memoryMetric.setTimeBucket(timeBucket); logger.debug("push to memory metric graph, id: {}", memoryMetric.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/memory/MemoryDayMetricTransformNode.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryDayMetricTransformNode.java index 5b20722ed..99568a410 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryDayMetricTransformNode.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryDayMetricTransformNode.java @@ -36,9 +36,10 @@ public class MemoryDayMetricTransformNode implements NodeProcessor next) { long timeBucket = TimeBucketUtils.INSTANCE.secondToDay(memoryMetric.getTimeBucket()); - memoryMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + memoryMetric.getMetricId()); - memoryMetric.setTimeBucket(timeBucket); - next.execute(memoryMetric); + MemoryMetric newMemoryMetric = MemoryMetricCopy.copy(memoryMetric); + newMemoryMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + memoryMetric.getMetricId()); + newMemoryMetric.setTimeBucket(timeBucket); + next.execute(newMemoryMetric); } } diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryHourMetricTransformNode.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryHourMetricTransformNode.java index 6075d3e10..dafed4b60 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryHourMetricTransformNode.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryHourMetricTransformNode.java @@ -36,9 +36,10 @@ public class MemoryHourMetricTransformNode implements NodeProcessor next) { long timeBucket = TimeBucketUtils.INSTANCE.secondToHour(memoryMetric.getTimeBucket()); - memoryMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + memoryMetric.getMetricId()); - memoryMetric.setTimeBucket(timeBucket); - next.execute(memoryMetric); + MemoryMetric newMemoryMetric = MemoryMetricCopy.copy(memoryMetric); + newMemoryMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + memoryMetric.getMetricId()); + newMemoryMetric.setTimeBucket(timeBucket); + next.execute(newMemoryMetric); } } diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMetricCopy.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMetricCopy.java new file mode 100644 index 000000000..55b9b134e --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMetricCopy.java @@ -0,0 +1,45 @@ +/* + * 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.memory; + +import org.apache.skywalking.apm.collector.storage.table.jvm.MemoryMetric; + +/** + * @author peng-yongsheng + */ +public class MemoryMetricCopy { + + public static MemoryMetric copy(MemoryMetric memoryMetric) { + MemoryMetric newMemoryMetric = new MemoryMetric(); + newMemoryMetric.setId(memoryMetric.getId()); + newMemoryMetric.setMetricId(memoryMetric.getMetricId()); + + newMemoryMetric.setInstanceId(memoryMetric.getInstanceId()); + newMemoryMetric.setIsHeap(memoryMetric.getIsHeap()); + + newMemoryMetric.setInit(memoryMetric.getInit()); + newMemoryMetric.setMax(memoryMetric.getMax()); + newMemoryMetric.setUsed(memoryMetric.getUsed()); + newMemoryMetric.setCommitted(memoryMetric.getCommitted()); + newMemoryMetric.setTimes(memoryMetric.getTimes()); + + newMemoryMetric.setTimeBucket(memoryMetric.getTimeBucket()); + return newMemoryMetric; + } +} diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMinuteMetricTransformNode.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMinuteMetricTransformNode.java index 5dce79c88..2e5de1be5 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMinuteMetricTransformNode.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMinuteMetricTransformNode.java @@ -36,9 +36,10 @@ public class MemoryMinuteMetricTransformNode implements NodeProcessor next) { long timeBucket = TimeBucketUtils.INSTANCE.secondToMinute(memoryMetric.getTimeBucket()); - memoryMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + memoryMetric.getMetricId()); - memoryMetric.setTimeBucket(timeBucket); - next.execute(memoryMetric); + MemoryMetric newMemoryMetric = MemoryMetricCopy.copy(memoryMetric); + newMemoryMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + memoryMetric.getMetricId()); + newMemoryMetric.setTimeBucket(timeBucket); + next.execute(newMemoryMetric); } } diff --git a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMonthMetricTransformNode.java b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMonthMetricTransformNode.java index 54141100f..e15d17559 100644 --- a/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMonthMetricTransformNode.java +++ b/apm-collector/apm-collector-analysis/analysis-jvm/jvm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/jvm/provider/worker/memory/MemoryMonthMetricTransformNode.java @@ -36,9 +36,10 @@ public class MemoryMonthMetricTransformNode implements NodeProcessor next) { long timeBucket = TimeBucketUtils.INSTANCE.secondToMonth(memoryMetric.getTimeBucket()); - memoryMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + memoryMetric.getMetricId()); - memoryMetric.setTimeBucket(timeBucket); - next.execute(memoryMetric); + MemoryMetric newMemoryMetric = MemoryMetricCopy.copy(memoryMetric); + newMemoryMetric.setId(String.valueOf(timeBucket) + Const.ID_SPLIT + memoryMetric.getMetricId()); + newMemoryMetric.setTimeBucket(timeBucket); + next.execute(newMemoryMetric); } } 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 9e7d2c2e5..8ac2e96e4 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 @@ -85,6 +85,10 @@ import org.apache.skywalking.apm.collector.storage.dao.irmp.IInstanceReferenceDa import org.apache.skywalking.apm.collector.storage.dao.irmp.IInstanceReferenceHourMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.irmp.IInstanceReferenceMinuteMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.irmp.IInstanceReferenceMonthMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemoryDayMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemoryHourMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemoryMinuteMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemoryMonthMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemorySecondMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.mpoolmp.IMemoryPoolDayMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.mpoolmp.IMemoryPoolHourMetricPersistenceDAO; @@ -145,7 +149,12 @@ public class StorageModule extends Module { private void addPersistenceDAO(List classes) { classes.add(ICpuSecondMetricPersistenceDAO.class); classes.add(IGCSecondMetricPersistenceDAO.class); + classes.add(IMemorySecondMetricPersistenceDAO.class); + classes.add(IMemoryMinuteMetricPersistenceDAO.class); + classes.add(IMemoryHourMetricPersistenceDAO.class); + classes.add(IMemoryDayMetricPersistenceDAO.class); + classes.add(IMemoryMonthMetricPersistenceDAO.class); classes.add(IMemoryPoolSecondMetricPersistenceDAO.class); classes.add(IMemoryPoolMinuteMetricPersistenceDAO.class); diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/MemoryMetric.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/MemoryMetric.java index 5244aaf02..52123d4ee 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/MemoryMetric.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/MemoryMetric.java @@ -20,7 +20,10 @@ 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.MaxOperation; +import org.apache.skywalking.apm.collector.core.data.operator.MinOperation; import org.apache.skywalking.apm.collector.core.data.operator.NonOperation; /** @@ -34,11 +37,12 @@ public class MemoryMetric extends StreamData { }; private static final Column[] LONG_COLUMNS = { - new Column(MemoryMetricTable.COLUMN_INIT, new CoverOperation()), - new Column(MemoryMetricTable.COLUMN_MAX, new CoverOperation()), - new Column(MemoryMetricTable.COLUMN_USED, new CoverOperation()), - new Column(MemoryMetricTable.COLUMN_COMMITTED, new CoverOperation()), - new Column(MemoryMetricTable.COLUMN_TIME_BUCKET, new CoverOperation()), + new Column(MemoryMetricTable.COLUMN_INIT, new MinOperation()), + new Column(MemoryMetricTable.COLUMN_MAX, new MaxOperation()), + new Column(MemoryMetricTable.COLUMN_USED, new AddOperation()), + new Column(MemoryMetricTable.COLUMN_COMMITTED, new AddOperation()), + new Column(MemoryMetricTable.COLUMN_TIMES, new AddOperation()), + new Column(MemoryMetricTable.COLUMN_TIME_BUCKET, new NonOperation()), }; private static final Column[] DOUBLE_COLUMNS = { @@ -105,12 +109,20 @@ public class MemoryMetric extends StreamData { setDataLong(3, committed); } - public Long getTimeBucket() { + public Long getTimes() { return getDataLong(4); } + public void setTimes(Long times) { + setDataLong(4, times); + } + + public Long getTimeBucket() { + return getDataLong(5); + } + public void setTimeBucket(Long timeBucket) { - setDataLong(4, timeBucket); + setDataLong(5, timeBucket); } public Boolean getIsHeap() { diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/MemoryMetricTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/MemoryMetricTable.java index 447668013..84ba732e8 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/MemoryMetricTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/jvm/MemoryMetricTable.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.storage.table.jvm; import org.apache.skywalking.apm.collector.core.data.CommonTable; @@ -32,4 +31,5 @@ public class MemoryMetricTable extends CommonTable { public static final String COLUMN_MAX = "max"; public static final String COLUMN_USED = "used"; public static final String COLUMN_COMMITTED = "committed"; + 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 ebf8f97ad..d460d82c7 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 @@ -94,6 +94,10 @@ import org.apache.skywalking.apm.collector.storage.dao.irmp.IInstanceReferenceDa import org.apache.skywalking.apm.collector.storage.dao.irmp.IInstanceReferenceHourMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.irmp.IInstanceReferenceMinuteMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.irmp.IInstanceReferenceMonthMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemoryDayMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemoryHourMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemoryMinuteMetricPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemoryMonthMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.memorymp.IMemorySecondMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.mpoolmp.IMemoryPoolDayMetricPersistenceDAO; import org.apache.skywalking.apm.collector.storage.dao.mpoolmp.IMemoryPoolHourMetricPersistenceDAO; @@ -177,6 +181,10 @@ import org.apache.skywalking.apm.collector.storage.es.dao.irmp.InstanceReference import org.apache.skywalking.apm.collector.storage.es.dao.irmp.InstanceReferenceHourMetricEsPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.dao.irmp.InstanceReferenceMinuteMetricEsPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.dao.irmp.InstanceReferenceMonthMetricEsPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.es.dao.memorymp.MemoryDayMetricEsPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.es.dao.memorymp.MemoryHourMetricEsPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.es.dao.memorymp.MemoryMinuteMetricEsPersistenceDAO; +import org.apache.skywalking.apm.collector.storage.es.dao.memorymp.MemoryMonthMetricEsPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.dao.memorymp.MemorySecondMetricEsPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.dao.mpoolmp.MemoryPoolDayMetricEsPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.dao.mpoolmp.MemoryPoolHourMetricEsPersistenceDAO; @@ -287,7 +295,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(IMemorySecondMetricPersistenceDAO.class, new MemorySecondMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IMemoryMinuteMetricPersistenceDAO.class, new MemoryMinuteMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IMemoryHourMetricPersistenceDAO.class, new MemoryHourMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IMemoryDayMetricPersistenceDAO.class, new MemoryDayMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IMemoryMonthMetricPersistenceDAO.class, new MemoryMonthMetricEsPersistenceDAO(elasticSearchClient)); this.registerServiceImplementation(IMemoryPoolSecondMetricPersistenceDAO.class, new MemoryPoolSecondMetricEsPersistenceDAO(elasticSearchClient)); this.registerServiceImplementation(IMemoryPoolMinuteMetricPersistenceDAO.class, new MemoryPoolMinuteMetricEsPersistenceDAO(elasticSearchClient)); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsRegistration.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsRegistration.java index ba4e41dae..97c822e5e 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsRegistration.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsRegistration.java @@ -16,11 +16,10 @@ * */ - package org.apache.skywalking.apm.collector.storage.es; -import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.cluster.ModuleRegistration; +import org.apache.skywalking.apm.collector.core.util.Const; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/memorymp/AbstractMemoryMetricEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/memorymp/AbstractMemoryMetricEsPersistenceDAO.java index 2d1d1d41a..d9d9ab175 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/memorymp/AbstractMemoryMetricEsPersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/memorymp/AbstractMemoryMetricEsPersistenceDAO.java @@ -39,7 +39,21 @@ public abstract class AbstractMemoryMetricEsPersistenceDAO extends AbstractPersi } @Override protected final MemoryMetric esDataToStreamData(Map source) { - return null; + MemoryMetric memoryMetric = new MemoryMetric(); + memoryMetric.setId((String)source.get(MemoryMetricTable.COLUMN_ID)); + memoryMetric.setMetricId((String)source.get(MemoryMetricTable.COLUMN_METRIC_ID)); + + memoryMetric.setInstanceId(((Number)source.get(MemoryMetricTable.COLUMN_INSTANCE_ID)).intValue()); + memoryMetric.setIsHeap((Boolean)source.get(MemoryMetricTable.COLUMN_IS_HEAP)); + + memoryMetric.setInit(((Number)source.get(MemoryMetricTable.COLUMN_INIT)).longValue()); + memoryMetric.setMax(((Number)source.get(MemoryMetricTable.COLUMN_MAX)).longValue()); + memoryMetric.setUsed(((Number)source.get(MemoryMetricTable.COLUMN_USED)).longValue()); + memoryMetric.setCommitted(((Number)source.get(MemoryMetricTable.COLUMN_COMMITTED)).longValue()); + memoryMetric.setTimes(((Number)source.get(MemoryMetricTable.COLUMN_TIMES)).longValue()); + + memoryMetric.setTimeBucket(((Number)source.get(MemoryMetricTable.COLUMN_TIME_BUCKET)).longValue()); + return memoryMetric; } @Override protected final Map esStreamDataToEsData(MemoryMetric streamData) { @@ -53,6 +67,7 @@ public abstract class AbstractMemoryMetricEsPersistenceDAO extends AbstractPersi source.put(MemoryMetricTable.COLUMN_MAX, streamData.getMax()); source.put(MemoryMetricTable.COLUMN_USED, streamData.getUsed()); source.put(MemoryMetricTable.COLUMN_COMMITTED, streamData.getCommitted()); + source.put(MemoryMetricTable.COLUMN_TIMES, streamData.getTimes()); source.put(MemoryMetricTable.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/MemoryMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/AbstractMemoryMetricEsTableDefine.java similarity index 71% rename from apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/MemoryMetricEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/AbstractMemoryMetricEsTableDefine.java index d06f117c9..f7b4d1b1d 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/MemoryMetricEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/AbstractMemoryMetricEsTableDefine.java @@ -16,8 +16,7 @@ * */ - -package org.apache.skywalking.apm.collector.storage.es.define; +package org.apache.skywalking.apm.collector.storage.es.define.memory; import org.apache.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; import org.apache.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; @@ -26,23 +25,23 @@ import org.apache.skywalking.apm.collector.storage.table.jvm.MemoryMetricTable; /** * @author peng-yongsheng */ -public class MemoryMetricEsTableDefine extends ElasticSearchTableDefine { +public abstract class AbstractMemoryMetricEsTableDefine extends ElasticSearchTableDefine { - public MemoryMetricEsTableDefine() { - super(MemoryMetricTable.TABLE); + public AbstractMemoryMetricEsTableDefine(String name) { + super(name); } - @Override public int refreshInterval() { - return 1; - } - - @Override public void initialize() { + @Override public final void initialize() { + addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_ID, ElasticSearchColumnDefine.Type.Keyword.name())); + addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_METRIC_ID, ElasticSearchColumnDefine.Type.Keyword.name())); + addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_INSTANCE_ID, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_INSTANCE_ID, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_IS_HEAP, ElasticSearchColumnDefine.Type.Boolean.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_INIT, ElasticSearchColumnDefine.Type.Long.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_MAX, ElasticSearchColumnDefine.Type.Long.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_USED, ElasticSearchColumnDefine.Type.Long.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_COMMITTED, ElasticSearchColumnDefine.Type.Long.name())); + addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_TIMES, ElasticSearchColumnDefine.Type.Long.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.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/memory/MemoryDayMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemoryDayMetricEsTableDefine.java new file mode 100644 index 000000000..b785d5314 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemoryDayMetricEsTableDefine.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.memory; + +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.MemoryMetricTable; + +/** + * @author peng-yongsheng + */ +public class MemoryDayMetricEsTableDefine extends AbstractMemoryMetricEsTableDefine { + + public MemoryDayMetricEsTableDefine() { + super(MemoryMetricTable.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/memory/MemoryHourMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemoryHourMetricEsTableDefine.java new file mode 100644 index 000000000..d52e1c644 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemoryHourMetricEsTableDefine.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.memory; + +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.MemoryMetricTable; + +/** + * @author peng-yongsheng + */ +public class MemoryHourMetricEsTableDefine extends AbstractMemoryMetricEsTableDefine { + + public MemoryHourMetricEsTableDefine() { + super(MemoryMetricTable.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/memory/MemoryMinuteMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemoryMinuteMetricEsTableDefine.java new file mode 100644 index 000000000..171f0538d --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemoryMinuteMetricEsTableDefine.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.memory; + +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.MemoryMetricTable; + +/** + * @author peng-yongsheng + */ +public class MemoryMinuteMetricEsTableDefine extends AbstractMemoryMetricEsTableDefine { + + public MemoryMinuteMetricEsTableDefine() { + super(MemoryMetricTable.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/memory/MemoryMonthMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemoryMonthMetricEsTableDefine.java new file mode 100644 index 000000000..3d9f8ae2a --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemoryMonthMetricEsTableDefine.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.memory; + +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.MemoryMetricTable; + +/** + * @author peng-yongsheng + */ +public class MemoryMonthMetricEsTableDefine extends AbstractMemoryMetricEsTableDefine { + + public MemoryMonthMetricEsTableDefine() { + super(MemoryMetricTable.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/memory/MemorySecondMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemorySecondMetricEsTableDefine.java new file mode 100644 index 000000000..4614b896b --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/memory/MemorySecondMetricEsTableDefine.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.memory; + +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.MemoryMetricTable; + +/** + * @author peng-yongsheng + */ +public class MemorySecondMetricEsTableDefine extends AbstractMemoryMetricEsTableDefine { + + public MemorySecondMetricEsTableDefine() { + super(MemoryMetricTable.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 1a9ddda5e..ca43e611e 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 @@ -69,4 +69,10 @@ org.apache.skywalking.apm.collector.storage.es.define.mpool.MemoryPoolSecondMetr org.apache.skywalking.apm.collector.storage.es.define.mpool.MemoryPoolMinuteMetricEsTableDefine org.apache.skywalking.apm.collector.storage.es.define.mpool.MemoryPoolHourMetricEsTableDefine org.apache.skywalking.apm.collector.storage.es.define.mpool.MemoryPoolDayMetricEsTableDefine -org.apache.skywalking.apm.collector.storage.es.define.mpool.MemoryPoolMonthMetricEsTableDefine \ No newline at end of file +org.apache.skywalking.apm.collector.storage.es.define.mpool.MemoryPoolMonthMetricEsTableDefine + +org.apache.skywalking.apm.collector.storage.es.define.memory.MemorySecondMetricEsTableDefine +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