Всем привет.
Пытаюсь разобраться в репах
https://github.com/logpai. Насколько я понял, самыми важными являются
https://github.com/logpai/logparser, который содержит парсеры логов, подготавливающих логи для скармливания моделям из
https://github.com/logpai/loglizer. У меня получилось подготовить .log_structured.csv и .log_templates.csv с помощью парсера
Drain, используя следующий код:
# Define the log format and regex
log_format = '<Date> <Time> <Level>:<Content>'
regex = [r'(/|)([0-9]+.){3}[0-9]+(:[0-9]+|)(:|)'] # IP
# Define other parameters
st = 0.5
depth = 4
parser = LogParser(log_format, indir=input_dir, outdir=output_dir, depth=depth,
st=st, rex=regex)
Все демо моделей loglizer используют .log_structured.csv для тренировки. Например,
InvariantsMiner_demo.py. Все модели используют dataloader.load_HDFS() для подготовки логов и anomaly_label.csv с маркировкой аномальных и нормальных BlockId в логах и работают только с логами HDFS (Hadoop Distributed File System). Есть
возможность загрузить в модель InvariantsMiner логи без использования anomaly_label.csv, а потом проверить их на anomaly_label.csv.
Я попытался использовать dataloader.load_HDFS() для java-логов, в которых есть RID (requestID), который присутствует во всех сообщениях логов, изменив паттерн с
blkId_list = re.findall(r'(blk_-?\d+)', row['Content'])
на
blkId_list = re.findall(r'(RID:([\w-]+))', row['Content']) в методе
load_HDFS(), запустил код и получил вывод:
Total: 196 instances, train: 98 instances, test: 98 instances
====== Transformed train data summary ======
Train data shape: 98-by-34
Train phase:
после чего код работал почти сутки, но из фазы тренировки так и не вышел.
Прошу помочь разобраться в следующих вопросах:
1. Правильно ли я подготовил логи для loglizer и изменил код loglizer модели для обучения ее на логах java?
2. Как правильно подготовить anomaly_label.csv для моих логов?