Dim rates (#12833)
vkalintiris committed
May 9, 2022 at 17:50 UTC
caf09ce8547b6cfcb852af700b9aa9b1c77ebc23
3 files changed
+22
-2
ml/Dimension.h
+10
@@ -30,6 +30,16 @@ public:
30
return SS.str();
31
}
32
33
+ bool isActive() const {
34
+ if (rrdset_flag_check(RD->rrdset, RRDSET_FLAG_OBSOLETE))
35
+ return false;
36
+
37
+ if (rrddim_flag_check(RD, RRDDIM_FLAG_OBSOLETE))
38
+ return false;
39
+
40
+ return true;
41
+ }
42
+
43
void setAnomalyRateRD(RRDDIM *ARRD) { AnomalyRateRD = ARRD; }
44
RRDDIM *getAnomalyRateRD() const { return AnomalyRateRD; }
45
ml/Host.cc
+11
-2
@@ -413,6 +413,7 @@ void DetectableHost::detectOnce() {
413
size_t NumAnomalousDimensions = 0;
414
size_t NumNormalDimensions = 0;
415
size_t NumTrainedDimensions = 0;
416
+ size_t NumActiveDimensions = 0;
417
418
bool CollectAnomalyRates = (++AnomalyRateTimer == Cfg.DBEngineAnomalyRateEvery);
419
if (CollectAnomalyRates)
@@ -428,6 +429,13 @@ void DetectableHost::detectOnce() {
429
430
Dimension *D = DP.second;
431
432
+ if (!D->isActive()) {
433
+ D->updateAnomalyBitCounter(AnomalyRateRS, AnomalyRateTimer, false);
434
+ continue;
435
+ }
436
+
437
+ NumActiveDimensions++;
438
+
439
auto P = D->detect(WindowLength, ResetBitCounter);
440
bool IsAnomalous = P.first;
441
double AnomalyScore = P.second;
@@ -444,11 +452,11 @@ void DetectableHost::detectOnce() {
452
}
453
454
if (NumAnomalousDimensions)
447
- WindowAnomalyRate = static_cast<double>(NumAnomalousDimensions) / DimensionsMap.size();
455
+ WindowAnomalyRate = static_cast<double>(NumAnomalousDimensions) / NumActiveDimensions;
456
else
457
WindowAnomalyRate = 0.0;
458
451
- NumNormalDimensions = DimensionsMap.size() - NumAnomalousDimensions;
459
+ NumNormalDimensions = NumActiveDimensions - NumAnomalousDimensions;
460
}
461
462
if (CollectAnomalyRates) {
@@ -460,6 +468,7 @@ void DetectableHost::detectOnce() {
468
this->NumAnomalousDimensions = NumAnomalousDimensions;
469
this->NumNormalDimensions = NumNormalDimensions;
470
this->NumTrainedDimensions = NumTrainedDimensions;
471
+ this->NumActiveDimensions = NumActiveDimensions;
472
473
worker_is_busy(WORKER_JOB_UPDATE_CHARTS);
474
updateDimensionsChart(getRH(), NumTrainedDimensions, NumNormalDimensions, NumAnomalousDimensions);
ml/Host.h
+1
@@ -127,6 +127,7 @@ private:
127
size_t NumAnomalousDimensions{0};
128
size_t NumNormalDimensions{0};
129
size_t NumTrainedDimensions{0};
130
+ size_t NumActiveDimensions{0};
131
132
unsigned AnomalyRateTimer{0};
133