Browse Source

anomaly begin

pull/25/head
Alexey Velikiy 3 years ago
parent
commit
43dff6d28b
  1. 47
      server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs
  2. 1
      server/src/services/analytic_service/analytic_unit/mod.rs
  3. 5
      server/src/services/analytic_service/analytic_unit/types.rs

47
server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs

@ -0,0 +1,47 @@
use crate::services::{
analytic_service::types, metric_service::MetricService, segments_service::SegmentsService,
};
use super::types::{AnalyticUnit, AnomalyConfig, LearningResult};
use async_trait::async_trait;
// TODO: move to config
const DETECTION_STEP: u64 = 10;
pub struct AnomalyAnalyticUnit {
config: AnomalyConfig,
}
impl AnomalyAnalyticUnit {
pub fn new(config: AnomalyConfig) -> AnomalyAnalyticUnit {
AnomalyAnalyticUnit { config }
}
}
#[async_trait]
impl AnalyticUnit for AnomalyAnalyticUnit {
async fn learn(&mut self, _ms: MetricService, _ss: SegmentsService) -> LearningResult {
return LearningResult::Finished;
}
async fn detect(
&self,
ms: MetricService,
from: u64,
to: u64,
) -> anyhow::Result<Vec<(u64, u64)>> {
let mr = ms.query(from, to, DETECTION_STEP).await.unwrap();
if mr.data.keys().len() == 0 {
return Ok(Vec::new());
}
let k = mr.data.keys().nth(0).unwrap();
let ts = &mr.data[k];
// TODO: implement
// TODO: decide what to do it from is Some() in the end
Ok(Default::default())
}
}

1
server/src/services/analytic_service/analytic_unit/mod.rs

@ -1,5 +1,6 @@
pub mod pattern_analytic_unit;
pub mod threshold_analytic_unit;
pub mod anomaly_analytic_unit;
pub mod types;
use self::{

5
server/src/services/analytic_service/analytic_unit/types.rs

@ -12,6 +12,11 @@ pub struct PatternConfig {
pub model_score: f32,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AnomalyConfig {
pub sesonality: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ThresholdConfig {
pub threashold: f64,

Loading…
Cancel
Save