本发明涉及计算机技术领域,具体来说,涉及一种用于应用程序的应用日志监控方法以及系统。
背景技术:
日志在计算机系统中是一个应用广泛的概念,操作系统内核、各种应用服务器等等、程序都有可能输出日志。日志的内容、规模和用途也各不相同,很难一概而论。随着软件技术的发展,软件的代码行数变得非常庞大,维护软件的工作也变得十分复杂和困难。通常,可以在编写代码的过程中,添加关键业务的日志记录代码,这样在软件运行过程中,关键业务的程序处理情况就记录在日志文件中了,一旦软件运行异常,就可以通过分析日志信息,做出相应的处理。
现有的日志分析系统,通常由日志采集代理和日志分析管理系统构成,可以对数量较小的日志文件进行分析处理。然而,现有的日志分析系统无法胜任海量日志文件的分析处理,并且缺乏实时分析、查询和预警能力。市面上基于日志实时检索监控业务指标以及异常堆栈还没有具体功能实现。
另一方面,随着计算机技术的成熟,运行于智能设备的应用程序虽然越来越完善,但是实际运行过程中又难免会出现错误的情况。因此,工程技术人员通常需要通过日志系统,记录应用程序的运行状态及操作内容,以便人员查看、作为调试设备的依据。日志记录应用程序的各种运行状态和操作信息,生成日志文件。
但是查看和分析日志都是基于linux脚本使用传统工具对日志进行检测。这些工具方法具有以下缺点:不及时,不能第一时间发现问题;不直观、不易扩展,适用范围只限于少量的主机和日志文件类型。现有监控应用日志的方法,应用服务器记录应用日志,定期地将应用日志文件上传到远程监控服务器,再由相关技术维护人员定期从监控服务器获取日志文件进行分析,从而无法实时、准确地对日志进行处理,满足应用层面对报警监控的实时性需求,使日志监控效率较低。
技术实现要素:
针对相关技术中的问题,本发明提出一种用于应用程序的应用日志监控方法以及系统,能够实时地、有针对性地对日志中业务逻辑可能出现的缺陷进行分析和告警。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种用于应用程序的应用日志监控方法,包括:
对收集的应用日志的有效性进行检验,以筛选出有效应用日志;
判断所筛选的所述有效应用日志是否属于堆栈;
根据预定规则指标的配置项,对不属于所述堆栈的所述有效应用日志进行预见性异常和非预见性异常分析;
根据所述配置项发送与分析结果相关的告警信息。
根据本发明的实施例,应用日志监控方法还包括:通过可视化控台根据监控指标至少对错误码类型、统计指标类型中的一种进行监控,所述监控指标包括监控级别、是否升级报警、通知频率、通知人中的至少一种。
根据本发明的实施例,发送所述告警信息包括:利用分钟级别定时任务来判断是否满足告警条件。
根据本发明的实施例,根据所述配置项发送与分析结果相关的告警信息包括:基于指标来获取对应的统计项的结果,并对所述统计项的结果与所述指标的阈值进行比对;如果所述统计项的结果达到所述指标的所述阈值,则发送所述告警信息。
根据本发明的实施例,应用日志监控方法还包括:在所述应用程序本地安装用于抓取所述收集应用日志的收集工具。
根据本发明的另一方面,提供了一种用于应用程序的应用日志监控系统,其特征在于,包括:
收集工具,安装于所述应用程序本地,用于将应用日志采集至分布式消息队列;
日志路由模块,用于对所述分布式消息队列中的应用日志的有效性进行检验,以筛选出有效应用日志;
日志处理模块,用于判断所筛选的所述有效应用日志是否属于堆栈,并且根据预定规则指标的配置项,对不属于所述堆栈的所述有效应用日志进行预见性异常和非预见性异常分析;
报警通知模块,用于根据所述配置项发送与分析结果相关的告警信息。
根据本发明的实施例,所述报警通知模块还用于接收无日志系统发送的socket请求或微服务请求,并且无日志应用被转换为所述有效应用日志。
根据本发明的实施例,应用日志监控系统还包括跑批模块,用于定时加载所述配置项和相关指标。
根据本发明的实施例,应用日志监控系统还包括可视化控台,用于根据监控指标至少对错误码类型、统计指标类型中的一种进行监控,所述监控指标包括监控级别、是否升级报警、通知频率、通知人中的至少一种。
根据本发明的实施例,应用日志监控系统还包括分布式缓存或数据库,用于存储所述日志处理模块的分析结果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的用于应用程序的应用日志监控方法的流程图;
图2是根据本发明实施例的应用日志监控方法的告警步骤的流程图;
图3是根据本发明实施例的应用日志监控系统的架构示意图;
图4是根据本发明实施例的应用日志监控系统的可视化控台错误码类配置的示意图;
图5是根据本发明实施例的判断堆栈入库的配置项的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
针对现有技术中的缺点,本发明提供了一种用于应用程序的应用日志监控方法和应用日志监控系统。该应用日志监控方法包括以下步骤s1至s4。以下接合图1所示,对本发明的应用日志监控方法进行说明。
(1)步骤s1
在该步骤s1处,首先对收集的应用日志的有效性进行检验,以筛选出有效应用日志。具体的,在步骤s1中,可以在判断应用日志的有效性之前收集应用日志,通过步骤s11进行filebeat(一种本地文件的日志数据采集器)正则校验;在步骤s12处,判断应用日志校验是否通过,在应用日志校验通过的情况下进行至步骤s13,将收集的应用日志上送至集群,例如上送至kafka集群。然后在图1中的步骤s14处,可以通过日志路由模块来消费集群的应用日志,并且判断应用日志是否有效。在判断引用日志有效的情况下,方法进行至步骤s2。
(2)步骤s2
在该步骤s2处,判断所筛选的所述有效应用日志是否属于堆栈。如图1所示,在该示出的方法流程示例中,在步骤s15处判断所筛选的所述有效应用日志是否属于堆栈。可以根据实际需要来配置判断是否属于堆栈的规则。当判断有效应用日志属于堆栈时,进行步骤s16,堆栈应用日志入库;当判断有效应用日志不属于堆栈时,则进行步骤s17,对需要监控的有效应用日志进行处理。图1中步骤s16处堆栈日志入库与不属于堆栈的有效日志入库逻辑相同。图5是根据本发明实施例的判断堆栈入库的配置项的示意图。
(3)步骤s3
在该步骤s3处,根据预定规则指标的配置项,对不属于所述堆栈的所述有效应用日志进行预见性异常和非预见性异常分析。如图1所示,在该示出的方法流程示例中,在步骤s18处判断是否有配置项。在有配置项的情况下,进行步骤s19,将已经筛选到的有效日志做进一步分析统计以及逻辑运算,匹配既定规则指标的配置项,异步运算,分别针对未预见异常和预见性异常进行分析,并将最终结果进行持久化。根据本发明的实施例,堆栈入库(堆栈异常)的配置项可以与监控有效日志的既定规则指标的配置项相同。
(4)步骤s4
根据所述配置项发送与分析结果相关的告警信息。将已经持久化的最终结果根据指标配置项以及相关事件经过一定规则通知到各应用负责人。在一些实施例中,可以通过邮件、短信、钉钉、语音电话等方式来发送生成的告警信息。
本发明的上述应用日志监控方法,通过对应用日志文件中更新的内容可以实时监控并建立对应的处理方法,以解决现有监控应用日志方法无法实时、有针对性地对日志中业务逻辑可能出现的缺陷进行聚合分析和告警的技术问题,从而能够实时、准确地对系统及应用进行处理,满足应用层面对报警监控的实时性要求,进而实现提高监控效率以及发现问题的即时性。本发明无需介入应用代码,完成对应指标以及堆栈异常监控。有效提高监控效率,节省人力成本。
本发明的上述方案可以适用于多种应用程序。例如,与刷卡业务的各类支付成功率、银行通道出入款成功率、风控系统拦截情况等相关的应用程序。
在一些实施例中,本发明应用日志监控方法的利用分钟级别定时任务来判断是否满足告警条件。如图2所示,通过分钟级别定时任务,当判断满足告警条件时,将任务加入待发送队列等待发送。当判断不满足告警条件时,则清空统计结果。
图3是根据本发明实施例的应用日志监控系统的架构示意图。上述应用日志监控方法可以应用于图3所示的应用日志监控系统。如图3所示,本发明的应用日志监控系统包括收集工具21、日志路由模块22、日志处理模块23和报警通知模块24。
收集工具21可以安装于所述应用程序本地,并且用于将应用日志采集至分布式消息队列。日志路由模块22用于对所述分布式消息队列中的应用日志的有效性进行检验,以筛选出有效应用日志。日志处理模块23用于判断所筛选的所述有效应用日志是否属于堆栈,并且根据预定规则指标的配置项。日志处理模块23还对不属于所述堆栈的所述有效应用日志进行预见性异常和非预见性异常分析。报警通知模块24用于根据所述配置项发送与分析结果相关的告警信息。
在图3所示的实施例中,当对象为niginx(一种http和反向代理web服务器)系统日志及各种语言(如java、python等)应用日志时,收集工具21可以采用logstash(一种应用程序日志管理平台)或filebeat组件,logstash或filebeat组件采集日志文件信息至分布式消息队列kafka(一种分布式发布订阅消息系统)。当对象为无日志系统时,收集工具21可以采用socket(套接字)请求或微服务请求主动发送至报警通知模块24处理。日志路由模块22从分布式消息队列kafka消费消息到路由应用,转化为字节对象,校验日志有效性。可以通过既定规则筛选出有效日志以等待下一步分析处理。日志处理模块23将已经筛选到的有效日志做进一步分析统计以及逻辑运算,匹配既定规则指标的配置项,异步运算,分别针对未预见异常和预见性异常进行分析,将最终结果进行持久化。
在一个具体示例中,预见异常可以例如是:某通道服务因为发布或者某些其他原因导致服务不可用,可以不用抛出异常而打印日志来通过本系统获取;在该示例中,既定规则指标可以是:以上预见异常,如果偶发不同则按照堆栈异常报警,也可以通过定义错误码来进行统计,例如1分钟内出现特定次数就发出报警;在该示例中,配置项可以包括:该服务连接失败次数、交易成功率等。
报警通知模块24将已经持久化的最终结果根据指标配置项以及相关事件经过一定规则通知到各应用负责人。所述报警通知模块24还用于接收无日志系统发送的socket请求或微服务请求,并且无日志应用被转换为所述有效应用日志。
继续参考图3所示,本发明的应用日志监控系统还包括跑批模块25和可视化控台26。跑批模块25用于定时加载所述配置项和相关指标。可视化控台26,用于根据监控指标至少对错误码类型、统计指标类型中的一种进行监控,所述监控指标包括监控级别、是否升级报警、通知频率、通知人中的至少一种。如图4所示,本发明提供了可视化控台26来实现可视化监控,可视化控台26可以分别对错误码类型,统计指标类型等进行监控,其中涉及的指标包括但不限于监控级别、投屏状态、是否自动升级报警、是否有预案、通知人、描述、以及通知频率等。
本发明的应用日志监控系统还包括数据库27,数据库27包括分布式缓存redis或数据库polardb,用于存储所述日志处理模块的分析结果。
本发明的应用日志监控系统通过在待监控的应用程序或者资源本地安装logstash/filebeat收集工具,对应用程序的应用日志进行抓取。可以通过在收集工具上上配置一些特定的代码,来对应用日志进行格式拼接等操作。如果是redis等中间件,还可以借助特定脚本。之后,应用日志被送到kafka集群。其中,filebeat收集工具不会对本地日志做任何过滤,所有的过滤由本发明的方法执行。
监控系统首先是通过从分布式消息队列kafka获取日志文件,然后基于系统进行分发到后端的日志处理核心节点,核心节点会基于对日志转换成内部对象,然后基于配置的统计项对日志做分析统计,统计的结果放到分布式缓存redis或者数据库polardb中。报警系统会定时基于指标来获取对应的统计项的结果进行汇总和运算,最终与指标的阈值进行比对,如果触碰了阈值,则进行报警。
传统的日志监控技术只针对日志进行统计记录,只有类似于cpu、内存等的主机监控,而没有针对应用本身的具体逻辑的预见性和非预见性错误的监控,这样造成的结果是异常的发现是滞后的,等待问题发现然后登陆机器查看日志来回溯问题产生原因,这样检查到的往往不是第一现场而是快照。
在本发明中,未对系统和应用程序进行任何侵入性代码植入,系统应用对预见性可能出现的错误打印一条规范日志,在出现问题的第一时间实时通知到负责人,从而可即时做出决策(回滚或者其他补救措施),尤其是针对支付类等容错率低的应用程序。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。