一种程序监控方法、装置、电子设备及存储介质与流程

文档序号:25889350发布日期:2021-07-16 19:35阅读:87来源:国知局
1.本发明涉及计算机软件
技术领域
:,尤其涉及一种程序监控方法、装置、电子设备及存储介质。
背景技术
::2.应用软件(application)是和系统软件相对应的,是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,分为应用软件包和用户程序。应用软件包是利用计算机解决某类问题而设计的程序的集合,多供用户使用。3.目前对于java程序的监控大多都依托于jmx,jmx(javamanagementextensions,即java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。4.但是,由于jmx在java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务,所以,通常使用jmx来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等,jmx系统只能监控到较为宏观的数据,比如,堆栈信息、线程数和日志信息等数据,而且,jmx系统能够监控到的是应用程序、设备、系统之间的数据交互管理,所以,应用程序中某一节点是否熔断、是否抛出异常以及节点内部的数据交互过程无法被jmx系统监控。综上,现有技术存在无法监控程序的运行细节的问题。技术实现要素:5.本发明的至少一个实施例提供了一种程序监控方法、装置、电子设备及存储介质,以便于解决现有对于程序的监控所使用的方案较为复杂,且无法监控到程序的运行细节的问题。6.第一方面,本发明实施例提供了一种程序监控方法,所述监控方法包括:7.当应用程序中的待监控节点运行时,按照所述待监控节点的监控注解所指示的方式,获取所述待监控节点的监控指标;其中,所述监控注解所指示的方式包括:所述监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式;8.根据所述待监控节点的各个所述监控指标,获取所述待监控节点的运行状态。9.基于上述技术方案,本发明实施例还可以做出如下改进。10.第二方面,本发明实施例提供了一种程序监控装置,所述监控装置包括:11.监控单元,用于当应用程序中的待监控节点运行时,按照所述待监控节点的监控注解所指示的方式,获取所述待监控节点的监控指标;其中,所述监控注解所指示的方式包括:所述监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式;12.处理单元,用于根据所述待监控节点的各个所述监控指标,获取所述待监控节点的运行状态。13.第三方面,本发明实施例提供了一种程序监控方法,包括:14.当应用程序中的待监控节点运行时,按照所述待监控节点的监控注解所指示的方式,得到所述待监控节点的监控指标;其中,所述监控注解所指示的方式包括:所述监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式;15.向监控平台发送所述待监控节点的各个所述监控指标,以使得所述监控平台基于各个所述监控指标,获取所述待监控节点的运行状态。16.第四方面,本发明实施例提供了一种程序监控装置,包括:监控单元和发送单元;17.监控单元,用于当应用程序中的待监控节点运行时,按照所述待监控节点的监控注解所指示的方式,得到所述待监控节点的监控指标;其中,所述监控注解所指示的方式包括:所述监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式;18.发送单元,用于向监控平台发送所述待监控节点的各个所述监控指标,以使得所述监控系统基于各个所述监控指标,获取所述待监控节点的运行状态;19.监控平台,用于基于各个所述监控指标,获取所述待监控节点的运行状态。20.第五方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;21.存储器,用于存放计算机程序;22.处理器,用于执行存储器上所存放的程序时,实现第一方面或第三方面中任一实施例所述的程序监控方法。23.第六方面,本发明实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面或第三方面中任一实施例所述程序监控方法。24.本发明的上述技术方案与现有技术相比具有如下优点:本发明实施例在待监控节点运行时,通过待监控节点的监控注解内指示的内置指标获取方式和/或外部映射的自定义指标获取方法对待监控节点进行监控,得到相应的内置指标和/或自定义指标,并基于得到的指标确定待监控节点的运行状态;本方案通过注解的形式对待监控节点的内置指标的采集,由于注解添加在相应的待监控节点上,可以随着待监控节点的运行而实时运行以得到待监控节点运行时的细节信息,提高了对于待监控节点的运行信息的监控精度,并且由于注解随着待监控节点的运行而运行可以有效的减低信息的反馈时长,实现对待监控节点的监控指标的实时监控和反馈,同时,提供外部映射的自定义指标获取方法完成自定义指标的采集,不局限于对于常规的运行信息的采集,根据规划实时调整方法灵活的采集到各种自定义的指标,提高了监控装置的可扩展性。附图说明25.图1为本发明各个实施例提供的应用程序监控装置的一种示意图;26.图2是本发明实施例提供的程序监控方法流程示意图;27.图3是本发明另一实施例提供的程序监控方法流程示意图;28.图4是本发明又一实施例提供的程序监控方法流程示意图其一;29.图5是本发明又一实施例提供的程序监控方法流程示意图其二;30.图6是本发明又一实施例提供的程序监控方法流程示意图其三;31.图7是本发明又一实施例提供的程序监控方法流程示意图其四;32.图8是本发明又一实施例提供的程序监控方法的具体过程;33.图9是本发明又一实施例提供的一种程序监控装置结构示意图其一;34.图10是本发明又一实施例提供的一种程序监控装置结构示意图其二;35.图11是本发明又一实施例提供的一种电子设备结构示意图。具体实施方式36.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。37.如图1所示,为实现本发明各个实施例的一种应用程序监控装置的结构示意图,包括监控装置21和监控平台22,其中,监控装置21可以是诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字tv、台式计算机等固定终端。38.监控装置21部署在待监控节点中,待监控节点可以是用户使用的手机终端,手机终端可以使用sdk提供的注解,来监控程序的运行状态。sdk,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。39.监控平台22汇集监控装置21所采集的信息完成数据记录,通过汇集的数据可以制成表格提供给用户查看,也可以根据过往数据判断新获取到的数据是否异常,以便于用户对运行节点进行维护,保护系统安全。40.监控装置21与监控平台22之间的数据传输可以通过http请求将监控装置21的数据发送到监控平台22。http请求是指从客户端到服务器端的请求消息,包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。41.如图2所示,本发明实施例提供的一种程序监控方法,参照图2,监控方法包括如下步骤:42.s21、当应用程序中的待监控节点运行时,监控平台按照待监控节点的监控注解所指示的方式,获取待监控节点的监控指标;其中,监控注解所指示的方式包括:监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式。43.在本实施例中,注解,可以看作是对一个方法进行扩展的模版,每个方法按照注解类中的规则,来为方法注解不同的参数,在用到的地方可以得到不同的方法中注解的各种参数与值,注解可以在编译、类加载、运行时被读取,并执行相应的处理。在编写注解后,将注解添加到相应的代码处时,可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。44.在本实施例中,本方案根据注解可以在编译、类加载、运行时被读取的原理,在待监控节点处添加监控注解,在待监控节点运行时加载监控注解,以实现在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息,同时,由于监控注解与待监控节点是同步运行的,所以,可以更好的获取到待监控节点的情况。45.在本实施例中,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。46.在本实施例中,通过构建包括监控注解的软件开发工具包,并在监控注解中编写内置指标的获取方式。本步骤中待监控节点的待监控注解可以是将软件开发工具包加载进本方案的代码的工程文件中,在用户编译待监控节点对应的代码时,根据软件开发工具包在待监控节点运行的代码段创建相应的监控注解,在待监控节点对应的代码段运行时监控注解也同步运行完成对待监控节点的监控;还可以在待监控节点的父类中根据软件开发工具包创建引用关系,将软件开发工具包对应的代码块作为父类的属性添加进父类中,当以该父类创建待监控节点时,自然也会随着待监控节点的创建,软件开发工具包对应的代码块也会运行创建相应的监控注解。47.在本实施例中,通过在待监控节点上添加监控注解,在待监控节点运行时,监控注解也同步运行调用软件开发工具包中内置指标获取方式获取相应的内置指标,由于注解可以随着待监控节点的运行而实时运行以得到待监控节点运行时的细节信息,所以提高了对于待监控节点的运行信息的采集精度,并且注解随着待监控节点的运行而运行可以有效的减低信息的反馈时长,实现对待监控节点的监控指标的实时监控和反馈。48.在本实施例中,还通过软件开发工具包外部映射的自定义指标获取方式来监控待监控节点的自定义指标,自定义指标可以包括但不限于以下至少一种:待监控节点是否熔断、待监控节点是否抛出异常、获取待监控节点的调用来源等。49.在本实施例中,本方案中可以通过获取软件开发工具包中某一个内置指标获取方式对应的方法函数名称,在该方法函数名称对应的函数区进行代码重写得到自定义指标获取方式。50.比如,内置指标可能是运行时长、运行次数,而用户在编译过程中不需要监控运行次数,需要监控其他的自定义指标,那在构建自定义指标获取方式时,就可以调用软件开发工具包内运行次数对应的内置指标获取方式,将自定义指标获取方式对应的代码添加到该内置指标获取方式中,而后,在待监控节点的监控注解处,编译时调用运行次数对应的内置指标获取方式即可执行自定义指标获取方式,获取到相应的自定义指标。51.还可以在软件开发工具包外写了自定义指标获取方式,然后建立了自定义指标获取方式与软件开发工具包内内置指标获取方式的标识(例如名称)的映射关系,当调用这个标识对应的内置指标获取方式时,就会调用软件开发工具包外的这个自定义指标获取方式,而非软件开发工具包内的内置方式。52.还可以直接调用用户在编译过程中确定需要调用的内置指标获取方式,在保留内置指标获取方式的原代码的情况下,在内置指标获取方式中增加自定义指标获取方式对应的代码块,以实现在内置指标获取方式运行时,不仅可以获取得到相应的内置指标,还可以获取得到自定义指标。53.在本实施例中,自定义指标获取方式对应的代码块可以根据预设置的监控需求提前编译相应的代码块,将监控需求和代码块构建相应的程序包,在需要监控不同的自定义指标时,调用相应的程序包添加到映射的自定义指标获取方式中,以实现自定义指标的获取;当然,也可以在构建了映射关系后,由用户在映射关系中直接编译相应的代码块以实现自定义指标的获取。54.所以,本方案通过监控注解来对待监控节点进行监控,降低监控方法与运行程序的耦合性,避免监控方法与待监控节点的运行程序的冲突,同时用户可以根据自身需求开发相应的监控方法,从而帮助开发人员更好的优化程序的设计。55.s22、监控平台根据待监控节点的各个监控指标,获取待监控节点的运行状态。56.在本实施例中,在随着时间不断采集各个待监控节点的监控指标后,可以根据每个待监控节点内的监控指标,分别对每个待监控节点的运行状态进行分析,比如,监控指标为待监控节点的运行时长,由于待监控节点内的代码运行速度与编译代码的处理器相关,在处理器保持稳定状态时,待监控节点内的代码的运行路径对应的时长一般是稳定的,即使是存在循环代码的待监控节点在历史运行时长中也会有一个最大运行时长,所以,可以将待监控节点的运行时长与在先得到的运行时长进行比较,并根据运行时长是否过长来判断待监控节点是否异常,还可以将待监控节点每次运行的运行时长进行线性回归或者数学分析,确定各个运行时长是否符合合理的分布来判断待监控节点是否异常。57.在本实施例中,本方案在待监控节点运行时,通过待监控节点的监控注解内指示的内置指标获取方式和/或外部映射的自定义指标获取方法对待监控节点进行监控,得到相应的内置指标和/或自定义指标,并基于得到的指标确定待监控节点的运行状态;本方案通过注解的形式对待监控节点的内置指标的采集,由于注解添加在相应的待监控节点上,可以随着待监控节点的运行而实时运行以得到待监控节点运行时的细节信息,提高了对于待监控节点的运行信息的监控精度,并且由于注解随着待监控节点的运行而运行可以有效的减低信息的反馈时长,实现对待监控节点的监控指标的实时监控和反馈,同时,提供外部映射的自定义指标获取方法完成自定义指标的采集,不局限于对于常规的运行信息的采集,根据规划实时调整方法灵活的采集到各种自定义的指标,提高了监控平台的可扩展性。58.在本实施例中,内置指标包括但不限于:运行信息或位置信息中的至少一种。59.在本实施例中,监控指标中的运行信息可以用于确定待监控节点的运行情况,一旦确定了待监控节点的运行异常时,就需要及时进行警报或者通知工作人员进行处理,但是代码中相类似的名词量十分庞大,而且不同的函数段因为都调用同一类生成了相应的对象,导致不同函数段内有相同名称的对象,若是只报告运行出现了异常,工作人员去定位发生异常的位置也需要很长的时间,此时,可以进一步获取待监控节点的位置信息方便用户确定待监控节点所处的位置,及时进行处理。60.具体的,运行信息包括但不限于:待监控节点运行时的运行时长、运行起始时刻或终止时刻中的至少两种。在本实施例中,开发上述实施例中的监控注解,需要使用springaop,aop为aspectorientedprogramming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术;我们首先需要引入spring‑boot‑starter‑aop的包,基于利用spring的@around注解来编写上述实施例中的监控注解,可以实时得到待监控节点运行时的运行起始时刻和终止时刻,还可以在得到终止时刻时通过起始时刻和终止时刻来计算得到待监控节点运行时的运行时长,当然,也可以利用spring的@before注解和@after注解来编写上述实施例中的监控注解,实现获取待监控节点的运行时长、运行起始时刻或终止时刻中的至少两种。61.springaop中包括三个类型的注解,@before注解是在所对应的方法执行之前执行一段逻辑,@after注解是在所对应的方法执行之后执行一段逻辑,@around注解是可以同时在所对应的方法的前后执行一段逻辑。62.在本实施例中,获取待监控节点运行时的运行时长、运行起始时刻或终止时刻可以在监控注解中添加代码实时记录时间戳来实现确定运行信息。63.比如,当待监控节点开始运行时,通过监控注解获取并记录第一时间戳;当待监控节点结束运行时,根据当前时间戳与第一时间戳得到待监控节点的运行时长;由于待监控节点运行时会同步调用监控注解,所以,此时,通过监控注解获取并记录当前时间戳作为第一时间戳,第一时间戳即待监控节点的运行起始时刻,而当待监控节点结束运行时的当前时间戳即待监控节点的运行终止时刻。64.在本实施例中,位置信息包括但不限于:监控注解的注解名称、待监控节点的方法名称、待监控节点的地址信息或监控注解所获取的监控指标的指标名称中的至少一种。65.在本实施例中,获取待监控节点的位置信息的监控注解的开发方式与上述实施例中的表述相同,本方案不再赘述。66.在本实施例中,在待监控节点运行时,通过同步运行的监控注解获取到此时待监控节点的监控节点名称,由于,在软件开发过程中,为避免冲突,在同一函数段内会采用不同的命名,以避免调用错误,所以,待监控节点的监控节点名称可以用以指代待监控节点的身份。67.在本实施例中,每个待监控节点都对应有相应的方法,若是自定义的方法名称,则在一个完整的应用程序中,只会存在一个该方法名称和相应的地址信息,若是以原始的系统提供的方法,由于,一个方法可能不止调用过一次,但是不同方法之间还是会采用不同的名称命名,所以,确定待监控节点的方法名称和相应的位置信息也可以极大的减少干扰项,便于确定待监控节点的身份。68.如图3所示,本发明实施例提供的一种程序监控方法。与如图2所示程序监控方法相比,本发明实施例还包括编译软件开发工具包的过程,参照图3,监控方法包括如下步骤:69.s31、监控平台接收注解编辑指令,注解编辑指令用于指示重写软件开发工具包中携带的内置指标获取方式。70.在本实施例中,在java和其他一些高级面向对象的编程语言中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。71.在本实施例中,为了避免原封不动的使用某些方法无法实现自身目的的情况,软件开发过程中,经常会出现对方法的重写,在本步骤中,由于本方案中的软件开发工具包中包含的内置指标获取方式会获取根据需求获取不同的内置指标,所有内置指标对应的内置指标获取方式可以集成在一个方法中,也可以分别构建每个内置指标获取方式对应的方法,将内置指标获取方式集成在一个方法中的话,那只要调用这个方法就要获取所有的内置指标,这样会导致系统的负荷较大,而分别构建不同内置指标获取方式对应的方法,只需对需要监控的内置指标对应的方法进行调用,降低运行的方法数量,有选择的进行监控,所以,大部分软件开发工具包中都会针对不同的内置指标分别构建相应的内置指标获取方式。72.在本实施例中,对软件开发工具包中的内置指标获取方式进行重写,重写分两种:第一种是直接对软件开发工具包重新编辑,对软件开发工具包内数据直接删除重写覆盖或者在原数据的基础上直接增加新的数据;第二种是不对软件开发工具包的包内数据做处理,而是改变方法名称与方法之间的映射关系,达到重写目的。73.针对第一种重写方式,直接对软件开发工具包重新编辑的方案,对软件开发工具包内数据直接删除重写覆盖的重写方案,用户若是不需要监控预先设置的内置指标,反而需要根据自身需求去监控自定义指标,则可以直接对软件开发工具包中的内置指标获取方式对应的代码进行重写,得到符合自身需求的自定义指标获取方式。74.针对第一种重写方式,直接对软件开发工具包重新编辑的方案,用户若是需要监控预先设置的内置指标,而且需要根据自身需求去监控自定义指标,可以保留软件开发工具包中的内置指标获取方式对应的代码,然后增加新的自定义指标获取方式对应的代码,实现对软件开发工具包的重新编辑。75.针对第二种重写方式,改变方法名称和方法之间的映射关系达到重写目的的重写方案,可以根据内置指标和自定义指标的特性,在改变了方法名称和方法之间的映射关系后来调整自定义指标获取方法与内置指标获取方法的关系,比如,内置指标为运行时长,自定义指标为运行时长是否异常,这种相关性较高的内置指标和自定义指标可以同时进行获取,可以获取相应的内置指标获取方式,保留内置指标对应的代码,将自定义指标对应的代码添加到相应的内置指标获取方式中,在程序运行过程中,当调用内置指标获取方式时,不仅可以获取到内置指标,还可以获取到自定义指标。76.针对第二种重写方式,改变方法名称和方法之间的映射关系达到重写目的的重写方案,可以确定不需要进行监控的内置指标获取方式,将不需要进行监控的内置指标获取方式对应的方法名称映射至自定义指标获取方式对应的代码,而后,在待监控节点的监控注解处,编译时调用运行次数对应的内置指标获取方式即可执行自定义指标获取方式,获取到相应的自定义指标。77.在本实施例中,自定义指标获取方式对应的代码块可以根据预设置的监控需求提前编译相应的代码块,将监控需求和代码块构建相应的程序包,在需要监控不同的自定义指标时,调用相应的程序包添加到自定义指标获取方式中,当然,也可以由用户自身的需求直接进行编译。78.s32、监控平台根据注解编辑指令,建立软件开发工具包与自定义指标获取方式之间的映射关系,以使得当软件开发工具包运行时,能够基于映射关系调用自定义指标获取方式。79.在本实施例中,在完成自定义指标获取方式的编译后,建立相应的映射关系,完成调用自定义指标获取方式获取自定义指标的方案。80.s33、当应用程序中的待监控节点运行时,监控平台按照待监控节点的监控注解所指示的方式,获取待监控节点的监控指标;其中,监控注解所指示的方式包括:监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式。81.有关步骤s33,详细可参见步骤s21中的描述,本实施例在此不再赘述。82.s34、监控平台根据待监控节点的各个监控指标,获取待监控节点的运行状态。83.有关步骤s34,详细可参见步骤s22中的描述,本实施例在此不再赘述。84.在本实施例中,本方案中通过改写软家开发工具包中的内置指标获取方式得到自定义指标获取方式,实现对于符合自身需求的指标的监控,提高代码的开发效率。85.如图4所示,本发明实施例提供的一种程序监控方法。与图2所示程序监控方法相比,本发明实施例还给出了确定待监控节点的方案,以减少开发人员的工作量,参照图4,监控方法包括如下步骤:86.s41、监控平台加载监控注解对应的软件开发工具包。87.在本实施例中,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。88.在本实施例中,软件开发工具包中包括的监控注解的建立方式可以参考上述实施例中构建注解的表述,本方案在此不再赘述。而监控注解中的内置指标获取方式可以由用户根据常用的监控需求进行编译,比如,监控待监控节点的运行信息和位置信息的代码,在编译完成后构建为相应的软件开发工具包。89.s42、监控平台在应用程序的各个节点中,确定待监控节点,并根据软件开发工具包在待监控节点所对应的类中添加监控注解。90.具体的,在应用程序的各个节点中确定待监控节点,可以通过将应用程序中的各个节点分别与预设置的监控标准进行比对,判断是否存在符合监控标准的节点;若存在符合监控标准的节点,则加载单元将符合监控标准的节点作为待监控节点。91.在本实施例中,将应用程序的各个节点与预设置的监控标准进行比对,确定是否存在需要进行监控的节点,具体的,可以根据用户开发过程中确定的容易出现运行异常的代码块的特性来设定监控标准,比如,在软件运行过程中,页面跳转过程、加载大图片或者显示外部页面容易出现系统崩溃的情况,所以,可以设置过滤规则识别是否出现调用页面跳转方法的代码块、识别是否出现加载本地图片的代码块、识别是否出现显示外部页面的代码块,在确认出现上述代码块时,将该代码块作为符合监控标准的节点,用户可以根据需求自由的设定监控标准来对某些需要监控的代码块进行识别,上述举例只是为了方便理解,并不做特别限定。92.在本实施例中,除上述实施例中通过监控标准来筛选应用程序各个节点中需要进行监控的节点外,也可以由用户在开发过程中根据数据需求自由确定待监控节点,本方案对此不做特别限定。93.在本实施例中,在确定存在符合监控标准的节点后,根据软件开发工具包在待监控节点对一个的类中添加监控注解,以实现对于基于该类生成的所有对象的监控。94.在本实施例中,在在面向对象的软件开发过程中,一般会对具有共性的各个对象创建相应的类,类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象,在所创建的类中会将各个对象的共性作为类的属性,通过类可以快速的创建相应的对象,本方案中,在符合监控标准的节点的类中添加监控注解,使得所有通过该类创建的待监控节点都会同时具备相应的监控注解,提高对于待监控节点中添加监控注解的效率。95.s43、当应用程序中的待监控节点运行时,监控平台按照待监控节点的监控注解所指示的方式,获取待监控节点的监控指标;其中,监控注解所指示的方式包括:监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式。96.有关步骤s43,详细可参见步骤s21中的描述,本实施例在此不再赘述。97.s44、监控平台根据待监控节点的各个监控指标,获取待监控节点的运行状态。98.有关步骤s44,详细可参见步骤s22中的描述,本实施例在此不再赘述。99.在本实施例中,将应用程序中各个节点分别与预设值的监控标准进行比对,确定需要被监控的节点作为待监控节点,并在确定待监控节点后,基于软件开发工具包在待监控节点的类中添加监控注解,使得基于该类创建的节点都会具备监控注解,实现快速对待监控节点添加监控注解,由于代码的数量是十分庞大的,若是每次都由用户确定待监控节点并针对待监控节点生成监控注解,对于用户来说是十分庞大的工作量,同时代码量也会大大增加,所以,本方案不仅可以减少筛选待监控节点的耗时,还可以降低代码的冗余。100.如图5所示,本发明实施例提供的一种程序监控方法。与图2所示程序监控方法相比,本发明实施例给出了确定待监控节点的运行状态的方案,参照图5,监控方法包括如下步骤:101.s51、当应用程序中的待监控节点运行时,监控平台按照待监控节点的监控注解所指示的方式,获取待监控节点的监控指标;其中,监控注解所指示的方式包括:监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式。102.有关步骤s51,详细可参见步骤s21中的描述,本实施例在此不再赘述。103.s52、监控平台对待监控节点运行得到的监控指标中的运行信息进行汇总,得到运行信息组。104.在本实施例中,将待监控节点在每次运行过程中由监控注解所指示的方式获取得到的监控指标中的运行信息汇总为运行信息组,通过运行信息组中的运行信息确认待监控节点的运行状态。105.在本实施例中,被汇总的运行信息可以是待监控节点在当前时刻前的一段时间内待监控节点运行得到的监控指标中的运行信息,一段时间内的运行信息一旦发生突变就可以确定运行状态出现了异常,需要及时进行处理,以避免出现不可挽回的情况。106.在本实施例中,被汇总的运行信息也可以是多个时间周期范围内待监控节点运行得到的监控指标中的运行信息,通过多个时间周期范围内的运行信息可以通过过往数据来参考当前时刻出现的情况是否正常,比如,时间周期为一天,可以通过在先的各个时间周期内与当前时刻相同时刻的运行信息来确定当前时刻的运行信息的情况;时间周期范围可以根据待监控节点的特性来确定,比如,应用程序登录节点的时间周期可以是一天、一周、一个月或一年。107.在本实施例中,由于将待监控节点每次运行得到的监控指标都进行汇总可能出现数据量较大的情况,对于通过大数据分析算法确定待监控节点的运行状态的方案,当然是数据量越大越好,但是,对于某些存在明显范围或者明显运行标准的待监控节点,只需要当前时刻前预设次数运行时得到的监控指标,就可以确定待监控节点的运行状态,所以,在本方案中,在对待监控节点运行得到的监控指标中的运行信息进行汇总后,可以在其中选择当前时刻前待监控节点预设次数运行得到的监控指标中的运行信息构成运行信息组,还可以在其中选择当前时刻前待监控节点在预设时长内每次运行得到的监控指标中的运行信息构成运行信息组。108.在本实施例中,由于待监控节点运行时,只靠待监控节点一次运行的运行信息可能无法确认该待监控节点的运行是否出现问题,所以,本步骤中,对待监控节点运行得到的监控指标中的运行信息进行汇总,得到相对应的运行信息组。109.s53、监控平台将待监控节点对应的运行信息组与预存储的正常运行标准进行比对,得到运行信息组的异常验证结果。110.在本实施例中,在得到了待监控节点的运行信息后,将运行信息与预存储的正常运行标准进行比对,确定待监控节点是否存在异常。比如,待监控节点的运行时长会因为运算速度的影响而发生变化,但是在过往的运行过程中运行时长会有一个区间范围,通过汇总运行信息,一旦出现运行时长过大或过小时,即可确定出现运行时长异常;或者,根据运行信息的变化状态,来确定运行信息的变化状态是否符合规律,并以此来判断运行信息是否异常,比如,应用程序的接口的访问量,可能会随着每天不同时间而有不同的人数进行访问,但是每天的访问量的变化情况应该都是相似的,一旦出现访问量异常波动时,可以认为待监控节点异常。111.具体的,比如,平时正常运行的待监控节点的运行时长可能是10秒钟,而随着待监控节点的数据处理量导致时间波动在正负2秒钟,即正常运行标准为8至12秒的运行时长,而若实时监控到的待监控节点的运行时长远大于10秒,达到30秒,那我们就可以判定该待监控节点运行异常。112.在本实施例中,一般出现运行时长大量增加可能是出现了爬虫程序,非法用户入侵应用程序后,在应用程序上加载爬虫外挂,用以获取程序运行数据,此时应用程序不但要运行主程序,由于爬虫外挂还要提取相应的运行数据,所以会导致待监控节点的运行时长大幅增加,而对于用户而言仅仅是程序运行时长的加长,可能无法察觉到程序被入侵,此时,本步骤中就可以根据判断结果确定待监控节点是否异常。113.在本实施例中,当然不仅仅是运行时长增加,也有可能出现运行时长减少,而运行时长减少可能是由于传入的参数异常,导致待监控节点并未正常运行导致,此时,可能是出现了非法人员在以数据流攻击应用程序,或者不法分子在试探应用程序的运行逻辑。114.s54、监控平台基于异常验证结果,确定待监控节点的运行状态是否异常。115.在本实施例中,将待监控节点汇总的运行信息组与预存储的正常运行标准进行比对,以验证运行信息组是否异常,比如,若正常运行标准是一段时间的运行信息的运行状态变化,则可以根据运行信息组中的运行信息构建随时间序列的向量,将该向量与正常运行标准构成的向量计算相似度,若相似度大于预设阈值,则说明待监控节点的运行信息组与正常运行标准较为相似,所以,运行信息组并未异常,反之,则认为运行信息组异常;若正常运行标准是运行信息的区间范围限制,则可以将运行信息组与正常运行标准进行比较,判断是否存在运行信息超出正常运行标准,若不存在运行信息超出正常运行标准,则运行信息组正常,反之,运行信息组异常。116.s55、当待监控节点的运行异常时,监控平台进行警报。117.在本实施例中,当确定待监控节点运行异常时,既是进行警报,以便于工作人员进行处理,降低不良影响。118.在本实施例中,将每个待监控节点对应的运行信息组成运行信息组,通过对待监控节点的运行信息组与正常运行标准的比对,得到运行信息组的异常验证结果,根据异常验证结果判断待监控节点的运行状态是否异常,并在运行状态异常时进行警报,提高用户对于异常情况的处理效率。119.在本实施例中,在确定待监控节点运行异常后,可以通过预存储的紧急联系人联系方式,向紧急联系人发送系统异常的提示消息进行警报,还可以通过弹窗的方式在管理员系统或管理员电脑上弹出提示信息进行警报,还可以通过预设置的报警装置发出警报。120.在本实施例中,在待监控节点的运行异常时,还可以根据待监控节点的运行信息组,绘制运行状态参考图,将运行状态参考图作为报警信息发送至工作人员进行警报,或者,在进行警报后,将运行状态参考图发送至工作人员,让工作人员可以直观的看到待监控节点的运行状态,工作人员可以根据工作经验确定是否出现误报,若未出现误报,运行状态参考图可以作为提供给工作人员的数据方便工作人员处理异常,而工作人员确定出现误报,则可以根据运行状态参考图及时处理系统中导致出现误报的原因。121.如图6所示,本发明实施例提供的一种程序监控方法。与图2所示程序监控方法相比,本发明实施例给出了通过获取待监控节点的监控注解来绘制待监控节点的运行状态参考图,让工作人员直观的观察到节点的运行情况,参照图6,监控方法包括如下步骤:122.s61、当应用程序中的待监控节点运行时,监控平台按照待监控节点的监控注解所指示的方式,获取待监控节点的监控指标;其中,监控注解所指示的方式包括:监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式。123.有关步骤s61,详细可参见步骤s21中的描述,本实施例在此不再赘述。124.s62、监控平台对待监控节点运行得到的监控指标中的运行信息进行汇总,得到运行信息组。125.s63、监控平台针对每个待监控节点,根据待监控节点对应的运行信息组,分别绘制运行状态参考图。126.在本实施例中,将各个待监控节点的运行信息分别绘制出相应的运行状态参考图,以便于相关工作人员进行直观审查,提高对于监控参数的分析效率。127.在本实施例中,由于如图5所示实施例中是有系统根据预设置的运行标准来对待监控节点的运行信息进行分析,由此来判断待监控节点是否出现异常,但是,由于预设置的运行标准是一个相对固定的判断条件,针对出现突发事件时,容易出现误判的情况,比如,还是针对应用程序的访问节点的访问量,在正常状态时,通过运行标准可以有效的判断访问量是否出现异常,但是,若出现应用程序上热搜或者出现与应用程序相关的热点话题时,此时访问量会急剧增加,通过正常运行标准判断访问量是否出现异常就会出现误判的情况,当然,也会出现异常被认为未异常的情况出现,所以,在本步骤中,基于运行信息组,绘制该待监控节点的运行信息状态参考图,可以让用户更加直观的观看到运行状态的实时变化情况,让工作人员可以根据自身的工作经验及时根据运行状态参考图来判断待监控节点是否出现异常。128.如图1所示,为实现本发明各个实施例的一种应用程序监控装置的结构示意图,包括监控装置21和监控平台22,其中,监控装置21可以是诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字tv、台式计算机等固定终端。129.监控装置21部署在待监控节点中,待监控节点可以是用户使用的手机终端,手机终端可以构建监控节点使用sdk提供的注解,来监控程序的运行状态。sdk,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。130.监控平台22汇集各个监控装置21所采集的信息,完成数据记录,通过汇集的数据可以制成表格提供给用户查看,也可以根据过往数据判断新获取到的数据是否异常,以便于用户对运行监控装置进行维护,保护系统安全。131.监控节点中的监控装置21与监控平台22之间的数据传输可以通过http请求将监控装置21的数据发送到监控平台22。http请求是指从客户端到服务器端的请求消息,包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。132.如图7所示,本发明实施例提供了一种程序监控方法,执行于监控装置21中,参照图7,运行监控方法包括如下步骤:133.s71、当应用程序中的待监控节点运行时,监控装置按照待监控节点的监控注解所指示的方式,得到待监控节点的监控指标;其中,监控注解所指示的方式包括:监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式。134.有关步骤s71,详细可参见步骤s21中的描述,本实施例在此不再赘述。135.s72、监控装置向监控平台发送待监控节点的各个监控指标,以使得监控平台基于各个监控指标,获取待监控节点的运行状态。136.在实施例中,应用程序这一侧,除了向平台上报数据,由平台确定状态之外,还可以自己分析得到状态,进一步的,还可以向平台上报状态。137.在本实施例中,在通过监控注解得到待监控节点的监控参指标后,将各个监控指标投递至监控平台进行记录,监控平台可以是远程服务器或者远程服务器集群,可以根据所监控的程序数量级来决定监控平台的规模。138.在本实施例中,通过监控平台完成对于各个待监控节点的数据汇总和数据分析,减少应用程序端的数据处理量,相较于通过应用程序来进行数据处理,通过监控平台实时确定待监控节点的运行状态,可以避免占用应用程序端的运算能力,提高用户的使用效果,同时,监控平台的数据处理效率高于应用程序自身的运算能力,虽然数据传输过程会占用一定的时间,但是,最终还是可以更高效的完成对于待监控节点是否异常的数据分析过程。139.在本实施例中,监控参数投递至监控平台的数据传输方法可以通过现有技术中常见的数据传输方法实现,比如,超文本传输协议,本方案对此不做特别限定。140.在本实施例中,监控平台基于各个监控指标,获取待监控节点的运行状态的方法可以参考上述任一实施例中的程序监控方法,本方案在此不在赘述。141.如图8所示,综合上述实施例,在一个具体的实施例中,本发明实施例提供了一种程序监控方法的具体过程,比如,用户需求为监控业务代码中某个方法的运行耗时,即监控待监控节点的运行时长,实现步骤包括:142.1、开发监控节点注册注解。用户只需要在监控方法所在的类上添加监控节点注解,注册节点注解通过获取参数以单例的形式来记录节点名称在本地。如果用户没有注册节点,就用项目名称作为监控节点名称。143.步骤1中用户只需要在监控方法所在的类上添加监控节点注解可以参考如图4所示实施例提供的程序监控方法中的描述即可,本方案在此不在赘述。144.2、开发获取方法运行时间注解。因为需要使用spring的面向切面原理。我们首先需要引入spring‑boot‑starter‑aop的包,通过利用spring的@around注解来开发我们的注解,在此注解中具体实现采用around形式,在业务方法执行之前记录当前时间戳,在业务方法执行后来计算执行次方法的耗时。145.步骤2中实现的方法可以参考如图2、图3所示实施例提供的程序监控方法中的描述即可,本方案在此不在赘述。146.3、数据投递。拿到1中提到的监控节点名称,2中计算的耗时结果,同时将业务所监控的方法名以及本地ip作为两个tag,开发人员命名的指标名(如:此注解所对应的指标名method_runtime),以及当前时间戳。将这些数据以http接口的形式直接投递到hubble监控平台。147.步骤3中实现的方法可以参考如图1、图6所示实施例提供的程序监控方法中的描述即可,本方案在此不在赘述。148.在本方案中,基于hubble监控平台,由开发人员提供一套用于采集java程序运行状态指标的sdk。用户可以使用sdk提供的注解,来监控程序的运行状态。149.数据采集利用面向切面变成的思想,来采集程序中各个方法的运行指标(运行次数、运行时长、故障率等指标)。150.sdk提供注册注解的方法,用户可以通过重写注册注解方法来注册采集自定义指标的注解。151.数据投递基于监控平台的接口通过http请求将数据发送发hubble监控平台。152.通过本实施例中提供的方案极大的减少了程序员在监控程序的工作量,也降低了工作的难度,其次也弥补了公司在监程序中微观层面的监控的缺失,特别对于分布式系统中某些片段的执行能有很好的监控效果,从而帮助开发人员更好的优化程序的设计。153.如图9所示,本发明实施例提供了一种程序监控装置,监控装置包括:监控单元和处理单元。具体的,本实施例中的监控装置为图1所示装置中的监控平台22。154.在本实施例中,监控单元,用于当应用程序中的待监控节点运行时,按照待监控节点的监控注解所指示的方式,获取待监控节点的监控指标;其中,监控注解所指示的方式包括:监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式。155.在本实施例中,处理单元,用于根据待监控节点的各个监控指标,获取待监控节点的运行状态。156.在本实施例中,内置指标包括:运行信息或位置信息中的至少一种;运行信息包括:待监控节点运行时的运行时长、运行起始时刻或终止时刻中的至少两种;位置信息包括:监控注解的注解名称、待监控节点的方法名称、待监控节点的地址信息或监控注解所获取的监控指标的指标名称中的至少一种。157.在本实施例中,监控装置还包括:编译单元,用于接收注解编辑指令,注解编辑指令用于指示重写软件开发工具包中携带的内置指标获取方式;根据注解编辑指令,建立软件开发工具包与自定义指标获取方式之间的映射关系,以使得当软件开发工具包运行时,能够基于映射关系调用自定义指标获取方式。158.在本实施例中,监控装置还包括:加载单元,用于加载监控注解对应的软件开发工具包;将应用程序中的各个节点分别与预设置的监控标准进行比对,判断是否存在符合监控标准的节点;若存在符合监控标准的节点,则将符合监控标准的节点作为待监控节点,并根据软件开发工具包在待监控节点所对应的类中添加监控注解。159.在本实施例中,监控装置还包括:异常判断单元,用于对待监控节点运行得到的监控指标中的运行信息进行汇总,得到运行信息组;将待监控节点对应的运行信息组与预存储的正常运行标准进行比对,得到运行信息组的异常验证结果;基于异常验证结果,确定待监控节点的运行状态是否异常;当待监控节点的运行异常时,进行警报。160.在本实施例中,监控装置还包括:运行状态参考图绘制单元,用于对待监控节点运行得到的监控指标中的运行信息进行汇总,得到运行信息组;针对每个待监控节点,根据待监控节点对应的运行信息组,分别绘制运行状态参考图。161.本发明实施例的装置的功能已经在上述的方法实施例中进行了描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。162.如图10所示,本发明实施例提供了一种程序监控装置,包括:监控单元和发送单元。具体的,本实施例中的监控装置为图1所示的监控装置21。163.在本实施例中,监控单元,用于当应用程序中的待监控节点运行时,按照待监控节点的监控注解所指示的方式,得到待监控节点的监控指标;其中,监控注解所指示的方式包括:监控注解对应的软件开发工具包中携带的内置指标获取方式,和/或,软件开发工具包外部映射的自定义指标获取方式。164.在本实施例中,发送单元,用于向监控平台发送待监控节点的各个监控指标,以使得所述监控系统基于各个所述监控指标,获取所述待监控节点的运行状态。165.在本实施例中,监控平台,用于基于各个监控指标,获取待监控节点的运行状态。166.在本实施例中,监控平台基于各个监控指标,获取待监控节点的运行状态的过程可以参考如图8所示实施例中的程序监控装置,本方案在此不在赘述。167.本发明实施例的装置的功能已经在上述的方法实施例中进行了描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。168.如图11所示,本发明实施例提供了一种电子设备,包括处理器1110、通信接口1120、存储器1130和通信总线1140,其中,处理器1110,通信接口1120,存储器1130通过通信总线1140完成相互间的通信;169.存储器1130,用于存放计算机程序;170.处理器1110,用于执行存储器1130上所存放的程序时,实现上述任一实施例的程序监控方法。171.本发明实施例提供的电子设备,处理器1110通过执行存储器1130上所存放的程序在待监控节点运行时,通过待监控节点的监控注解内指示的内置指标获取方式和/或外部映射的自定义指标获取方法对待监控节点进行监控,得到相应的内置指标和/或自定义指标,并基于得到的指标确定待监控节点的运行状态;本方案通过注解的形式对待监控节点的内置指标的采集,由于注解添加在相应的待监控节点上,可以随着待监控节点的运行而实时运行以得到待监控节点运行时的细节信息,提高了对于待监控节点的运行信息的监控精度,并且由于注解随着待监控节点的运行而运行可以有效的减低信息的反馈时长,实现对待监控节点的监控指标的实时监控和反馈,同时,提供外部映射的自定义指标获取方法完成自定义指标的采集,不局限于对于常规的运行信息的采集,根据规划实时调整方法灵活的采集到各种自定义的指标,提高了监控装置的可扩展性。172.上述电子设备提到的通信总线1140可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线1140可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。173.通信接口1120用于上述电子设备与其他设备之间的通信。174.存储器1130可以包括随机存取存储器1130(randomaccessmemory,简称ram),也可以包括非易失性存储器1130(non‑volatilememory),例如至少一个磁盘存储器1130。可选的,存储器1130还可以是至少一个位于远离前述处理器1110的存储装置。175.上述的处理器1110可以是通用处理器1110,包括中央处理器1110(centralprocessingunit,简称cpu)、网络处理器1110(networkprocessor,简称np)等;还可以是数字信号处理器1110(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field‑programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。176.本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器1110执行,以实现上述任一实施例的程序监控方法。177.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。178.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1