搞定这个日志智能分析设计,大小故障都无处可逃
一、背景
随着系统的日益复杂,生成的日志是海量的。当发生故障时,人工从海量错误日志中定位异常的成本非常高,主要原因:
日志格式繁多,难以依靠人工划分,而传统的日志规则分类需要配置复杂的规则和正则,难以通用化;日志量级大,报警多,难以定位需要关注的异常,一些无关的错误日志容易掩盖真正的问题。
日志智能分类算法可以自动根据日志的相似性对日志进行流式聚类,并提取其中的关键信息——日志模版,有效避免相似日志的无效查看,大幅节省排查时间。并且日志异常检测可以从海量日志中发现潜在的异常日志模式,帮助程序快速定位异常。
二、日志智能分类
1、设计方案
最初的日志分类服务在具体的算法选用上选择了 Drain 算法来对日志模板进行提取。随着业务经验的累积,为了提高日志分类的准确性,用两级模型对日志进行流式分类并生成日志模版。其中一次分类相当于是预分类,然后把预分类结果再进行二次分类,将预分类没有分好的日志进行融合,形成最终满足预期的分类结果。
2、一次分类
一次分类使用的是一种改进的前缀树。
从根节点开始,第一层为长度层,同样长度的日志进到同一个结点,接下来的节点就是根据token进行判别,只有匹配了同样的token的日志,才往对应的路径分。此外,还会设置一个阈值,当叶子结点到达阈值后,会增加一个
THE END