CN111552607A - 应用程序的健康评估方法、装置、设备及存储介质 - Google Patents
应用程序的健康评估方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111552607A CN111552607A CN202010227970.0A CN202010227970A CN111552607A CN 111552607 A CN111552607 A CN 111552607A CN 202010227970 A CN202010227970 A CN 202010227970A CN 111552607 A CN111552607 A CN 111552607A
- Authority
- CN
- China
- Prior art keywords
- application
- health
- evaluated
- data
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Medical Treatment And Welfare Office Work (AREA)
Abstract
本发明公开一种应用程序的健康评估方法、装置、设备及存储介质,该方法包括:获取静态缓存中存放的原始缓存数据,并从中读取应用列表信息;然后根据应用列表信息确定待评估应用,获取对应的应用状态参数;再按预设数据维度对应用状态参数进行维度划分获得待评估状态参数;根据评分策略对待评估状态参数进行评分获得参数评分结果;根据参数评分结果确定待评估应用的当前健康状态。本发明通过自动获取应用的状态参数,然后对状态参数进行维度划分,再依据评分策略分别对维度划分后的参数进行评分进而确定应用的健康状态,提高了应用健康评估的实效性以及评估效率,同时根据不同维度的状态参数对应用进行健康评估也使得评估结果更加准确、可靠。
Description
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种应用程序的健康评估方法、装置、设备及存储介质。
背景技术
随着DevOps(Development和Operations的组合词,是一组过程、方法与系统的统称)、持续交付等理念的深入人心,微服务架构开始走进大众的视野。DevOps需求一直是系统开发与运维人员关注的热点。有效监控和管理微服务,能大大提升系统开发与运维人员的工作效率,同时也是DevOps需求中的重要内容。但是,如何有效的监控和管理所有的微服务,这个一直是业界的难题。
目前,在开发过程中,由于微服务实例比较多,对于持续集成,服务状态,代码质量,性能,异常日志等监控带来了很大的难度。开发者必须切换不一样的工具,到服务器上查看微服务的状态,查看服务日志等信息才能获取相关的信息。在开发过程中,由于不能及时获得相应信息,对效率是一个很大的影响。相对于运维人员,市面上针对开发人员的监控工具少之又少。而且针对开发人员的监控工具,往往只能展示微服务部分信息。开发者需要到切换不同的监控工具,才能获取相对较全的信息,然后人工分析应用程序健康情况。现有的这种通过人工切换监控工具查看应用状态、运行日志等信息来进行应用程序的健康情况评估方式费时费力,评估的覆盖面较窄从而导致评估结果无法真实有效的反映应用程序的健康状态。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供了一种应用程序的健康评估方法、装置、设备及存储介质,旨在解决现有技术在对应用程序进行健康评估时,评估的效率以及覆盖面较低,评估结果无法真实有效的反映应用程序的健康状态的技术问题。
为实现上述目的,本发明提供了一种应用程序的健康评估方法,所述方法包括以下步骤:
获取静态缓存中存放的原始缓存数据,从所述原始缓存数据中读取应用列表信息;
根据所述应用列表信息确定待评估应用,并从所述原始缓存数据中读取所述待评估应用的应用状态参数;
按预设数据维度对所述应用状态参数进行维度划分,以获得待评估状态参数;
获取所述待评估状态参数对应的评分策略,根据所述评分策略对所述待评估状态参数进行评分,获得参数评分结果;
根据所述参数评分结果确定所述待评估应用的当前健康状态。
优选地,所述获取静态缓存中存放的原始缓存数据,从所述原始缓存数据中读取应用列表信息的步骤之前,所述方法还包括:
周期性采集服务发现框架Eureka中存放的注册应用信息,并从所述注册应用信息中提取注册应用列表;
获取所述注册应用列表包含的应用程序的应用状态参数;
将所述注册应用信息以及所述应用状态参数作为原始缓存数据存放至静态缓存中。
优选地,所述预设数据维度包括:应用运行维度、应用编译维度、日志异常维度以及代码质量维度;
所述按预设数据维度对所述应用状态参数进行维度划分,以获得待评估状态参数的步骤,包括:
按所述应用运行维度、所述应用编译维度、所述日志异常维度以及所述代码质量维度对所述应用状态参数进行维度划分,以获得应用运行数据、应用编译数据、日志异常数据以及代码质量数据;
根据所述应用运行数据、所述应用编译数据、所述日志异常数据以及所述代码质量数据确定待评估状态参数。
优选地,所述根据所述应用运行数据、所述应用编译数据、所述日志异常数据以及所述代码质量数据确定待评估状态参数的步骤,包括:
从所述应用运行数据中读取所述待评估应用对应的运行状态信息;
按时间顺序从所述应用编译数据中读取第一预设数量的应用编译信息,以及从所述日志异常数据中读取第二预设数量的应用异常信息;
根据所述应用异常信息确定所述待评估应用对应的应用漏洞数量;
从所述代码质量数据中提取对应的代码覆盖率以及代码重复率,根据所述应用漏洞数量、所述代码覆盖率以及所述代码重复率生成代码质量信息;
将所述运行状态信息、所述应用编译信息、所述应用异常信息以及所述代码质量信息作为待评估状态参数。
优选地,所述参数评分结果包括:运行状态评分结果、应用编译评分结果、应用异常评分结果以及代码质量评分结果;
所述根据所述参数评分结果确定所述待评估应用的当前健康状态的步骤,包括:
根据所述运行状态评分结果、所述应用编译评分结果、所述应用异常评分结果以及所述代码质量评分结果,通过平均加权算法计算所述待评估应用的当前健康评分,并将所述当前健康评分保存至预设数据库;
将所述当前健康评分与预设阈值进行比较,并根据比较结果确定所述待评估应用的当前健康状态。
优选地,所述根据所述参数评分结果确定所述待评估应用的当前健康状态的步骤之后,所述方法还包括:
从所述预设数据库中获取第一预设时长内所述待评估应用的若干个历史健康评分;
根据所述历史健康评分通过第一预设公式计算所述第一预设时长内所述待评估应用的整体健康评分;
将所述整体健康评分保存至所述预设数据库,并根据所述整体健康评分确定所述第一预设时长内所述待评估应用的整体健康状态;
其中,所述第一预设公式为:
式中,Xave为整体健康评分,Xi为历史健康评分,n为第一预设时长内历史健康评分的数量。
优选地,所述根据所述整体健康评分确定所述第一预设时长内所述待评估应用的整体健康状态的步骤之后,所述方法还包括:
从所述预设数据库中获取第二预设时长内所述待评估应用的若干个历史整体健康评分;
获取所述待评估应用的持续运行天数,根据所述持续运行天数通过第二预设公式计算健康评估因子,其中,所述第二预设公式为:
式中,EI为第I天的健康评估因子,N为持续运行天数,I小于等于N;
根据第三预设公式确定各历史整体健康评分对应的惩罚权重,其中,所述第三预设公式为:
式中,Wp为第I天的历史整体健康评分所对应的惩罚权重,XI ave为第I天的历史整体健康评分;
根据所述健康评估因子、所述惩罚权重以及所述历史整体健康评分,通过第四预设公式计算所述第二预设时长内所述待评估应用的持续健康评分;
其中,所述第四预设公式为:
式中,Xcontinue为待评估应用的持续健康评分。
此外,为实现上述目的,本发明还提出一种应用程序的健康评估装置,所述装置包括:
数据读取模块,用于获取静态缓存中存放的原始缓存数据,从所述原始缓存数据中读取应用列表信息;
参数读取模块,用于根据所述应用列表信息确定待评估应用,并从所述原始缓存数据中读取所述待评估应用的应用状态参数;
维度划分模块,用于按预设数据维度对所述应用状态参数进行维度划分,以获得待评估状态参数;
参数评分模块,用于获取所述待评估状态参数对应的评分策略,根据所述评分策略对所述待评估状态参数进行评分,获得参数评分结果;
状态评估模块,用于根据所述参数评分结果确定所述待评估应用的当前健康状态。
此外,为实现上述目的,本发明还提出一种应用程序的健康评估设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的应用程序的健康评估程序,所述应用程序的健康评估程序配置为实现如上文所述的应用程序的健康评估方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有应用程序的健康评估程序,所述应用程序的健康评估程序被处理器执行时实现如上文所述的应用程序的健康评估方法的步骤。
本发明通过获取静态缓存中存放的原始缓存数据,从原始缓存数据中读取应用列表信息;然后根据应用列表信息确定待评估应用,并从原始缓存数据中读取待评估应用的应用状态参数;再按预设数据维度对应用状态参数进行维度划分获得待评估状态参数;根据评分策略对待评估状态参数进行评分获得参数评分结果;最后根据参数评分结果确定待评估应用的当前健康状态。本发明通过自动获取应用的状态参数,然后对状态参数进行维度划分,再依据评分策略分别对维度划分后的参数进行评分进而确定应用的健康状态,提高了应用健康评估的实效性以及评估效率,同时根据不同维度的状态参数对应用进行健康评估也使得评估结果更加准确、可靠。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的应用程序的健康评估设备的结构示意图;
图2为本发明应用程序的健康评估方法第一实施例的流程示意图;
图3为本发明应用程序的健康评估方法第二实施例的流程示意图;
图4为本发明应用程序的健康评估方法第三实施例的流程示意图;
图5为本发明应用程序的健康评估装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的应用程序的健康评估设备结构示意图。
如图1所示,该应用程序的健康评估设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对应用程序的健康评估设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及应用程序的健康评估程序。
在图1所示的应用程序的健康评估设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明应用程序的健康评估设备中的处理器1001、存储器1005可以设置在应用程序的健康评估设备中,所述应用程序的健康评估设备通过处理器1001调用存储器1005中存储的应用程序的健康评估程序,并执行本发明实施例提供的应用程序的健康评估方法。
本发明实施例提供了一种应用程序的健康评估方法,参照图2,图2为本发明应用程序的健康评估方法第一实施例的流程示意图。
本实施例中,所述应用程序的健康评估方法包括以下步骤:
步骤S10:获取静态缓存中存放的原始缓存数据,从所述原始缓存数据中读取应用列表信息;
需要说明的是,本实施例方法的执行主体可以是上述应用程序的健康评估设备(以下简称评估设备),该评估设备可以是一个全自动化的监控工具,通过定时任务主动获取应用程序各方面信息,实时更新同步数据,然后将数据存放到预先配置的静态缓存中。
在执行本步骤之前,评估设备可周期性采集服务发现框架Eureka中存放的注册应用信息,并从所述注册应用信息中提取注册应用列表;然后获取所述注册应用列表包含的应用程序的应用状态参数;再将所述注册应用信息以及所述应用状态参数作为原始缓存数据存放至静态缓存中。
具体的,评估设备可通过Spring框架的@Scheduled注解每隔一段时间(例如5s)执行定时任务:通过异步调用类CompletableFuture调用监控软件(例如Jenkins,一种基于Java开发的一种持续集成工具)收集Eureka中的注册服务信息,该注册服务信息可以包含应用程序各方面的信息数据。
应理解的是,Eureka是一种服务发现框架,其包含两个组件:Eureka Server和Eureka Client。其中,Eureka Server提供服务注册服务,各个服务节点启动后将在EurekaServer中进行注册,这样Eureka Server中的服务注册表(即上述注册应用信息)中将会存储所有可用服务节点的各类信息,例如,注册应用列表、列表中各应用程序的状态参数等。其中,所述服务节点可以是微服务,即本实施例中的待评估应用(程序)。
需要说明的是,所述异步调用类CompletableFuture是Java提供的一个异步调用类,相比现有的Future类,CompletableFuture能够减少CPU资源耗费,而且能及时地得到计算结果。本实施例利用CompletableFuture进行信息收集,能够提高评估设备的并发计算能力,减少收集信息的耗时。另外,本实施例中所述静态缓存(map)是Java的一个关联容器,它提供一对一的数据处理能力,其中第一个“一”可以称为关键字,每个关键字只能在map中出现一次,第二个“一”可称为该关键字的值,在map内部所有的数据都是有序的。
本实施例中,所述应用状态参数可以是能够表征应用程序状态的数据,例如应用接收消息的终端地址(endpoint)信息、应用版本编译(build)信息、应用代码质量信息、linux日志信息等。
其中,所述应用代码质量信息可由代码质量管理平台(Sonar)进行收集,Sonar是一个开源平台,用于管理Java源代码的质量,其主要特点包括:代码覆盖:通过单元测试,将会显示哪行代码被选中;改善编码规则;搜寻编码规则:按照名字,插件,激活级别和类别进行查询;项目搜寻:按照项目的名字进行查询;对比数据:比较同一张表中的任何测量的趋势。
在具体实现中,评估设备可从静态缓存中读取预先存放的原始缓存数据,然后从原始缓存数据中读取应用列表信息。
步骤S20:根据所述应用列表信息确定待评估应用,并从所述原始缓存数据中读取所述待评估应用的应用状态参数;
应理解的是,应用列表信息中包含有被监控的若干个应用程序对应的名称或标识。评估设备可根据需求从应用列表信息中选取当前需要进行健康评估的应用,即所述待评估应用。
在具体实现中,当评估设备确定出待评估应用后,即可从原始缓存数据中读取待评估应用的应用状态参数,然后基于这些应用状态参数进行健康评估。
步骤S30:按预设数据维度对所述应用状态参数进行维度划分,以获得待评估状态参数;
需要说明的是,本实施例中所述预设数据维度可包括:应用运行维度、应用编译维度、日志异常维度以及代码质量维度。其中,应用运行维度主要涉及待评估应用的运行状态(up表明正常运行,down表明异常运行或宕机)。应用编译维度主要涉及待评估应用的应用版本编译信息。日志异常维度主要涉及待评估应用的应用日志信息。代码质量维度主要涉及待评估应用的程序代码信息,包括代码漏洞、覆盖率、重复率等。
在具体实现中,评估设备可按照上述预先设定的数据维度对应用状态参数进行维度划分,从而获得待评估的状态参数。
具体的,评估设备可按所述应用运行维度、所述应用编译维度、所述日志异常维度以及所述代码质量维度对所述应用状态参数进行维度划分,以获得应用运行数据、应用编译数据、日志异常数据以及代码质量数据;然后根据所述应用运行数据、所述应用编译数据、所述日志异常数据以及所述代码质量数据确定待评估状态参数。
进一步地,为保证应用程序健康评估的时效性以及准确性。本实施例中所述应用运行数据可以是待评估应用当前的运行状态(up或down),所述应用编译数据可以是应用版本编译信息中最近几次的编译(build)信息,所述日志异常数据可以是待评估应用的linux日志信息中最近几次产生的异常(exception)信息,所述代码质量数据可以是代码质量信息中的漏洞(bug)数量、代码覆盖率、代码重复率等信息。
具体的,评估设备可从所述应用运行数据中读取所述待评估应用对应的运行状态信息;然后按时间顺序从所述应用编译数据中读取第一预设数量的应用编译信息,以及从所述日志异常数据中读取第二预设数量的应用异常信息。例如,按时间顺序读取应用编译数据中最近10次的build信息,以及日志异常数据中最近的10条exception信息。
同时,评估设备还可以根据所述应用异常信息确定所述待评估应用对应的应用漏洞数量;然后从所述代码质量数据中提取对应的代码覆盖率以及代码重复率,根据所述应用漏洞数量、所述代码覆盖率以及所述代码重复率生成代码质量信息;再将所述运行状态信息、所述应用编译信息、所述应用异常信息以及所述代码质量信息作为待评估状态参数。
步骤S40:获取所述待评估状态参数对应的评分策略,根据所述评分策略对所述待评估状态参数进行评分,获得参数评分结果;
需要说明的是,为保证健康评估结果的准确性,可预先为不同数据维度的待评估状态参数配置相应的评分策略。
例如,对于应用运行维度的应用运行数据,可将其对应的评分策略配置为:若应用的运行状态是up,则运行状态评分结果(评分)A为1,否则为0。
对于应用编译(build)维度的应用编译数据,可将其对应的评分策略配置为:统计10次build次数,成功一次加0.1分,例如有8次build成功,该次得分为0.8分。对于build次数少于10次的,采取填充计分规则,应用编译评分结果(评分)B=a×0.1+(10-b)×0.1,其中a为成功次数,b为build信息数量。
对于日志异常维度的日志异常数据,可将其对应的评分策略配置为:应用异常评分结果(评分)C==1-0.1×c,其中c为exception个数。通常情况下,开发人员更关心近期的应用异常情况,因此,该exception个数优选为最近一小时的。
对于代码质量维度的代码质量数据,可将其对应的评分策略配置为:先统计日志异常数据中的应用漏洞数量,即bugs的数量,若为0,则评分Db=1,否则评分Db=0;同时,统计代码覆盖率,若覆盖率<50%,则评分Dc=1,否则评分Dc=0;统计代码重复率,若重复率<30%,则评分Dd=1,否则评分Dd=0。考虑到bug相较于其他代码异常最能有效反映应用程序是否健康,因此,本实施例代码质量数据对应的总评分(即代码质量评分结果)D=Db×(Dc+Dd)/2。
在具体实现中,评估设备在获取到待评估状态参数时,即可根据上述评分策略对待评估状态参数进行评分从而获得参数评分结果。
步骤S50:根据所述参数评分结果确定所述待评估应用的当前健康状态。
应理解的是,评估设备在根据预先配置的评分策略为对应的待评估状态参数进行评分,得到参数评分结果后即可基于这些参数评分结果对待评估应用进行较为全面的健康评估。
作为本实施例的另一种实现方式,由于数据维度的不同本实施例所述参数评分结果可对应包括:运行状态评分结果、应用编译评分结果、应用异常评分结果以及代码质量评分结果;
相应地,评估设备可根据所述运行状态评分结果、所述应用编译评分结果、所述应用异常评分结果以及所述代码质量评分结果,通过平均加权算法计算所述待评估应用的当前健康评分,并将所述当前健康评分保存至预设数据库;将所述当前健康评分与预设阈值进行比较,并根据比较结果确定所述待评估应用的当前健康状态。其中,所述预设阈值可根据实际情况设定,本实施例对此不做限制。所述健康状态也可根据健康评分的不同分为不同的等级,例如,健康评分<0.5,健康状态等级为不健康;0.5≤健康评分≤0.8,健康状态等级为亚健康;0.8≤健康评分,健康状态等级为健康。对于健康等级的具体划分本实施例也不加以限制。
进一步地,考虑到应用的运行状态为评估一个应用是否健康的最关键因素,因此本实施例所采用的平均加权算法为健康评分=A×(B+C+D)/3,其中,A为运行状态评分结果、B为应用编译评分结果、C为应用异常评分结果,D为代码质量评分结果。
当然,本实施例中评估设备可以周期性的对待评估的应用进行健康评估,例如每隔1小时或2小时评估一次或者是24小时评估12次等。每一次评估之后,评估设备都将保存该待评估应用的健康评分和健康状态至预设数据库,以便于后续查看或使用。
本实施例通过获取静态缓存中存放的原始缓存数据,从原始缓存数据中读取应用列表信息;然后根据应用列表信息确定待评估应用,并从原始缓存数据中读取待评估应用的应用状态参数;再按预设数据维度对应用状态参数进行维度划分获得待评估状态参数;根据评分策略对待评估状态参数进行评分获得参数评分结果;最后根据参数评分结果确定待评估应用的当前健康状态。本实施例通过自动获取应用的状态参数,然后对状态参数进行维度划分,再依据评分策略分别对维度划分后的参数进行评分进而确定应用的健康状态,提高了应用健康评估的实效性以及评估效率,同时根据不同维度的状态参数对应用进行健康评估也使得评估结果更加准确、可靠。
参考图3,图3为本发明应用程序的健康评估方法第二实施例的流程示意图。
基于上述第一实施例,本实施例应用程序的健康评估方法在上述步骤S50之后,还包括:
步骤S60:从预设数据库中获取第一预设时长内所述待评估应用的若干个历史健康评分;
应理解的是,为实现对应用程序健康状态更为准确的评估,避免偶然误差所导致的评估结果失真、不准确的情况。本实施例评估设备可从上述预设数据库中读取预设时长(例如24小时)内所进行的应用健康评估的健康评分,即所述历史健康评分,然后基于这些历史健康评分对待评估应用进行每日健康状态的整体评估。本实施例中,所述第一预设时长优选为24小时。
步骤S70:根据所述历史健康评分通过第一预设公式计算所述第一预设时长内所述待评估应用的整体健康评分;
其中,所述第一预设公式为:
式中,Xave为整体健康评分,Xi为历史健康评分,n为第一预设时长内历史健康评分的数量。
在具体实现中,评估设备可基于获得的若干个历史健康评分通过上述公式来计算第一预设时长内待评估应用的整体健康评分。例如,假设评估设备当天对待评估应用进行了6次健康评估,且对应的历史健康评分分别为0.76、0.80、0.82、0.84、0.88、0.91,则所述第一预设时长内历史健康评分的数量n=6,整体健康评分则为(0.76+0.80+0.82+0.84+0.88+0.91)/6=0.835。
步骤S80:将所述整体健康评分保存至所述预设数据库,并根据所述整体健康评分确定所述第一预设时长内所述待评估应用的整体健康状态;
应理解的是,为便于开发人员对待评估应用每天的整体健康状态进行查阅,评估设备在计算出待评估应用每日的整体健康评分后,也可以将该整体健康评分保存至预设数据库。当然,为了提高整体健康评分的查阅效率,评估设备在对整体健康评分进行保存时,可先获取待评估应用的应用标识(例如,名称、编号等),然后将该应用标识与每次获得的整体健康评分进行关联后再进行保存。另外,为了方便开发人员进行问题排查,评估设备在将应用标识和整体健康评分进行关联时还可同时标记对应的健康评估时间。
在具体实现中,评估设备可获取待评估应用的应用标识,然后将该应用标识与每次获得的整体健康评分进行关联后保存至预设数据库。同时,评估设备还可将整体健康评分与上述预设预置进行比较,然后根据比较结果确定第一预设时长内待评估应用的整体健康状态。
本实施例通过对预设时长内的待评估应用进行整体健康评估,能够使得开发人员及时掌握待评估应用每天的整体健康状态,便于对待评估应用进行有效的开发和维护。
参考图4,图4为本发明应用程序的健康评估方法第三实施例的流程示意图。
基于上述第二实施例,在本实施例中,所述步骤S80之后,所述方法还包括:
步骤S90:从预设数据库中获取第二预设时长内所述待评估应用的若干个历史整体健康评分;
应理解的是,通常情况下,开发人员不仅仅关心一天内应用的健康情况,也关心应用部署完成后的持续健康情况。本实施例中所述历史整体健康评分可以是从待评估应用部署开始到当前时刻所对应的每日整体健康评分。
步骤S100:获取所述待评估应用的持续运行天数,根据所述持续运行天数通过第二预设公式计算健康评估因子,其中,所述第二预设公式为:
式中,EI为第I天的健康评估因子,N为持续运行天数,I小于等于N;
在具体实现中,评估设备可先从待评估应用的应用参数中获取对应的持续运行天数N,然后确定根据上述第二预设时长确定本次持续健康评估的总天数I,再根据上述第二预设公式计算出本次持续健康评估对应的健康评估因子。
步骤S101:根据第三预设公式确定各历史整体健康评分对应的惩罚权重,其中,所述第三预设公式为:
式中,Wp为第I天的历史整体健康评分所对应的惩罚权重,XI ave为第I天的历史整体健康评分;
应理解的是,为了客观的对待评估应用的持续健康状况进行分析,本实施例引入惩罚权重来对不合格或不符合要求的历史整体评分剔除。例如若某一天整体健康评分为0.4,则将该天整体健康评分对应的惩罚权重设置为0,以使该整体健康评分在持续健康评估的计算中“失效”。
步骤S102:根据所述健康评估因子、所述惩罚权重以及所述历史整体健康评分,通过第四预设公式计算所述第二预设时长内所述待评估应用的持续健康评分;
其中,所述第四预设公式为:
式中,Xcontinue为待评估应用的持续健康评分。
在具体实现中,评估设备在获取到所述第二预设时长内,每天的历史整体健康评分、以及每天的历史整体健康评分对应的健康评估因子和惩罚权重后,即可根据上述第四预设公式计算第二预设时长内待评估应用的持续健康评分。
下面通过举例来对本实施例进行具体说明。
假设所述第二预设时长为6天,待评估应用A的持续运行天数为7天,评估设备从预设数据库中获取到待评估应用A在6天内的历史整体健康评分有6个,分别为:0.47、0.58、0.64、0.75、0.81、0.88。此时,评估设备根据上述第二预设公式计算出这六个历史整体健康评分的健康评估因子分别为:6/7、5/7、4/7、3/7、2/7、1/7;评估设备根据上述第三预设公式计算出这六个历史整体健康评分的惩罚权重分别为:0、1、1、1、1、1;最后根据上述第四预设公式即可计算出待评估应用A在6天内的持续健康评分[(0.47×6/7×0)+(0.58×5/7×1)+(0.64×4/7×1)+(0.75×3/7×1)+(0.81×2/7×1)+(0.88×1/7×1=)]/7=0.21。
此外,本实施例中评估设备在通过Spring框架的@Scheduled注解执行定时任务时,还可进行以下操作:
例如,根据注册应用信息中的应用列表,遍历收集应用的当前健康评分,整体健康评分以及持续健康评分,应用的状态信息,endpoint信息中代码分支信息和jira信息,应用在jenkins上的最后一条build状态信息等。
例如,每隔5s根据注册应用信息中的应用列表,遍历收集endpoint信息中的应用整体内存情况、堆内存情况、初始堆内存情况、最大堆内存情况、非堆内存情况、初始非堆内存情况以及最大非堆内存情况等。
又例如,每隔5s根据注册应用信息中的应用列表,遍历收集endpoint信息中的应用启动时间、系统加载信息、可用线程、Java对象信息、进程信息等Java虚拟机的相关信息等。
再例如,每隔5s根据注册应用信息中的应用列表,遍历收集sonar代码质量信息中的bug情况、重复率、覆盖率、新增bug情况、新提交代码重复率、新提交代码覆盖率等信息。
还例如,每隔5s根据注册应用信息中的应用列表,对于日志信息进行过滤,获取带有Exception的异常信息,并只记录最后10条信息,同时根据获取的异常信息,对于上一次的异常信息,如果有新增异常,则进行提醒。
需要说明的是,本实施例中评估设备通过上述操作获取的信息都将缓存至另一个静态缓存(可称为第二静态缓存)。即评估设备在获得上述健康分析结果后,还会将该分析结果存放至第二静态缓存中,然后还将根据这些分析结果数据暴露对应的接口(例如Service summary、Memory info、JVM info、code quality,execption alert以及日志显示等),使得前端在需要调用对应的接口时,即可通过轮询这些接口,准实时获取应用各方面的信息。
进一步地,本实施例中评估设备还可收集应用编译,部署和运行时的实时状态和健康趋势。通过收集应用jenkins build信息获取应用部署信息,通过搜集endpoint信息中的状态信息,获取应用运行时的实时状态,
进一步地,本实施例中评估设备还可以清晰找到失败的jenkins build信息以及微服务的代码分支信息以及jira task信息,方便开发者及时发现宕机应用,以及定位宕机原因。其中,微服务的代码分支信息以及jira task信息都可通过应用自身的endpoint展示。另外Eureka服务列表信息也可以实时展示应用的运行状态。如果应用宕机,可以查看相关build信息以及异常日志,及时定位宕机原因。
本实施例通过计算待评估应用的持续健康评分,能够较为直观的反映应用的持续健康情况以及应用健康趋势,极大地方便了开发人员对应用的运营和维护。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有应用程序的健康评估程序,所述应用程序的健康评估程序被处理器执行时实现如上文所述的应用程序的健康评估方法的步骤。
参照图5,图5为本发明应用程序的健康评估装置第一实施例的结构框图。
如图5所示,本发明实施例提出的应用程序的健康评估装置包括:
数据读取模块501,用于获取静态缓存中存放的原始缓存数据,从所述原始缓存数据中读取应用列表信息;
参数读取模块502,用于根据所述应用列表信息确定待评估应用,并从所述原始缓存数据中读取所述待评估应用的应用状态参数;
维度划分模块503,用于按预设数据维度对所述应用状态参数进行维度划分,以获得待评估状态参数;
参数评分模块504,用于获取所述待评估状态参数对应的评分策略,根据所述评分策略对所述待评估状态参数进行评分,获得参数评分结果;
状态评估模块505,用于根据所述参数评分结果确定所述待评估应用的当前健康状态。
本实施例通过获取静态缓存中存放的原始缓存数据,从原始缓存数据中读取应用列表信息;然后根据应用列表信息确定待评估应用,并从原始缓存数据中读取待评估应用的应用状态参数;再按预设数据维度对应用状态参数进行维度划分获得待评估状态参数;根据评分策略对待评估状态参数进行评分获得参数评分结果;最后根据参数评分结果确定待评估应用的当前健康状态。本实施例通过自动获取应用的状态参数,然后对状态参数进行维度划分,再依据评分策略分别对维度划分后的参数进行评分进而确定应用的健康状态,提高了应用健康评估的实效性以及评估效率,同时根据不同维度的状态参数对应用进行健康评估也使得评估结果更加准确、可靠。
基于本发明上述应用程序的健康评估装置第一实施例,提出本发明应用程序的健康评估装置的第二实施例。
在本实施例中,所述数据读取模块501,还用于周期性采集服务发现框架Eureka中存放的注册应用信息,并从所述注册应用信息中提取注册应用列表;获取所述注册应用列表包含的应用程序的应用状态参数;将所述注册应用信息以及所述应用状态参数作为原始缓存数据存放至静态缓存中。
进一步地,所述预设数据维度包括:应用运行维度、应用编译维度、日志异常维度以及代码质量维度。相应地,所述维度划分模块503,还用于按所述应用运行维度、所述应用编译维度、所述日志异常维度以及所述代码质量维度对所述应用状态参数进行维度划分,以获得应用运行数据、应用编译数据、日志异常数据以及代码质量数据;根据所述应用运行数据、所述应用编译数据、所述日志异常数据以及所述代码质量数据确定待评估状态参数。
进一步地,所述维度划分模块503,还用于从所述应用运行数据中读取所述待评估应用对应的运行状态信息;按时间顺序从所述应用编译数据中读取第一预设数量的应用编译信息,以及从所述日志异常数据中读取第二预设数量的应用异常信息;根据所述应用异常信息确定所述待评估应用对应的应用漏洞数量;从所述代码质量数据中提取对应的代码覆盖率以及代码重复率,根据所述应用漏洞数量、所述代码覆盖率以及所述代码重复率生成代码质量信息;将所述运行状态信息、所述应用编译信息、所述应用异常信息以及所述代码质量信息作为待评估状态参数。
进一步地,所述参数评分结果包括:运行状态评分结果、应用编译评分结果、应用异常评分结果以及代码质量评分结果,相应地,所述状态评估模块505,还用于根据所述运行状态评分结果、所述应用编译评分结果、所述应用异常评分结果以及所述代码质量评分结果,通过平均加权算法计算所述待评估应用的当前健康评分,并将所述当前健康评分保存至预设数据库;将所述当前健康评分与预设阈值进行比较,并根据比较结果确定所述待评估应用的当前健康状态。
进一步地,所述状态评估模块505,还用于从所述预设数据库中获取第一预设时长内所述待评估应用的若干个历史健康评分;根据所述历史健康评分通过第一预设公式计算所述第一预设时长内所述待评估应用的整体健康评分;将所述整体健康评分保存至所述预设数据库,并根据所述整体健康评分确定所述第一预设时长内所述待评估应用的整体健康状态;
其中,所述第一预设公式为:
式中,Xave为整体健康评分,Xi为历史健康评分,n为第一预设时长内历史健康评分的数量。
进一步地,所述状态评估模块505,还用于从所述预设数据库中获取第二预设时长内所述待评估应用的若干个历史整体健康评分;
获取所述待评估应用的持续运行天数,根据所述持续运行天数通过第二预设公式计算健康评估因子,其中,所述第二预设公式为:
式中,EI为第I天的健康评估因子,N为持续运行天数,I小于等于N;
根据第三预设公式确定各历史整体健康评分对应的惩罚权重,其中,所述第三预设公式为:
式中,Wp为第I天的历史整体健康评分所对应的惩罚权重,XI ave为第I天的历史整体健康评分;
根据所述健康评估因子、所述惩罚权重以及所述历史整体健康评分,通过第四预设公式计算所述第二预设时长内所述待评估应用的持续健康评分;
其中,所述第四预设公式为:
式中,Xcontinue为待评估应用的持续健康评分。
本发明应用程序的健康评估装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种应用程序的健康评估方法,其特征在于,所述方法包括:
获取静态缓存中存放的原始缓存数据,从所述原始缓存数据中读取应用列表信息;
根据所述应用列表信息确定待评估应用,并从所述原始缓存数据中读取所述待评估应用的应用状态参数;
按预设数据维度对所述应用状态参数进行维度划分,以获得待评估状态参数;
获取所述待评估状态参数对应的评分策略,根据所述评分策略对所述待评估状态参数进行评分,获得参数评分结果;
根据所述参数评分结果确定所述待评估应用的当前健康状态。
2.如权利要求1所述的方法,其特征在于,所述获取静态缓存中存放的原始缓存数据,从所述原始缓存数据中读取应用列表信息的步骤之前,所述方法还包括:
周期性采集服务发现框架Eureka中存放的注册应用信息,并从所述注册应用信息中提取注册应用列表;
获取所述注册应用列表包含的应用程序的应用状态参数;
将所述注册应用信息以及所述应用状态参数作为原始缓存数据存放至静态缓存中。
3.如权利要求1所述的方法,其特征在于,所述预设数据维度包括:应用运行维度、应用编译维度、日志异常维度以及代码质量维度;
所述按预设数据维度对所述应用状态参数进行维度划分,以获得待评估状态参数的步骤,包括:
按所述应用运行维度、所述应用编译维度、所述日志异常维度以及所述代码质量维度对所述应用状态参数进行维度划分,以获得应用运行数据、应用编译数据、日志异常数据以及代码质量数据;
根据所述应用运行数据、所述应用编译数据、所述日志异常数据以及所述代码质量数据确定待评估状态参数。
4.如权利要求3所述的方法,其特征在于,所述根据所述应用运行数据、所述应用编译数据、所述日志异常数据以及所述代码质量数据确定待评估状态参数的步骤,包括:
从所述应用运行数据中读取所述待评估应用对应的运行状态信息;
按时间顺序从所述应用编译数据中读取第一预设数量的应用编译信息,以及从所述日志异常数据中读取第二预设数量的应用异常信息;
根据所述应用异常信息确定所述待评估应用对应的应用漏洞数量;
从所述代码质量数据中提取对应的代码覆盖率以及代码重复率,根据所述应用漏洞数量、所述代码覆盖率以及所述代码重复率生成代码质量信息;
将所述运行状态信息、所述应用编译信息、所述应用异常信息以及所述代码质量信息作为待评估状态参数。
5.如权利要求1至4任一项所述的方法,其特征在于,所述参数评分结果包括:运行状态评分结果、应用编译评分结果、应用异常评分结果以及代码质量评分结果;
所述根据所述参数评分结果确定所述待评估应用的当前健康状态的步骤,包括:
根据所述运行状态评分结果、所述应用编译评分结果、所述应用异常评分结果以及所述代码质量评分结果,通过平均加权算法计算所述待评估应用的当前健康评分,并将所述当前健康评分保存至预设数据库;
将所述当前健康评分与预设阈值进行比较,并根据比较结果确定所述待评估应用的当前健康状态。
7.如权利要求6所述的方法,其特征在于,所述根据所述整体健康评分确定所述第一预设时长内所述待评估应用的整体健康状态的步骤之后,所述方法还包括:
从所述预设数据库中获取第二预设时长内所述待评估应用的若干个历史整体健康评分;
获取所述待评估应用的持续运行天数,根据所述持续运行天数通过第二预设公式计算健康评估因子,其中,所述第二预设公式为:
式中,EI为第I天的健康评估因子,N为持续运行天数,I小于等于N;
根据第三预设公式确定各历史整体健康评分对应的惩罚权重,其中,所述第三预设公式为:
式中,Wp为第I天的历史整体健康评分所对应的惩罚权重,XI ave为第I天的历史整体健康评分;
根据所述健康评估因子、所述惩罚权重以及所述历史整体健康评分,通过第四预设公式计算所述第二预设时长内所述待评估应用的持续健康评分;
其中,所述第四预设公式为:
式中,Xcontinue为待评估应用的持续健康评分。
8.一种应用程序的健康评估装置,其特征在于,所述装置包括:
数据读取模块,用于获取静态缓存中存放的原始缓存数据,从所述原始缓存数据中读取应用列表信息;
参数读取模块,用于根据所述应用列表信息确定待评估应用,并从所述原始缓存数据中读取所述待评估应用的应用状态参数;
维度划分模块,用于按预设数据维度对所述应用状态参数进行维度划分,以获得待评估状态参数;
参数评分模块,用于获取所述待评估状态参数对应的评分策略,根据所述评分策略对所述待评估状态参数进行评分,获得参数评分结果;
状态评估模块,用于根据所述参数评分结果确定所述待评估应用的当前健康状态。
9.一种应用程序的健康评估设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的应用程序的健康评估程序,所述应用程序的健康评估程序配置为实现如权利要求1至7中任一项所述的应用程序的健康评估方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有应用程序的健康评估程序,所述应用程序的健康评估程序被处理器执行时实现如权利要求1至7任一项所述的应用程序的健康评估方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010227970.0A CN111552607A (zh) | 2020-03-27 | 2020-03-27 | 应用程序的健康评估方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010227970.0A CN111552607A (zh) | 2020-03-27 | 2020-03-27 | 应用程序的健康评估方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111552607A true CN111552607A (zh) | 2020-08-18 |
Family
ID=72003756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010227970.0A Pending CN111552607A (zh) | 2020-03-27 | 2020-03-27 | 应用程序的健康评估方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111552607A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306860A (zh) * | 2020-09-24 | 2021-02-02 | 上海趣蕴网络科技有限公司 | 一种产品灰度包准入评估方法及系统 |
CN112527611A (zh) * | 2020-09-24 | 2021-03-19 | 上海趣蕴网络科技有限公司 | 一种产品健康度评估方法及系统 |
CN112579685A (zh) * | 2020-12-31 | 2021-03-30 | 上海迈外迪网络科技有限公司 | 大数据作业的状态监测及健康度评估方法、装置 |
CN112988542A (zh) * | 2021-04-08 | 2021-06-18 | 马上消费金融股份有限公司 | 一种应用评分方法、装置、设备和可读存储介质 |
CN113204462A (zh) * | 2021-04-20 | 2021-08-03 | 北京百度网讯科技有限公司 | 小程序处理方法、装置、电子设备及计算机可读存储介质 |
CN113285857A (zh) * | 2021-07-26 | 2021-08-20 | 之江实验室 | 一种面向物联网异构物体的微服务能力描述方法 |
-
2020
- 2020-03-27 CN CN202010227970.0A patent/CN111552607A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306860A (zh) * | 2020-09-24 | 2021-02-02 | 上海趣蕴网络科技有限公司 | 一种产品灰度包准入评估方法及系统 |
CN112527611A (zh) * | 2020-09-24 | 2021-03-19 | 上海趣蕴网络科技有限公司 | 一种产品健康度评估方法及系统 |
CN112579685A (zh) * | 2020-12-31 | 2021-03-30 | 上海迈外迪网络科技有限公司 | 大数据作业的状态监测及健康度评估方法、装置 |
CN112988542A (zh) * | 2021-04-08 | 2021-06-18 | 马上消费金融股份有限公司 | 一种应用评分方法、装置、设备和可读存储介质 |
CN112988542B (zh) * | 2021-04-08 | 2021-11-30 | 马上消费金融股份有限公司 | 一种应用评分方法、装置、设备和可读存储介质 |
CN113204462A (zh) * | 2021-04-20 | 2021-08-03 | 北京百度网讯科技有限公司 | 小程序处理方法、装置、电子设备及计算机可读存储介质 |
CN113285857A (zh) * | 2021-07-26 | 2021-08-20 | 之江实验室 | 一种面向物联网异构物体的微服务能力描述方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111552607A (zh) | 应用程序的健康评估方法、装置、设备及存储介质 | |
US10067855B2 (en) | Error developer association | |
US20080147705A1 (en) | Predicting out of memory conditions using soft references | |
CN111897625B (zh) | 一种基于Kubernetes集群的资源事件回溯方法、系统及电子设备 | |
CN110083514B (zh) | 软件测试缺陷评估方法、装置、计算机设备及存储介质 | |
Chen et al. | Predicting job completion times using system logs in supercomputing clusters | |
US20060129879A1 (en) | System and method for monitoring the status and progress of a technical process or of a technical project | |
CN110674231A (zh) | 一种面向数据湖的用户id集成方法和系统 | |
CN111400102A (zh) | 应用程序的变更监控方法、装置、设备及存储介质 | |
CN112365157A (zh) | 智能派工方法、装置、设备及存储介质 | |
Peng et al. | Mining logs files for data-driven system management | |
CN108959101A (zh) | 测试结果处理方法、装置、设备及存储器软件测试系统 | |
CN111124791A (zh) | 一种系统测试方法及装置 | |
CN108089978A (zh) | 一种分析asp.net应用软件性能及故障的诊断方法 | |
CN113342608A (zh) | 流式计算引擎任务的监控方法及装置 | |
WO2021101918A1 (en) | Recovery maturity index (rmi) - based control of disaster recovery | |
CN113238901B (zh) | 多设备的自动化测试方法及装置、存储介质、计算机设备 | |
CN109947615A (zh) | 分布式系统的监控方法和装置 | |
CN112801551B (zh) | 在线选房系统的测试方法、装置、设备和存储介质 | |
JP2007265289A (ja) | チェックリスト管理装置、管理方法およびそのプログラム | |
CN112231185A (zh) | 基于应用系统告警信息的知识获取方法及装置 | |
CN112395119A (zh) | 异常数据处理方法、装置、服务器及存储介质 | |
CN109871331A (zh) | 软件功能试错决策分析方法和装置 | |
CN112988542B (zh) | 一种应用评分方法、装置、设备和可读存储介质 | |
CN109491696B (zh) | 增量源码确定方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |