分布式自动检测应用运行异常方法及系统与流程

文档序号:11918297阅读:280来源:国知局

本发明涉及移动通信领域,尤其涉及一种分布式自动检测应用运行异常方法及系统。



背景技术:

随着社会的发展和科学的进步,我国在移动通信领域的发展得到了长足的进步,运营商日常运维管控规模的逐渐扩大,日常运维监控的生产系统服务数量急剧增加,针对这一状态,如何检测应用运行异常就显得尤为重要,现有的方法通常采用人为的登录到远程主机上检查运行日志是否有异常错误日志,这种方法很被动,只有服务应用出问题了,运维人员才去查看日志内容,额外增加运维人员的工作量,检测效率不高。ELK是ElasticSearch、Logstash、Kibana三个应用的缩写。ElasticSearch简称ES,是一个基于Lucene的搜索服务器,主要用来存储和检索数据;Logstash是一个开源的日志管理工具,主要用来往ES中写入数据;Kibana是一个基于浏览器页面的Elasticsearch前端展示工具,主要用来展示数据。

目前,日常运维人员使用ELK平台的日志分析工具对日志内容进行检索分析,但是现有的方法存在如下缺点:第一,在进行检索分析时每次都是返回全量日志,导致ES中存在大量的重复性日志,无法解决单点故障的问题,增加了运维人员的工作量;第二,一旦Logstash出现问题,ELK就不能正常工作,因此,亟需一种新的技术手段,能够解决单点故障的问题,简化系统检测过程,减轻运维人员的工作量。



技术实现要素:

本发明提供一种分布式自动检测应用运行异常方法及系统,以解决上述技术问题,提高日常运维管控的准确性、安全性和效率性。

本发明解决上述技术问题的技术方案如下:

一种分布式自动检测应用运行异常方法,包括:

b.根据输入日志中的关键字对日志文件进行巡检匹配,将与关键字匹配的日志封装成任务流程保存至数据库;

c.将数据库中的每个周期任务流程加载到分布式任务调度模块中;

d.周期性顺序执行任务流程,并反馈执行结果;

e.根据反馈的执行结果,获取异常信息,完成检测。

在上述技术方案的基础上,本发明还可以做如下改进:

进一步,步骤b之前还包括:

a.将应用日志检测配置参数转化为脚本模板,并将所述脚本模板封装为任务流程保存至数据库,所述应用日志检测配置参数至少包括应用服务日志路径、匹配关键字和应用服务所在主机的身份信息。采用上述进一步方案的有益效果是:解决无法单点检测,避免每次进行检测时需要对全部日志进行扫描,以及存储大量重复性日志。

进一步,所述步骤b中在根据关键字对日志进行匹配时,

若匹配成功,则将日志中的匹配信息发送至工作模块,并将日志行号存储到数据库中;

若匹配不成功,则将日志行号与上个周期记录的行号进行比对,若相同,则向工作模块发送通知信息。

采用上述进一步方案的有益效果是:实现进队增量日志进行检测,减少运维人员的工作量,提高工作效率。

进一步,完成一个周期日志内容检测后,记录当前日志行数,当进行下个周期检测时,自记录的行数起开始进行匹配。

采用上述进一步方案的有益效果是:为仅对增量日志进行扫描提供数据基础。

进一步,所述分布式任务调度模块包括多个设置在远程主机的任务调度模块,各个任务调度模块均衡负载并定时触发执行任务流程。采用上述进一步方案的有益效果是:加强系统的容灾能力,提高系统的安全性。

相应地,本发明还提供一种分布式自动检测应用运行异常系统,包括:

分布式任务调度模块,用于根据输入日志中的关键字巡检日志文件;

封装模块,用于将与关键字匹配的日志封装成任务流程;

数据库模块,用于存储任务流程;作业调度模块,用于将数据库中的各个周期的任务流程加载至分布式任务调度模块;

任务流程驱动模块,用于执行任务流程,并将执行结果反馈至分布式任务调度模块;

工作模块,用于根据执行任务流程的执行结果获取异常信息。

在上述技术方案的基础上,本发明还可以做如下改进:

进一步,所述封装模块将应用日志检测配置参数转化为脚本模板,并将所述脚本模板封装为任务流程保存至数据库模块,所述应用日志检测配置参数至少包括应用服务日志路径、匹配关键字和应用服务所在主机身份信息。

进一步,所述分布式任务调度模块在根据关键字对日志文件进行匹配时,

若匹配成功,则将日志中的匹配信息发送至工作模块,并将日志行号存储到数据库中;

若匹配不成功,则将日志行号与上个周期记录的行号进行比对,若相同,则向工作模块发送通知信息,若不同,则判定为无异常信息;

完成一个周期日志内容检测后,分布式任务调度模块记录当前日志行数,当进行下个周期检测时,自记录的行数起开始进行下一次匹配。

进一步,所述分布式任务调度模块包括多个设置在远程主机中的任务调度模块,各个任务调度模块均衡负载并定时周期性驱动任务流程驱动模块顺序执行任务流程。

进一步,所述工作模块包括用于进行异常信息处理的告警处理单元和/或用于将异常信息发送至应用服务负责人的告警通知单元。可以使维护人员或负责人第一时间获取异常信息,提高工作效率。

本发明的有益效果:本发明中的技术方案可以自动检测应用服务运行是否异常,通过分布式任务调度的方式,不会存在单点故障的问题,避免了每次检测时由于需要进行全量日志扫描,导致的出现大量重复性日志的问题,并且通过每次检测应用日志对增量的扫描匹配,可以在简化检测过程的同时,使得检测结果更加准确,并且通过多个分布式任务调度模块均衡负载,大大提高了系统的容灾能力,保证了系统的安全运行。

附图说明

图1为本发明的流程示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,本实施例中的分布式自动检测应用运行异常方法,包括:

a.将应用日志检测配置参数转化为脚本模板,并将所述脚本模板封装为任务流程保存至数据库,所述应用日志检测配置参数至少包括应用服务日志路径、匹配关键字和应用服务所在主机的身份信息;

b.根据输入日志中的关键字对日志文件进行巡检匹配,将与关键字匹配的日志封装成任务流程保存至数据库;

c.将数据库中的每个周期任务流程加载到分布式任务调度模块中;

d.周期性顺序执行任务流程,并反馈执行结果;

e.根据反馈的执行结果,获取异常信息,完成检测。

在本实施例中,在系统前端将有关应用日志检测配置的参数属性转化为脚本模板封装成具有“开始-环节-结束”的任务业务流程保存到数据库中,通过分布式任务调度模块对任务流程进行加载和调度,分布式任务调度模块包括多个设置在远程主机的任务调度模块,各个任务调度模块均衡负载并定时触发执行任务流程,当其中一个或多个任务调度模块出现故障时,其他的任务调度模块依然可以继续工作,不会存在单点问题,同时还可以起到均衡负载的作用,任务调度模块会根据各个任务调度模块的工作压力和机械性能,对任务流程进行均衡分配,通过作业调度模块把各个周期的任务流程加载到分布式任务调度模块,通过分布式任务调度模块定时的有序的执行任务流程环节,每次检测完日志内容都会记录当前日志行数返回给分布式任务调度模块,根据反馈的执行结果,获取异常信息,完成检测。

在本实施例中,将应用日志检测配置参数转化为脚本模板,并将所述脚本模板封装为任务流程保存至数据库,所述应用日志检测配置参数至少包括应用服务日志路径、匹配关键字和应用服务所在主机身份信息,应用服务所在主机身份信息应该是唯一的具有标识的信息,例如主机的ip地址等,本实施例中,通过封装模块把系统前端有关应用日志检测配置的参数属性转化为shell脚本模板,封装成具有“开始-环节-结束”的任务业务流程保存到数据库中。

在本实施例中,步骤b中在根据关键字对日志进行匹配时,

若匹配成功,则将日志中的匹配信息发送至工作模块,并将日志行号存储到数据库中;

若匹配不成功,则将日志行号与上个周期记录的行号进行比对,若相同,则向工作模块发送通知信息。

例如,需要日常维护172.21.11.31主机的采集源Agent服务的运行情况,可以通过检测tomcat的日志内容,前端输入关键字”ERROR”和“EXCEPTION”,任务调度模块会根据这两个关键字匹配日志内容,如果匹配到了日志内容,则将日志中的匹配信息发送至工作模块,并将扫描的日志行号存储到数据库中,可以让维护人员或者负责人根据匹配信息判断Agent应用服务是否运行异常,如果没有匹配到与关键字对应的日志内容,但是日志行号和上个周期记录的行号一致,这个服务进程有可能僵死了,因此,将行号一致的执行结果作为通知信息,发送至工作模块,工作模块可以根据预设的操作方式直接对其进行相应的处理,也可以通过短信通知或邮件通知的方式发送给维护人员;如果没有匹配到与关键字相对应的日志内容,且记录日志行号也和上一周期的行号不一致,说明Agent应用服务进程运行稳定,上述实施例中的Agent应用服务只是为了进行详细说明的举例,本领域技术人员应该可以知晓,通过本实施例中的检测方法也可以对其他应用服务进行检测。

在本实施例中,在完成一个周期日志内容检测后,记录当前日志行数,当进行下个周期检测时,自记录的行数起开始进行匹配。每次检测完日志内容都会记录当前日志行数返回给任务调度模块,等到下个周期再去检测该日志文件就会从记录的行数开始配置,从而实现了只对增量日志进行匹配,不会对检测过的日志内容进行二次匹配,通过这种方法,可以在保证检测结果准确的前提下,大大提升系统的执行速度。

在本实施例中,分布式任务调度模块包括多个设置在远程主机的任务调度模块,各个任务调度模块均衡负载并定时触发执行任务流程,避免了单点故障对系统的影响,同时还可以起到均衡负载的作用,任务调度模块周期性驱动任务流程驱动模块可以根据任务流程ID有序的执行任务流程的环节,定时触发执行任务流程,实现对应用服务是否存在运行异常的自动检测。

相应地,本实施例提供了一种分布式自动检测应用运行异常系统,包括:

分布式任务调度模块,用于根据输入日志中的关键字巡检日志文件;

封装模块,用于将与关键字匹配的日志封装成任务流程;

数据库模块,用于存储任务流程;

任务流程驱动模块,用于执行任务流程,并将执行结果反馈至分布式任务调度模块;

作业调度模块,用于将数据库中的各个周期的任务流程加载至任务调度模块,

工作模块,用于根据执行任务流程的执行结果获取异常信息。

在本实施例中,封装模块将应用日志检测配置参数转化为脚本模板,并将所述脚本模板封装为任务流程保存至数据库模块,所述应用日志检测配置参数至少包括应用服务日志路径、匹配关键字和应用服务所在主机身份信息。

在本实施例中,所述分布式任务调度模块在根据关键字对日志文件进行匹配时,

若匹配成功,则将日志中的匹配信息发送至工作模块,并将日志行号存储到数据库中;

若匹配不成功,则将日志行号与上个周期记录的行号进行比对,若相同,则向工作模块发送通知信息,若不同,则判定为无异常信息;

完成一个周期日志内容检测后,分布式任务调度模块记录当前日志行数,当进行下个周期检测时,自记录的行数起开始进行下一次匹配。

在本实施例中,所述分布式任务调度模块包括多个设置在远程主机中的任务调度模块,各个任务调度模块均衡负载并定时周期性驱动任务流程驱动模块顺序执行任务流程。

在本实施例中,所述工作模块包括用于进行异常信息处理的告警处理单元和/或用于将异常信息发送至应用服务负责人的告警通知单元。

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

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