3个版本 (破坏性更新)
0.3.0 | 2021年5月31日 |
---|---|
0.2.0 | 2020年9月22日 |
0.1.0 | 2020年9月22日 |
#1087 in 算法
30KB
615 代码行
drain-rs
Drain提供了一种在线日志分类的机制。
本版本提供
- 通过serde json序列化/反序列化drain状态
- 支持GROK模式,以实现更精确的分类和变量过滤
该项目的目标是提供一个优美、快速、基于Rust的升级版本,用于原始的drain实现。原始论文在此
- Pinjia He, Jieming Zhu, Zibin Zheng, and Michael R. Lyu. Drain: An Online Log Parsing Approach with Fixed Depth Tree, Proceedings of the 24th International Conference on Web Services (ICWS), 2017.
这是一个工作进展,0.2.x
安装
[dependencies]
drain-rs = "0.2.0"
使用drain进行聚类
要使用drain进行聚类
//Create new drain tree object
let mut drain = DrainTree::new()
// Add log lines and see their group:
let log_group = drain.add_log_line(s.as_str());
要使用drain与grok一起使用
let mut g = grok::Grok::with_patterns();
let filter_patterns = vec![
"blk_(|-)[0-9]+", //blockid
"%{IPV4:ip_address}", //IP
"%{NUMBER:number}", //Num
];
// Build new drain tree
let mut drain = DrainTree::new()
.filter_patterns(filter_patterns)
.max_depth(4)
.max_children(100)
.min_similarity(0.5)
// HDFS log pattern, variable format printout in the content section
.log_pattern("%{NUMBER:date} %{NUMBER:time} %{NUMBER:proc} %{LOGLEVEL:level} %{DATA:component}: %{GREEDYDATA:content}", "content")
// Compile all the grok patterns so that they can be used
.build_patterns(&mut g);
依赖项
~4MB
~119K SLoC