发明内容
基于此,有必要针对上述技术问题,提供一种在客户端发生异常时能够有效提高异常定位效率的客户端异常定位方法、装置、计算机设备和存储介质。
一种客户端异常定位方法,包括:
当在终端运行的客户端向服务端发送请求时,拦截所述请求,记录所述请求对应的请求标识;将拦截到的请求转发至服务端,以使得服务端根据所述请求返回对应的响应数据;
对服务端返回的响应数据进行拦截,将拦截到的响应数据记录至响应文件;
将拦截到的响应数据转发至客户端;
当客户端出现异常时,根据请求标识在服务端的接口日志中抓取日志内容,利用抓取到的日志内容生成日志文件;
利用所述响应文件和日志文件对客户端的异常进行定位。
在其中一个实施例中,所述利用所述响应文件和日志文件对客户端的异常进行定位的步骤,包括:
获取响应文件中的返回码;
若返回码与预设值相同,则记录异常发生在客户端;
若返回码与预设值不同,则记录异常发生在服务端;所述服务端包括本地服务端和第三方服务端;
当异常发生在服务端时,利用日志文件识别异常是否发生在本地服务端,若是,则记录异常发生在本地服务端,否则记录异常发生在第三方服务端。
在其中一个实施例中,所述利用日志文件识别异常是否发生在本地服务端的步骤,包括:
将与预设值不同的返回码标记为异常返回码;
在所述日志文件中查询是否异常返回码对应的来源是否为本地服务端;
若是,则记录异常发生在本地服务端。
在其中一个实施例中,所述日志文件包括本地日志文件,所述利用日志文件识别异常是否发生在本地服务端的步骤,包括:
将与预设值不同的返回码标记为异常返回码;
获取本地日志文件,在所述本地日志文件中查询是否存在异常返回码;
若存在,则记录异常发生在本地服务端。
在其中一个实施例中,所述方法还包括:
当客户端的异常发生在本地服务端时,根据所述日志文件获取本地服务端多个程序模块之间的数据流向和业务流向;
根据所述数据流向和业务流向对异常部位进行定位。
在其中一个实施例中,所述根据所述日志文件获取本地服务端多个程序模块之间的数据流向和业务流向的步骤,包括:
根据日志文件获取多个程序模块对应的日志结构;
对多个模块对应的日志结构进行解析,得到本地服务端多个程序模块之间的数据流向和业务流向。
一种客户端异常定位装置,所述装置包括:
代理程序,用于当在终端运行的客户端向服务端发送请求时,拦截所述请求,记录所述请求对应的请求标识;将拦截到的请求转发至服务端,以使得服务端根据所述请求返回对应的响应数据;对服务端返回的响应数据进行拦截,将拦截到的响应数据记录至响应文件;将拦截到的响应数据转发至客户端;
定位服务,用于当客户端出现异常时,根据请求标识在服务端的接口日志中抓取日志内容,利用抓取到的日志内容生成日志文件;利用所述响应文件和日志文件对客户端的异常进行定位。
在其中一个实施例中,所述定位服务还用于获取响应文件中的返回码;若返回码与预设值相同,则记录异常发生在客户端;若返回码与预设值不同,则记录异常发生在服务端;所述服务端包括本地服务端和第三方服务端;当异常发生在服务端时,利用日志文件识别异常是否发生在本地服务端,若是,则记录异常发生在本地服务端,否则记录异常发生在第三方服务端。
一种计算机设备,包括存储器及处理器,所述存储器中储存有计算机可读指令,所述指令被所述处理器执行时,使得所述处理器执行上述方法的步骤。
一个或多个存储有计算机可读指令的计算机可读非易失性存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述方法的步骤。
上述客户端异常定位方法、装置、计算机设备和存储介质,通过对请求进行拦截,可以将拦截到的请求实时记录至请求文件。通过对服务端返回的响应数据,可以将拦截到的响应数据实时记录至响应文件。在整个过程中,不需要在客户端发生异常时再去抓取响应数据。而且在发生异常时,还可以通过已记录的请求标识来抓取服务端的接口日志的内容,生成对应的日志文件,从而可以利用响应数据和日志文件快速定位异常部位。由此在客户端发生异常时,能够有效提高异常定位效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例中所提供的客户端异常定位方法可以应用于如图1所示的应用场景中。终端102通过网络与中间服务器104进行连接。中间服务器104通过网络与本地服务器106进行连接。中间服务器104通过网络与第三方服务器108进行连接。终端102上运行了客户端。本地服务器106上运行了本地服务端。第三方服务器上运行了第三方服务端。本地服务端和第三方服务器可以统称为服务端。
当客户端向服务端发送请求时,中间服务器104拦截请求,将请求记录至请求文件。请求文件中包括请求对应的请求标识和请求包。记录完成之后,中间服务器104将请求转发至本地服务端或第三方服务端。本地服务端或第三方服务端根据该请求返回对应的响应数据,中间服务器104响应数据进行拦截,将拦截到的响应数据记录至响应文件。在完成记录之后,中间服务器104将拦截到的响应数据转发至客户端。
当客户端出现异常时,中间服务器104根据请求标识在服务端的接口日志中抓取日志内容,利用抓取到的日志内容生成对应的日志文件。中间服务器104利用所述响应文件和日志文件对客户端的异常进行定位,由此能够有效提高异常定位效率。
在一个实施例中,中间服务器的框图如图2所示。该中间服务器包括通过系统总线连接的处理器、存储器和网络接口。其中,该中间服务器的处理器用于提供计算和控制能力。该中间服务器的存储器包括非易失性存储介质、内存储器。该中间服务器的非易失性存储介质存储有操作系统、数据库和计算机可读指令。数据库中存储了请求文件、响应文件和日志文件等。该中间服务器的内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。该中间服务器的网络接口用于与客户端、本地服务端以及第三方服务端等通过网络连接通信。该计算机可读指令被处理器执行时以实现一种客户端异常定位方法。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务端的限定,具体的服务端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,如图3所示,提供了一种客户端异常定位方法,以该方法应用于中间服务器为例进行说明,具体包括以下步骤:
步骤302,当在终端运行的客户端向服务端发送请求时,拦截请求,记录请求对应的请求标识。。
终端上运行了客户端,客户端可以向为其对应的服务端发送请求,以使得客户端能够向用户提供相应的功能,比如,获取某个页面,或者进行某项查询等。中间服务器上运行了代理程序,当客户端向其对应的服务端发送请求时,中间服务器通过代理程序将客户端发送的请求进行拦截,并且将拦截到的请求记录至请求文件中。请求文件中记录了每个请求对应的请求标识和请求包。
步骤304,将拦截到的请求转发至服务端,以使得服务端根据请求返回对应的响应数据。
步骤306,对服务端返回的响应数据进行拦截,将拦截到的响应数据记录至响应文件。
步骤308,将拦截到的响应数据转发至客户端。
代理程序将拦截到的请求记录至请求文件之后,将拦截到的请求转发至对应的服务端。客户端对应的服务端包括本地服务端和第三方服务端。
在其中一个实施例中,请求中还携带了目标服务端,目标服务端可以是本地服务端,也可以是第三方服务端。代理程序根据请求中携带的目标服务端,将请求转发至本地服务端或者第三方服务端。
在其中一个实施例中,本地服务端可以根据请求包识别是否为其自身需要响应的请求,若是,则本地服务端根据该请求返回响应数据。否则,本地服务端将请求转发至第三方服务端,以使得第三方服务端根据该请求返回响应数据。
代理程序将本地服务端或者第三方服务端返回的响应数据进行拦截,将拦截到的响应数据记录至响应文件。在完成记录之后,代理程序将拦截到的响应数据转发至客户端。以使得客户端能够获取到与请求对应的响应数据,从而向用户提供相应的功能。
步骤310,当客户端出现异常时,根据请求标识在服务端的接口日志中抓取日志内容,利用抓取到的日志内容生成日志文件。
步骤312,利用响应文件和日志文件对客户端的异常进行定位。
当客户端在运行中出现异常时,中间服务器启动定位服务,通过定位服务抓取服务端的接口日志的日志内容。具体的,定位服务获取本地服务端的接口日志,以及第三方服务端的接口日志,根据请求标识在本地服务端的接口日志和/或第三方服务端的接口日志中抓取相应的日志内容,利用抓取到的日志内容生成对应的日志文件。定位服务利用响应文件和日志文件对客户端的异常进行定位。
在其中一个实施例中,利用响应文件和日志文件对客户端的异常进行定位的步骤,包括:获取响应文件中的返回码;若返回码与预设值相同,则记录异常发生在客户端;若返回码与预设值不同,则记录异常发生在服务端;服务端包括本地服务端和第三方服务端;当异常发生在服务端时,利用日志文件识别异常是否发生在本地服务端,若是,则记录异常发生在本地服务端,否则记录异常发生在第三方服务端。
响应数据中携带了返回码。在对异常进行定位时,定位服务获取响应文件,提取响应文件中的返回码。定位服务判断返回码是否为预设值,若是,表示返回码正常。返回码正常表示服务端这一侧未出现异常,定位服务可以确定客户端的异常发生在客户端这一侧。
如果返回码与预设值不同,表示返回码异常,可以确定是服务端这一侧出现了异常。为了进一步确认异常是发生在本地服务端还是第三方服务端,定位应用还可以获取多个请求对应的日志文件。利用日志文件来识别异常是发生在本地服务端还是第三方服务端。
如果识别出异常发生在本地服务端,还可以通过日志文件对异常发生的模块进行定位,以此能够对异常部位进行精准的定位。如果识别出异常发生在第三方服务端,则定位服务生成异常通知,将异常通知发生至第三方服务端,以使得第三方能够对异常及时进行修复。
本实施例中,通过对请求进行拦截,可以将拦截到的请求实时记录至请求文件。通过对服务端返回的响应数据,可以将拦截到的响应数据实时记录至响应文件。在整个过程中,不需要在客户端发生异常时再去抓取响应数据。而且在发生异常时,还可以通过已记录的请求标识来抓取服务端的接口日志的内容,生成对应的日志文件,从而可以利用响应数据和日志文件快速定位异常部位。由此在客户端发生异常时,能够有效提高异常定位效率。
在一个实施例中,利用日志文件识别异常是否发生在本地服务端的步骤,包括:将与预设值不同的返回码标记为异常返回码;在日志文件中查询是否异常返回码对应的来源是否为本地服务端;若是,则记录异常发生在本地服务端。
本实施例中,当客户端在运行中发生异常时,中间服务器通过定位服务在服务端的接口日志中抓取相应的日志内容,利用抓取到的日志内容生成多个请求对应的日志文件。从不同服务端的接口日志中抓取到的日志内容可以生成一个日志文件,日志文件中可以对日志内容的来源进行标记。
日志文件中记录了请求标识、请求包和对应的响应数据。其中,响应数据中包括返回码。如果返回码与预设值不同,定位服务可以将该返回码标记为异常返回码。定位服务在日志文件中查询异常返回码对应的来源,若其对应的来源为本地服务端,则表示异常发生在本地服务端。若异常返回码对应的来源为第三方服务端,则表示异常发生在第三方服务端。由此在客户端发生异常时,能够快速识别出异常所在的服务端。
进一步的,可以存在多个异常返回码。如果部分异常返回码对应的来源为本地服务端,另一部分异常返回码对应的来源为第三方服务端,则表示本地服务端和第三方服务端均发生了异常。
在一个实施例中,日志文件包括本地日志文件和第三方日志文件,利用日志文件识别异常是否发生在本地服务端的步骤,包括:将与预设值不同的返回码标记为异常返回码;获取本地日志文件,在本地日志文件中查询是否存在异常返回码;若存在,则记录异常发生在本地服务端。
本实施例中,当客户端在运行中发生异常时,中间服务器通过定位服务在服务端的接口日志中抓取相应的日志内容,利用抓取到的日志内容生成多个请求对应的日志文件。可以将从不同服务端的接口日志中抓取到的日志内容生成不同的日志文件。其中,利用从本地服务端的接口日志中抓取到的日志内容生成的日志文件可以称为本地日志文件。利用从第三方服务端的接口日志中抓取到的日志内容生成的日志文件可以称为第三方日志文件。
日志文件中记录了请求标识、请求包和对应的响应数据。其中,响应数据中包括返回码。如果返回码与预设值不同,定位服务可以将该返回码标记为异常返回码。定位服务可以在本地日志文件中查询是否存在异常返回码,若存在,则表示异常发生在本地服务端。若不存在,定位服务可以在第三方日志文件中查询是否存在异常返回码,若存在,则表示异常发生在第三方服务端。由此在客户端发生异常时,能够快速识别出异常所在的服务端。
进一步的,可以存在多个异常返回码。如果定位服务可以在本地日志文件中查询到部分异常返回码,在第三方日志文件中查询到另一部分异常返回码,则表示本地服务端和第三方服务端均发生了异常。
在一个实施例中,该方法还包括:当客户端的异常发生在本地服务端时,根据日志文件获取本地服务端多个程序模块之间的数据流向和业务流向;根据数据流向和业务流向对异常部位进行定位。
本地服务端上运行了多个程序模块,以此支持本地服务端的工作。程序模块具有对应的接口。本地服务端通过不同的接口可以调用不同的程序模块。当客户端在运行中出现的异常存在于本地服务端时,定位服务可以利用日志文件对本地服务端中多个程序模块所对应的数据流向和业务流向进行分析,由此可以精确定位异常所在的程序模块。
在其中一个实施例中,根据日志文件获取本地服务端多个程序模块之间的数据流向和业务流向的步骤,包括:根据日志文件获取多个程序模块对应的日志结构;对多个模块对应的日志结构进行解析,得到本地服务端多个程序模块之间的数据流向和业务流向。
接口日志中可以包括每个程序模块的输入和输出。输入可以包括与请求包对应的传递参数,输出可以包括与请求包对应的响应数据。定位服务可以获取日志文件,日志文件中包括了与客户端进行通信的多个程序模块的日志内容。定位服务通过对程序模块的日志结构进行解析,提取每个程序模块的输入和输出,根据程序模块之间的输入和输出,得到多个程序模块之间的数据流向。
程序模块之间可以存在调用关系。例如,程序模块的输入用in表示,输出用out表示。比如A程序模块调用了B程序模块,那么日志文件中会按序输出AinBinBoutAout这种闭包格式的日志结构。若A程序模块与B程序模块不存在调用关系,则输出AinAoutBinBout的日志结构。定位服务通过对程序模块的日志结构进行解析,得到程序模块之间的调用关系。根据程序模块之间的调用关系可以得到多个程序模块之间的业务流向。
当本地服务端的接口出现异常时,定位服务可以根据程序模块之间的数据流向和业务流向,将异常定位在具体的某一个程序模块。由此有效提高了异常定位的准确性。
如图4所示,本申请还提供了一种客户端异常定位装置,该装置的内部结构可对应于如图2所示的结构,下述每个组成部分可全部或部分通过软件、硬件或其组合来实现。在一个实施例中,客户端异常定位装置包括:代理程序402和定位服务404,其中:
代理程序402,用于当在终端运行的客户端向服务端发送请求时,拦截请求,记录请求对应的请求标识;将拦截到的请求转发至服务端,以使得服务端根据请求返回对应的响应数据;对服务端返回的响应数据进行拦截,将拦截到的响应数据记录至响应文件;将拦截到的响应数据转发至客户端。
定位服务404,用于当客户端出现异常时,根据请求标识在服务端的接口日志中抓取日志内容,利用抓取到的日志内容生成日志文件;利用响应文件和日志文件对客户端的异常进行定位。
在一个实施例中,定位服务402还用于获取响应文件中的返回码;若返回码与预设值相同,则记录异常发生在客户端;若返回码与预设值不同,则记录异常发生在服务端;服务端包括本地服务端和第三方服务端;当异常发生在服务端时,利用日志文件识别异常是否发生在本地服务端,若是,则记录异常发生在本地服务端,否则记录异常发生在第三方服务端。
在一个实施例中,定位服务402还用于将与预设值不同的返回码标记为异常返回码;在日志文件中查询是否异常返回码对应的来源是否为本地服务端;若是,则记录异常发生在本地服务端。
在一个实施例中,定位服务402还用于将与预设值不同的返回码标记为异常返回码;获取本地日志文件,在本地日志文件中查询是否存在异常返回码;若存在,则记录异常发生在本地服务端。
在一个实施例中,定位服务402还用于当客户端的异常发生在本地服务端时,根据日志文件获取本地服务端多个程序模块之间的数据流向和业务流向;根据数据流向和业务流向对异常部位进行定位。
在一个实施例中,定位服务402还用于根据日志文件获取多个程序模块对应的日志结构;对多个模块对应的日志结构进行解析,得到本地服务端多个程序模块之间的数据流向和业务流向。
一种计算机设备,包括存储器及处理器,存储器中储存有计算机可读指令,指令被处理器执行时,使得处理器执行以下步骤:
当在终端运行的客户端向服务端发送请求时,拦截请求,记录请求对应的请求标识;
将拦截到的请求转发至服务端,以使得服务端根据请求返回对应的响应数据;
对服务端返回的响应数据进行拦截,将拦截到的响应数据记录至响应文件;
将拦截到的响应数据转发至客户端;
当客户端出现异常时,根据请求标识在服务端的接口日志中抓取日志内容,利用抓取到的日志内容生成多个请求对应的日志文件;
利用响应文件和日志文件对客户端的异常进行定位。
在一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
获取响应文件中的返回码;
若返回码与预设值相同,则记录异常发生在客户端;
若返回码与预设值不同,则记录异常发生在服务端;服务端包括本地服务端和第三方服务端;
当异常发生在服务端时,利用日志文件识别异常是否发生在本地服务端,若是,则记录异常发生在本地服务端,否则记录异常发生在第三方服务端。
在一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
将与预设值不同的返回码标记为异常返回码;
在日志文件中查询是否异常返回码对应的来源是否为本地服务端;
若是,则记录异常发生在本地服务端。
在一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
将与预设值不同的返回码标记为异常返回码;
获取本地日志文件,在本地日志文件中查询是否存在异常返回码;
若存在,则记录异常发生在本地服务端。
在一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
当客户端的异常发生在本地服务端时,根据日志文件获取本地服务端多个程序模块之间的数据流向和业务流向;
根据数据流向和业务流向对异常部位进行定位。
在一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
根据日志文件获取多个程序模块对应的日志结构;
对多个模块对应的日志结构进行解析,得到本地服务端多个程序模块之间的数据流向和业务流向。
在一个实施例中,提供了一个或多个存储有计算机可读指令的计算机可读非易失性存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行以下步骤:
当在终端运行的客户端向服务端发送请求时,拦截请求,记录请求对应的请求标识;
将拦截到的请求转发至服务端,以使得服务端根据请求返回对应的响应数据;
对服务端返回的响应数据进行拦截,将拦截到的响应数据记录至响应文件;
将拦截到的响应数据转发至客户端;
当客户端出现异常时,根据请求标识在服务端的接口日志中抓取日志内容,利用抓取到的日志内容生成多个请求对应的日志文件;
利用响应文件和日志文件对客户端的异常进行定位。
在一个实施例中,计算机可读指令被处理器执行时还执行以下步骤:
获取响应文件中的返回码;
若返回码与预设值相同,则记录异常发生在客户端;
若返回码与预设值不同,则记录异常发生在服务端;服务端包括本地服务端和第三方服务端;
当异常发生在服务端时,利用日志文件识别异常是否发生在本地服务端,若是,则记录异常发生在本地服务端,否则记录异常发生在第三方服务端。
在一个实施例中,计算机可读指令被处理器执行时还执行以下步骤:
将与预设值不同的返回码标记为异常返回码;
在日志文件中查询是否异常返回码对应的来源是否为本地服务端;
若是,则记录异常发生在本地服务端。
在一个实施例中,计算机可读指令被处理器执行时还执行以下步骤:
将与预设值不同的返回码标记为异常返回码;
获取本地日志文件,在本地日志文件中查询是否存在异常返回码;
若存在,则记录异常发生在本地服务端。
在一个实施例中,计算机可读指令被处理器执行时还执行以下步骤:
当客户端的异常发生在本地服务端时,根据日志文件获取本地服务端多个程序模块之间的数据流向和业务流向;
根据数据流向和业务流向对异常部位进行定位。
在一个实施例中,计算机可读指令被处理器执行时还执行以下步骤:
根据日志文件获取多个程序模块对应的日志结构;
对多个模块对应的日志结构进行解析,得到本地服务端多个程序模块之间的数据流向和业务流向。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,所述的计算机可读指令可存储于一非易失性计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。