109 lines
4.6 KiB
Diff
109 lines
4.6 KiB
Diff
From 8a89c59b0c6194afdd6ed1c9bbd949b2cc62aeb0 Mon Sep 17 00:00:00 2001
|
|
From: algorithmofdish <hexiujun1@huawei.com>
|
|
Date: Tue, 29 Nov 2022 17:07:12 +0800
|
|
Subject: [PATCH] refactor(infer): adaptation for abnormal event output change
|
|
|
|
---
|
|
cause_inference/__main__.py | 25 +++++++++++++++++++++----
|
|
cause_inference/cause_infer.py | 21 ---------------------
|
|
2 files changed, 21 insertions(+), 25 deletions(-)
|
|
|
|
diff --git a/cause_inference/__main__.py b/cause_inference/__main__.py
|
|
index 093f7ac..d586b1f 100644
|
|
--- a/cause_inference/__main__.py
|
|
+++ b/cause_inference/__main__.py
|
|
@@ -14,7 +14,6 @@ from cause_inference.config import infer_config
|
|
from cause_inference.config import init_infer_config
|
|
from cause_inference.model import AbnormalEvent
|
|
from cause_inference.cause_infer import cause_locating
|
|
-from cause_inference.cause_infer import parse_abn_evt
|
|
from cause_inference.cause_infer import preprocess_abn_score
|
|
from cause_inference.rule_parser import rule_engine
|
|
from cause_inference.exceptions import InferenceException
|
|
@@ -164,16 +163,34 @@ def init_obsv_meta_coll_thd():
|
|
return obsv_meta_coll_thread
|
|
|
|
|
|
+def parse_abn_evt(data) -> AbnormalEvent:
|
|
+ resource = data.get('Resource', {})
|
|
+ attrs = data.get('Attributes', {})
|
|
+ if not resource.get('metric'):
|
|
+ raise DataParseException('Attribute "Resource.metric" required in abnormal event')
|
|
+ if not attrs.get('entity_id') and not resource.get('labels'):
|
|
+ raise DataParseException('metric_label or entity_id info need in abnormal event')
|
|
+ abn_evt = AbnormalEvent(
|
|
+ timestamp=data.get('Timestamp'),
|
|
+ abnormal_metric_id=resource.get('metric'),
|
|
+ abnormal_score=preprocess_abn_score(resource.get('score', 0.0)),
|
|
+ metric_labels=resource.get('labels'),
|
|
+ abnormal_entity_id=attrs.get('entity_id'),
|
|
+ desc=resource.get('description', '') or data.get('Body', '')
|
|
+ )
|
|
+ return abn_evt
|
|
+
|
|
+
|
|
def get_recommend_metric_evts(abn_kpi_data: dict) -> List[AbnormalEvent]:
|
|
metric_evts = []
|
|
obsv_meta_mgt = ObserveMetaMgt()
|
|
- recommend_metrics = abn_kpi_data.get('Resource', {}).get('recommend_metrics', {})
|
|
+ recommend_metrics = abn_kpi_data.get('Resource', {}).get('cause_metrics', {})
|
|
for metric_data in recommend_metrics:
|
|
metric_evt = AbnormalEvent(
|
|
timestamp=abn_kpi_data.get('Timestamp'),
|
|
abnormal_metric_id=metric_data.get('metric', ''),
|
|
- abnormal_score=preprocess_abn_score(metric_data.get('score')),
|
|
- metric_labels=metric_data.get('label', {}),
|
|
+ abnormal_score=preprocess_abn_score(metric_data.get('score', 0.0)),
|
|
+ metric_labels=metric_data.get('labels', {}),
|
|
desc=metric_data.get('description', '')
|
|
)
|
|
if not metric_evt.update_entity_id(obsv_meta_mgt):
|
|
diff --git a/cause_inference/cause_infer.py b/cause_inference/cause_infer.py
|
|
index dff26d0..6873c1e 100644
|
|
--- a/cause_inference/cause_infer.py
|
|
+++ b/cause_inference/cause_infer.py
|
|
@@ -1,7 +1,5 @@
|
|
from typing import List
|
|
|
|
-from scipy.special import expit
|
|
-
|
|
from cause_inference.model import Cause
|
|
from cause_inference.model import CausalGraph
|
|
from cause_inference.model import AbnormalEvent
|
|
@@ -12,7 +10,6 @@ from spider.collector.data_collector import DataCollector
|
|
from spider.collector.prometheus_collector import PrometheusCollector
|
|
from cause_inference.exceptions import InferenceException
|
|
from cause_inference.exceptions import DBException
|
|
-from cause_inference.exceptions import DataParseException
|
|
from cause_inference.config import infer_config
|
|
from cause_inference.rule_parser import rule_engine
|
|
from cause_inference.arangodb import connect_to_arangodb
|
|
@@ -68,24 +65,6 @@ def query_abnormal_topo_subgraph(abnormal_event: AbnormalEvent):
|
|
return subgraph
|
|
|
|
|
|
-def parse_abn_evt(data) -> AbnormalEvent:
|
|
- resource = data.get('Resource', {})
|
|
- attrs = data.get('Attributes', {})
|
|
- if not resource.get('metrics'):
|
|
- raise DataParseException('Atribute "Resource.metrics" required in abnormal event')
|
|
- if not attrs.get('entity_id') and not resource.get('metric_label'):
|
|
- raise DataParseException('metric_label or entity_id info need in abnormal event')
|
|
- abn_evt = AbnormalEvent(
|
|
- timestamp=data.get('Timestamp'),
|
|
- abnormal_metric_id=resource.get('metrics'),
|
|
- abnormal_score=1.0,
|
|
- metric_labels=resource.get('metric_label'),
|
|
- abnormal_entity_id=attrs.get('entity_id'),
|
|
- desc=resource.get('description', '') or data.get('Body', '')
|
|
- )
|
|
- return abn_evt
|
|
-
|
|
-
|
|
def parse_entity_id(orig_entity_id: str) -> str:
|
|
fs_idx = orig_entity_id.index('/')
|
|
return orig_entity_id[fs_idx+1:]
|
|
--
|
|
2.21.0.windows.1
|
|
|