一种基于聚类算法的故障诊断分析方法及系统与流程

文档序号:24238772发布日期:2021-03-12 13:12阅读:62来源:国知局
一种基于聚类算法的故障诊断分析方法及系统与流程

本发明涉及故障诊断领域,具体涉及一种基于聚类算法的故障诊断分析方法及系统。



背景技术:

随着互联网的快速发展和web程序的广泛应用,web程序的稳定性和易于运维的能力之间的矛盾日益突出,人们迫切需要一种能够智能化运维的技术,其中故障诊断是智能化运维的重要环节之一,而在一般的web程序中,都缺少故障诊断的这一关键技术,往往在发生故障的时候,技术人员需要到服务器上查看海量的日志,从而分析出故障发生的位子,这样不仅会耗费大量的人力和时间,导致查找故障的效率低,而且很有可能会看漏日志而导致故障没有发现全,导致反复出现问题,而且在服务发故障的时候,难以第一时间发现服务发生故障甚至是宕机。



技术实现要素:

鉴于现有技术中存在的技术缺陷和技术弊端,本发明实施例提供克服上述问题或者至少部分地解决上述问题的一种基于聚类算法的故障诊断分析方法及系统,具体方案如下:

作为本发明的第一方面,提供一种基于聚类算法的故障诊断分析方法,所述方法包括:

集成监控工具springbootadmin,通过监控工具springbootadmin捕获服务异常,并记录服务异常的相关日志,即服务异常日志;

整合@exceptionhandler全局运行异常处理类,通过@exceptionhandler全局运行异常处理类捕获运行异常,并记录运行异常的相关日志,即运行异常日志;

将服务异常日志和运行异常日志存储至搜索服务器elasticsearch中;

聚类分析elasticsearch中存储的运行异常日志和服务异常日志,基于聚类分析结果,判断发生故障或者容易发生故障的接口。

进一步地,集成监控工具springbootadmin,通过监控工具springbootadmin捕获服务异常,并记录服务异常的相关日志具体包括:

从应用容器引擎docker上下载监控工具springbootadmin的image镜像,基于docker-compose部署springbootadmin的服务端,在需要捕获服务异常的服务上整合springbootadmin的客户端,配置好springbootadmin的服务端地址和信息,通过springbootadmin的客户端和服务端之间的心跳检测,实现服务状态的运行检查,一旦客户端离线,服务端即可监测到客户端的离线行为,从而记录下服务离线的相关日志,即服务异常日志。

进一步地,整合@exceptionhandler全局运行异常处理类,通过@exceptionhandler全局运行异常处理类捕获运行异常,并记录运行异常的相关日志具体包括:

在需要捕获运行异常的服务上整合@exceptionhandler全局运行异常处理类,当代码级别发生报错的时候,如常见的空指针异常、数组越界异常等,通过@exceptionhandler全局运行异常处理类记录异常的信息,将记录的异常信息存储到库中,实现全局运行异常日志的统一处理。

进一步地,将服务异常日志和运行异常日志存储至搜索服务器elasticsearch中具体包括:将捕获的服务异常日志和运行异常日志发送到kafka中,故障诊断模块消费kafka中的服务异常日志和运行异常日志,并存储至elasticsearch中。

进一步地,所述方法还包括:

s01,根据存储在elasticsearch中的日志数据初始化k个原型{w1,w2...,wk},ij是wj的聚类因子,i和j的取值范围分别是j∈{1,2,......,k},i∈{1,2,......,n};

s02,根据不同的日志分类,使每一个分离出来的聚类cj与原型wj相对应;

s03,对于每一个输入变量ii,其中i∈{1,2,......,n},都将ii分配给最近的原型wj所属的聚类cj,即

s04,计算错误函数对范围属于ej的进行求和;

s05,定义日常日志相似度,选择两个日常日志i,j之间的相似度s(i,j)为对应异常的夹角的余弦值,不同的变量之间的相似性的测量方式略有不同,设日志的向量为vi=(ai1,ai2......,ai∈)来计算日志的相似度,那么设相似度矩阵为r=(rij)s×s,rij用来表示日志i和日志j的相似度:其中,rij=rji(i,j=1,2,......,s),对日志之间的相似度定义的方式也是很多的,比如定义其中|vi∩vj|是两种日志中都出现过的异常,|vi∪vj|是两种日志的总的数目;

s06,对于矩阵r其中的aij=s(i,j),即日志i和日志j的相似度,矩阵r为日志集合的相似度矩阵

将相似度矩阵,作为聚类算法的输入,进行聚类分析。

作为本发明的第二方面,提供一种基于聚类算法的故障诊断分析系统,所述系统包括服务监控单元、运行监控单元、存储单元以及聚类单元;

所述服务监控单元用于集成监控工具springbootadmin,通过监控工具springbootadmin捕获服务异常,并记录服务异常的相关日志,即服务异常日志;

所述运行监控单元用于整合@exceptionhandler全局运行异常处理类,通过@exceptionhandler全局运行异常处理类捕获运行异常,并记录运行异常的相关日志,即运行异常日志;

所述存储单元用于将服务异常日志和运行异常日志存储至搜索服务器elasticsearch中;

所述聚类单元用于聚类分析elasticsearch中存储的运行异常日志和服务异常日志,基于聚类分析结果,判断发生故障或者容易发生故障的接口。

进一步地,所述服务监控单元具体用于:

从应用容器引擎docker上下载监控工具springbootadmin的image镜像,基于docker-compose部署springbootadmin的服务端,在需要捕获服务异常的服务上整合springbootadmin的客户端,配置好springbootadmin的服务端地址和信息,通过springbootadmin的客户端和服务端之间的心跳检测,实现服务状态的运行检查,一旦客户端离线,服务端即可监测到客户端的离线行为,从而记录下服务离线的相关日志,即服务异常日志。

进一步地,运行监控单元具体用于:

在需要捕获运行异常的服务上整合@exceptionhandler全局运行异常处理类,当代码级别发生报错的时候,如常见的空指针异常、数组越界异常等,通过@exceptionhandler全局运行异常处理类记录异常的信息,将记录的异常信息存储到库中,实现全局运行异常日志的统一处理。

进一步地,所述存储单元具体用于:将捕获的服务异常日志和运行异常日志发送到kafka中,故障诊断模块消费kafka中的服务异常日志和运行异常日志,并存储至elasticsearch中。

进一步地,所述系统还包括相似度矩阵计算模块,所述相似度矩阵计算模块计算模块具体用于:

根据存储在elasticsearch中的日志数据初始化k个原型{w1,w2...,wk},ij是wj的聚类因子,i和j的取值范围分别是j∈{1,2,......,k},i∈{1,2,......,n};

根据不同的日志分类,使每一个分离出来的聚类cj与原型wj相对应;

对于每一个输入变量ii,其中i∈{1,2,......,n},都将ii分配给最近的原型wj所属的聚类cj,即

计算错误函数对范围属于ej的进行求和;

定义日常日志相似度,选择两个日常日志i,j之间的相似度s(i,j)为对应异常的夹角的余弦值,不同的变量之间的相似性的测量方式略有不同,设日志的向量为vi=(ai1,ai2......,ai∈)来计算日志的相似度,那么设相似度矩阵为r=(rij)s×s,rij用来表示日志i和日志j的相似度:其中,rij=rji(i,j=1,2,......,s),对日志之间的相似度定义的方式也是很多的,比如定义其中|vi∩vj|是两种日志中都出现过的异常,|vi∪vj|是两种日志的总的数目;

对于矩阵r其中的aij=s(i,j),即日志i和日志j的相似度,矩阵r为日志集合的相似度矩阵

将相似度矩阵r,作为聚类算法的输入,进行聚类分析。

本发明具有以下有益效果:

本发明提供的提供一种基于聚类算法的故障诊断分析方法及系统,可以智能搜集运行异常日志和服务异常日志,可以实现对服务状态的监测,并且通过聚类分析运行异常日志和服务异常日志,能极大的提高运维人员发现故障的所在处,从而快速地解决问题。

附图说明

图1为本发明实施例提供的一种基于聚类算法的故障诊断分析方法流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

如图1所示,作为本发明的第一实施例,提供一种基于聚类算法的故障诊断分析方法,所述方法包括:

从应用容器引擎docker上下载监控工具springbootadmin的image镜像,基于docker-compose部署springbootadmin的服务端,在需要捕获服务异常的服务上整合springbootadmin的客户端,配置好springbootadmin的服务端地址和信息,通过springbootadmin的客户端和服务端之间的心跳检测,实现服务状态的运行检查,一旦客户端离线,服务端即可监测到客户端的离线行为,从而记录下服务离线的相关日志,即服务异常日志;

在需要捕获运行异常的服务上整合@exceptionhandler全局运行异常处理类,当代码级别发生报错的时候,如常见的空指针异常、数组越界异常等,通过@exceptionhandler全局运行异常处理类记录异常的信息,将记录的异常信息存储到库中,实现全局运行异常日志的统一处理;

将捕获的服务异常日志和运行异常日志发送到kafka中,故障诊断模块消费kafka中的服务异常日志和运行异常日志,并存储至elasticsearch中,elasticsearch是一个基于lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于restfulweb接口,非常适合进行聚类分析;

聚类分析elasticsearch中存储的运行异常日志和服务异常日志,通过分析不同接口或者不同服务发生异常的频率等元素,分析出不同的接口和服务哪些更容易出现异常和故障;

得出结论哪些接口发生了故障或者容易发生故障,通过对这些接口或服务进行定制优化等办法提高系统的稳定性。

优选地,所述方法还包括:

s01,根据存储在elasticsearch中的日志数据初始化k个原型{w1,w2...,wk},ij是wj的聚类因子,i和j的取值范围分别是j∈{1,2,......,k},i∈{1,2,......,n};

s02,根据不同的日志分类,使每一个分离出来的聚类cj与原型wj相对应;

s03,对于每一个输入变量ii,其中i∈{1,2,......,n},都将ii分配给最近的原型wj所属的聚类cj,即

s04,计算错误函数对范围属于ej的进行求和;

s05,定义日常日志相似度,选择两个日常日志i,j之间的相似度s(i,j)为对应异常的夹角的余弦值,不同的变量之间的相似性的测量方式略有不同,设日志的向量为vi=(ai1,ai2......,ai∈)来计算日志的相似度,那么设相似度矩阵为r=(rij)s×s,rij用来表示日志i和日志j的相似度:其中,rij=rji(i,j=1,2,......,s),对日志之间的相似度定义的方式也是很多的,比如定义其中|vi∩vj|是两种日志中都出现过的异常,|vi∪vj|是两种日志的总的数目;

s06,对于矩阵r其中的aij=s(i,j),即日志i和日志j的相似度,矩阵r为日志集合的相似度矩阵

有了相似度矩阵,就可以将其作为聚类算法的输入,来进行聚类分析了,理论上讲,所有的聚类算法都可以作为日志的聚类分析中的算法,但是web日志自身的特点决定了聚类算法必须有以下的特点:

1.对稀疏矩阵的处理能力:根据人们对日志向量通常的建模方式,我们可以看到,对于一个日志来说,它的维数就是接口的数量,这个数值一般来说是比较大的,这样,我们可以看到日志的向量是一个高维度的向量,而聚类算法,可以更好地适应这种高维度稀疏向量的特性,从而达到有效聚类的目的

2.可伸缩性:我们知道在web服务器的日志中,条目的数量是非常惊人的,选择作为web服务器日志处理的聚类算法必须在集合样本上同样有着较好的表现,一个高度可伸缩性的聚类算法是日志处理的关键。

作为本发明的第二实施例,还提供一种基于聚类算法的故障诊断分析系统,所述系统包括服务监控单元、运行监控单元、存储单元以及聚类单元;

所述服务监控单元用于集成监控工具springbootadmin,通过监控工具springbootadmin捕获服务异常,并记录服务异常的相关日志,即服务异常日志;

所述运行监控单元用于整合@exceptionhandler全局运行异常处理类,通过@exceptionhandler全局运行异常处理类捕获运行异常,并记录运行异常的相关日志,即运行异常日志;

所述存储单元用于将服务异常日志和运行异常日志存储至搜索服务器elasticsearch中;

所述聚类单元用于聚类分析elasticsearch中存储的运行异常日志和服务异常日志,基于聚类分析结果,判断发生故障或者容易发生故障的接口。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1