Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
## 环境:
python=3.8
tensorflow==2.5
## 模板提取:
* 运行脚本的的命令:
* cd LogAnomaly/ft_tree/
* python -u ft_tree.py -data_path ../data/bgl.log -template_path ../middle/bgl_log.template -fre_word_path ../middle/bgl_log.fre
* 参数样例:
* data_path:日志文件 ../data/bgl.log
* template_path:模板文件 ../middle/bgl_log.template
* fre_word_path:单词词频文件 ../middle/bgl_log.fre
## 模板匹配:
* 运行脚本的的命令:
* cd LogAnomaly/ft_tree/
* python -u matchTemplate.py -template_path ../middle/bgl_log.template -fre_word_path ../middle/bgl_log.fre -log_path ../data/bgl.log -out_seq_path ../data/bgl_log.seq -match_model 1
* 参数样例:
* template_path:模板文件 ../middle/bgl_log.template
* fre_word_path:单词词频文件 ../middle/bgl_log.fre
* log_path:日志文件 ../data/bgl.log
* out_seq_path:日志序列文件 ../data/bgl_log.seq
* match_model:1:正常匹配日志 2:单条增量学习&匹配 3:批量增量学习&匹配
## 获取正常日志序列:
* 运行脚本的的命令:
* cd LogAnomaly/data/
* python removeAnomaly.py -input_seq bgl_log.seq -input_label bgl.label
* 参数样例:
* input_seq:日志序列文件 bgl_log.seq
* input_label:日志label文件 bgl.label
## 基于模板搜索同义词和反义词:
* 运行脚本的的命令:
* cd LogAnomaly/template2Vector/src/preprocess/
* python wordnet_process.py -data_dir ../../../middle/ -template_file bgl_log.template -syn_file bgl_log.syn -ant_file bgl_log.ant
* 参数样例:
* data_dir:数据目录 ../../../middle/
* template_file:模板文件 bgl_log.template
* syn_file:同义词文件 bgl_log.syn
* ant_file:反义词文件 bgl_log.ant
## 转换日志模板为词向量训练格式:
* 运行脚本的的命令:
* cd LogAnomaly/middle/
* python changeTemplateFormat.py -input bgl_log.template
* 参数样例:
* input:模板文件 bgl_log.template
## 日志模板学习词向量:
* 运行脚本的的命令:
* cd LogAnomaly/template2Vector/src/
* make
* ./lrcwe -train ../../middle/bgl_log.template_for_training -synonym ../../middle/bgl_log.syn -antonym ../../middle/bgl_log.ant -output ../../model/bgl_log.model -save-vocab ../../middle/bgl_log.vector_vocab -belta-rel 0.8 -alpha-rel 0.01 -belta-syn 0.4 -alpha-syn 0.2 -alpha-ant 0.3 -size 32 -min-count 1
* 参数样例:
* train:训练文件 ../../middle/bgl_log.template_for_training
* synonym:同义词文件 ../../middle/bgl_log.syn
* antonym:反义词文件 ../../middle/bgl_log.ant
* output:单词模型 ../../model/bgl_log.model
* save-vocab:保存单词向量 ../../middle/bgl_log.vector_vocab
* belta-rel 0.8
* alpha-rel 0.01
* belta-syn 0.4
* alpha-syn 0.2
* alpha-ant 0.3
* size 32
* min-count:最小词频训练阀值 1
## 获取模板向量:
* 运行脚本的的命令:
* cd LogAnomaly/template2Vector/src/
* python template2Vec.py -template_file ../../middle/bgl_log.template -word_model ../../model/bgl_log.model -template_vector_file ../../model/bgl_log.template_vector -dimension 32
* 参数样例:
* template_file:模板文件 ../../middle/bgl_log.template
* word_model:单词模型 ../../model/bgl_log.model
* template_vector_file:模板向量文件 ../../model/bgl_log.template_vector
* dimension:维度 32
## 模型训练:
* 运行脚本的的命令:
* cd LogAnomaly/LogAnomaly_main/
* python -u train_vector_2LSTM.py -train_file ../data/bgl_log.seq_normal -seq_length 10 -model_dir ../weights/vector_matrix/ -onehot 1 -template2Vec_file ../model/bgl_log.template_vector -template_file ../middle/bgl_log.template -count_matrix 1
* 参数样例:
* train_file:训练文件 ../data/bgl_log.seq_normal
* seq_length:序列长度 10
* model_dir:模型目录 ../weights/vector_matrix/
* onehot:1:使用独热编码 0:不使用独热编码 1
* template2Vec_file:模板向量文件 ../model/bgl_log.template_vector
* template_file:模板文件 ../middle/bgl_log.template
* count_matrix:1:统计count_matrix 0:不统计 1
## 异常检测:
* 运行脚本的的命令:
* cd LogAnomaly/LogAnomaly_main/
* python -u detect_vector_2LSTM.py -test_file ../data/bgl_log.seq -seq_length 10 -model_dir ../weights/vector_matrix/ -n_candidates 15 -windows_size 3 -step_size 1 -onehot 1 -result_file ../results/bgl_log_precision_recall.txt -label_file ../data/bgl.label -template2Vec_file ../model/bgl_log.template_vector -template_file ../middle/bgl_log.template -count_matrix 1
* 参数样例:
* test_file:测试文件 ../data/bgl_log.seq
* seq_length:序列长度 10
* model_dir:模型目录 ../weights/vector_matrix/
* n_candidates:日志候选集数目 15
* windows_size:时间窗口大小 3
* step_size:时间窗口步长 1
* onehot:1:使用独热编码 0:不使用独热编码 1
* result_file:模型评估结果输出 ../results/bgl_log_precision_recall.txt
* label_file:日志label文件 ../data/bgl.label
* template2Vec_file:模板向量文件 ../model/bgl_log.template_vector
* template_file:模板文件 ../middle/bgl_log.template
* count_matrix:1:统计count_matrix 0:不统计 1
## 注意
1. 由于word2vec是已有方法,所用到的word2vec相关代码均直接使用Google提供的源码。
2. 由于本文重点在于异常检测,日志解析用到的是当前已有算法,所以用到的日志解析方法FT-tree的代码直接使用作者论文源码。
3. 改进部分在LogAnomaly/integration中。