定位故障的方法、设备及系统的制作方法

文档序号:6632174阅读:113来源:国知局
定位故障的方法、设备及系统的制作方法
【专利摘要】本发明提供一种定位故障的方法、设备及系统,所述方法包括:客户端收集应用程序的关键点的跟踪数据,并将所述跟踪数据发送至服务器;服务器接收所述跟踪数据,根据所述跟踪数据关联出所述关键点之间的总调用关系,并将所述跟踪数据以及总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。通过采用本发明可以快速的定位故障、解决问题。
【专利说明】定位故障的方法、设备及系统

【技术领域】
[0001]本发明涉及通信领域,更为具体而言,涉及定位故障的方法、设备及系统。

【背景技术】
[0002]当交易应用程序开发完毕交付运维后,运维人员对程序内部交易逻辑不清楚。故障出现后无法快速定位问题,往往延误了故障的处理和恢复。
[0003]针对这一问题,现有技术使用基于日志的故障定位方法,但通过日志无法展现故障发生时点的全部交易逻辑、相关方法的输入输出参数、堆栈调用逻辑等,需要在故障发生后,将相关应用日志提供给开发人员进行分析,导致过度依赖开发人员,而且在银行等涉密单位,开发人员不能参与运维工作,因此开发人员无法直接登录生产系统定位问题,导致故障定位、解决时间长。


【发明内容】

[0004]为解决上述技术问题,本发明提供一种定位故障的方法、设备及系统,有效地解决了现有的定位故障的方式中过度依赖开发人员以及故障定位、解决的时间长的问题。
[0005]—方面,本发明的实施方式提供一种定位故障的方法,所述方法包括:
[0006]客户端收集应用程序的关键点的跟踪数据,并将所述跟踪数据发送至服务器;
[0007]服务器接收所述跟踪数据,根据所述跟踪数据关联出所述关键点之间的总调用关系,并将所述跟踪数据以及总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
[0008]相应地,本发明的实施方式提供一种客户端,所述客户端包括:
[0009]跟踪模块,用于收集应用程序的关键点的跟踪数据;
[0010]发送模块,用于将所述跟踪模块收集的所述跟踪数据发送至服务器,以便所述服务器根据所述跟踪数据关联出所述关键点之间的总调用关系,并将所述跟踪数据以及总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
[0011]相应地,本发明的实施方式提供一种服务器,所述服务器包括:
[0012]接收模块,用于接收客户端发送的应用程序的关键点的跟踪数据;
[0013]第一关联模块,用于根据所述接收模块接收的所述跟踪数据关联出所述关键点之间的总调用关系;
[0014]第一存储模块,用于将所述接收模块接收的所述跟踪数据以及所述第一关联模块关联出的所述总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
[0015]另一方面,本发明的实施方式提供一种定位故障的系统,所述系统包括:如上所述的客户端和如上所述的服务器。
[0016]实施本发明提供的定位故障的方法、设备及系统可以实现快速的定位故障、解决问题。

【专利附图】

【附图说明】
[0017]图1是根据本发明实施方式的一种定位故障的方法的流程图;
[0018]图2是根据本发明实施方式的宿主应用、客户端、服务器端的交互框图;
[0019]图3示出了图2所示的客户端侧的流程图的一例;
[0020]图4示出了图3所示步骤S5的一种实施方式;
[0021]图5是根据本发明实施方式的关键点之间调用关系的展示方式示意图;
[0022]图6是根据本发明实施方式的定位故障的系统的架构图;
[0023]图7示出了图6所示的系统中的客户端的结构示意图;
[0024]图8示出了图7所示的模块110的一种实施方式的结构示意图;
[0025]图9示出了图6所示的系统中的服务器的结构示意图;
[0026]图10示出了图6所示的系统中的数据展示客户端的结构示意图。

【具体实施方式】
[0027]为使本发明的实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
[0028]图1是根据本发明实施方式的一种定位故障的方法的流程图,参见图1,该方法包括:
[0029]SlOO:客户端收集应用程序的关键点的跟踪数据,并将所述跟踪数据发送至服务器。
[0030]其中,所述关键点包括应用程序中的特定类、方法、函数;所述跟踪数据包括关键点的名称、进入时间、输入参数、完成时间、输出结果、异常报错;客户端收集应用程序的关键点的跟踪数据可以通过以下步骤实现:
[0031]所述客户端访问所述服务器,读取所述关键点;
[0032]在所述关键点前后插入跟踪代码,通过所述跟踪代码收集所述跟踪数据。
[0033]S200:服务器接收所述跟踪数据,根据所述跟踪数据关联出所述关键点之间的总调用关系,并将所述跟踪数据以及总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
[0034]并且,所述方法除上述步骤外还可以包括:
[0035]所述服务器根据所述跟踪数据以及所述总调用关系,关联出各所述关键点的第一子调用关系;
[0036]并将各所述第一子调用关系写入所述数据库服务器。
[0037]另外,所述方法还可以包括:
[0038]所述服务器根据所述跟踪数据识别出故障点;
[0039]根据所述总调用关系追踪所述故障点的入口点及所述故障点与入口点之间的第二子调用关系;
[0040]将所述第二子调用关系写入所述数据库服务器。
[0041]此外,所述方法还可以包括:
[0042]所述服务器根据所述跟踪数据计算各所述关键点以及所述应用程序的执行时间;
[0043]将各所述关键点及所述应用程序的所述执行时间写入所述数据库服务器。
[0044]在本发明的一种实施方式中,所述用户查询所述写入数据库服务器中的数据,进行故障定位可以通过,但不限于以下方式:
[0045]所述用户向数据展示客户端发送交互请求,该数据展示客户端接收所述交互请求,根据所述交互请求发送查询请求至所述服务器,接收所述服务器返回的数据,并将所述服务器返回的数据以文字、图表等方式展现给所述用户以进行故障定位、处理。
[0046]下面给出具体例子,对本发明提供的方法进行详细说明。该方法具体通过一个服务器端应用程序、一个数据库及部署在跟踪目标应用程序(宿主应用程序)上的客户端实现。其中,宿主应用程序是基于动态语言编写的。
[0047]图2是宿主应用、客户端、服务器端的交互框图。参见图2部署在宿主应用程序上的客户端应用程序从服务器端获取目标类、方法、函数(指希望进行跟踪、故障诊断的应用程序中的特定类、方法、函数,即关键点),通过动态语言的动态装载、修改机制,在目标类、方法或函数(关键点)前后插入跟踪代码,收集该类、方法或函数的调用及执行数据及处理结果(即跟踪数据),并将这些数据发送给服务器端。其中根据宿主应用程序编写的语言不同,使用相对应的客户端应用程序。目前支持的动态语言包括Java、C#。
[0048]参见图3,上述过程的具体实现步骤包括:
[0049]S1:宿主应用程序启动;
[0050]S2:加载客户端应用程序;
[0051]S3:客户端访问服务器,读取目标类、方法、函数;
[0052]S4:在目标类、方法、函数前后插入跟踪代码;
[0053]S5:收集跟踪数据,将跟踪数据发送至服务器。
[0054]参见图4,上述步骤S5的具体实现过程为:
[0055]S51:用户交易请求调用关键点;
[0056]S52:执行前跟踪代码,收集数据;
[0057]S53:执行关键点;
[0058]S54:判断是否有下一层调用,若是则返回步骤S52,若否则执行步骤S55 ;
[0059]S55:执行后跟踪代码,收集数据;
[0060]S56:判断是否有上一层调用,若是则执行步骤S57,若否则执行步骤S58 ;
[0061]S57:返回上层关键点并执行步骤S52 ;
[0062]S58:客户端发送跟踪数据到服务器端。
[0063]在前跟踪代码中,记录包括宿主应用程序的目标类、方法、函数(关键点)的名称、进入时间、输入参数、数据库SOL语言、父方法跟踪号等代码逻辑;在后跟踪代码中,记录包括宿主应用程序的关键点的完成时间、输出结果及异常报错。并且,本发明中前、后跟踪代码收集数据的方法是基于常规的反射、依赖注入、面向切面的编程及设计的技术。
[0064]服务器端应用程序负责接收客户端应用程序发送的数据,将这些数据整理后写入到数据库服务器中。同时服务器端负责接收数据展现客户端的请求,并将相应的数据从数据库中读取后返回给数据展现客户端。
[0065]服务器端应用程序根据采集时间的先后顺序将采集的数据写入数据库中并与关键点跟踪号关联,根据跟踪代码所米集的关键点的父关键点跟踪号生成“关键点跟踪树”,其各节点包括一个全局唯一的数字,一个父节点(父关键点跟踪号)的引用对象、一个包含所有子节点(子关键点跟踪号)的数组。由此关联出各关键点之间的总调用关系,即关联出完整的程序内交易逻辑。并且对于任一关键点可以通过逐层获取父关键点跟踪号、子关键点跟踪号的方式关联出与该关键点相关的完整调用关系(即完整的交易路径),通过任一关键点可追踪到其他关键点。另外,服务器端还可以识别故障点,从故障点追踪到入口点及之间的完整调用关系。故障点即指出现异常的关键点调用,异常出现后会输出异常信息,因此可以被跟踪代码捕获。根据异常信息识别出关键点,并通过对关键点跟踪号的遍历即可追踪到入口点以及与入口点之间的完整调用关系。此外,服务器端可以通过用后跟踪代码收集的完成时间减去前跟踪代码收集的进入时间计算出每个关键点的执行时间,将每个关键点的执行时间加总就得到每次交易(每次执行应用程序)的耗时时间。由此可以统计交易和关键点的最长耗时、最短耗时、平均耗时,用户可检索耗时大于某个特定值的交易或关键点。
[0066]技术人员通过数据展示客户端访问服务器端应用程序,查看客户端收集到的数据并进行数据分析、故障定位。数据展现客户端的展现维度包括按时间顺序、按方法、按异常等维度展现服务器端采集到的跟踪结果。用户通过数据展现客户端选择一只交易后,显示该交易的进入时间、完成时间及所有关键点的进入、完成时间、输入参数、输出结果、异常报错以及完整的程序内交易逻辑(各关键点之间的调用关系),其具体过程如下:寻找根关键点跟踪号:在“关键点跟踪树”的节点中没有父节点的为“根关键点跟踪号”;由根关键点跟踪号开始,按深度优先遍历所有子关键点跟踪号,一行展示一个关键点,关键点之间的调用关系用文本缩进的格式展现。以此展示一次交易的所有关键点的调用,即该交易的交易逻辑,具体如图5所示。
[0067]当宿主应用程序出现故障后,技术人员可以通过数据展示客户端观察所有交易的执行时间完成情况,异常情况。可以根据异常报错查看出现异常的交易、交易的所有关键点及交易逻辑,定位造成故障的关键点。
[0068]图6是根据本发明实施方式的定位故障的系统的架构图,参见图6,所述系统包括:
[0069]客户端100,用于执行下述操作:收集应用程序的关键点的跟踪数据;将所述跟踪数据发送至服务器,以便所述服务器根据所述跟踪数据关联出所述关键点之间的总调用关系,并将所述跟踪数据以及总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
[0070]服务器200,用于执行下述操作:接收客户端发送的应用程序的关键点的跟踪数据;根据所述跟踪数据关联出所述关键点之间的总调用关系;将所述跟踪数据以及总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
[0071]数据展示客户端300,用于执行下述操作:接收用户的交互请求,根据交互请求发送查询请求至所述服务器,接收所述服务器返回的数据,并将所述服务器返回的数据以文字、图表等方式展现给用户以进行故障定位、处理。
[0072]图7示出了图6所示的系统中的客户端的结构示意图,参见图7,所述客户端100包括:
[0073]跟踪模块110,用于收集应用程序的关键点的跟踪数据。
[0074]其中,所述关键点包括应用程序中的特定类、方法、函数;所述跟踪数据包括关键点的名称、进入时间、输入参数、完成时间、输出结果、异常报错。
[0075]发送模块120,用于将所述跟踪模块110收集的所述跟踪数据发送至服务器,以便所述服务器根据所述跟踪数据关联出所述关键点之间的总调用关系,并将所述跟踪数据以及总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
[0076]图8示出了图7所示的跟踪模块110的一种实施方式的结构示意图,参见图8,所述跟踪模块110包括:
[0077]读取单元111,用于访问所述服务器,读取所述关键点。
[0078]收集单元112,用于在所述读取单元111所读取的所述关键点前后插入所述跟踪代码,通过所述跟踪代码收集所述跟踪数据。
[0079]图9示出了图6所示的系统中的服务器的结构示意图,参见图9,所述服务器200包括:
[0080]接收模块210,用于接收客户端发送的应用程序的关键点的跟踪数据。
[0081]第一关联模块220,用于根据所述接收模块210接收的所述跟踪数据关联出所述关键点之间的总调用关系。
[0082]第一存储模块230,用于将所述接收模块210接收的所述跟踪数据以及所述第一关联模块220关联出的所述总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
[0083]并且所述服务器200还可以包括:
[0084]第二关联模块,用于根据所述接收模块接收的所述跟踪数据以及所述第一关联模块关联出的所述总调用关系,关联出各所述关键点的第一子调用关系;
[0085]第二存储模块,用于将所述第二关联模块关联出的各所述第一子调用关系写入所述数据库服务器。
[0086]另外,所述服务器200还可以包括:
[0087]识别模块,用于根据所述接收模块接收的所述跟踪数据识别出故障点;
[0088]第三关联模块,用于根据所述第一关联模块关联出的所述总调用关系追踪所述故障点的入口点及所述故障点与入口点之间的第二子调用关系;
[0089]第三存储模块,用于将所述第三关联模块关联出的所述第二子调用关系写入所述数据库服务器。
[0090]此外,所述服务器200还可以包括:
[0091]统计模块,根据所述接收模块接收的所述跟踪数据计算各所述关键点以及所述应用程序的执行时间;
[0092]第四存储模块,用于将所述统计模块计算的各所述关键点及所述应用程序的所述执行时间写入所述数据库服务器。
[0093]图10示出了图6所示的系统中的数据展示客户端300的结构示意图。参见图10,所述数据展示客户端300包括:
[0094]数据展示模块310,用于接收用户的交互请求,根据交互请求发送查询请求至所述服务器,接收所述服务器返回的数据,并将所述服务器返回的数据以文字、图表等方式展现给用户以进行故障定位、处理。
[0095]实施本发明提供的定位故障的方法、设备及系统可以实现快速的定位故障、解决问题。
[0096]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对【背景技术】做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0097]本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。
【权利要求】
1.一种定位故障的方法,其特征在于,所述方法包括: 客户端收集应用程序的关键点的跟踪数据,并将所述跟踪数据发送至服务器; 服务器接收所述跟踪数据,根据所述跟踪数据关联出所述关键点之间的总调用关系,并将所述跟踪数据以及总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
2.如权利要求1所述的方法,其特征在于,所述客户端收集应用程序的关键点的跟踪数据包括: 所述客户端访问所述服务器,读取所述关键点; 在所述关键点前后插入跟踪代码,通过所述跟踪代码收集所述跟踪数据。
3.如权利要求1或2所述的方法,其特征在于,所述方法还包括: 所述服务器根据所述跟踪数据以及所述总调用关系,关联出各所述关键点的第一子调用关系; 并将各所述第一子调用关系写入所述数据库服务器。
4.如权利要求1或2所述的方法,其特征在于,所述方法还包括: 所述服务器根据所述跟踪数据识别出故障点; 根据所述总调用关系追踪所述故障点的入口点及所述故障点与入口点之间的第二子调用关系; 将所述第二子调用关系写入所述数据库服务器。
5.如权利要求1或2所述的方法,其特征在于,所述方法还包括: 所述服务器根据所述跟踪数据计算各所述关键点以及所述应用程序的执行时间; 将各所述关键点及所述应用程序的所述执行时间写入所述数据库服务器。
6.—种客户端,其特征在于,所述客户端包括:; 跟踪模块,用于收集应用程序的关键点的跟踪数据; 发送模块,用于将所述跟踪模块收集的所述跟踪数据发送至服务器,以便所述服务器根据所述跟踪数据关联出所述关键点之间的总调用关系,并将所述跟踪数据以及总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
7.如权利要求6所述的客户端,其特征在于,所述跟踪模块包括: 读取单元,用于访问所述服务器,读取所述关键点; 收集单元,用于在所述读取单元所读取的所述关键点前后插入所述跟踪代码,通过所述跟踪代码收集所述跟踪数据。
8.一种服务器,其特征在于,所述服务器包括: 接收模块,用于接收客户端发送的应用程序的关键点的跟踪数据; 第一关联模块,用于根据所述接收模块接收的所述跟踪数据关联出所述关键点之间的总调用关系; 第一存储模块,用于将所述接收模块接收的所述跟踪数据以及所述第一关联模块关联出的所述总调用关系写入数据库服务器,以便用户查询所述写入数据库服务器中的数据,进行故障定位。
9.如权利要求8所述的服务器,其特征在于,所述服务器还包括: 第二关联模块,用于根据所述接收模块接收的所述跟踪数据以及所述第一关联模块关联出的所述总调用关系,关联出各所述关键点的第一子调用关系; 第二存储模块,用于将所述第二关联模块关联出的各所述第一子调用关系写入所述数据库服务器。
10.如权利要求8或9所述的服务器,其特征在于,所述服务器还包括: 识别模块,用于根据所述接收模块接收的所述跟踪数据识别出故障点; 第三关联模块,用于根据所述第一关联模块关联出的所述总调用关系追踪所述故障点的入口点及所述故障点与入口点之间的第二子调用关系; 第三存储模块,用于将所述第三关联模块关联出的所述第二子调用关系写入所述数据库服务器。
11.如权利要求8或9所述的服务器,其特征在于,所述服务器还包括: 统计模块,根据所述接收模块接收的所述跟踪数据计算各所述关键点以及所述应用程序的执行时间; 第四存储模块,用于将所述统计模块计算的各所述关键点及所述应用程序的所述执行时间写入所述数据库服务器。
12.一种定位故障的系统,其特征在于,所述系统包括: 如权利要求6?7中任一项所述的客户端,和,如权利要求8?11中任一项所述的服务器。
【文档编号】G06F11/36GK104360939SQ201410593667
【公开日】2015年2月18日 申请日期:2014年10月29日 优先权日:2014年10月29日
【发明者】郭思文, 许剑锋, 张勇, 王鑫, 张娜, 邬大卫 申请人:中国建设银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1