summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoryinjiangyi <[email protected]>2021-10-27 19:35:07 +0800
committeryinjiangyi <[email protected]>2021-10-27 19:35:07 +0800
commit2cfe3cf88ad5543bfbb1cfd31a002c0b47f88ce2 (patch)
treee82fc5db09b3402daa800743549bcd8016b9e1e2 /src
parent251fefc06166771cded5d070f80fbb03391b4bfc (diff)
修改判断框架,优先判断周期性,增加p99/p50判断
Diffstat (limited to 'src')
-rw-r--r--src/main/java/cn/mesalab/config/ApplicationConfig.java2
-rw-r--r--src/main/java/cn/mesalab/service/BaselineSingleThread.java30
-rw-r--r--src/main/resources/application.properties5
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