From 5da127270b510a726ca373b843d9e440ca325906 Mon Sep 17 00:00:00 2001 From: Alexey Velikiy Date: Tue, 23 Nov 2021 09:08:55 +0300 Subject: [PATCH] todos++ --- server/src/config.rs | 3 --- .../analytic_service/analytic_service.rs | 3 ++- .../analytic_unit/anomaly_analytic_unit.rs | 25 +++++++++++++++++-- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/server/src/config.rs b/server/src/config.rs index 6d52633..e2784a2 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -73,11 +73,8 @@ fn resolve_alerting(config: &config::Config) -> anyhow::Result anyhow::Result { - // TODO: parse alerting config - // TODO: throw error on bad config let mut config = config::Config::default(); diff --git a/server/src/services/analytic_service/analytic_service.rs b/server/src/services/analytic_service/analytic_service.rs index fb86d5d..514e9b8 100644 --- a/server/src/services/analytic_service/analytic_service.rs +++ b/server/src/services/analytic_service/analytic_service.rs @@ -20,9 +20,10 @@ use crate::services::analytic_service::analytic_unit::types::{AnalyticUnit, Lear use anyhow; -use tokio::sync::{mpsc, oneshot, RwLock}; +use tokio::sync::{mpsc, oneshot}; // TODO: now it's basically single analytic unit, service will operate on many AU +// TODO: trigger anomaly unit model update in runner pub struct AnalyticService { metric_service: MetricService, segments_service: SegmentsService, diff --git a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs index c6e737b..c4b9f8f 100644 --- a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs +++ b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs @@ -9,6 +9,26 @@ use super::types::{AnalyticUnit, AnalyticUnitConfig, AnomalyConfig, LearningResu use async_trait::async_trait; use subbeat::metric::MetricResult; + +struct SARIMA { + pub ts: Vec, + pub seasonality: u64 +} + +impl SARIMA { + pub fn learn() { + + } + pub fn predict(timestamp: u64, value: f64) -> (f64, f64, f64) { + return (0.0, 0.0, 0.0); + } + // TODO: learn + // TODO: update + // TODO: predict with HSR + // TODO: don't count NaNs in model +} + + // TODO: move to config const DETECTION_STEP: u64 = 10; @@ -79,8 +99,9 @@ impl AnalyticUnit for AnomalyAnalyticUnit { } } async fn learn(&mut self, _ms: MetricService, _ss: SegmentsService) -> LearningResult { - // TODO: build SARIMA model based on seasonality - // TODO: don't count NaNs in model + // TODO: ensue that learning runs on seasonaliy change + // TODO: load data to learning + // TODO: update model to work online return LearningResult::Finished; }