1.本技术涉及计算机领域,特别是涉及一种故障定位方法、装置、计算机设备和存储介质。
背景技术:
2.为了能够定位应用中出现了什么故障,通常的做法是对用户关键操作进行埋点上报,比如用户每次点击到某个按钮就实时发送请求对此次点击操作进行上报。然而,目前这种做法会导致每一个操作记录都是独立存在的,无法关联到其前置操作和后续操作,不利于后台人员定位故障。并且,频繁发送请求会对客户端性能产生影响,而在网络环境较差的环境下,还可能发送失败漏报此次操作。
技术实现要素:
3.本技术针对上述不足或缺点,提供了一种故障定位方法、装置、计算机设备和存储介质,本技术实施例能够在应用出现故障时,向后台反馈用户的连续操作记录,便于后台人员模拟重现问题,从而更快定位出故障,并且无法频繁发送网络请求,对系统性能影响较小,不容易出现漏报的情况。
4.本技术根据第一方面提供了一种故障定位方法,在一个实施例中,该方法包括:
5.在目标应用正常运行时,获取该目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在该目标应用所在终端本地;
6.在该目标应用出现故障时,生成操作记录导出页面,引导用户通过该操作记录导出页面将当前保存在该终端本地的操作数据导出为指定格式的文件,并上传至后台供后台人员进行故障定位。
7.在一个实施例中,该指定操作包括以下的一项或多项:进入页面、离开页面、点击页面中的指定元素、发起网络请求和页面报错;
8.在获取该目标应用上发生指定操作时产生的操作数据时,执行以下一项或多项操作:
9.通过监听浏览器onhashchange事件,获取页面地址哈希变化;
10.通过重写浏览器history对象的相关方法获取页面地址路径变化;
11.通过监听浏览器window对象上的点击事件,获取页面上的点击行为信息;
12.通过监听浏览器window对象上的ajaxloadstart事件和ajaxloadend事件,获取页面上进行的网络请求的信息,该网络请求的信息包括请求开始和结束时间、请求负载和请求返回数据;
13.通过监听浏览器window对象上的error事件和unhandledrejection事件,获取页面上的报错信息;
14.通过重写浏览器console对象上的打印方法,获取页面控制台上的打印信息。
15.在一个实施例中,该获取该目标应用上发生指定操作时产生的操作数据之前还包
括:
16.检测操作数据获取开关是否打开;
17.该获取该目标应用上发生指定操作时产生的操作数据,包括:
18.响应于该操作数据获取开关打开,获取该目标应用上发生指定操作时产生的操作数据。
19.在一个实施例中,该操作数据获取开关包括本地开关和远程开关;
20.该检测操作数据获取开关是否打开,包括:
21.在该本地开关关闭或该远程开关关闭时,判定操作数据获取开关未打开,结束处理流程;
22.在该本地开关和该远程开关均打开时,判定操作数据获取开关打开。
23.在一个实施例中,该方法还包括:
24.响应于该操作数据获取开关打开,根据该操作数据获取开关对应的配置信息确定出该指定操作。
25.在一个实施例中,该将获取的操作数据保存在该目标应用所在终端本地,包括:
26.将获取的操作数据异步保存在该目标应用所在终端本地。
27.在一个实施例中,该生成操作记录导出页面,包括:
28.为系统动态注入路由,使该系统生成操作记录导出页面。
29.本技术根据第二方面提供了一种故障定位装置,在一个实施例中,该装置包括:
30.操作数据获取模块,用于在目标应用正常运行时,获取该目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在该目标应用所在终端本地;
31.操作数据导出模块,用于在该目标应用出现故障时,生成操作记录导出页面,引导用户通过该操作记录导出页面将当前保存在该终端本地的操作数据导出为指定格式的文件,并上传至后台供后台人员进行故障定位。
32.本技术根据第三方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一方法的实施例的步骤。
33.本技术根据第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法的实施例的步骤。
34.在本技术实施例中,在目标应用正常运行时,获取该目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在该目标应用所在终端本地;在该目标应用出现故障时,生成操作记录导出页面,引导用户通过该操作记录导出页面将当前保存在该终端本地的操作数据导出为指定格式的文件,并上传至后台供后台人员进行故障定位。本技术实施例能够在应用出现故障时,向后台反馈用户的连续操作记录,便于后台人员模拟重现问题,从而更快定位出故障。此外本实施例会先将获取的相关操作数据保存在终端本地,而不频繁发送网络请求,因此对系统性能影响较小,而由于不需要频繁发送网络请求,可以有效减少出现漏报的情况。
附图说明
35.图1为一个实施例中一种故障定位方法的应用环境图;
36.图2为一个实施例中一种故障定位方法的流程示意图;
37.图3为一个应用例中的故障定位流程图;
38.图4为一个实施例中一种故障定位装置的结构框图;
39.图5为一个实施例中计算机设备的内部结构图。
具体实施方式
40.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本技术,并不用于限定本技术。
41.本技术提供了一种故障定位方法。在本实施例中,该故障定位方法可以应用于如图1所示的应用环境中。其中,其中,用户终端10和后台服务器20之间通过网络30进行通讯,用户终端10中安装有应用程序,即目标应用,该应用程序中接入软件sdk(software development kit,软件开发工具包),其中,如果是nodejs项目可引入npm包,如果是普通web项目可引入js(javascript)脚本。该软件sdk会在目标应用正常运行时,获取该目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在该目标应用所在终端本地,以及在该目标应用出现故障时,生成操作记录导出页面,引导用户通过该操作记录导出页面将当前保存在该终端本地的操作数据导出为指定格式的文件,并上传至后台服务器20供后台人员(如开发人员)进行故障定位。其中,用户终端10可以包括但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和台式计算机等,后台服务器20可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
42.本实施例提供的一种故障定位方法包括如图2所示的步骤,下面进行详细说明。
43.s110:在目标应用正常运行时,获取该目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在该目标应用所在终端本地;
44.其中,该终端是指用户终端,该终端本地是指用户终端的本地存储介质。
45.s120:在该目标应用出现故障时,生成操作记录导出页面,引导用户通过该操作记录导出页面将当前保存在该终端本地的操作数据导出为指定格式的文件,并上传至后台供后台人员进行故障定位。
46.其中,用户可以在该操作记录导出页面中看到自己过去的操作数据,然后可以选择将全部或部分操作数据导出为指定格式的文件。在将终端本地的操作记录导出为指定格式的文件时,可以根据实际场景需要将操作数据导出为excel表格、txt文档或者其他格式文档。具体地,该操作记录导出页面,可以通过为系统动态注入路由的方式来生成操作记录导出页面。
47.本实施例通过为目标应用接入软件sdk,通过软件sdk在目标应用正常运行时,获取该目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在该目标应用所在终端本地;以及,在该目标应用出现故障时,生成操作记录导出页面,引导用户通过该操作记录导出页面将当前保存在该终端本地的操作数据导出为指定格式的文件,并上传至后台供后台人员进行故障定位,能够实现在应用出现故障时,向后台反馈用户的连续操作记录,便于后台人员模拟重现问题,从而更快定位出故障。此外本实施例会先将获取的相关操作数据保存在终端本地,而不频繁发送网络请求,因此对系统性能影响较小,而由于不频繁
发送网络请求,可以有效减少出现漏报的情况。
48.在一个实施例中,该指定操作包括以下的一项或多项:进入页面、离开页面、点击页面中的指定元素、发起网络请求和页面报错。
49.相应地,在获取该目标应用上发生指定操作时产生的操作数据时,执行以下一项或多项操作:
50.通过监听浏览器onhashchange事件,获取页面地址哈希(hash)变化;
51.通过重写浏览器history对象的相关方法获取页面地址路径变化;
52.通过监听浏览器window对象上的点击事件,获取页面上的点击行为信息(可以包括用户所点击的元素的相关信息,如元素标识、点击事件、目标应用的类型等等);
53.通过监听浏览器window对象上的ajaxloadstart事件和ajaxloadend事件,获取页面上进行的网络请求的信息,该网络请求的信息包括请求开始和结束时间、请求负载和请求返回数据;
54.通过监听浏览器window对象上的error事件和unhandledrejection事件,获取页面上的报错信息;
55.通过重写浏览器console对象上的打印方法,获取页面控制台上的打印信息。
56.在一个实施例中,获取该目标应用上发生指定操作时产生的操作数据之前还包括:
57.检测操作数据获取开关是否打开;
58.该获取该目标应用上发生指定操作时产生的操作数据,包括:
59.响应于该操作数据获取开关打开,获取该目标应用上发生指定操作时产生的操作数据。
60.具体地,该操作数据获取开关包括本地开关(或称为本地功能开关)和远程开关(或称为远程功能开关)。其中,本地开关供用户使用,用户可以通过本地开关来配置需要软件sdk获取哪些操作的操作数据,比如,用户通过本地开关指示软件sdk只获取用户进入页面、离开页面这两种操作,那么软件sdk在目标应用运行时,就只抓取用户在目标应用上触发这两种操作时的操作数据。远程开关共后台人员如开发人员使用,开发人员可以在紧急状态下通过该远程开关来快速控制所有接入系统的操作数据的抓取功能是否启用。
61.在一个实施方式中,检测操作数据获取开关是否打开,包括:
62.在该本地开关关闭或该远程开关关闭时,判定操作数据获取开关未打开,结束处理流程;
63.在该本地开关和该远程开关均打开时,判定操作数据获取开关打开。
64.进一步地,在一个实施方式中,该方法还包括:响应于该操作数据获取开关打开,根据该操作数据获取开关对应的配置信息确定出该指定操作。
65.其中,该操作数据获取开关对应的配置信息表示用户或开发人员指定抓取哪些操作的操作数据。
66.在一个实施例中,该将获取的操作数据保存在该目标应用所在终端本,包括:将获取的操作数据异步保存在该目标应用所在终端本地。
67.在本实施例中,每当获取到用户的一次操作数据,例如打开/关闭页面、点击页面元素、发起网络请求等,即将获取到的操作数据异步保存到用户设备本地,其中,异步保存
是为了不影响页面上的渲染过程,从而为用户带来更好的应用使用体验。
68.在一个应用例中,定位故障的流程请参见图3,
69.1、接入软件sdk。如上所述,如果是nodejs项目可引入npm包,如果是普通web项目可引入js脚本;
70.2、执行sdk初始化程序,传入相关初始化配置,例如用户信息、功能开关信息等;
71.3、程序(即目标应用)开始执行,检测本地功能开关是否打开,本地功能开关支持配置当前系统记录某种操作类型的功能是否启用。如果打开,进入下一步,否则中止程序;
72.4、检测功能远程开关是否打开,功能远程开关由sdk开发人员控制,在紧急状态下,可快速控制所有接入系统的操作记录功能是否启用。如果打开,进入下一步,否则中止程序;
73.5、根据行为类型,通过监听相关事件和改写浏览器原生方法达到抓取用户行为数据的目的;
74.5.1、通过监听浏览器onhashchange事件,获取页面地址hash变化;通过重写浏览器history对象的相关方法获取页面地址路径变化;
75.5.2、通过监听浏览器window对象上的click事件(即点击事件),获取页面上的点击行为信息;
76.5.3、通过监听浏览器window对象上的ajaxloadstart、ajaxloadend事件,获取页面上进行的网络请求,包括请求开始/结束时间、请求负载、请求返回数据等;
77.5.4、通过监听浏览器window对象上的error事件和unhandledrejection事件,获取页面上的报错信息;
78.5.5、通过重写浏览器console对象上的打印方法,获取页面控制台上的打印信息;
79.6、为系统动态注入路由,使系统生成操作日志导出页面
80.7、每当获取到用户的一次操作数据,例如打开/关闭页面、点击页面元素、发起网络请求等,即异步保存到用户设备本地,保证页面能够正常渲染。
81.8、当用户遇到故障时,引导用户打开操作数据导出页面,在该页面用户可以看到自己过去的操作数据,并可将操作数据导出为例如excel表格、txt文档或者其他格式文档,并上传给开发人员;
82.9、开发人员根据用户上传的操作数据获得故障前用户的操作路径,并对照用户的操作路径来找出故障所在。
83.本应用例一方面能够在出现故障时一次提取出一个用户连续的操作记录,便于后台人员模拟重现问题;另一方面能够离线完成相关操作数据的抓取和存储过程,这样就不必担心会因为网络环境问题贰导致操作数据漏报丢失的问题;又一方面,由于无须频繁发送网络请求,因此对系统性能影响较小,不会对用户正常使用目标应用产生影响。
84.图2为一个实施例中故障定位方法的流程示意图。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子
步骤或者阶段的至少一部分轮流或者交替地执行。
85.基于相同的发明构思,本技术还提供了一种故障定位装置。在本实施例中,如图4所示,该故障定位装置包括以下模块:
86.操作数据获取模块110,用于在目标应用正常运行时,获取该目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在该目标应用所在终端本地;
87.操作数据导出模块120,用于在该目标应用出现故障时,生成操作记录导出页面,引导用户通过该操作记录导出页面将当前保存在该终端本地的操作数据导出为指定格式的文件,并上传至后台供后台人员进行故障定位。
88.在一个实施例中,该指定操作包括以下的一项或多项:进入页面、离开页面、点击页面中的指定元素、发起网络请求和页面报错;
89.操作数据获取模块在获取该目标应用上发生指定操作时产生的操作数据时,执行以下一项或多项操作:
90.通过监听浏览器onhashchange事件,获取页面地址哈希变化;
91.通过重写浏览器history对象的相关方法获取页面地址路径变化;
92.通过监听浏览器window对象上的点击事件,获取页面上的点击行为信息;
93.通过监听浏览器window对象上的ajaxloadstart事件和ajaxloadend事件,获取页面上进行的网络请求的信息,该网络请求的信息包括请求开始和结束时间、请求负载和请求返回数据;
94.通过监听浏览器window对象上的error事件和unhandledrejection事件,获取页面上的报错信息;
95.通过重写浏览器console对象上的打印方法,获取页面控制台上的打印信息。
96.在一个实施例中,操作数据获取模块还包括开关检测子模块。
97.开关检测子模块,用于在获取该目标应用上发生指定操作时产生的操作数据之前,检测操作数据获取开关是否打开;
98.相应地,操作数据获取模块在获取该目标应用上发生指定操作时产生的操作数据时,具体用于响应于该操作数据获取开关打开,获取该目标应用上发生指定操作时产生的操作数据。
99.在一个实施例中,该操作数据获取开关包括本地开关和远程开关。
100.相应地,开关检测子模块,具体用于在该本地开关关闭或该远程开关关闭时,判定操作数据获取开关未打开,结束处理流程,在该本地开关和该远程开关均打开时,判定操作数据获取开关打开。
101.在一个实施例中,该方法还包括:指定操作确定模块。
102.指定操作确定模块,用于响应于该操作数据获取开关打开,根据该操作数据获取开关对应的配置信息确定出指定操作。
103.在一个实施例中,操作数据获取模块在将获取的操作数据保存在该目标应用所在终端本地时,具体用于将获取的操作数据异步保存在该目标应用所在终端本地。
104.在一个实施例中,操作数据导出模块在生成操作记录导出页面时,具体用于为系统动态注入路由,使该系统生成操作记录导出页面。
105.关于故障定位装置的具体限定可以参见上文中对于故障定位方法的限定,在此不
再赘述。上述故障定位装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
106.在一个实施例中,提供了一种计算机设备,其内部结构图可以如图5所示。
107.该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储操作数据等数据,具体存储的数据还可以参见上述方法实施例中的限定。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种故障定位方法。
108.本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
109.本实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一方法实施例中的步骤。
110.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法实施例中的步骤。
111.本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
112.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
113.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
技术特征:
1.一种故障定位方法,其特征在于,包括:在目标应用正常运行时,获取所述目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在所述目标应用所在终端本地;在所述目标应用出现故障时,生成操作记录导出页面,引导用户通过所述操作记录导出页面将当前保存在所述终端本地的操作数据导出为指定格式的文件,并上传至后台供后台人员进行故障定位。2.如权利要求1所述的方法,其特征在于,所述指定操作包括以下的一项或多项:进入页面、离开页面、点击页面中的指定元素、发起网络请求和页面报错;在获取所述目标应用上发生指定操作时产生的操作数据时,执行以下一项或多项操作:通过监听浏览器onhashchange事件,获取页面地址哈希变化;通过重写浏览器history对象的相关方法获取页面地址路径变化;通过监听浏览器window对象上的点击事件,获取页面上的点击行为信息;通过监听浏览器window对象上的ajaxloadstart事件和ajaxloadend事件,获取页面上进行的网络请求的信息,所述网络请求的信息包括请求开始和结束时间、请求负载和请求返回数据;通过监听浏览器window对象上的error事件和unhandledrejection事件,获取页面上的报错信息;通过重写浏览器console对象上的打印方法,获取页面控制台上的打印信息。3.如权利要求1所述的方法,其特征在于,所述获取所述目标应用上发生指定操作时产生的操作数据之前还包括:检测操作数据获取开关是否打开;所述获取所述目标应用上发生指定操作时产生的操作数据,包括:响应于所述操作数据获取开关打开,获取所述目标应用上发生指定操作时产生的操作数据。4.如权利要求3所述的方法,其特征在于,所述操作数据获取开关包括本地开关和远程开关;所述检测操作数据获取开关是否打开,包括:在所述本地开关关闭或所述远程开关关闭时,判定操作数据获取开关未打开,结束处理流程;在所述本地开关和所述远程开关均打开时,判定操作数据获取开关打开。5.如权利要求4所述的方法,其特征在于,所述方法还包括:响应于所述操作数据获取开关打开,根据所述操作数据获取开关对应的配置信息确定出所述指定操作。6.如权利要求1所述的方法,其特征在于,所述将获取的操作数据保存在所述目标应用所在终端本地,包括:将获取的操作数据异步保存在所述目标应用所在终端本地。7.如权利要求1所述的方法,其特征在于,所述生成操作记录导出页面,包括:为系统动态注入路由,使所述系统生成操作记录导出页面。
8.一种故障定位装置,其特征在于,包括:操作数据获取模块,用于在目标应用正常运行时,获取所述目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在所述目标应用所在终端本地;操作数据导出模块,用于在所述目标应用出现故障时,生成操作记录导出页面,引导用户通过所述操作记录导出页面将当前保存在所述终端本地的操作数据导出为指定格式的文件,并上传至后台供后台人员进行故障定位。9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
技术总结
本申请涉及计算机领域,具体涉及一种故障定位方法、装置、计算机设备和存储介质。所述方法包括:在目标应用正常运行时,获取该目标应用上发生指定操作时产生的操作数据,将获取的操作数据保存在该目标应用所在终端本地;在该目标应用出现故障时,生成操作记录导出页面,引导用户通过该操作记录导出页面将当前保存在该终端本地的操作数据导出为指定格式的文件,并上传至后台供后台人员进行故障定位。本申请实施例能够在应用出现故障时,向后台反馈用户的连续操作记录,便于后台人员模拟重现问题,从而更快定位出故障。从而更快定位出故障。从而更快定位出故障。
技术研发人员:柳梦娜 曹译
受保护的技术使用者:深圳依时货拉拉科技有限公司
技术研发日:2021.11.08
技术公布日:2022/3/7