日志异常检测初步实践与探索 | 您所在的位置:网站首页 › ppt文件怎么做异常原因分析 › 日志异常检测初步实践与探索 |
1 背景 日志的主要目的是记录系统(包括服务和业务等)状态和重要的事件帮助定位系统的问题。日志对于理解系统状态和定位性能问题至关重要。因此,日志是在线监控和异常检测的一个重要信息源。在很多业务和服务的故障自愈过程中,日志异常检测与根因分析是必不可少的一环。但是之前我们通常都使用人工的方式来定位问题,主要包括人工检测与分析和人工学习错误日志提取正则表达式来进行故障定位这两种方式。 由于学习错误日志来提取正则表达式需要SRE同学对所负责的服务很了解而且对于每一种服务都需要人工学习它的日志,所以正则表达式在很多服务上还没用起来,我们主要还是人工去定位问题。长期受手动排查问题困扰的我们也在思考,有没有一些通用的自动的方式解放我们的双手和眼睛呢?在这样的背景下,我们对行业前沿的一些方法结合我们自己的运维经验开始了尝试和探索。 一开始,我们尝试了一些日志异常检测的主流深度学习算法比如DeepLog和LogAnomaly,它们的主要思想是异常时日志会和平时不同,可能是日志本身内容变化,也可能是日志顺序变化。 日志内容变化:异常时会出现平时不出现的日志模板(模板的概念,第二段会详细讲解)。 日志顺序变化:异常时日志中模板出现的顺序和正常时不同。 这种思想确实是很先进的,但是最后一公里的问题不好解决。具体来说,就是这些深度学习算法可以输出存在异常日志的一批日志序列,但是怎么从中提取真正的异常日志,进而提取具体的异常原因,又是一个难题。 使用这些深度学习算法进行日志异常检测的一个前提是提取日志模板。但是,提取日志模板就已经能够应对日志内容变化这种场景了:因为异常日志和正常日志通常不会在一个聚类,所以提取日志模板,对日志进行聚类就可以提取到异常日志(如果存在的话)。所以目前,我们选择日志聚类这种简单,便捷,相对通用的方法来做异常检测,先解决日志内容变化这种情况。 基于日志聚类进行完整的故障自愈流程如下图: 首先,报警触发故障自愈程序。当服务或者业务发生异常触发报警后,falcon的callback(回调)功能会把报警的服务,集群,报警项等相关信息一起发送给我们的故障自愈程序; 然后,收集待检测日志。 |
CopyRight 2018-2019 实验室设备网 版权所有 |