掌桥专利:专业的专利平台
掌桥专利
首页

应用程序监控方法、装置、设备及可读存储介质

文献发布时间:2023-06-19 11:22:42


应用程序监控方法、装置、设备及可读存储介质

技术领域

本发明涉及互联网技术领域,尤其涉及一种应用程序监控方法、装置、设备及可读存储介质。

背景技术

应用程序运行过程中,异常和错误的发生在所难免。而通常只有用户与界面进行交互时才能明显感知这些异常或错误。这样就导致对于部分纯后台运行或与用户交互较少的应用程序出现异常或错误时,一般都难以及时发现,从而导致解决应用程序异常的效率较低。

发明内容

本发明的主要目的在于提供一种应用程序监控方法、装置、设备及可读存储介质,旨在解决现有技术中无法及时发现和解决应用程序出现的异常或错误的技术问题。

第一方面,本发明提供一种应用程序监控方法,所述应用程序监控方法包括:

获取应用程序的日志;

从所述日志中查找异常日志,并将所述异常日志放入缓存队列;

当时间到达预设时刻时,从所述缓存队列中获取所述异常日志,并基于所述异常日志的异常级别,得到异常指数;

若所述异常指数大于阈值,则输出告警通知。

可选的,所述从所述日志中查找异常日志,并将所述异常日志放入缓存队列的步骤包括:

将所述日志与预设正则表达式进行匹配,得到异常日志的关键信息,所述关键信息包括异常对象、日志对象、异常级别、日志时间以及异常内容;

对异常日志的关键信息进行封装后,放入缓存队列。

可选的,所述基于所述异常日志的异常级别,得到异常指数的步骤包括:

基于所述异常日志的异常级别,确定每种异常级别对应的异常日志的数量;

基于每种异常级别对应的权重以及异常日志的数量,得到异常指数。

可选的,在所述若所述异常指数大于阈值的步骤之后,还包括:

将日志输出级别调整到预设级别,以供所述异常日志的日志对象输出日志级别高于或等于所述预设级别的日志。

可选的,在所述将日志输出级别调整到预设级别的步骤之后,还包括:

采集关键资源信息,并将所述关键资源信息存入文件夹;

当采集时长达到预设时长时,将日志输出级别恢复成默认级别,并停止采集关键资源信息。

可选的,在所述采集关键资源信息,并将所述关键资源信息存入文件夹的步骤之前,还包括:

触发采集任务,并以所述采集任务被触发时的时间戳为目录名在系统根目录下创建文件夹。

可选的,在所述当采集时长达到预设时长时,日志输出级别恢复成默认级别,并停止采集关键资源信息的步骤之后,还包括:

当文件夹的存在时长超出有效时长时,删除所述文件夹以及其存有的所述关键资源信息。

第二方面,本发明还提供一种应用程序监控装置,所述应用程序监控装置包括:

获取模块,用于获取应用程序的日志;

存储模块,用于从所述日志中查找异常日志,并将所述异常日志放入缓存队列;

异常确定模块,用于当时间到达预设时刻时,从所述缓存队列中获取所述异常日志,并基于所述异常日志的异常级别,得到异常指数;

告警模块,用于若所述异常指数大于阈值,则输出告警通知。

第三方面,本发明还提供一种应用程序监控设备,所述应用程序监控设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的应用程序监控程序,其中所述应用程序监控程序被所述处理器执行时,实现如上所述的应用程序监控方法的步骤。

第四方面,本发明还提供一种可读存储介质,所述可读存储介质上存储有应用程序监控程序,其中所述应用程序监控程序被处理器执行时,实现如上所述的应用程序监控方法的步骤。

本发明中,获取应用程序的日志;从所述日志中查找异常日志,并将所述异常日志放入缓存队列;当时间到达预设时刻时,从所述缓存队列中获取所述异常日志,并基于所述异常日志的异常级别,得到异常指数;若所述异常指数大于阈值,则输出告警通知。通过本发明,基于应用程序的日志,对应用程序的异常情况进行量化处理,并在量化值即异常指数大于阈值时,进行告警,使得开发人员能及时知晓该应用程序出现了严重的异常或错误,从而及时对异常或错误进行处理。

附图说明

图1为本发明实施例方案中涉及的应用程序监控设备的硬件结构示意图;

图2为本发明应用程序监控方法一实施例的流程示意图;

图3为本发明应用程序监控装置一实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

第一方面,本发明实施例提供一种应用程序监控设备,该应用程序监控设备可以是个人计算机(personal computer,PC)、笔记本电脑、服务器等设备。

参照图1,图1为本发明实施例方案中涉及的应用程序监控设备的硬件结构示意图。本发明实施例中,应用程序监控设备可以包括处理器1001(例如中央处理器CentralProcessing Unit,CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真WIreless-FIdelity,WI-FI接口);存储器1005可以是高速随机存取存储器(random access memory,RAM),也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

继续参照图1,图1中作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及应用程序监控程序。其中,处理器1001可以调用存储器1005中存储的应用程序监控程序,并执行本发明实施例提供的应用程序监控方法。

第二方面,本发明实施例提供了一种应用程序监控方法。

参照图2,图2为本发明应用程序监控方法一实施例的流程示意图。如图2所示,应用程序监控方法包括:

步骤S10,获取应用程序的日志;

本实施例中,应用程序指需要被监控的应用程序,例如基于JAVAEE的Web应用。获取应用程序的日志所使用的日志采集器可以为Flume(免费的开放源代码的日志采集框架)。

步骤S20,从所述日志中查找异常日志,并将所述异常日志放入缓存队列;

本实施例中,从获取的日志中查找包含特定的异常级别信息的日志,并以包含特定的异常级别信息的日志作为异常日志,然后将异常日志放入缓存队列。其中,异常级别信息包括:Error(错误),Exception(异常),Warn(警告)。

步骤S30,当时间到达预设时刻时,从所述缓存队列中获取所述异常日志,并基于所述异常日志的异常级别,得到异常指数;

本实施例中,预设时刻根据实际需要进行设置,例如从零点开始,设置若干预设时刻,其中每两个预设时刻时间的时间差为1分钟。当时间到达预设时刻时,则从缓存队列中获取异常日志。例如,当时间到达第n个预设时刻时,从缓存队列中获取的异常日志则是第n-1个预设时刻至第n个预设时刻这段时长内,放入缓存队列的异常日志;同理,当时间到达第n+1个预设时刻时,从缓存队列中获取的异常日志则是第n个预设时刻至第n+1个预设时刻这段时长内,放入缓存队列的异常日志。

若此时从缓存队列中获取到m个异常日志,则根据m个异常日志的异常级别,得到异常指数。

进一步地,一实施例中,所述基于所述异常日志的异常级别,得到异常指数的步骤包括:

基于所述异常日志的异常级别,确定每种异常级别对应的异常日志的数量;基于每种异常级别对应的权重以及异常日志的数量,得到异常指数。

本实施例中,异常级别包括三种,分别为Error(错误),Exception(异常),Warn(警告)。若异常级别为Error的异常日志的数量为a,异常级别为Exception的异常日志的数量为b,异常级别为Warn的异常日志的数量为c,则有:

C=a*x+b*y+c*z

其中,x为Error对应的权重,y为Exception对应的权重,z为Warn对应的权重,C为异常指数。x、y、z的值根据实际需要进行设置,在此不作限制。

步骤S40,若所述异常指数大于阈值,则输出告警通知。

本实施例中,若异常指数大于阈值,则表明该应用程序出现了严重的异常或错误,因此输出告警通知,以供开发人员能及时知晓该应用程序出现了严重的异常或错误,从而及时对异常或错误进行处理。

本实施例中,获取应用程序的日志;从所述日志中查找异常日志,并将所述异常日志放入缓存队列;当时间到达预设时刻时,从所述缓存队列中获取所述异常日志,并基于所述异常日志的异常级别,得到异常指数;若所述异常指数大于阈值,则输出告警通知。通过本实施例,基于应用程序的日志,对应用程序的异常情况进行量化处理,并在量化值即异常指数大于阈值时,进行告警,使得开发人员能及时知晓该应用程序出现了严重的异常或错误,从而及时对异常或错误进行处理。

进一步地,一实施例中,步骤S20包括:

将所述日志与预设正则表达式进行匹配,得到异常日志的关键信息,所述关键信息包括异常对象、日志对象、异常级别、日志时间以及异常内容;对异常日志的关键信息进行封装后,放入缓存队列。

本实施例中,考虑到日志包含的信息中有些信息对分析程序异常作用甚微,因此,仅需将日志包含的信息中与分析程序异常密切相关的一些关键信息进行封装后放入缓存队列。其中,关键信息包括异常对象、日志对象、异常级别、日志时间以及异常内容。日志时间为异常发生的时间;异常对象为发生异常的类或接口,此对象为业务实体;日志对象为输出日志的对象,此对象为日志实体,控制日志输出级别;异常内容为日志内容。进一步说明异常对象和日志对象,例如类A为业务实体,则类A会持有日志对象类B。当类A发生异常时,会调用类B的日志输出接口输出日志。日志信息中就会包含异常时间,异常级别,异常内容。其中类A为异常对象,类B为日志对象。当然,可以根据实际需要对关键信息所包含的具体内容进行扩充或缩减,在此不做赘述。

为了提高得到异常日志的关键信息的效率,利用正则表达式。具体的,使用正则表达式来定义关键信息的特征,然后,根据定义的关键信息的特征对基于步骤S10获取的每条日志进行逐一匹配,如一日志与正则表达式匹配,则该日志为异常日志,且可基于正则表达式直接得到该异常日志的关键信息;若一日志与正则表达式不匹配,则说明该日志为非异常日志,则跳过该条日志。

在将每条异常日志的关键信息放入缓存队列前,可将每条异常日志的关键信息封装成统一的数据结构后,再放入缓存队列。例如,对每条异常日志的关键信息进行封装,得到每条异常日志对应的异常日志事件,异常事件定义为ExceptionLogEvent(异常日志事件),包含的字段为exceptionObj(异常对象),logObj(日志对象),exceptionLevel(异常级别),time(日志时间),content(异常内容)。

容易理解的是,在本实施例的基础上,后续从缓存队列中拿到的便是经过封装的异常日志的关键信息。

进一步地,一实施例中,在所述若所述异常指数大于阈值的步骤之后,还包括:

将日志输出级别调整到预设级别,以供所述异常日志的日志对象输出日志级别高于或等于所述预设级别的日志。

本实施例中,预设级别根据实际需要进行选择,例如预设级别为DEBUG(调试)级别。具体的,可通过JDK(JAVA开发工具包)提供的JVMTI(虚拟机调试器接口)连接被监控的应用程序,根据异常日志的关键信息中的日志对象获取JAVA虚拟机中的日志对象,变更该日志对象的日志输出级别到DEBUG(调试)级别,以供输出日志级别高于或等于DEBUG级别的日志,有利于后续的异常分析工作更好地进行。

进一步地,一实施例中,在所述将日志输出级别调整到预设级别的步骤之后,还包括:

采集关键资源信息,并将所述关键资源信息存入文件夹;当采集时长达到预设时长时,将日志输出级别恢复成默认级别,并停止采集关键资源信息。

本实施例中,为了给后续的异常分析工作提供更为丰富的数据样本,除了调整日志输出级别以供输出更多的日志外,还进一步采集关键资源信息,并将关键资源信息存入文件夹。其中,关键资源信息指被监控的应用程序和运行该应用程序的硬件实体的关键资源信息,例如:CPU(中央处理器)、内存利用率、线程dump(转存)和内存统计信息等等。在此对关键资源信息所包含的具体内容不作限制,此处仅为示例性说明。当采集时长达到预设时长时,将日志输出级别恢复成默认级别,并停止采集关键资源信息。其中,预设时长根据实际需要进行设置,例如设置为30分钟。

进一步地,一实施例中,在所述采集关键资源信息,并将所述关键资源信息存入文件夹的步骤之前,还包括:

触发采集任务,并以所述采集任务被触发时的时间戳为目录名在系统根目录下创建文件夹。

本实施例中,在确定异常指数大于阈值之后,在采集关键资源信息之前,触发采集任务,并以采集任务被触发时的时间戳为目录名在系统根目录下创建文件夹,以供后续采集的关键资源信息存入该文件夹中。

进一步地,一实施例中,在所述当采集时长达到预设时长时,日志输出级别恢复成默认级别,并停止采集关键资源信息的步骤之后,还包括:

当文件夹的存在时长超出有效时长时,删除所述文件夹以及其存有的所述关键资源信息。

本实施例中,为了避免存储空间被一文件夹长期占用,当文件夹的存在时长超出有效时长时,直接删除文件夹以及其存有的所述关键资源信息。其中,可以在在指定时刻检测每个以时间戳为目录名在系统根目录下创建的文件夹的存在时长是否超出有效时长,并将存在时长超出有效时长的文件夹以及其存有的所述关键资源信息删除。

第三方面,本发明实施例还提供一种应用程序监控装置。

参照图3,图3为本发明应用程序监控装置一实施例的功能模块示意图。如图3所示,应用程序监控装置包括:

获取模块10,用于获取应用程序的日志;

存储模块20,用于从所述日志中查找异常日志,并将所述异常日志放入缓存队列;

异常确定模块30,用于当时间到达预设时刻时,从所述缓存队列中获取所述异常日志,并基于所述异常日志的异常级别,得到异常指数;

告警模块40,用于若所述异常指数大于阈值,则输出告警通知。

进一步地,一实施例中,存储模块20,具体用于:

将所述日志与预设正则表达式进行匹配,得到异常日志的关键信息,所述关键信息包括异常对象、日志对象、异常级别、日志时间以及异常内容;

对异常日志的关键信息进行封装后,放入缓存队列。

进一步地,一实施例中,异常确定模块30,具体用于:

基于所述异常日志的异常级别,确定每种异常级别对应的异常日志的数量;

基于每种异常级别对应的权重以及异常日志的数量,得到异常指数。

进一步地,一实施例中,应用程序监控装置还包括调整模块,用于:

将日志输出级别调整到预设级别,以供所述异常日志的日志对象输出日志级别高于或等于所述预设级别的日志。

进一步地,一实施例中,应用程序监控装置还包括关键资源信息采集模块,用于:

采集关键资源信息,并将所述关键资源信息存入文件夹;

当采集时长达到预设时长时,将日志输出级别恢复成默认级别,并停止采集关键资源信息。

进一步地,一实施例中,应用程序监控装置还包括触发模块,用于:

触发采集任务,并以所述采集任务被触发时的时间戳为目录名在系统根目录下创建文件夹。

进一步地,一实施例中,应用程序监控装置还包括删除模块,用于:

当文件夹的存在时长超出有效时长时,删除所述文件夹以及其存有的所述关键资源信息。

其中,上述应用程序监控装置中各个模块的功能实现与上述应用程序监控方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。

第四方面,本发明实施例还提供一种可读存储介质。

本发明可读存储介质上存储有应用程序监控程序,其中所述应用程序监控程序被处理器执行时,实现如上述的应用程序监控方法的步骤。

其中,应用程序监控程序被执行时所实现的方法可参照本发明应用程序监控方法的各个实施例,此处不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 应用程序监控方法、装置、设备及可读存储介质
  • 一种应用程序监控方法、计算机可读存储介质及终端设备
技术分类

06120112901412