@cryptotaxi247 / netdata-1 / commits / caf09ce85

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