in aiops/MicroAgents/layers/data_layer/datanalyzer.py [0:0]
def analyze(self, logs, traces, metrics, use_rule=False):
res_text = ""
symptoms = []
for data in self.data_type:
if data == "log":
history_df, recent_df, time_col, log_col, window_size, k, summary = logs.get('history_df'), logs.get('recent_df'), logs.get('time_col'), logs.get('log_col'), logs.get('window_size'), logs.get('k'), logs.get('summary')
if recent_df.shape[0] == 0 or history_df.shape[0] == 0:
continue
res, anomaly_logs = self.log.anomaly_detection(recent_df, history_df, time_col=time_col, log_col=log_col, window_size=window_size, k=k, summary=summary)
if res:
res_text += f"LOG OBSERVATION:The log monitor detect abnormal log behavior:\n{res}"
symptoms.extend(anomaly_logs)
elif data == "trace":
history_df, recent_df, k, metric_columns = traces.get('history_df'), traces.get('recent_df'), traces.get('k'), traces.get('metric_columns')
if recent_df.shape[0] == 0 or history_df.shape[0] == 0:
continue
res, _ = self.trace.anomaly_detection(recent_df, history_df=history_df, k=k, mean=None, std=None, metric_columns=metric_columns)
if res:
res_text += f"TRACE OBSERVATION: The trace monitor detect abnormal trace behavior:\n{res}"
symptoms.extend('NetworkP90(ms)')
elif data == "metric":
history_df, recent_df, k, metric_columns = metrics.get('history_df'), metrics.get('recent_df'), metrics.get('k'), metrics.get('metric_columns')
if recent_df.shape[0] == 0 or history_df.shape[0] == 0:
continue
res, anomaly_metrics = self.metric.anomaly_detection(recent_df, history_df=history_df, metric_columns=metric_columns, k=k, mean=None, std=None, use_rule=use_rule)
if res:
res_text += f"METRIC OBSERVATION: The metric monitor detect abnormal metric behavior:\n{res}"
symptoms.extend(anomaly_metrics)
return res_text, symptoms