diff --git a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/GlobalTraceSpanListener.java b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/GlobalTraceSpanListener.java index fad5d584a8b6d24e4da9d8211a9cc8897e7a2cdc..0a48369f51f54ad2eb41e3f00c379eba9d627dff 100644 --- a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/GlobalTraceSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/GlobalTraceSpanListener.java @@ -64,7 +64,7 @@ public class GlobalTraceSpanListener implements GlobalTraceIdsListener { for (String globalTraceId : globalTraceIds) { GlobalTrace globalTrace = new GlobalTrace(); globalTrace.setId(segmentCoreInfo.getSegmentId() + Const.ID_SPLIT + globalTraceId); - globalTrace.setGlobalTraceId(globalTraceId); + globalTrace.setTraceId(globalTraceId); globalTrace.setSegmentId(segmentCoreInfo.getSegmentId()); globalTrace.setTimeBucket(segmentCoreInfo.getMinuteTimeBucket()); graph.start(globalTrace); diff --git a/apm-collector/apm-collector-boot/src/main/resources/application.yml b/apm-collector/apm-collector-boot/src/main/resources/application.yml index 33995cd9700fdac34b4609a3ed325ac02159c9fd..46133ab4f53b73c830970767993916ea64c3ca7a 100644 --- a/apm-collector/apm-collector-boot/src/main/resources/application.yml +++ b/apm-collector/apm-collector-boot/src/main/resources/application.yml @@ -68,7 +68,12 @@ storage: indexShardsNumber: 2 indexReplicasNumber: 0 highPerformanceMode: true - ttl: 7 + # Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted. + traceDataTTL: 90 # Unit is minute + minuteMetricDataTTL: 90 # Unit is minute + hourMetricDataTTL: 36 # Unit is hour + dayMetricDataTTL: 45 # Unit is day + monthMetricDataTTL: 18 # Unit is month #storage: # h2: # url: jdbc:h2:~/memorydb diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/base/dao/IPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/base/dao/IPersistenceDAO.java index 8d02a20a02bf1ed0a43fe3f18aff9280bc1002e1..723e757767da39875d6d5ce2e3131aa53de76518 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/base/dao/IPersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/base/dao/IPersistenceDAO.java @@ -31,5 +31,5 @@ public interface IPersistenceDAO UPDATE prepareBatchUpdate(STREAM_DATA data); - void deleteHistory(Long startTimestamp, Long endTimestamp); + void deleteHistory(Long timeBucketBefore); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/global/GlobalTrace.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/global/GlobalTrace.java index bf6cb5429cdc128083248b5115e22831979d78ea..4184d2401c5b153f58f13eaf98aa1aaf55116f40 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/global/GlobalTrace.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/global/GlobalTrace.java @@ -73,11 +73,11 @@ public class GlobalTrace extends StreamData { setDataString(1, segmentId); } - public String getGlobalTraceId() { + public String getTraceId() { return getDataString(2); } - public void setGlobalTraceId(String globalTraceId) { + public void setTraceId(String globalTraceId) { setDataString(2, globalTraceId); } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/DataTTLKeeperTimer.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/DataTTLKeeperTimer.java index a43534e25d8d592b2423b5ddebede1a557244c46..44969f71f87402b4fae71ac9b7ece63c5475d116 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/DataTTLKeeperTimer.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/DataTTLKeeperTimer.java @@ -18,10 +18,8 @@ package org.apache.skywalking.apm.collector.storage.es; -import java.util.Calendar; import java.util.concurrent.*; import org.apache.skywalking.apm.collector.core.module.ModuleManager; -import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; import org.apache.skywalking.apm.collector.storage.StorageModule; import org.apache.skywalking.apm.collector.storage.dao.*; import org.apache.skywalking.apm.collector.storage.dao.acp.*; @@ -40,6 +38,7 @@ import org.apache.skywalking.apm.collector.storage.dao.rtd.*; import org.apache.skywalking.apm.collector.storage.dao.smp.*; import org.apache.skywalking.apm.collector.storage.dao.srmp.*; import org.apache.skywalking.apm.util.RunnableWithExceptionProtection; +import org.joda.time.DateTime; import org.slf4j.*; /** @@ -51,190 +50,188 @@ class DataTTLKeeperTimer { private final ModuleManager moduleManager; private final StorageModuleEsNamingListener namingListener; private final String selfAddress; - private final int daysBefore; + private int traceDataTTL = 90; + private int minuteMetricDataTTL = 90; + private int hourMetricDataTTL = 36; + private int dayMetricDataTTL = 45; + private int monthMetricDataTTL = 18; DataTTLKeeperTimer(ModuleManager moduleManager, - StorageModuleEsNamingListener namingListener, String selfAddress, int daysBefore) { + StorageModuleEsNamingListener namingListener, String selfAddress) { this.moduleManager = moduleManager; this.namingListener = namingListener; this.selfAddress = selfAddress; - this.daysBefore = daysBefore; } void start() { Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate( new RunnableWithExceptionProtection(this::delete, - t -> logger.error("Remove data in background failure.", t)), 1, 8, TimeUnit.HOURS); + t -> logger.error("Remove data in background failure.", t)), 1, 5, TimeUnit.MINUTES); } private void delete() { - if (!namingListener.getAddresses().iterator().next().equals(selfAddress)) { + String firstAddressInCluster = namingListener.getAddresses().iterator().next(); + if (!firstAddressInCluster.equals(selfAddress)) { + logger.info("Current address {} isn't same with the selected first address is {}. Skip.", selfAddress, firstAddressInCluster); return; } - TimeBuckets timeBuckets = convertTimeBucket(); + TimeBuckets timeBuckets = convertTimeBucket(new DateTime()); + logger.info("Beginning to remove expired metrics from the storage."); + logger.info("Metrics in minute dimension before {}, are going to be removed.", timeBuckets.minuteTimeBucketBefore); + logger.info("Metrics in hour dimension before {}, are going to be removed.", timeBuckets.hourTimeBucketBefore); + logger.info("Metrics in day dimension before {}, are going to be removed.", timeBuckets.dayTimeBucketBefore); + logger.info("Metrics in month dimension before {}, are going to be removed.", timeBuckets.monthTimeBucketBefore); deleteJVMRelatedData(timeBuckets); deleteTraceRelatedData(timeBuckets); deleteAlarmRelatedData(timeBuckets); } - TimeBuckets convertTimeBucket() { - Calendar calendar = Calendar.getInstance(); - calendar.setTimeInMillis(System.currentTimeMillis()); - calendar.add(Calendar.DAY_OF_MONTH, -daysBefore); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - - long startTimestamp = calendar.getTimeInMillis(); - - calendar.set(Calendar.HOUR_OF_DAY, 23); - calendar.set(Calendar.MINUTE, 59); - calendar.set(Calendar.SECOND, 59); - - long endTimestamp = calendar.getTimeInMillis(); - + TimeBuckets convertTimeBucket(DateTime currentTime) { TimeBuckets timeBuckets = new TimeBuckets(); - timeBuckets.startSecondTimeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(startTimestamp); - timeBuckets.endSecondTimeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(endTimestamp); - timeBuckets.startMinuteTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(startTimestamp); - timeBuckets.endMinuteTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(endTimestamp); - - timeBuckets.startHourTimeBucket = TimeBucketUtils.INSTANCE.minuteToHour(timeBuckets.startMinuteTimeBucket); - timeBuckets.endHourTimeBucket = TimeBucketUtils.INSTANCE.minuteToHour(timeBuckets.endMinuteTimeBucket); - - timeBuckets.startDayTimeBucket = TimeBucketUtils.INSTANCE.minuteToDay(timeBuckets.startMinuteTimeBucket); - timeBuckets.endDayTimeBucket = TimeBucketUtils.INSTANCE.minuteToDay(timeBuckets.endMinuteTimeBucket); - - timeBuckets.startMonthTimeBucket = TimeBucketUtils.INSTANCE.minuteToMonth(timeBuckets.startMinuteTimeBucket); - timeBuckets.endMonthTimeBucket = TimeBucketUtils.INSTANCE.minuteToMonth(timeBuckets.endMinuteTimeBucket); + timeBuckets.traceDataBefore = Long.valueOf(currentTime.plusMinutes(0 - traceDataTTL).toString("yyyyMMddHHmm")); + timeBuckets.minuteTimeBucketBefore = Long.valueOf(currentTime.plusMinutes(0 - minuteMetricDataTTL).toString("yyyyMMddHHmm")); + timeBuckets.hourTimeBucketBefore = Long.valueOf(currentTime.plusHours(0 - hourMetricDataTTL).toString("yyyyMMddHH")); + timeBuckets.dayTimeBucketBefore = Long.valueOf(currentTime.plusDays(0 - dayMetricDataTTL).toString("yyyyMMdd")); + timeBuckets.monthTimeBucketBefore = Long.valueOf(currentTime.plusMonths(0 - monthMetricDataTTL).toString("yyyyMM")); return timeBuckets; } private void deleteAlarmRelatedData(TimeBuckets timeBuckets) { - moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListMinutePersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListHourPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListDayPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListMonthPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListMinutePersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListHourPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListDayPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListMonthPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IInstanceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IInstanceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IInstanceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IInstanceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IServiceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IServiceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IServiceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IServiceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IServiceReferenceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IServiceReferenceAlarmPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); - moduleManager.find(StorageModule.NAME).getService(IServiceReferenceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IServiceReferenceAlarmListPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); } private void deleteJVMRelatedData(TimeBuckets timeBuckets) { - moduleManager.find(StorageModule.NAME).getService(ICpuMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(ICpuHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(ICpuDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(ICpuMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IGCMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IGCHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IGCDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IGCMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IMemoryMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IMemoryHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IMemoryDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IMemoryMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IMemoryPoolMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IMemoryPoolHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IMemoryPoolDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IMemoryPoolMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); + moduleManager.find(StorageModule.NAME).getService(ICpuMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(ICpuHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(ICpuDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(ICpuMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IGCMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IGCHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IGCDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IGCMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IMemoryMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IMemoryHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IMemoryDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IMemoryMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IMemoryPoolMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IMemoryPoolHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IMemoryPoolDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IMemoryPoolMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); } private void deleteTraceRelatedData(TimeBuckets timeBuckets) { - moduleManager.find(StorageModule.NAME).getService(IGlobalTracePersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(ISegmentDurationPersistenceDAO.class).deleteHistory(timeBuckets.startSecondTimeBucket, timeBuckets.endSecondTimeBucket); - moduleManager.find(StorageModule.NAME).getService(ISegmentPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IApplicationComponentMinutePersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationComponentHourPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationComponentDayPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationComponentMonthPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IApplicationMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IApplicationMappingMinutePersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationMappingHourPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationMappingDayPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationMappingMonthPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IInstanceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IInstanceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IInstanceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IInstanceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IInstanceMappingMinutePersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IInstanceMappingHourPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IInstanceMappingDayPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IInstanceMappingMonthPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IResponseTimeDistributionMinutePersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IResponseTimeDistributionHourPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IResponseTimeDistributionDayPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IResponseTimeDistributionMonthPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IServiceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IServiceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IServiceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IServiceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); - - moduleManager.find(StorageModule.NAME).getService(IServiceReferenceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMinuteTimeBucket, timeBuckets.endMinuteTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IServiceReferenceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.startHourTimeBucket, timeBuckets.endHourTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IServiceReferenceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.startDayTimeBucket, timeBuckets.endDayTimeBucket); - moduleManager.find(StorageModule.NAME).getService(IServiceReferenceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.startMonthTimeBucket, timeBuckets.endMonthTimeBucket); + moduleManager.find(StorageModule.NAME).getService(IGlobalTracePersistenceDAO.class).deleteHistory(timeBuckets.traceDataBefore); + moduleManager.find(StorageModule.NAME).getService(ISegmentDurationPersistenceDAO.class).deleteHistory(timeBuckets.traceDataBefore); + moduleManager.find(StorageModule.NAME).getService(ISegmentPersistenceDAO.class).deleteHistory(timeBuckets.traceDataBefore); + + moduleManager.find(StorageModule.NAME).getService(IApplicationComponentMinutePersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationComponentHourPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationComponentDayPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationComponentMonthPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IApplicationMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IApplicationMappingMinutePersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationMappingHourPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationMappingDayPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationMappingMonthPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IInstanceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IInstanceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IInstanceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IInstanceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IInstanceMappingMinutePersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IInstanceMappingHourPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IInstanceMappingDayPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IInstanceMappingMonthPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IInstanceReferenceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IResponseTimeDistributionMinutePersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IResponseTimeDistributionHourPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IResponseTimeDistributionDayPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IResponseTimeDistributionMonthPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IServiceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IServiceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IServiceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IServiceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); + + moduleManager.find(StorageModule.NAME).getService(IServiceReferenceMinuteMetricPersistenceDAO.class).deleteHistory(timeBuckets.minuteTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IServiceReferenceHourMetricPersistenceDAO.class).deleteHistory(timeBuckets.hourTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IServiceReferenceDayMetricPersistenceDAO.class).deleteHistory(timeBuckets.dayTimeBucketBefore); + moduleManager.find(StorageModule.NAME).getService(IServiceReferenceMonthMetricPersistenceDAO.class).deleteHistory(timeBuckets.monthTimeBucketBefore); } - class TimeBuckets { - private long startSecondTimeBucket; - private long endSecondTimeBucket; + void setTraceDataTTL(int traceDataTTL) { + this.traceDataTTL = traceDataTTL == 0 ? 90 : traceDataTTL; + } - private long startMinuteTimeBucket; - private long endMinuteTimeBucket; + void setMinuteMetricDataTTL(int minuteMetricDataTTL) { + this.minuteMetricDataTTL = minuteMetricDataTTL == 0 ? 90 : minuteMetricDataTTL; + } - private long startHourTimeBucket; - private long endHourTimeBucket; + void setHourMetricDataTTL(int hourMetricDataTTL) { + this.hourMetricDataTTL = hourMetricDataTTL == 0 ? 36 : hourMetricDataTTL; + } - private long startDayTimeBucket; - private long endDayTimeBucket; + void setDayMetricDataTTL(int dayMetricDataTTL) { + this.dayMetricDataTTL = dayMetricDataTTL == 0 ? 45 : dayMetricDataTTL; + } - private long startMonthTimeBucket; - private long endMonthTimeBucket; + void setMonthMetricDataTTL(int monthMetricDataTTL) { + this.monthMetricDataTTL = monthMetricDataTTL == 0 ? 18 : monthMetricDataTTL; + } + + class TimeBuckets { + private long traceDataBefore; + private long minuteTimeBucketBefore; + private long hourTimeBucketBefore; + private long dayTimeBucketBefore; + private long monthTimeBucketBefore; } } \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsConfig.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsConfig.java index 31d9a3d39caea123a9a1f7cd58d743527c5b63c1..b769d60786ae8c2142e004de2cb92cda7fcce7db 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsConfig.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsConfig.java @@ -27,8 +27,12 @@ class StorageModuleEsConfig extends ElasticSearchClientConfig { private int indexShardsNumber; private int indexReplicasNumber; - private int ttl; private boolean highPerformanceMode; + private int traceDataTTL; + private int minuteMetricDataTTL; + private int hourMetricDataTTL; + private int dayMetricDataTTL; + private int monthMetricDataTTL; int getIndexShardsNumber() { return indexShardsNumber; @@ -46,14 +50,6 @@ class StorageModuleEsConfig extends ElasticSearchClientConfig { this.indexReplicasNumber = indexReplicasNumber; } - int getTtl() { - return ttl; - } - - void setTtl(int ttl) { - this.ttl = ttl; - } - boolean isHighPerformanceMode() { return highPerformanceMode; } @@ -61,4 +57,44 @@ class StorageModuleEsConfig extends ElasticSearchClientConfig { void setHighPerformanceMode(boolean highPerformanceMode) { this.highPerformanceMode = highPerformanceMode; } + + int getTraceDataTTL() { + return traceDataTTL; + } + + void setTraceDataTTL(int traceDataTTL) { + this.traceDataTTL = traceDataTTL; + } + + int getMinuteMetricDataTTL() { + return minuteMetricDataTTL; + } + + void setMinuteMetricDataTTL(int minuteMetricDataTTL) { + this.minuteMetricDataTTL = minuteMetricDataTTL; + } + + int getHourMetricDataTTL() { + return hourMetricDataTTL; + } + + void setHourMetricDataTTL(int hourMetricDataTTL) { + this.hourMetricDataTTL = hourMetricDataTTL; + } + + int getDayMetricDataTTL() { + return dayMetricDataTTL; + } + + void setDayMetricDataTTL(int dayMetricDataTTL) { + this.dayMetricDataTTL = dayMetricDataTTL; + } + + int getMonthMetricDataTTL() { + return monthMetricDataTTL; + } + + void setMonthMetricDataTTL(int monthMetricDataTTL) { + this.monthMetricDataTTL = monthMetricDataTTL; + } } 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 dc0300f3655ab21d9552ee3f229ca859462ad7f0..14f8c6ed09fedc1e4724e23c36dcff3476ea5eb4 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 @@ -19,233 +19,56 @@ package org.apache.skywalking.apm.collector.storage.es; import java.util.UUID; -import org.apache.skywalking.apm.collector.client.ClientException; -import org.apache.skywalking.apm.collector.client.NameSpace; +import org.apache.skywalking.apm.collector.client.*; import org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.apache.skywalking.apm.collector.cluster.ClusterModule; -import org.apache.skywalking.apm.collector.cluster.service.ModuleListenerService; -import org.apache.skywalking.apm.collector.cluster.service.ModuleRegisterService; +import org.apache.skywalking.apm.collector.cluster.service.*; import org.apache.skywalking.apm.collector.configuration.ConfigurationModule; import org.apache.skywalking.apm.collector.configuration.service.ICollectorConfig; -import org.apache.skywalking.apm.collector.core.module.ModuleDefine; -import org.apache.skywalking.apm.collector.core.module.ModuleConfig; -import org.apache.skywalking.apm.collector.core.module.ModuleProvider; -import org.apache.skywalking.apm.collector.core.module.ModuleStartException; -import org.apache.skywalking.apm.collector.core.module.ServiceNotProvidedException; +import org.apache.skywalking.apm.collector.core.module.*; import org.apache.skywalking.apm.collector.remote.RemoteModule; -import org.apache.skywalking.apm.collector.storage.StorageException; -import org.apache.skywalking.apm.collector.storage.StorageModule; +import org.apache.skywalking.apm.collector.storage.*; import org.apache.skywalking.apm.collector.storage.base.dao.IBatchDAO; -import org.apache.skywalking.apm.collector.storage.dao.IGlobalTracePersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.IInstanceHeartBeatPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.ISegmentDurationPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.ISegmentPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentDayPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentHourPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentMinutePersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentMonthPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListDayPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListHourPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMinutePersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMonthPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationReferenceAlarmListPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationReferenceAlarmPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IInstanceAlarmListPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IInstanceAlarmPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IInstanceReferenceAlarmListPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IInstanceReferenceAlarmPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IServiceAlarmListPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IServiceAlarmPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IServiceReferenceAlarmListPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.alarm.IServiceReferenceAlarmPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.amp.IApplicationDayMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.amp.IApplicationHourMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.amp.IApplicationMinuteMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.amp.IApplicationMonthMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.ampp.IApplicationMappingDayPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.ampp.IApplicationMappingHourPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.ampp.IApplicationMappingMinutePersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.ampp.IApplicationMappingMonthPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.armp.IApplicationReferenceDayMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.armp.IApplicationReferenceHourMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.armp.IApplicationReferenceMinuteMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.armp.IApplicationReferenceMonthMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.cache.IApplicationCacheDAO; -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.cpu.ICpuDayMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.cpu.ICpuHourMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.cpu.ICpuMinuteMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.cpu.ICpuMonthMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.gc.IGCDayMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.gc.IGCHourMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.gc.IGCMinuteMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.gc.IGCMonthMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.imp.IInstanceDayMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.imp.IInstanceHourMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.imp.IInstanceMinuteMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.imp.IInstanceMonthMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.impp.IInstanceMappingDayPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.impp.IInstanceMappingHourPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.impp.IInstanceMappingMinutePersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.impp.IInstanceMappingMonthPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.irmp.IInstanceReferenceDayMetricPersistenceDAO; -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.memory.IMemoryDayMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.memory.IMemoryHourMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.memory.IMemoryMinuteMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.memory.IMemoryMonthMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.mpool.IMemoryPoolDayMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.mpool.IMemoryPoolHourMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.mpool.IMemoryPoolMinuteMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.mpool.IMemoryPoolMonthMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.register.IApplicationRegisterDAO; -import org.apache.skywalking.apm.collector.storage.dao.register.IInstanceRegisterDAO; -import org.apache.skywalking.apm.collector.storage.dao.register.INetworkAddressRegisterDAO; -import org.apache.skywalking.apm.collector.storage.dao.register.IServiceNameRegisterDAO; -import org.apache.skywalking.apm.collector.storage.dao.rtd.IResponseTimeDistributionDayPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.rtd.IResponseTimeDistributionHourPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.rtd.IResponseTimeDistributionMinutePersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.rtd.IResponseTimeDistributionMonthPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.smp.IServiceDayMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.smp.IServiceHourMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.smp.IServiceMinuteMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.smp.IServiceMonthMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.srmp.IServiceReferenceDayMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.srmp.IServiceReferenceHourMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.srmp.IServiceReferenceMinuteMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.srmp.IServiceReferenceMonthMetricPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationAlarmListUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationAlarmUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationComponentUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMappingUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationReferenceMetricUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.ICpuMetricUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IGCMetricUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IGlobalTraceUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceAlarmUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceMetricUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IMemoryMetricUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.INetworkAddressUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IResponseTimeDistributionUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.ISegmentDurationUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.ISegmentUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceAlarmUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceMetricUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceNameServiceUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceReferenceMetricUIDAO; +import org.apache.skywalking.apm.collector.storage.dao.*; +import org.apache.skywalking.apm.collector.storage.dao.acp.*; +import org.apache.skywalking.apm.collector.storage.dao.alarm.*; +import org.apache.skywalking.apm.collector.storage.dao.amp.*; +import org.apache.skywalking.apm.collector.storage.dao.ampp.*; +import org.apache.skywalking.apm.collector.storage.dao.armp.*; +import org.apache.skywalking.apm.collector.storage.dao.cache.*; +import org.apache.skywalking.apm.collector.storage.dao.cpu.*; +import org.apache.skywalking.apm.collector.storage.dao.gc.*; +import org.apache.skywalking.apm.collector.storage.dao.imp.*; +import org.apache.skywalking.apm.collector.storage.dao.impp.*; +import org.apache.skywalking.apm.collector.storage.dao.irmp.*; +import org.apache.skywalking.apm.collector.storage.dao.memory.*; +import org.apache.skywalking.apm.collector.storage.dao.mpool.*; +import org.apache.skywalking.apm.collector.storage.dao.register.*; +import org.apache.skywalking.apm.collector.storage.dao.rtd.*; +import org.apache.skywalking.apm.collector.storage.dao.smp.*; +import org.apache.skywalking.apm.collector.storage.dao.srmp.*; +import org.apache.skywalking.apm.collector.storage.dao.ui.*; import org.apache.skywalking.apm.collector.storage.es.base.dao.BatchEsDAO; import org.apache.skywalking.apm.collector.storage.es.base.define.ElasticSearchStorageInstaller; -import org.apache.skywalking.apm.collector.storage.es.dao.GlobalTraceEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.InstanceHeartBeatEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.SegmentDurationEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.SegmentEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.acp.ApplicationComponentDayEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.acp.ApplicationComponentHourEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.acp.ApplicationComponentMinuteEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.acp.ApplicationComponentMonthEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmListEsDayPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmListEsHourPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmListEsMinutePersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmListEsMonthPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationReferenceAlarmEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationReferenceAlarmListEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.InstanceAlarmEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.InstanceAlarmListEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.InstanceReferenceAlarmEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.InstanceReferenceAlarmListEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ServiceAlarmEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ServiceAlarmListEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ServiceReferenceAlarmEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.alarm.ServiceReferenceAlarmListEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.amp.ApplicationDayMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.amp.ApplicationHourMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.amp.ApplicationMinuteMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.amp.ApplicationMonthMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ampp.ApplicationMappingDayEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ampp.ApplicationMappingHourEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ampp.ApplicationMappingMinuteEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ampp.ApplicationMappingMonthEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.armp.ApplicationReferenceDayMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.armp.ApplicationReferenceHourMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.armp.ApplicationReferenceMinuteMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.armp.ApplicationReferenceMonthMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.cache.ApplicationEsCacheDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.cache.InstanceEsCacheDAO; -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.cpu.CpuDayMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.cpu.CpuHourMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.cpu.CpuMinuteMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.cpu.CpuMonthMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.gc.GCDayMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.gc.GCHourMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.gc.GCMinuteMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.gc.GCMonthMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.imp.InstanceDayMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.imp.InstanceHourMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.imp.InstanceMinuteMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.imp.InstanceMonthMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.impp.InstanceMappingDayEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.impp.InstanceMappingHourEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.impp.InstanceMappingMinuteEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.impp.InstanceMappingMonthEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.irmp.InstanceReferenceDayMetricEsPersistenceDAO; -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.memory.MemoryDayMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.memory.MemoryHourMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.memory.MemoryMinuteMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.memory.MemoryMonthMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.mpool.MemoryPoolDayMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.mpool.MemoryPoolHourMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.mpool.MemoryPoolMinuteMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.mpool.MemoryPoolMonthMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.register.ApplicationRegisterEsDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.register.InstanceRegisterEsDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.register.NetworkAddressRegisterEsDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.register.ServiceNameRegisterEsDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.rtd.ResponseTimeDistributionDayEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.rtd.ResponseTimeDistributionHourEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.rtd.ResponseTimeDistributionMinuteEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.rtd.ResponseTimeDistributionMonthEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.smp.ServiceDayMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.smp.ServiceHourMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.smp.ServiceMinuteMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.smp.ServiceMonthMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.srmp.ServiceReferenceDayMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.srmp.ServiceReferenceHourMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.srmp.ServiceReferenceMinuteMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.srmp.ServiceReferenceMonthMetricEsPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationAlarmEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationAlarmListEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationComponentEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationMappingEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationMetricEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationReferenceMetricEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.CpuMetricEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.GCMetricEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.GlobalTraceEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.InstanceAlarmEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.InstanceEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.InstanceMetricEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.MemoryMetricEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.NetworkAddressEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ResponseTimeDistributionEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.SegmentDurationEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.SegmentEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ServiceAlarmEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ServiceMetricEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ServiceNameServiceEsUIDAO; -import org.apache.skywalking.apm.collector.storage.es.dao.ui.ServiceReferenceEsMetricUIDAO; +import org.apache.skywalking.apm.collector.storage.es.dao.*; +import org.apache.skywalking.apm.collector.storage.es.dao.acp.*; +import org.apache.skywalking.apm.collector.storage.es.dao.alarm.*; +import org.apache.skywalking.apm.collector.storage.es.dao.amp.*; +import org.apache.skywalking.apm.collector.storage.es.dao.ampp.*; +import org.apache.skywalking.apm.collector.storage.es.dao.armp.*; +import org.apache.skywalking.apm.collector.storage.es.dao.cache.*; +import org.apache.skywalking.apm.collector.storage.es.dao.cpu.*; +import org.apache.skywalking.apm.collector.storage.es.dao.gc.*; +import org.apache.skywalking.apm.collector.storage.es.dao.imp.*; +import org.apache.skywalking.apm.collector.storage.es.dao.impp.*; +import org.apache.skywalking.apm.collector.storage.es.dao.irmp.*; +import org.apache.skywalking.apm.collector.storage.es.dao.memory.*; +import org.apache.skywalking.apm.collector.storage.es.dao.mpool.*; +import org.apache.skywalking.apm.collector.storage.es.dao.register.*; +import org.apache.skywalking.apm.collector.storage.es.dao.rtd.*; +import org.apache.skywalking.apm.collector.storage.es.dao.smp.*; +import org.apache.skywalking.apm.collector.storage.es.dao.srmp.*; +import org.apache.skywalking.apm.collector.storage.es.dao.ui.*; /** * @author peng-yongsheng @@ -300,16 +123,21 @@ public class StorageModuleEsProvider extends ModuleProvider { throw new ModuleStartException(e.getMessage(), e); } - String uuId = UUID.randomUUID().toString(); ModuleRegisterService moduleRegisterService = getManager().find(ClusterModule.NAME).getService(ModuleRegisterService.class); - moduleRegisterService.register(StorageModule.NAME, this.name(), new StorageModuleEsRegistration(uuId, 0)); + + StorageModuleEsRegistration esRegistration = new StorageModuleEsRegistration(UUID.randomUUID().toString(), 0); + moduleRegisterService.register(StorageModule.NAME, this.name(), esRegistration); StorageModuleEsNamingListener namingListener = new StorageModuleEsNamingListener(); ModuleListenerService moduleListenerService = getManager().find(ClusterModule.NAME).getService(ModuleListenerService.class); moduleListenerService.addListener(namingListener); - Integer beforeDay = config.getTtl() == 0 ? 3 : config.getTtl(); - deleteTimer = new DataTTLKeeperTimer(getManager(), namingListener, uuId + 0, beforeDay); + deleteTimer = new DataTTLKeeperTimer(getManager(), namingListener, esRegistration.buildValue().getHostPort()); + deleteTimer.setTraceDataTTL(config.getTraceDataTTL()); + deleteTimer.setMinuteMetricDataTTL(config.getMinuteMetricDataTTL()); + deleteTimer.setHourMetricDataTTL(config.getHourMetricDataTTL()); + deleteTimer.setDayMetricDataTTL(config.getDayMetricDataTTL()); + deleteTimer.setMonthMetricDataTTL(config.getMonthMetricDataTTL()); } @Override diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/base/dao/AbstractPersistenceEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/base/dao/AbstractPersistenceEsDAO.java index c32d6138f4cb75798fd1455f34784a21672a144a..af6f70db07f608ddbbb40a0329536b5a4d3bce40 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/base/dao/AbstractPersistenceEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/base/dao/AbstractPersistenceEsDAO.java @@ -27,8 +27,7 @@ import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.update.UpdateRequestBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.slf4j.*; /** * @author peng-yongsheng @@ -74,9 +73,9 @@ public abstract class AbstractPersistenceEsDAO e protected abstract String timeBucketColumnNameForDelete(); @Override - public final void deleteHistory(Long startTimeBucket, Long endTimeBucket) { + public final void deleteHistory(Long timeBucketBefore) { BulkByScrollResponse response = getClient().prepareDelete( - QueryBuilders.rangeQuery(timeBucketColumnNameForDelete()).gte(startTimeBucket).lte(endTimeBucket), + QueryBuilders.rangeQuery(timeBucketColumnNameForDelete()).lte(timeBucketBefore), tableName()) .get(); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/GlobalTraceEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/GlobalTraceEsPersistenceDAO.java index 27f1ea8bd6b32f70871822e3ca88965da392fe4c..1ac149090bef5f920f4dae6470e7ae620791e3b8 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/GlobalTraceEsPersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/GlobalTraceEsPersistenceDAO.java @@ -18,64 +18,50 @@ package org.apache.skywalking.apm.collector.storage.es.dao; -import java.util.HashMap; -import java.util.Map; - +import java.util.*; import org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.apache.skywalking.apm.collector.core.UnexpectedException; -import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; +import org.apache.skywalking.apm.collector.core.annotations.trace.GraphComputingMetric; import org.apache.skywalking.apm.collector.storage.dao.IGlobalTracePersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO; -import org.apache.skywalking.apm.collector.storage.table.global.GlobalTrace; -import org.apache.skywalking.apm.collector.storage.table.global.GlobalTraceTable; +import org.apache.skywalking.apm.collector.storage.es.base.dao.AbstractPersistenceEsDAO; +import org.apache.skywalking.apm.collector.storage.table.global.*; import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.update.UpdateRequestBuilder; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class GlobalTraceEsPersistenceDAO extends EsDAO implements IGlobalTracePersistenceDAO { - - private final Logger logger = LoggerFactory.getLogger(GlobalTraceEsPersistenceDAO.class); +public class GlobalTraceEsPersistenceDAO extends AbstractPersistenceEsDAO implements IGlobalTracePersistenceDAO { public GlobalTraceEsPersistenceDAO(ElasticSearchClient client) { super(client); } - @Override - public GlobalTrace get(String id) { - throw new UnexpectedException("There is no need to merge stream data with database data."); + @Override protected String tableName() { + return GlobalTraceTable.TABLE; } - @Override - public UpdateRequestBuilder prepareBatchUpdate(GlobalTrace data) { - throw new UnexpectedException("There is no need to merge stream data with database data."); + @Override protected GlobalTrace esDataToStreamData(Map source) { + GlobalTrace globalTrace = new GlobalTrace(); + globalTrace.setSegmentId((String)source.get(GlobalTraceTable.SEGMENT_ID.getName())); + globalTrace.setTraceId((String)source.get(GlobalTraceTable.TRACE_ID.getName())); + globalTrace.setTimeBucket(((Number)source.get(GlobalTraceTable.TIME_BUCKET.getName())).longValue()); + return globalTrace; } - @Override - public IndexRequestBuilder prepareBatchInsert(GlobalTrace data) { + @Override protected Map esStreamDataToEsData(GlobalTrace streamData) { Map target = new HashMap<>(); - target.put(GlobalTraceTable.SEGMENT_ID.getName(), data.getSegmentId()); - target.put(GlobalTraceTable.TRACE_ID.getName(), data.getGlobalTraceId()); - target.put(GlobalTraceTable.TIME_BUCKET.getName(), data.getTimeBucket()); - logger.debug("global trace source: {}", target.toString()); - return getClient().prepareIndex(GlobalTraceTable.TABLE, data.getId()).setSource(target); + target.put(GlobalTraceTable.SEGMENT_ID.getName(), streamData.getSegmentId()); + target.put(GlobalTraceTable.TRACE_ID.getName(), streamData.getTraceId()); + target.put(GlobalTraceTable.TIME_BUCKET.getName(), streamData.getTimeBucket()); + return target; } - @Override - public void deleteHistory(Long startTimestamp, Long endTimestamp) { - long startTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(startTimestamp); - long endTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(endTimestamp); - BulkByScrollResponse response = getClient().prepareDelete( - QueryBuilders.rangeQuery(GlobalTraceTable.TIME_BUCKET.getName()).gte(startTimeBucket).lte(endTimeBucket), - GlobalTraceTable.TABLE) - .get(); + @Override protected String timeBucketColumnNameForDelete() { + return GlobalTraceTable.TIME_BUCKET.getName(); + } - long deleted = response.getDeleted(); - logger.info("Delete {} rows history from {} index.", deleted, GlobalTraceTable.TABLE); + @GraphComputingMetric(name = "/persistence/get/" + GlobalTraceTable.TABLE) + @Override public GlobalTrace get(String id) { + return super.get(id); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceHeartBeatEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceHeartBeatEsPersistenceDAO.java index eb7e86887967e09680872aa2ba4881b5833db4f4..f7ee828112145f565c2b47fbc06fbace8c972862 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceHeartBeatEsPersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceHeartBeatEsPersistenceDAO.java @@ -18,20 +18,17 @@ package org.apache.skywalking.apm.collector.storage.es.dao; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.apache.skywalking.apm.collector.core.UnexpectedException; import org.apache.skywalking.apm.collector.core.annotations.trace.GraphComputingMetric; import org.apache.skywalking.apm.collector.storage.dao.IInstanceHeartBeatPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO; -import org.apache.skywalking.apm.collector.storage.table.register.Instance; -import org.apache.skywalking.apm.collector.storage.table.register.InstanceTable; +import org.apache.skywalking.apm.collector.storage.table.register.*; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.update.UpdateRequestBuilder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.slf4j.*; /** * @author peng-yongsheng @@ -54,10 +51,10 @@ public class InstanceHeartBeatEsPersistenceDAO extends EsDAO implements IInstanc instance.setId(id); instance.setInstanceId(((Number)source.get(InstanceTable.INSTANCE_ID.getName())).intValue()); instance.setHeartBeatTime(((Number)source.get(InstanceTable.HEARTBEAT_TIME.getName())).longValue()); - logger.debug("getApplicationId: {} is exists", id); + logger.debug("instance id: {} exists", id); return instance; } else { - logger.debug("getApplicationId: {} is not exists", id); + logger.debug("instance id: {} not exists", id); return null; } } @@ -72,6 +69,6 @@ public class InstanceHeartBeatEsPersistenceDAO extends EsDAO implements IInstanc return getClient().prepareUpdate(InstanceTable.TABLE, data.getId()).setDoc(source); } - @Override public void deleteHistory(Long startTimestamp, Long endTimestamp) { + @Override public void deleteHistory(Long timeBucketBefore) { } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/SegmentDurationEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/SegmentDurationEsPersistenceDAO.java index 03d4ae8a7b5bf514935ec1d893e501570ec49563..30de27dbfcc89111139a6f775cb0999c000de088 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/SegmentDurationEsPersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/SegmentDurationEsPersistenceDAO.java @@ -18,21 +18,16 @@ package org.apache.skywalking.apm.collector.storage.es.dao; -import java.util.HashMap; -import java.util.Map; - +import java.util.*; import org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; import org.apache.skywalking.apm.collector.storage.dao.ISegmentDurationPersistenceDAO; import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO; -import org.apache.skywalking.apm.collector.storage.table.segment.SegmentDuration; -import org.apache.skywalking.apm.collector.storage.table.segment.SegmentDurationTable; +import org.apache.skywalking.apm.collector.storage.table.segment.*; import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.update.UpdateRequestBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.slf4j.*; /** * @author peng-yongsheng @@ -57,7 +52,6 @@ public class SegmentDurationEsPersistenceDAO extends EsDAO implements ISegmentDu @Override public IndexRequestBuilder prepareBatchInsert(SegmentDuration data) { - logger.debug("segment cost prepareBatchInsert, getApplicationId: {}", data.getId()); Map target = new HashMap<>(); target.put(SegmentDurationTable.SEGMENT_ID.getName(), data.getSegmentId()); target.put(SegmentDurationTable.APPLICATION_ID.getName(), data.getApplicationId()); @@ -67,18 +61,14 @@ public class SegmentDurationEsPersistenceDAO extends EsDAO implements ISegmentDu target.put(SegmentDurationTable.END_TIME.getName(), data.getEndTime()); target.put(SegmentDurationTable.IS_ERROR.getName(), data.getIsError()); target.put(SegmentDurationTable.TIME_BUCKET.getName(), data.getTimeBucket()); - logger.debug("segment cost source: {}", target.toString()); return getClient().prepareIndex(SegmentDurationTable.TABLE, data.getId()).setSource(target); } - @Override - public void deleteHistory(Long startTimestamp, Long endTimestamp) { - long startTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(startTimestamp); - long endTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(endTimestamp); + @Override public void deleteHistory(Long timeBucketBefore) { BulkByScrollResponse response = getClient().prepareDelete( - QueryBuilders.rangeQuery(SegmentDurationTable.TIME_BUCKET.getName()).gte(startTimeBucket).lte(endTimeBucket), - SegmentDurationTable.TABLE) - .get(); + QueryBuilders.rangeQuery(SegmentDurationTable.TIME_BUCKET.getName()).lte(timeBucketBefore * 100), + SegmentDurationTable.TABLE) + .get(); long deleted = response.getDeleted(); logger.info("Delete {} rows history from {} index.", deleted, SegmentDurationTable.TABLE); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/SegmentEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/SegmentEsPersistenceDAO.java index 801fb676ca6852c13dfe780985d4b0938513bc70..00dcdc353e2bbfc704998acc2d3c484c04953310 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/SegmentEsPersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/SegmentEsPersistenceDAO.java @@ -18,62 +18,48 @@ package org.apache.skywalking.apm.collector.storage.es.dao; -import java.util.Base64; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; +import org.apache.skywalking.apm.collector.core.annotations.trace.GraphComputingMetric; import org.apache.skywalking.apm.collector.storage.dao.ISegmentPersistenceDAO; -import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO; -import org.apache.skywalking.apm.collector.storage.table.segment.Segment; -import org.apache.skywalking.apm.collector.storage.table.segment.SegmentTable; +import org.apache.skywalking.apm.collector.storage.es.base.dao.AbstractPersistenceEsDAO; +import org.apache.skywalking.apm.collector.storage.table.segment.*; import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.update.UpdateRequestBuilder; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class SegmentEsPersistenceDAO extends EsDAO implements ISegmentPersistenceDAO { - - private static final Logger logger = LoggerFactory.getLogger(SegmentEsPersistenceDAO.class); +public class SegmentEsPersistenceDAO extends AbstractPersistenceEsDAO implements ISegmentPersistenceDAO { public SegmentEsPersistenceDAO(ElasticSearchClient client) { super(client); } - @Override - public Segment get(String id) { - return null; + @Override protected String tableName() { + return SegmentTable.TABLE; } - @Override - public UpdateRequestBuilder prepareBatchUpdate(Segment data) { - return null; + @Override protected Segment esDataToStreamData(Map source) { + Segment segment = new Segment(); + segment.setDataBinary(Base64.getDecoder().decode((String)source.get(SegmentTable.DATA_BINARY.getName()))); + segment.setTimeBucket(((Number)source.get(SegmentTable.TIME_BUCKET.getName())).longValue()); + return segment; } - @Override - public IndexRequestBuilder prepareBatchInsert(Segment data) { + @Override protected Map esStreamDataToEsData(Segment streamData) { Map target = new HashMap<>(); - target.put(SegmentTable.DATA_BINARY.getName(), new String(Base64.getEncoder().encode(data.getDataBinary()))); - target.put(SegmentTable.TIME_BUCKET.getName(), data.getTimeBucket()); - logger.debug("segment source: {}", target.toString()); - return getClient().prepareIndex(SegmentTable.TABLE, data.getId()).setSource(target); + target.put(SegmentTable.DATA_BINARY.getName(), new String(Base64.getEncoder().encode(streamData.getDataBinary()))); + target.put(SegmentTable.TIME_BUCKET.getName(), streamData.getTimeBucket()); + return target; } - @Override - public void deleteHistory(Long startTimestamp, Long endTimestamp) { - long startTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(startTimestamp); - long endTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(endTimestamp); - BulkByScrollResponse response = getClient().prepareDelete( - QueryBuilders.rangeQuery(SegmentTable.TIME_BUCKET.getName()).gte(startTimeBucket).lte(endTimeBucket), - SegmentTable.TABLE) - .get(); + @Override protected String timeBucketColumnNameForDelete() { + return SegmentTable.TIME_BUCKET.getName(); + } - long deleted = response.getDeleted(); - logger.info("Delete {} rows history from {} index.", deleted, SegmentTable.TABLE); + @GraphComputingMetric(name = "/persistence/get/" + SegmentTable.TABLE) + @Override public Segment get(String id) { + return super.get(id); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/SegmentDurationEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/SegmentDurationEsUIDAO.java index 40374a2acafeb8d72507806f8ee170b159ce3663..e12f1e43bc26413cebe014372300c86f530b00b2 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/SegmentDurationEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/SegmentDurationEsUIDAO.java @@ -20,23 +20,13 @@ package org.apache.skywalking.apm.collector.storage.es.dao.ui; import java.util.List; import org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.apache.skywalking.apm.collector.core.util.BooleanUtils; -import org.apache.skywalking.apm.collector.core.util.CollectionUtils; -import org.apache.skywalking.apm.collector.core.util.StringUtils; +import org.apache.skywalking.apm.collector.core.util.*; import org.apache.skywalking.apm.collector.storage.dao.ui.ISegmentDurationUIDAO; import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO; import org.apache.skywalking.apm.collector.storage.table.segment.SegmentDurationTable; -import org.apache.skywalking.apm.collector.storage.ui.trace.BasicTrace; -import org.apache.skywalking.apm.collector.storage.ui.trace.QueryOrder; -import org.apache.skywalking.apm.collector.storage.ui.trace.TraceBrief; -import org.apache.skywalking.apm.collector.storage.ui.trace.TraceState; -import org.elasticsearch.action.search.SearchRequestBuilder; -import org.elasticsearch.action.search.SearchResponse; -import org.elasticsearch.action.search.SearchType; -import org.elasticsearch.index.query.BoolQueryBuilder; -import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.index.query.RangeQueryBuilder; +import org.apache.skywalking.apm.collector.storage.ui.trace.*; +import org.elasticsearch.action.search.*; +import org.elasticsearch.index.query.*; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.sort.SortOrder; @@ -51,7 +41,8 @@ public class SegmentDurationEsUIDAO extends EsDAO implements ISegmentDurationUID @Override public TraceBrief loadTop(long startSecondTimeBucket, long endSecondTimeBucket, long minDuration, long maxDuration, - String operationName, int applicationId, int limit, int from, TraceState traceState, QueryOrder queryOrder, String... segmentIds) { + String operationName, int applicationId, int limit, int from, TraceState traceState, QueryOrder queryOrder, + String... segmentIds) { SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(SegmentDurationTable.TABLE); searchRequestBuilder.setTypes(SegmentDurationTable.TABLE_TYPE); searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); @@ -60,7 +51,6 @@ public class SegmentDurationEsUIDAO extends EsDAO implements ISegmentDurationUID List mustQueryList = boolQueryBuilder.must(); if (startSecondTimeBucket != 0 && endSecondTimeBucket != 0) { - //TODO second mustQueryList.add(QueryBuilders.rangeQuery(SegmentDurationTable.TIME_BUCKET.getName()).gte(startSecondTimeBucket).lte(endSecondTimeBucket)); } @@ -95,8 +85,8 @@ public class SegmentDurationEsUIDAO extends EsDAO implements ISegmentDurationUID case BY_START_TIME: searchRequestBuilder.addSort(SegmentDurationTable.START_TIME.getName(), SortOrder.DESC); break; - case - BY_DURATION:searchRequestBuilder.addSort(SegmentDurationTable.DURATION.getName(), SortOrder.DESC); + case BY_DURATION: + searchRequestBuilder.addSort(SegmentDurationTable.DURATION.getName(), SortOrder.DESC); break; } searchRequestBuilder.setSize(limit); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/test/java/org/apache/skywalking/apm/collector/storage/es/DataTTLKeeperTimerTestCase.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/test/java/org/apache/skywalking/apm/collector/storage/es/DataTTLKeeperTimerTestCase.java index 20ad34f743b8599a2c97fc6eee2c17a9c1e9bb64..c619455c2c85f43f56e1a4d7d5f352957a89299c 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/test/java/org/apache/skywalking/apm/collector/storage/es/DataTTLKeeperTimerTestCase.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/test/java/org/apache/skywalking/apm/collector/storage/es/DataTTLKeeperTimerTestCase.java @@ -18,68 +18,35 @@ package org.apache.skywalking.apm.collector.storage.es; -import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; +import org.joda.time.DateTime; import org.junit.*; import org.powermock.reflect.Whitebox; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; - /** * @author peng-yongsheng */ public class DataTTLKeeperTimerTestCase { @Test - public void testConvertTimeBucket() throws ParseException { - DataTTLKeeperTimer timer = new DataTTLKeeperTimer(null, null, null, 8); - DataTTLKeeperTimer.TimeBuckets timeBuckets = timer.convertTimeBucket(); - - long minuteTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(System.currentTimeMillis()); - long dayTimeBucket = TimeBucketUtils.INSTANCE.minuteToDay(minuteTimeBucket); - - Date dayTimeBucketSource = new SimpleDateFormat("yyyyMMdd").parse(String.valueOf(dayTimeBucket)); - - Calendar calendar = Calendar.getInstance(); - calendar.setTime(dayTimeBucketSource); - calendar.add(Calendar.DAY_OF_MONTH, -8); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - - long newMinuteTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(calendar.getTimeInMillis()); - long newDayTimeBucket = TimeBucketUtils.INSTANCE.minuteToDay(newMinuteTimeBucket); - - long startSecondTimeBucket = Whitebox.getInternalState(timeBuckets, "startSecondTimeBucket"); - Assert.assertEquals(newDayTimeBucket * 1000000, startSecondTimeBucket); - - long endSecondTimeBucket = Whitebox.getInternalState(timeBuckets, "endSecondTimeBucket"); - Assert.assertEquals(newDayTimeBucket * 1000000 + 235959, endSecondTimeBucket); - - long startMinuteTimeBucket = Whitebox.getInternalState(timeBuckets, "startMinuteTimeBucket"); - Assert.assertEquals(newDayTimeBucket * 10000, startMinuteTimeBucket); - - long endMinuteTimeBucket = Whitebox.getInternalState(timeBuckets, "endMinuteTimeBucket"); - Assert.assertEquals(newDayTimeBucket * 10000 + 2359, endMinuteTimeBucket); + public void testConvertTimeBucket() { + DataTTLKeeperTimer timer = new DataTTLKeeperTimer(null, null, null); - long startHourTimeBucket = Whitebox.getInternalState(timeBuckets, "startHourTimeBucket"); - Assert.assertEquals(newDayTimeBucket * 100, startHourTimeBucket); + DateTime currentTime = new DateTime(2018, 5, 26, 15, 5); + DataTTLKeeperTimer.TimeBuckets timeBuckets = timer.convertTimeBucket(currentTime); - long endHourTimeBucket = Whitebox.getInternalState(timeBuckets, "endHourTimeBucket"); - Assert.assertEquals(newDayTimeBucket * 100 + 23, endHourTimeBucket); + long traceDataBefore = Whitebox.getInternalState(timeBuckets, "traceDataBefore"); + Assert.assertEquals(201805261335L, traceDataBefore); - long startDayTimeBucket = Whitebox.getInternalState(timeBuckets, "startDayTimeBucket"); - Assert.assertEquals(newDayTimeBucket, startDayTimeBucket); + long minuteTimeBucketBefore = Whitebox.getInternalState(timeBuckets, "minuteTimeBucketBefore"); + Assert.assertEquals(201805261335L, minuteTimeBucketBefore); - long endDayTimeBucket = Whitebox.getInternalState(timeBuckets, "endDayTimeBucket"); - Assert.assertEquals(newDayTimeBucket, endDayTimeBucket); + long hourTimeBucketBefore = Whitebox.getInternalState(timeBuckets, "hourTimeBucketBefore"); + Assert.assertEquals(2018052503, hourTimeBucketBefore); - long startMonthTimeBucket = Whitebox.getInternalState(timeBuckets, "startMonthTimeBucket"); - Assert.assertEquals(newDayTimeBucket / 100, startMonthTimeBucket); + long dayTimeBucketBefore = Whitebox.getInternalState(timeBuckets, "dayTimeBucketBefore"); + Assert.assertEquals(20180411, dayTimeBucketBefore); - long endMonthTimeBucket = Whitebox.getInternalState(timeBuckets, "endMonthTimeBucket"); - Assert.assertEquals(newDayTimeBucket / 100, endMonthTimeBucket); + long monthTimeBucketBefore = Whitebox.getInternalState(timeBuckets, "monthTimeBucketBefore"); + Assert.assertEquals(201611, monthTimeBucketBefore); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/base/dao/AbstractPersistenceH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/base/dao/AbstractPersistenceH2DAO.java index f9a248cbfe15698c3d88f5a8fb4320d2f777940a..e0fb6477f247d8f130898ba33f29df532d54475f 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/base/dao/AbstractPersistenceH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/base/dao/AbstractPersistenceH2DAO.java @@ -90,6 +90,6 @@ public abstract class AbstractPersistenceH2DAO e return entity; } - @Override public final void deleteHistory(Long startTimestamp, Long endTimestamp) { + @Override public void deleteHistory(Long timeBucketBefore) { } } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2PersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2PersistenceDAO.java index 5f69d3c7b18c3c24ba340682161f589f910e893f..606f9985cd41bfd166b94f3a397652dec818c152 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2PersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2PersistenceDAO.java @@ -55,7 +55,7 @@ public class GlobalTraceH2PersistenceDAO extends H2DAO implements IGlobalTracePe H2SqlEntity entity = new H2SqlEntity(); target.put(GlobalTraceTable.ID.getName(), data.getId()); target.put(GlobalTraceTable.SEGMENT_ID.getName(), data.getSegmentId()); - target.put(GlobalTraceTable.TRACE_ID.getName(), data.getGlobalTraceId()); + target.put(GlobalTraceTable.TRACE_ID.getName(), data.getTraceId()); target.put(GlobalTraceTable.TIME_BUCKET.getName(), data.getTimeBucket()); logger.debug("global trace source: {}", target.toString()); @@ -65,6 +65,6 @@ public class GlobalTraceH2PersistenceDAO extends H2DAO implements IGlobalTracePe return entity; } - @Override public void deleteHistory(Long startTimestamp, Long endTimestamp) { + @Override public void deleteHistory(Long timeBucketBefore) { } } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceHeartBeatH2PersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceHeartBeatH2PersistenceDAO.java index 53f7f70f633efba44d5c47d88a278565d22e49ad..b5816467073172de1e3224e1716990525cb2e500 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceHeartBeatH2PersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceHeartBeatH2PersistenceDAO.java @@ -18,23 +18,16 @@ package org.apache.skywalking.apm.collector.storage.h2.dao; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.apache.skywalking.apm.collector.client.h2.H2Client; -import org.apache.skywalking.apm.collector.client.h2.H2ClientException; +import java.sql.*; +import java.util.*; +import org.apache.skywalking.apm.collector.client.h2.*; import org.apache.skywalking.apm.collector.core.UnexpectedException; import org.apache.skywalking.apm.collector.storage.base.sql.SqlBuilder; import org.apache.skywalking.apm.collector.storage.dao.IInstanceHeartBeatPersistenceDAO; import org.apache.skywalking.apm.collector.storage.h2.base.dao.H2DAO; import org.apache.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; -import org.apache.skywalking.apm.collector.storage.table.register.Instance; -import org.apache.skywalking.apm.collector.storage.table.register.InstanceTable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.skywalking.apm.collector.storage.table.register.*; +import org.slf4j.*; /** * @author peng-yongsheng, clevertension @@ -83,6 +76,6 @@ public class InstanceHeartBeatH2PersistenceDAO extends H2DAO implements IInstanc return entity; } - @Override public void deleteHistory(Long startTimestamp, Long endTimestamp) { + @Override public void deleteHistory(Long timeBucketBefore) { } } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/SegmentDurationH2PersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/SegmentDurationH2PersistenceDAO.java index 4cb3fde0e314f559406bcdde51e0a4b067bb8b74..8ac78ab77b8d3c943c9b3d6305180390492755f1 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/SegmentDurationH2PersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/SegmentDurationH2PersistenceDAO.java @@ -18,17 +18,14 @@ package org.apache.skywalking.apm.collector.storage.h2.dao; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import org.apache.skywalking.apm.collector.client.h2.H2Client; import org.apache.skywalking.apm.collector.storage.base.sql.SqlBuilder; import org.apache.skywalking.apm.collector.storage.dao.ISegmentDurationPersistenceDAO; import org.apache.skywalking.apm.collector.storage.h2.base.dao.H2DAO; import org.apache.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; -import org.apache.skywalking.apm.collector.storage.table.segment.SegmentDuration; -import org.apache.skywalking.apm.collector.storage.table.segment.SegmentDurationTable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.skywalking.apm.collector.storage.table.segment.*; +import org.slf4j.*; /** * @author peng-yongsheng, clevertension @@ -70,6 +67,6 @@ public class SegmentDurationH2PersistenceDAO extends H2DAO implements ISegmentDu return null; } - @Override public void deleteHistory(Long startTimestamp, Long endTimestamp) { + @Override public void deleteHistory(Long timeBucketBefore) { } } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/SegmentH2PersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/SegmentH2PersistenceDAO.java index 535a6f8e7742bb63d587182ca385ec16f435a24d..bcc95d288af774b96f48dad4c503fbed4b6cdadc 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/SegmentH2PersistenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/SegmentH2PersistenceDAO.java @@ -18,17 +18,14 @@ package org.apache.skywalking.apm.collector.storage.h2.dao; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import org.apache.skywalking.apm.collector.client.h2.H2Client; import org.apache.skywalking.apm.collector.storage.base.sql.SqlBuilder; import org.apache.skywalking.apm.collector.storage.dao.ISegmentPersistenceDAO; import org.apache.skywalking.apm.collector.storage.h2.base.dao.H2DAO; import org.apache.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; -import org.apache.skywalking.apm.collector.storage.table.segment.Segment; -import org.apache.skywalking.apm.collector.storage.table.segment.SegmentTable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.skywalking.apm.collector.storage.table.segment.*; +import org.slf4j.*; /** * @author peng-yongsheng, clevertension @@ -63,6 +60,6 @@ public class SegmentH2PersistenceDAO extends H2DAO implements ISegmentPersistenc return null; } - @Override public void deleteHistory(Long startTimestamp, Long endTimestamp) { + @Override public void deleteHistory(Long timeBucketBefore) { } } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java index 12461838adf4fa65cca43aa0552177b5f3538b92..39ef052b1e359abf536293ab0d55f8f97d35ee72 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java @@ -20,19 +20,13 @@ package org.apache.skywalking.apm.collector.ui.query; import org.apache.skywalking.apm.collector.core.UnexpectedException; import org.apache.skywalking.apm.collector.core.module.ModuleManager; -import org.apache.skywalking.apm.collector.core.util.Const; -import org.apache.skywalking.apm.collector.core.util.StringUtils; +import org.apache.skywalking.apm.collector.core.util.*; import org.apache.skywalking.apm.collector.storage.ui.trace.*; import org.apache.skywalking.apm.collector.ui.graphql.Query; -import org.apache.skywalking.apm.collector.ui.service.SegmentTopService; -import org.apache.skywalking.apm.collector.ui.service.TraceStackService; -import org.apache.skywalking.apm.collector.ui.utils.DurationUtils; -import org.apache.skywalking.apm.collector.ui.utils.PaginationUtils; +import org.apache.skywalking.apm.collector.ui.service.*; +import org.apache.skywalking.apm.collector.ui.utils.*; -import java.text.ParseException; - -import static java.util.Objects.isNull; -import static java.util.Objects.nonNull; +import static java.util.Objects.*; /** * @author peng-yongsheng @@ -61,7 +55,7 @@ public class TraceQuery implements Query { return traceStackService; } - public TraceBrief queryBasicTraces(TraceQueryCondition condition) throws ParseException { + public TraceBrief queryBasicTraces(TraceQueryCondition condition) { long startSecondTimeBucket = 0; long endSecondTimeBucket = 0; String traceId = Const.EMPTY_STRING; @@ -83,7 +77,7 @@ public class TraceQuery implements Query { QueryOrder queryOrder = condition.getQueryOrder(); PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(condition.getPaging()); - return getSegmentTopService().loadTop(startSecondTimeBucket, endSecondTimeBucket, minDuration, maxDuration, operationName, traceId, applicationId, page.getLimit(), page.getFrom(),traceState,queryOrder); + return getSegmentTopService().loadTop(startSecondTimeBucket, endSecondTimeBucket, minDuration, maxDuration, operationName, traceId, applicationId, page.getLimit(), page.getFrom(), traceState, queryOrder); } public Trace queryTrace(String traceId) { diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SegmentTopService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SegmentTopService.java index e16b902b2c2fa2e7fcd9e2020a3ce7865a82565c..b6ee0cfe713bc0ed7caa84f10cde9f2661ec6eed 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SegmentTopService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SegmentTopService.java @@ -20,16 +20,11 @@ package org.apache.skywalking.apm.collector.ui.service; import java.util.List; import org.apache.skywalking.apm.collector.core.module.ModuleManager; -import org.apache.skywalking.apm.collector.core.util.CollectionUtils; -import org.apache.skywalking.apm.collector.core.util.StringUtils; +import org.apache.skywalking.apm.collector.core.util.*; import org.apache.skywalking.apm.collector.storage.StorageModule; -import org.apache.skywalking.apm.collector.storage.dao.ui.IGlobalTraceUIDAO; -import org.apache.skywalking.apm.collector.storage.dao.ui.ISegmentDurationUIDAO; -import org.apache.skywalking.apm.collector.storage.ui.trace.QueryOrder; -import org.apache.skywalking.apm.collector.storage.ui.trace.TraceBrief; -import org.apache.skywalking.apm.collector.storage.ui.trace.TraceState; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.skywalking.apm.collector.storage.dao.ui.*; +import org.apache.skywalking.apm.collector.storage.ui.trace.*; +import org.slf4j.*; /** * @author peng-yongsheng @@ -47,12 +42,12 @@ public class SegmentTopService { } public TraceBrief loadTop(long startSecondTimeBucket, long endSecondTimeBucket, long minDuration, long maxDuration, - String operationName, - String traceId, int applicationId, int limit, int from, TraceState traceState, QueryOrder queryOrder) { + String operationName, + String traceId, int applicationId, int limit, int from, TraceState traceState, QueryOrder queryOrder) { logger.debug("startSecondTimeBucket: {}, endSecondTimeBucket: {}, minDuration: {}, " + "maxDuration: {}, operationName: {}, traceId: {}, applicationId: {}, limit: {}, from: {}, traceState: {}, queryOrder: {}", startSecondTimeBucket, endSecondTimeBucket, minDuration, - maxDuration, operationName, traceId, applicationId, limit, from,traceState,queryOrder); + maxDuration, operationName, traceId, applicationId, limit, from, traceState, queryOrder); TraceBrief traceBrief; if (StringUtils.isNotEmpty(traceId)) { diff --git a/docs/cn/Deploy-backend-in-cluster-mode-CN.md b/docs/cn/Deploy-backend-in-cluster-mode-CN.md index bffce449f8a96d195b351c1ba4542b79e0e24e2e..71f6baae887d94bc5a801c81c5483dbca690b821 100644 --- a/docs/cn/Deploy-backend-in-cluster-mode-CN.md +++ b/docs/cn/Deploy-backend-in-cluster-mode-CN.md @@ -38,10 +38,10 @@ cluster: sessionTimeout: 100000 naming: # 配置探针使用的host和port - jetty: +jetty: host: localhost port: 10800 - context_path: / + contextPath: / remote: gRPC: host: localhost @@ -54,30 +54,50 @@ agent_jetty: jetty: host: localhost port: 12800 - context_path: / + contextPath: / analysis_register: default: analysis_jvm: default: analysis_segment_parser: default: - buffer_file_path: ../buffer/ - buffer_offset_max_file_size: 10M - buffer_segment_max_file_size: 500M + bufferFilePath: ../buffer/ + bufferOffsetMaxFileSize: 10M + bufferSegmentMaxFileSize: 500M ui: jetty: host: localhost port: 12800 - context_path: / + contextPath: / # 配置 Elasticsearch 集群连接信息 storage: elasticsearch: - cluster_name: CollectorDBCluster - cluster_transport_sniffer: true - cluster_nodes: localhost:9300 - index_shards_number: 2 - index_replicas_number: 0 - ttl: 7 + clusterName: CollectorDBCluster + clusterTransportSniffer: true + clusterNodes: localhost:9300 + indexShardsNumber: 2 + indexReplicasNumber: 0 + highPerformanceMode: true + # 设置统计指标数据的失效时间,当指标数据失效时系统将数据自动删除. + traceDataTTL: 90 # 单位为分 + minuteMetricDataTTL: 90 # 单位为分 + hourMetricDataTTL: 36 # 单位为小时 + dayMetricDataTTL: 45 # 单位为天 + monthMetricDataTTL: 18 # 单位为月 +configuration: + default: +# namespace: xxxxx +# 告警阀值 + applicationApdexThreshold: 2000 + serviceErrorRateThreshold: 10.00 + serviceAverageResponseTimeThreshold: 2000 + instanceErrorRateThreshold: 10.00 + instanceAverageResponseTimeThreshold: 2000 + applicationErrorRateThreshold: 10.00 + applicationAverageResponseTimeThreshold: 2000 +# 热力图配置,修改配置后需要删除热力指标统计表,由系统重建 + thermodynamicResponseTimeStep: 50 + thermodynamicCountOfResponseTimeSteps: 40 ``` diff --git a/docs/en/Deploy-backend-in-cluster-mode.md b/docs/en/Deploy-backend-in-cluster-mode.md index be70477dc068c5eb860518627a8b83ca9d3a4550..6c0f9e6f8ac8a1050c30335e5170df69a918d85f 100644 --- a/docs/en/Deploy-backend-in-cluster-mode.md +++ b/docs/en/Deploy-backend-in-cluster-mode.md @@ -37,10 +37,10 @@ cluster: sessionTimeout: 100000 naming: # Host and port used for agent config - jetty: - host: localhost - port: 10800 - contextPath: / +jetty: + host: localhost + port: 10800 + contextPath: / remote: gRPC: host: localhost @@ -76,10 +76,17 @@ storage: clusterNodes: localhost:9300 indexShardsNumber: 2 indexReplicasNumber: 0 - ttl: 7 + highPerformanceMode: true + # Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted. + traceDataTTL: 90 # Unit is minute + minuteMetricDataTTL: 45 # Unit is minute + hourMetricDataTTL: 36 # Unit is hour + dayMetricDataTTL: 45 # Unit is day + monthMetricDataTTL: 18 # Unit is month configuration: default: # namespace: xxxxx +# alarm threshold applicationApdexThreshold: 2000 serviceErrorRateThreshold: 10.00 serviceAverageResponseTimeThreshold: 2000 @@ -87,6 +94,9 @@ configuration: instanceAverageResponseTimeThreshold: 2000 applicationErrorRateThreshold: 10.00 applicationAverageResponseTimeThreshold: 2000 +# thermodynamic + thermodynamicResponseTimeStep: 50 + thermodynamicCountOfResponseTimeSteps: 40 ``` 3. Run `bin/collectorService.sh`