一种跟踪、监控软件行为的方法、装置及设备与流程

文档序号:16754029发布日期:2019-01-29 17:10阅读:280来源:国知局
一种跟踪、监控软件行为的方法、装置及设备与流程

本发明涉及计算机领域,更具体地,涉及一种跟踪、监控软件行为的方法、装置和设备



背景技术:

软件早已经向分布式这个方向的发展,尤其是近几年微服务理念的盛行,它表现出了如下特点:软件由多个微服务组成、多实例、分布式部署、软件运行期内部依赖关系复杂、动态扩展,总而言之就是软件系统变得越来越复杂。这就给软件的运维和管理带来了很大的挑战,如:对应用软件用户的感知评判无从下手、找不到系统的瓶颈、系统优化缺少根据等。因此跟踪分布式应用的监控系统就应运而生了。

相关技术中,是针对应用系统后端服务进行埋点来实现监控,通过埋点植入的代码进行数据采集,可以达到对应用系统后端调用过程的跟踪,相应的系统架构如图1所示。应用系统的后端服务(由一系列服务器实现的服务功能)包括由服务a、服务b和服务c组成,假定服务a接收到前端发起的一个请求后,内部的调用过程包括:服务a调用服务b、服务b调用服务c、服务c向服务b返回结果、服务b向服务a返回结果,最后由服务a向前端返回响应。一般称前端请求触发的这一处理过程为一个事务(transaction)。监控系统通过服务a、服务b和服务c上的监控代理(agent)采集(或称捕获)调用过程的详细信息,包括整个事务在每个服务间的轨迹、每个环节的耗时等,采集的数据传输到监控服务器进行分析、处理后保存在数据库中,用户通过监控系统的界面可以看到整个调用栈的详细信息,通过监控系统,用户可以得到应用系统所有事务的统计信息报告,展示出了每一类事务的调用频度、响应时间、成功率等信息。

但是,该方案只能监控后端的调用过程,不能跟踪用户从前端发起请求后的处理流程,且该方案只能展示出具体实现层面的事务分类信息,不能感知到用户行为,不能满足应用系统运维和分析的需求。



技术实现要素:

有鉴于此,本发明实施例提供了一种跟踪软件行为的方法,包括:

应用系统的前端收到用户请求后生成场景实例的标识,所述场景实例所属的场景对应于触发所述用户请求的用户操作;

所述前端在所述场景实例的处理过程中,在向所述应用系统的后端服务发送的请求消息中携带所述场景实例的标识。

有鉴于此,本发明实施例还提供了一种跟踪软件行为的系统,包括:

接收模块,用于在收到用户请求后生成场景实例的标识,所述场景实例所属的场景对应于触发所述用户请求的用户操作;

处理模块,用于在所述场景实例的处理过程中,在向所述应用系统的后端服务发送的请求消息中携带所述场景实例的标识。

有鉴于此,本发明实施例还提供了一种应用系统的前端,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现以下处理:

收到用户请求后生成场景实例的标识,所述场景实例所属的场景对应于触发所述用户请求的用户操作;

在所述场景实例的处理过程中,在向所述应用系统的后端服务发送的请求消息中携带所述场景实例的标识。

有鉴于此,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现以下处理:

收到用户请求后生成场景实例的标识,所述场景实例所属的场景对应于触发所述用户请求的用户操作;

在所述场景实例的处理过程中,在向所述应用系统的后端服务发送的请求消息中携带所述场景实例的标识。

上述实施方案通过生成场景实例的标识,将一个场景实例包含的多个事务关联起来,在应用系统的前端实现了按照场景对软件行为的跟踪。

有鉴于此,本发明实施例还提供了一种监控软件行为的方法,包括:

监控系统在应用系统的后端服务收到前端发送的请求消息后,采集所述请求消息触发的事务的信息,所述事务的信息包括从所述请求消息中获取的场景实例的标识;

所述监控系统基于采集的信息进行信息统计时,根据所述场景实例的标识得到所述场景实例及其包含的事务的统计信息。

有鉴于此,本发明实施例还提供了一种监控系统,包括在应用系统的后端服务埋点实现的监控代理及监控服务器,其中:

所述监控代理用于在所述后端服务收到前端发送的请求消息后,采集所述请求消息触发的事务的信息并将采集的信息传输到所述监控服务器,所述事务的信息包括从所述请求消息中获取的场景实例的标识;

所述监控服务器基于所述监控代理采集的信息进行信息统计时,根据所述场景实例的标识得到所述场景实例及其包含的事务的统计信息。

有鉴于此,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现以下处理:

对应用系统的后端服务进行埋点监控,在所述后端服务收到前端发送的请求消息后,采集所述请求消息触发的事务的信息,所述事务的信息包括从所述请求消息中获取的场景实例的标识;

基于采集的信息进行信息统计时,根据所述场景实例的标识得到所述场景实例及其包含的事务的统计信息。

上述实施例方案可以对应用系统的使用场景(简称为场景)进行监控,展示场景的统计信息,因而可以感知到用户行为,满足应用系统运维和分析的需要。

附图说明

图1是相关技术中监控系统的架构示意图;

图2是本发明实施例一和实施例二所基于的系统的架构图;

图3是本发明实施例一跟踪软件行为的方法的流程图;

图4是本发明实施例一跟踪软件行为的装置的模块图;

图5是本发明实施例二监控软件行为的方法的流程图;

图6是本发明实施例三的交互过程示意图

图7是本发明实施例四的交互过程示意图;

图8是本发明实施例五的交互过程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

实施例一

本实施例提供一种在应用系统的前端跟踪软件行为的方法、装置、前端及存储介质。

本实施例的系统架构如图2所示,在图1架构的基础上还示出了应用系统的前端和用户,前端是应用系统的入口,用于接收用户操作触发的用户请求,并通过后端服务进行处理。本实施例在前端代码中埋点,通过埋点植入的代码来实现与场景实例相关的跟踪处理。

本实施例跟踪软件行为的方法如图3所示,包括:

步骤110,应用系统的前端收到用户请求后生成场景实例的标识,所述场景实例所属的场景对应于触发所述用户请求的用户操作;

本申请中,应用的一个场景对应于特定的用户操作。例如,“加入购物车”是一个场景,可以对应于用户点击界面上“加入购物车”图标的操作。“查询历史性能数据”也是一个场景,可以对应于用户点击在界面上相应的查询按钮的操作。对于一次实际的用户操作而言,应用系统的前端接收到用户请求后,将开始一个场景实例(usecase),即对该用户请求的处理过程,包括与后端服务的一次或多次交互。一个场景实例所属的场景对应于触发所述用户请求的用户操作。例如,前端每次接收到用户点击“加入购物车”图标而触发的用户请求后,开始的场景实例所属的场景即“加入购物车”。

步骤120,所述前端在所述场景实例的处理过程中,在向所述应用系统的后端服务发送的请求消息中携带所述场景实例的标识。

一个场景实例包括一次或多次前端与后端服务的交互,每一次交互也可以视为前端对后端服务的一次调用,包括前端向后端服务发送请求到收到后端服务响应的整个过程,后端服务每次收到前端发送的请求消息后,会触发开始一个事务,因而一个场景实例可以包含一个或多个事务。

本实施例中,应用系统的前端在一个场景实例的处理过程(即对用户请求的处理过程)中,在向后端服务发送的请求消息中携带所述场景实例的标识。这使得一个场景实例包含多个事务时,所述多个事务可以根据场景实例的标识而关联起来,从而实现了对场景实例的有效跟踪。

本实施例中,为了实现按场景的分类统计,例如,展示“加入购物车”这一场景的频度,成功率、耗时等。前端在场景实例的处理过程中,在第一次向后端服务发送的请求消息中,还携带所述场景实例所属场景的标识。后续向后端服务发送的请求消息可以携带所述场景的标识也可以不携带。

本实施例中,为了统计场景实例的开始时间,应用系统的前端在场景实例的处理过程中,至少在第一次向后端服务发送的请求消息中携带所述场景实例的开始时间信息。

本实施例中,为了统计场景实例的结束时间,应用系统的前端在场景实例处理完成后(即对用户请求处理完成后),向所述应用系统的后端服务发送场景实例结束的通知消息,在所述通知消息中携带所述场景实例的标识及结束时间信息。监控系统从所述通知消息中采集到所述场景实例的标识及结束时间信息后,就可以获知所述场景实例的结束时间而将其加入到所述场景实例的统计信息中去。

在本实施例的一个示例中,应用系统的前端在向后端服务发起第一次调用时,在发送的http消息头部中携带场景实例的标识、场景实例所属场景的标识和场景实例的开始时间信息。后续每次向后端服务发起调用时,均在发送的http消息头部携带所述场景实例的标识。

上述除场景实例的标识之外的其他信息是可选的。

本实施例还提供了一种跟踪软件行为的系统,如图4所示,包括:

接收模块10,用于在收到用户请求后生成场景实例的标识,所述场景实例所属的场景对应于触发所述用户请求的用户操作;

处理模块20,用于在所述场景实例的处理过程中,在向所述应用系统的后端服务发送的请求消息中携带所述场景实例的标识。

本实施例中,所述处理模块在所述场景实例的处理过程中,在第一次向后端服务发送的请求消息中,还携带所述场景实例所属场景的标识和/或所述场景实例的开始时间信息。

本实施例中,所述处理模块在所述场景实例处理完成后,还用于向所述应用系统的后端服务发送场景实例结束的通知消息,携带所述场景实例的标识及结束时间信息。

本实施例还提供了一种应用系统的前端设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现以下处理:

收到用户请求后生成场景实例的标识,所述场景实例所属的场景对应于触发所述用户请求的用户操作;

在所述场景实例的处理过程中,在向所述应用系统的后端服务发送的请求消息中携带所述场景实例的标识。

本实施例中所述处理器执行所述计算机程序时可以实现本实施例方法的任何处理,这里不再一一赘述。

本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现以下处理:

收到用户请求后生成场景实例的标识,所述场景实例所属的场景对应于触发所述用户请求的用户操作;

在所述场景实例的处理过程中,在向所述应用系统的后端服务发送的请求消息中携带所述场景实例的标识。

本实施例中所述计算机程序被处理器执行时可以实现本实施例方法的任何处理,这里不再一一赘述。

实施例二

本实施例提供一种监控软件行为的方法、监控系统及存储介质。

本实施例的监控系统对后端服务监控时,获取从前端传递来的场景实例的标识,注入到事务的监控信息中。从而实现基于场景实例的统计。本实施例的前端采用了实施例一的方法跟踪软件行为。

如图5所示,本实施例监控软件行为的方法包括:

步骤210,监控系统在应用系统的后端服务收到前端发送的请求消息后,采集所述请求消息触发的事务的信息,所述事务的信息包括从所述请求消息中获取的场景实例的标识;

如实施例一所描述的,在一个场景实例的处理过程中,前端每次发起对后端服务的调用时,都会将场景实例的标识携带在相应的请求消息中。因而监控系统可以从请求消息中获取所述场景实例的标识,作为采集的事务的信息的一部分。

本实施例中,前端在场景实例的处理过程中,至少在第一次向后端服务发送的请求消息中,携带所述场景实例所属场景的标识和/或所述场景实例的开始时间信息。因而监控系统采集的事务的信息还包括从所述请求消息中获取的所述场景实例所属场景的标识和/或所述场景实例的开始时间信息。

本实施例中,前端在所述场景实例处理完成后,向所述应用系统的后端服务发送场景实例结束的通知消息,携带所述场景实例的标识及结束时间信息。监控系统在所述后端服务收到前端发送的通知消息后,还可以从所述通知消息中采集到所述场景实例的标识和结束时间信息。

上述场景实例的标识、场景实例所属场景的标识、场景实例的开始时间信息和结束时间信息的采集具体可以由后端服务的埋点(或者说监控代理)来完成,采集的这些信息可以和采集的事务的其他信息一起传输到监控服务器进行统计、分析。

步骤220,所述监控系统基于采集的信息进行信息统计时,根据所述场景实例的标识得到所述场景实例及其包含的事务的统计信息。

本实施例中,监控系统采集的一个场景实例包含的每一个事务的信息中均会包含所述场景实例的标识,因而根据场景实例的标识即可确定其包含的事务,从而实现基于场景实例的统计。因为场景实例包含的第一个事务的信息还包括场景实例所属场景的标识,因而根据场景的标识将该场景下的所有场景实例关联起来,实现对场景的分类统计。例如,可以根据“加入购物车”这一场景的标识,对该场景下的所有场景实例进行分析,统计该场景的频度、成功率、耗时等参数。

本实施例中,采集的场景实例的相关信息还包括场景实例的开始时间信息和结束时间信息,因而场景实例的统计信息包括场景实例的开始时间信息和结束时间信息。

根据本实施例方法,用户可以得到应用系统所有按照场景的统计信息报告,一个示例如下表所示。

表1-1

表1-2

表1-3

表1-1对场景进行了分类统计,展示出了每一种场景的调用频度、耗时、成功率等信息。选中其中的一种场景,假定选中场景一,可以下钻查看该场景下所有场景实例的统计信息,如表1-2所示,对表1-2中选择关心的场景实例,假定选择场景实例1,可以继续下钻查看该场景实例下事务的信息,如表1-3所示。这就将场景到场景实例,到组成场景实例的事务有机组合起来,用户可以进行从上到下的分析软件的行为,如性能、时延、频度等。

本实施例还提供了一种监控系统,包括在应用系统的后端服务埋点实现的监控代理及监控服务器,可参见图1。其中:

所述监控代理用于在所述后端服务收到前端发送的请求消息后,采集所述请求消息触发的事务的信息并将采集的信息传输到所述监控服务器,所述事务的信息包括从所述请求消息中获取的场景实例的标识;

所述监控服务器基于所述监控代理采集的信息进行信息统计时,根据所述场景实例的标识得到所述场景实例及其包含的事务的统计信息。

本实施例中,所述监控代理采集的所述事务的信息还可以包括从所述请求消息中获取的所述场景实例所属场景的标识;所述监控服务器基于所述监控代理采集的信息进行信息统计时,可以根据所述场景的标识进行场景的分类统计。

本实施例中,所述监控代理采集的所述事务的信息还可以包括从所述请求消息中获取的所述场景实例的开始时间信息;

所述监控代理还用于在所述后端服务收到前端发送的场景实例结束的通知消息后,从所述通知消息中采集到所述场景实例的标识和结束时间信息;

所述监控服务器根据所述场景实例的标识得到的所述场景实例的统计信息中,包括所述场景实例的开始时间信息和结束时间信息。

本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现以下处理:

对应用系统的后端服务进行埋点监控,在所述后端服务收到前端发送的请求消息后,采集所述请求消息触发的事务的信息,所述事务的信息包括从所述请求消息中获取的场景实例的标识;

基于采集的信息进行信息统计时,根据所述场景实例的标识得到所述场景实例及其包含的事务的统计信息。

本实施例中,所述计算机程序被处理器执行时可以实现本实施例方法的任何处理,这里不再一一赘述。

本实施例把应用系统的事务按照使用场景、场景实例进行聚合分类,使得监控系统展示的内容跟用户使用应用系统的体验匹配,方便用户对应用系统的运维和分析。例如,应用系统的运维人员可以方便地获知用户最常用的使用场景,感知到用户行为,从而为后续系统研发资源安排提供重要参考,重点投入到用户最常用的场景上去;运维人员也可以方便地获知响应最慢的场景,为系统优化提供重要参考。

本发明的上述实施例解决了一般应用监控系统只能查看后端实现层面的事务信息的问题。通过注入一个唯一的场景标识,将多个关联的事务组合起来形成一个场景实例,这个场景实例所属的场景跟应用软件用户在界面上的操作对应,通过这样的设计,应用软件的监控系统可以按照场景将软件前后台交互的操作关联起来,按照场景、场景实例分析应用软件的行为。

实施例三

本实施例以一个性能历史数据查询系统为例,说明应用系统前端跟踪软件行为的过程以及监控系统监控软件行为的过程。

本实施例性能历史数据查询系统的架构可参见图2。用户发起一次性能历史数据查询后,相应的交互过程如图6所示,包括:

步骤一,用户从界面发起一次历史性能数据查询的请求;

用户可以通过点击前端界面(如浏览器页面)上的历史性能数据查询的图标来发起一次历史性能查询的请求,该操作对应的场景为“历史性能数据查询”,标记为pmquery。

步骤二,前端收到历史性能数据查询的用户请求后,开始一个场景实例,生成一个场景实例的标识usecaseid(该标识的取值如为pmqueryxxx1)来唯一标识该场景实例;

步骤三,前端向负责处理历史性能数据查询的后端服务pmquery发起调用,发送获取概要信息的请求消息,在消息的头部携带usecaseid、场景实例所属场景的标识usecaseclass及场景实例的开始时间starttime。此示例中的usecaseclass即为pmquery。

可以将收到历史性能数据查询的用户请求的时间,或者向后端服务pmquery发起调用的时间作为该场景实例的开始时间starttime。

步骤四,后端服务pmquery收到获取概要信息的请求消息后,开始一个获取概要信息的事务getcontent,在该事务的处理过程中,后端服务pmquery将调用后端服务db(后端数据库服务),事务的处理结束后,后端服务pmquery向前端返回响应消息;

步骤五,前端向后端服务pmquery再次发起调用,发送获取首页数据的请求消息,在消息的头部携带usecaseid和usecaseclass;

步骤六,后端服务pmquery收到获取首页数据的请求消息后,开始一个获取首页数据的事务getpage,事务的处理结束后,后端服务pmquery向前端返回响应消息;

步骤七,前端收到响应消息后,进行页面渲染以向用户展示历史性能数据查询的结果,渲染界面结束后,向后端服务pmquery发送场景实例结束的通知消息,携带usecaseid及该场景实例的结束时间endtime。

监控系统通过在后端服务进行埋点监控,可以采集到获取概要信息的事务getcontent及获取首页数据的事务getpage的信息,并且采集到的这两个事务的信息中均包括usecaseid和usecaseclass,而getcontent的信息中还包括starttime、endtime。因此,通过usecaseid就将获取概要信息和获取首页数据这两个事务关联起来了。监控系统基于采集的信息完成数据加工处理和持久化等处理,用户就可以分析性能查询这个场景的全流程性能数据,包括从开始发起历史性能数据查询到界面上显示查询结果这整个过程。

本实施例监控得到的一个示例性的场景分析报告下表所示。

表2-1

表2-2

表2-3

表2-1是用户操作对应的所有场景的报告,包括历史性能数据查询、配置信息获取、日报表生成等,可以清晰看到每个场景的频度、成功率、耗时等信息。然后,选择某一个具体的场景,如历史性能数据查询,可以看到这个场景的每一个场景实例的分析报告,如表2-2所示,包括每个场景实例的总耗时、事务的耗时信息等。最后,可以选择最关心的场景实例查看这个场景实例包含的事务的详细信息,见表2-3。

实施例四

本实施例涉及对异步上报的监控。

如图7所示,本实施例前端收到用户请求后开始一个场景实例usecase,生成usecaseid,前端在调用后端服务a时发送的请求消息中携带usecaseid、usecase所属场景的标识usecaseclass,及usecase开始时间starttime。后端服务a收到该请求消息开始一个事务,事务结果后向前端返回响应消息。后续的数据由服务a通过异步消息上报到前端(portal)。前端可以根据需要决定usecase的结束,结束后向服务a发送场景实例结束的通知消息,并携带usecaseid和场景实例的结束时间endtime。

同前述实施例类似的,通过监控系统的信息采集(也可以称为数据采集)和统计,用户就可以分析这个usecase流程的整个步骤。

实施例五

本实施例涉及对电子商务系统的监控。一个典型的电子商务系统可能包含如下几个服务(子系统):产品服务、购物服务、支付服务、客服服务、评论服务等。

本实施例以用户在界面上发起加入购物车操作对应的场景为例,从系统层面上看,该场景的场景实例前端需要和后端的购物服务、产品服务交互。如图8所示,包括:

步骤一,前端接收到加入购物车的用户请求后,开始一个名称为“加入购物车”的场景实例,生成场景实例的标识usecaseid;

步骤二,前端调用产品服务,在发送的请求消息中携带该场景实例的标识usecaseid、场景的标识usecaseclass和开始时间starttime,产品服务收到该请求消息后开始一个事务的处理,结束后向前端返回响应消息。

步骤三,前端对产品服务的调用结束后,发起对购物服务的调用,在发送的请求消息中携带usecaseid。购物服务收到该请求消息后开始一个事务的处理,结束后向前端返回响应消息。

可见,通过usecaseid就可以将上述两个调用过程关联起来了。监控系统采集包括场景实例相关信息的事务(transaction)的信息,完成数据加工处理和持久化等。运维用户就可以分析性能查询这个场景的成功率、操作时延、频度等信息。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

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