diff options
| author | yinjiangyi <[email protected]> | 2021-10-27 19:35:07 +0800 |
|---|---|---|
| committer | yinjiangyi <[email protected]> | 2021-10-27 19:35:07 +0800 |
| commit | 2cfe3cf88ad5543bfbb1cfd31a002c0b47f88ce2 (patch) | |
| tree | e82fc5db09b3402daa800743549bcd8016b9e1e2 | |
| parent | 251fefc06166771cded5d070f80fbb03391b4bfc (diff) | |
修改判断框架,优先判断周期性,增加p99/p50判断
| -rw-r--r-- | src/main/java/cn/mesalab/config/ApplicationConfig.java | 2 | ||||
| -rw-r--r-- | src/main/java/cn/mesalab/service/BaselineSingleThread.java | 30 | ||||
| -rw-r--r-- | src/main/resources/application.properties | 5 |
3 files changed, 20 insertions, 17 deletions
diff --git a/src/main/java/cn/mesalab/config/ApplicationConfig.java b/src/main/java/cn/mesalab/config/ApplicationConfig.java index 1558de5..8dea34d 100644 --- a/src/main/java/cn/mesalab/config/ApplicationConfig.java +++ b/src/main/java/cn/mesalab/config/ApplicationConfig.java @@ -48,6 +48,8 @@ public class ApplicationConfig { public static final Integer BASELINE_RANGE_DAYS = ConfigUtils.getIntProperty("baseline.range.days"); public static final Float BASELINE_RATIONAL_PERCENTILE = ConfigUtils.getFloatProperty("baseline.rational.percentile"); + public static final Float BASELINE_TIMES_PERCENT_TIMES = ConfigUtils.getFloatProperty("baseline.times.percent.times"); + public static final String HBASE_TABLE = ConfigUtils.getStringProperty("hbase.table"); public static final String HBASE_ZOOKEEPER_QUORUM= ConfigUtils.getStringProperty("hbase.zookeeper.quorum"); diff --git a/src/main/java/cn/mesalab/service/BaselineSingleThread.java b/src/main/java/cn/mesalab/service/BaselineSingleThread.java index a5688ed..672c1a5 100644 --- a/src/main/java/cn/mesalab/service/BaselineSingleThread.java +++ b/src/main/java/cn/mesalab/service/BaselineSingleThread.java @@ -183,12 +183,10 @@ public class BaselineSingleThread extends Thread { List<Integer>series = completSeries.stream().map( i -> Integer.valueOf(i.get(ApplicationConfig.BASELINE_METRIC_TYPE).toString())).collect(Collectors.toList()); - // 判断ip出现频率 - float ipFrequency = ipDruidData.size() / (float) completSeries.size(); - updateLogFrequencyCounter(ipFrequency); - if(ipFrequency >ApplicationConfig.BASELINE_HISTORICAL_FREQUENCY_THREAD){ - // 异常值剔除 + // 具备周期性 + if(SeriesUtils.isPeriod(series)){ baselineGenerationType = 1; + // 异常值剔除 double exceptionPercentile = SeriesUtils.percentile(series, ApplicationConfig.BASELINE_EXECEPTION_PERCENTILE); double exceptionFillPercentile = SeriesUtils.percentile(series, ApplicationConfig.BASELINE_EXCECPTION_FILL_PERCENTILE); LOG.debug(ip + ": series-" + series); @@ -197,24 +195,24 @@ public class BaselineSingleThread extends Thread { series.set(i, (int) exceptionFillPercentile); } } - LOG.debug(ip + ": execpSeries-" + series); // KF baselineArr = baselineFunction(series); - // System.out.println("type-01:" + ipPercentile + " " + ip + " " + Arrays.toString(baselineArr)); - LOG.debug(ip + ": baseline-" + baselineArr); } else { - // 判断周期性 - if (SeriesUtils.isPeriod(series)){ + double p99 = SeriesUtils.percentile(series, 0.99); + double p50 = SeriesUtils.percentile(series, 0.50); + + // 无周期性 + float ipFrequency = ipDruidData.size() / (float) completSeries.size(); + updateLogFrequencyCounter(ipFrequency); + // p99/p50 > 10 + if(ipFrequency >ApplicationConfig.BASELINE_HISTORICAL_FREQUENCY_THREAD && p99/p50 > ApplicationConfig.BASELINE_TIMES_PERCENT_TIMES){ baselineGenerationType = 2; - // KF - baselineArr = baselineFunction(series); - // System.out.println("type-02:" + ipPercentile + " " + ip + " " + Arrays.toString(baselineArr)); - } else { - baselineGenerationType = 3; Arrays.fill(baselineArr, ipPercentile); - // System.out.println("type-03:" + ipPercentile + " " + ip + " " + Arrays.toString(baselineArr)); + } else { + return null; } } + updateLogGenerateTypeCounter(baselineGenerationType); // 计算默认值-非零数据的百分位数 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index cb4a075..ef31254 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -55,7 +55,10 @@ baseline.period.correlative.threshold=0.5 baseline.historical.frequency.thread=0.2 baseline.exception.percentile=0.99 baseline.exception.fill.percentile=0.99 -baseline.rational.percentile=0.95 +baseline.rational.percentile=0.99 + +# p99/p50 倍数阈值 +baseline.times.percent.times=10 #Kalman Filter baseline.kalman.q=0.1 |
