CN113849331B - 混合技术栈的异常追踪方法、系统、装置、设备及介质 - Google Patents

混合技术栈的异常追踪方法、系统、装置、设备及介质 Download PDF

Info

Publication number
CN113849331B
CN113849331B CN202111105998.8A CN202111105998A CN113849331B CN 113849331 B CN113849331 B CN 113849331B CN 202111105998 A CN202111105998 A CN 202111105998A CN 113849331 B CN113849331 B CN 113849331B
Authority
CN
China
Prior art keywords
log
target
attribute information
technology stack
sub
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.)
Active
Application number
CN202111105998.8A
Other languages
English (en)
Other versions
CN113849331A (zh
Inventor
牛魁元
李君斌
刘庆生
余洋
潘威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202111105998.8A priority Critical patent/CN113849331B/zh
Publication of CN113849331A publication Critical patent/CN113849331A/zh
Application granted granted Critical
Publication of CN113849331B publication Critical patent/CN113849331B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开涉及一种混合技术栈的异常追踪方法、系统、装置、设备及介质。由于可以获取到不同技术栈的日志分别对应的属性信息,当获取到异常追踪请求中携带的目标属性信息后,即获取到客户端设备标识,和/或,目标应用的启动时间,可根据保存的各个日志分别对应的属性信息以及该异常追踪请求中携带的目标属性信息,从保存的日志中,快速且准确地确定目标属性信息对应的发生异常的目标日志。根据该目标属性信息及目标日志的目标生成时间,从保存的不同技术栈的日志中,快速且准确地获取到与该目标日志关联的关联日志,有利于后续工作人员根据该目标日志及关联日志准确地确定业务出现问题的原因,并准确地复刻业务发生问题时的工作环境。

Description

混合技术栈的异常追踪方法、系统、装置、设备及介质
技术领域
本公开涉及计算机数据处理技术领域,尤其涉及一种混合技术栈的异常追踪方法、系统、装置、设备及介质。
背景技术
随着科技的发展,越来越多的开发者采用混合技术栈的方式,将多种业务集成在一个应用中,从而在丰富该应用所能实现的业务的多样性的同时,可以让负责不同技术栈的开发者共同参与到该应用的开发中,缩短该应用的开发周期。
为了方便对应用在线上使用的情况进行评估,比如,确定应用在线上使用时所产生的问题,确定应用在线上的吞吐量、响应时间等,会在使用该应用上的业务时,实时根据该业务的使用情况生成日志。但由于不同的技术栈所开发的业务之间是独立的,导致无法确定不同业务的日志之间的关联性。如果在使用该应用上的某一业务时,该业务一旦出现问题,则无法根据该业务发生异常的日志,准确地确定与该日志关联的其它日志,比如,使用该业务之前以及之后所使用的其它业务的日志,不利于准确地确定导致该业务出现问题的原因。
发明内容
本公开提供了一种混合技术栈的异常追踪方法、系统、装置、设备及介质,用以解决现有无法准确地确定与发生异常的日志关联的跨技术栈的其它日志,导致无法准确地确定业务出现问题的原因的问题。
本公开提供了一种混合技术栈的异常追踪方法,所述方法应用于日志管理设备,所述方法包括:
接收异常分析设备发送的异常追踪请求;
根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;
根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;
将所述目标日志以及所述关联日志发送至所述异常分析设备。
本公开提供了一种混合技术栈的异常追踪方法,所述方法应用于客户端设备,所述方法包括:
获取目标应用在启动时的属性信息;所述属性信息包括所述客户端设备标识、以及所述目标应用的启动时间;
若确定所述目标应用上的第一业务启动,则确定所述第一业务所对应的第一子技术栈;
确定所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第一子技术栈,以使所述客户端设备通过所述第一子技术栈执行所述第一业务时,使用所述属性信息生成所述第一子技术栈的第一日志;
将所述第一子技术栈的第一日志、所述第一日志的第一生成时间以及所述属性信息发送至日志管理设备,以使所述日志管理设备接收到异常分析设备发送的异常追踪请求之后,根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;将所述目标日志以及所述关联日志发送至所述异常分析设备。
本公开提供了一种混合技术栈的异常追踪系统,所述系统包括用于执行上述任一所述方法的日志管理设备、用于执行上述任一所述方法的客户端设备、以及用于发送异常追踪请求和接收目标日志以及关联日志的异常分析设备。
本公开提供了一种混合技术栈的异常追踪装置,所述装置应用于日志管理设备,所述装置包括:
接收单元,用于接收异常分析设备发送的异常追踪请求;
处理单元,用于根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;
发送单元,用于将所述目标日志以及所述关联日志发送至所述异常分析设备。
本公开提供了一种混合技术栈的异常追踪装置,所述装置应用于客户端设备,所述装置包括:
获取模块,用于获取目标应用在启动时的属性信息;所述属性信息包括所述客户端设备标识、以及所述目标应用的启动时间;
处理模块,用于若确定所述目标应用上的第一业务启动,则确定所述第一业务所对应的第一子技术栈;确定所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第一子技术栈,以使所述客户端设备通过所述第一子技术栈执行所述第一业务时,使用所述属性信息生成所述第一子技术栈的第一日志;
发送模块,用于将所述第一子技术栈的第一日志、所述第一日志的第一生成时间以及所述属性信息发送至日志管理设备,以使所述日志管理设备接收到异常分析设备发送的异常追踪请求之后,根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;将所述目标日志以及所述关联日志发送至所述异常分析设备。
本公开提供了一种电子设备,所述电子设备至少包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序时实现如上述任一所述混合技术栈的异常追踪方法的步骤,或实现如上述中任一所述混合技术栈的异常追踪方法的步骤。
本公开提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一所述混合技术栈的异常追踪方法的步骤,或实现如上述任一所述混合技术栈的异常追踪方法的步骤。
虽然保存的日志是来自不同的技术栈的,但每个日志均可以获取到对应的属性信息。当获取到异常追踪请求中携带的目标属性信息后,即获取到目标属性信息包括的客户端设备标识,和/或,目标应用的启动时间,可以根据保存的各个日志分别对应的属性信息以及该异常追踪请求中携带的目标属性信息,从保存的不同技术栈的日志中,快速且准确地确定目标属性信息对应的发生异常的目标日志,大大提高了获取发生异常的目标日志的效率和准确性。然后根据该目标属性信息及目标日志的目标生成时间,还可以从保存的不同技术栈的日志中,快速且准确地获取到与该目标日志关联的关联日志,有利于后续工作人员根据该目标日志及关联日志准确地确定业务出现问题的原因,便于对该问题进行排查和分析,并准确地复刻业务发生问题时的工作环境,解决了现有无法将从保存的不同技术栈的日志中,准确且快速地确定与该目标日志关联的其它技术栈的关联日志,避免了日志来自于不同技术栈对异常分析过程中的影响。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种混合技术栈的异常追踪过程示意图;
图2为本公开实施例提供的确定前端的目标日志的示意图;
图3为本公开实施例提供的确定后端的目标日志的示意图;
图4为本公开实施例提供的确定客户端的目标日志的示意图;
图5为本公开实施例提供的确定客户端的目标日志的关联日志的示意图;
图6为本公开实施例提供的具体的混合技术栈的异常追踪流程示意图;
图7为本公开实施例提供的一种混合技术栈的异常追踪过程示意图;
图8为本公开实施例提供的具体的混合技术栈的异常追踪流程示意图;
图9为本公开实施例提供的一种混合技术栈的异常追踪系统的结构示意图;
图10为本公开实施例提供的一种混合技术栈的异常追踪装置的结构示意图;
图11为本公开实施例提供的一种混合技术栈的异常追踪装置的结构示意图;
图12为本公开实施例提供的一种电子设备结构示意图;
图13为本公开实施例提供的一种电子设备结构示意图。
具体实施方式
下面将结合附图对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
为了方便理解,下面对本公开实施例中涉及的部分概念进行解释:
原生应用:指的是使用单一的技术栈开发的应用,比如,完全由安卓移动操作系统Android或网络互连操作系统iOS开发的、不包含其他技术栈的应用程序。
混合技术栈应用:指的是使用了多种技术栈开发的应用,比如在Android、iOS里面通过webview技术嵌入的网页HTML5页面就是典型的混合技术栈的应用;现在主流的应用一般都使用混合技术栈来进行开发。
客户端设备标识(deviceId):设备的唯一标识符,通过该标识可以表示该设备上的所有事件。
目标应用的启动次数(startId):标识当前启动的ID,每次app启动时都有不同的ID,因此可以定位到每次启动;在日志聚合时,可以聚合到某特定客户端设备的当次启动后的所有业务流程。
目标应用的运行环境信息(runtimeId):标识运行环境的技术栈的ID,比如App-Android,App-iOS,App-H5,mp-H5,mp-Native等,表示执行业务的技术栈,比如,App-Android表示在Android的运行,App-H5表示在Android的H5中运行。
客户端设备所归属的用户的用户信息(uid):用户的唯一标识,是在系统内部的唯一标识,全系统内唯一,为保护用户隐私,需要对该用户信息进行脱敏,如果用户未登录,则可以统一使用预设的用户信息代替。
目标应用上执行的业务的业务信息(bizId):当前业务的ID,用来标识当前的业务,比如:填卡、实名、人脸识别、信用卡还款等。
随着科技的发展,越来越多的开发者采用混合技术栈的方式,将多种业务集成在一个应用中,从而在丰富该应用所能实现的业务的多样性的同时,可以让负责不同技术栈的开发者共同参与到该应用的开发中,缩短该应用的开发周期。
但对于该混合技术栈应用来说,该混合技术栈的应用仍可能存在如下问题:
1、用户在应用内进行了一些操作,并未得到用户预期内的结果,比如:
付款失败、提现失败、人脸识别失败等。
2、用户在应用内进行了一些操作,导致一些技术栈(Android、iOS、HTML5、小程序)的开发者认为是异常的一些行为,比如:网络异常、文件被恶意篡改导致文件读取异常、数据被恶意篡改导致数据读取异常等。
3、用户进入到某个技术栈的业务对应的页面中,但进入该页面的过程停留时间超过正常时间,比如:点击某一页面上的返回后(两秒)还停留在当前页面,或,点击某一页面上的下一步(三秒)还停留在当前页面等。
4、用户在应用内进行了一些操作,而这些操作在应用后端(后台接口层)被判定为异常,比如:在传递某一操作的参数中,少传了参数,参数的格式不对,或调用链路错误等。
5、获取到的用户资料异常。
为解决这些问题,需要根据该应用发生这些问题所生成的日志,对这些问题进行排查和分析。但目前主要集中在单一技术栈的业务的日志的追踪和关联,在存在多个技术栈同时使用时,由于各个技术栈所生成的日志之间是相互独立的,相关技术中并不能实现不同技术栈的业务的日志之间的追踪和关联,从而无法还原跨越多个技术栈的完整日志的上下文,因而相关技术不利于对应用在线上运行过程中所出现的问题的排查和分析。并且,各个技术栈具有不同的登录账户,也会导致无法简单的根据账号对不同技术栈的业务的日志进行追踪和关联。
因此,为了解决现有无法准确地确定与发生异常的日志关联的跨技术栈的其它日志,导致无法准确地确定业务出现问题的原因的问题,本公开提供了一种混合技术栈的异常追踪方法、系统、装置、设备及介质。虽然保存的日志是来自不同的技术栈的,但每个日志均可以获取到对应的属性信息。当获取到异常追踪请求中携带的目标属性信息后,即获取到目标属性信息包括的客户端设备标识,和/或,目标应用的启动时间,可以根据保存的各个日志分别对应的属性信息以及该异常追踪请求中携带的目标属性信息,从保存的不同技术栈的日志中,快速且准确地确定目标属性信息对应的发生异常的目标日志,大大提高了获取发生异常的目标日志的效率和准确性。然后根据该目标属性信息及目标日志的目标生成时间,还可以从保存的不同技术栈的日志中,快速且准确地获取到与该目标日志关联的关联日志,有利于后续工作人员根据该目标日志及关联日志准确地确定业务出现问题的原因,便于对该问题进行排查和分析,并准确地复刻业务发生问题时的工作环境,解决了现有无法将从保存的不同技术栈的日志中,准确且快速地确定与该目标日志关联的其它技术栈的关联日志,避免了日志来自于不同技术栈对异常分析过程中的影响。
图1为本公开实施例提供的一种混合技术栈的异常追踪过程示意图,该过程包括:
S101:接收异常分析设备发送的异常追踪请求。
本公开提供的测试混合技术栈的异常追踪方法应用于日志管理设备,该日志管理设备是电子设备,其可以是智能设备,如智能手机、智能平板等,也可以是服务器。
在一种示例中,当需要对某一客户端设备上的某一应用在某一时间发生的异常进行排查和分析时,进行异常分析的开发人员可以通过异常分析设备输入目标属性信息。异常分析设备接收到该目标属性信息后,根据该目标属性信息,生成异常追踪请求并发送至日志管理设备。
由于客户端设备在运行目标应用的过程中,如果该目标应用出现问题,用户或目标应用的客服人员可以获取到该客户端设备的标识、以及该目标应用出现问题的启动时间,然后将携带有该客户端设备标识以及目标应用的启动时间的问题反馈信息,反馈给进行异常分析的开发人员,以通知该开发人员对该问题进行排查和分析。因此,在本公开中,进行异常分析的开发人员向异常分析设备所输入的目标属性信息中至少包括客户端设备标识、和/或,目标应用的启动时间,以方便后续日志管理设备可以根据该目标属性信息,从不同技术栈的所有日志中,精确地定位到进行异常分析的开发人员所要排查的日志。
其中,客户端设备标识可以由IP地址、MAC地址、入网许可证号等方式进行表示。
需要说明的是,进行异常分析的开发人员通过异常分析设备输入目标属性信息的方式有很多,可以是通过对异常分析设备的显示屏上显示的各类目标属性信息输入触发操作(比如,语音,点击,双击等),也可以是直接通过输入语音信息的方式输入,还可以是通过异常分析设备的显示屏输入目标属性信息的文本信息的方式输入。具体实施过程中,可以根据实际需求进行灵活设置,在此不作具体限定。
日志管理设备接收到异常分析设备发生的异常追踪请求后,对该异常追踪请求进行相应的处理,以实现对该客户端设备在运行目标应用时所产生的异常进行排查和分析。
S102:根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,目标应用的启动时间。
为了实现日志管理设备可以根据该目标属性信息,从不同技术栈的所有日志中,精确地定位到所要排查的发生异常的目标日志,日志管理设备可以获取不同的技术栈的日志分别对应的属性信息,该属性信息中也至少包括客户端设备标识以及目标应用的启动时间,以使日志管理设备获取到异常追踪请求后,对该异常追踪请求进行解析,获取该异常追踪请求中携带的目标属性信息,根据获取到的目标属性信息以及每个日志分别对应的属性信息,从不同技术栈的日志中,确定目标属性信息对应的发生异常的目标日志。
在一种可能的实施方式中,为了便于更加精确定位到目标日志,日志的属性信息还包括以下中的至少一种:所述目标应用的启动次数、所述目标应用的启动方式、所述目标应用的运行环境信息、所述客户端设备所归属的用户的用户信息、所述客户端设备的位置信息、所述客户端设备的网络类型信息、与所述客户端设备进行通信的相应基站的基站标识、及所述目标应用上执行的业务的业务信息。基于此,异常追踪请求中携带的目标属性信息也可以包括以下中的至少一种:所述目标应用的启动次数、所述目标应用的启动方式、所述目标应用的运行环境信息、所述客户端设备所归属的用户的用户信息、所述客户端设备的位置信息、所述客户端设备的网络类型信息、与所述客户端设备进行通信的相应基站的基站标识、及所述目标应用上执行的业务的业务信息。
在一种可能的实施方式中,若日志的属性信息包括目标应用的运行环境信息,该目标应用的运行环境信息用以标识日志所归属的技术栈,例如,H5技术栈、Flutter技术栈等。通过该目标应用的运行环境信息,可以将某一技术栈生成的所有日志聚合。
在一种可能的实施方式中,若日志的属性信息包括客户端设备所归属的用户的用户信息,该客户端设备所归属的用户的用户信息用以区分不同用户的所有客户端设备所生成的日志,通过该客户端设备所归属的用户的用户信息,可以将某一用户的所有客户端设备所生成的日志聚合。
在一种可能的实施方式中,若日志的属性信息包括目标应用的启动次数,该目标应用的启动次数用以区分目标应用在每次启动所生成的日志。通过该目标应用的启动次数,可以将目标应用在该启动次数启动所生成的所有日志。
在一种可能的实施方式中,若日志的属性信息包括客户端设备的位置信息,该客户端设备的位置信息用以标识客户端设备的位置,比如,时区编码、省市区编码。通过该客户端设备的位置,可以将处于该位置的所有客户端设备所生成的日志聚合。
在一种可能的实施方式中,若日志的属性信息包括客户端设备的网络类型信息,该客户端设备的位置信息用以标识客户端设备的网络类型,例如,2个、3G、5G等。通过该客户端的网络类型信息,可以将工作于该网络类型下的客户端设备所生成的日志聚合。
在一种可能的实施方式中,若日志的属性信息包括与客户端设备进行通信的相应基站的基站标识,该与客户端设备进行通信的相应基站的基站标识用以区分当前与客户端设备进行通信的基站的。通过该与客户端设备进行通信的相应基站的基站标识,可以将与该基站标识对应的基站进行通信的客户端设备所生成的日志聚合。
在一种可能的实施方式中,若日志的属性信息包括目标应用上执行的业务的业务信息,该目标应用上执行的业务的业务信息用以标识生成该日志时目标应用所执行的业务,例如,填卡业务、支付业务等。通过该目标应用上执行的业务的业务信息,可以将所有客户端设备通过运行目标应用执行该业务时所生成的日志聚合。
在一种可能的实施方式中,若日志的属性信息包括目标应用的启动方式,该目标应用的启动方式用于标识该目标应用是自启动的,比如,用户通过点击客户端设备上目标应用的图标,以启动该目标应用,还是通过第三方应用唤醒的,例如,用户通过点击客户端设备上的第三方浏览器上的链接,以启动该目标应用。通过该目标应用的启动方式,可以将目标应用在该启动方式下启动后所生成的日志聚合。
由于客户端设备通过运行目标应用执行业务时,是通过该目标应用的前端、该目标应用的后端以及该目标应用的客户端之间的互相协作实现的。因此,该客户端设备在某一时间通过运行目标应用执行某一业务出现问题时,该目标应用的前端、该目标应用的后端以及该目标应用的客户端在该时间的运作过程中,也一般会出现问题。为了保证可以准确且全面地对问题进行排查和分析,日志管理设备可以保存有至少一种日志来源。其中,该日志来源包括以下中的至少一种:目标应用的前端、目标应用的后端以及目标应用的客户端。在根据获取到的目标属性信息,确定目标属性信息对应的发生异常的目标日志时,可以针对该至少一种日志来源,根据该目标属性信息,从该种日志来源的至少一个日志中,确定目标属性信息对应的发生异常的目标日志。
作为一种可能的实施方式,客户端设备在向日志管理设备发送任一日志时,便将该日志的日志来源、该日志以及该日志对应的属性信息对应发送至日志管理设备了。日志管理设备接收到客户端设备发送的该日志的日志来源、该日志以及该日志对应的属性信息之后,便可以将该日志的日志来源、该日志以及该日志对应的属性信息对应保存。后续可以针对该至少一种日志来源,根据该日志来源的日志与属性信息的对应关系、以及异常追踪请求中携带的目标属性信息,从该种日志来源的至少一个日志中,确定该目标属性信息对应的发生异常的目标日志。
由于保存有多个日志来源的日志,且每个日志均可以获取到对应的属性信息,使得后续在查询目标日志时,即可根据异常追踪请求中携带的目标属性信息、以及每个日志分别对应的属性信息,从多个日志来源的日志中,快速定位到目标属性信息对应的日志,进而根据该目标属性信息对应的日志的日志内容,从该目标属性信息对应的日志中,确定目标日志,实现了提高问题排查和分析的效率和全面性,减少定位目标日志所耗费的时间。
在一种可能的实施方式中,如果希望根据日志的属性信息,准确地定位到某次使用目标应用时不同技术栈所生成的所有日志,则在该次使用目标应用的过程中,不同技术栈所生成的所有日志,均对应统一的属性信息。而如果希望统一该次使用目标应用时不同技术栈所生成的所有日志分别对应的属性信息,客户端设备可以获取该目标应用在该次启动时的属性信息,后续确定该目标应用上的某一业务启动,则将该属性信息传递到该业务所对应的技术栈,以使客户端设备通过该技术栈执行该业务时,使用该属性信息生成该技术栈的日志,从而实现不同技术栈所生成的所有日志,均对应统一的属性信息。在将该属性信息传递到不同的技术栈的过程中,如果该属性信息占用的字段比较多,则不利于该属性信息在不同的技术栈之间的传递。并且日志的属性信息一般是一些模糊信息,这些模糊信息实际所占用的字段大小是无法确定的,导致如果直接将日志的属性信息发送至日志管理设备,该日志管理设备可能无法从接收到的属性信息中,准确地确定哪些字段的数据是客户端标识,哪些字段的数据是目标应用的启动时间。
基于此,为了方便属性信息在不同技术栈之间进行传递,并保证日志管理设备可以准确地确定日志的属性信息,在本公开中,客户端设备获取到目标应用在启动时的属性信息后,可以采用预先约定的加密算法(为了方便说明,记为第一加密算法),对该日志对应的属性信息进行加密,以生成轨迹标识。然后将该轨迹标识在该目标应用的不同技术栈之间进行传递,以使在该次使用目标应用的过程中,不同技术栈均使用该轨迹标识生成日志,从而实现不同技术栈所生成的所有日志,均对应统一的轨迹标识,即实现不同技术栈所生成的所有日志,均对应统一的属性信息。客户端设备将生成的日志、日志的日志来源、以及该日志对应的轨迹标识对应发送至日志管理设备。日志管理设备接收到客户端设备发送的该日志的日志来源、该日志以及该日志对应的轨迹标识之后,可以将该日志的日志来源、该日志以及该日志对应的轨迹标识对应保存。后续针对每种日志来源,日志管理设备可以获取日志的轨迹标识与属性信息的对应关系,然后根据该异常追踪请求中携带的目标属性信息、以及获取到的日志的轨迹标识与属性信息的对应关系,确定该目标属性信息对应的目标轨迹标识。根据轨迹标识与日志的对应关系,从该种日志开源的至少一个日志中,将该目标轨迹标识对应的日志确定为候选日志。然后从候选日志中,确定目标日志。
在一种可能的实施方式中,日志管理设备可以根据预先约定的解密算法(为了方便描述,记为第一解密算法),对该轨迹标识进行解密,确定该轨迹标识对应的属性信息。可以理解的是,获取每个日志的轨迹标识分别对应的属性信息,即为确定日志的轨迹标识与属性信息的对应关系。
需要说明的是,第一解密算法与第一加密算法是对应的,该第一加密算法与该第一解密算法需要满足如下条件:
traceID=f(X)
f-1(traceID)=X
其中,traceID表示属性信息X对应的轨迹标识,f()表示第一加密算法,f-1()表示第一解密算法。
可以理解的是,该第一加密算法与该第一解密算法需要满足的条件为:通过第一加密算法,对某一属性信息进行加密,获取到该属性信息对应的轨迹标识后,再通过该第一解密算法,对该属性信息对应的轨迹标识进行解密,可以获取到该属性信息。
在一种可能的实施方式中,为了进一步方便属性信息在不同技术栈之间进行传递,并保证日志管理设备可以准确地确定日志的属性信息,若日志的属性信息中包括目标应用的启动时间以及目标应用的启动次数时,客户端设备可以通过预先约定的加密算法(为了方便描述,记为第二加密算法),对日志的属性信息中包括的目标应用的启动时间、以及目标应用的启动次数进行加密,以生成启动标识。然后根据该启动标识,对日志的属性信息中包括的目标应用的启动时间、以及目标应用的启动次数进行更新。后续日志管理设备可以通过预先约定的解密算法(为了方便描述,记为第二解密算法),对日志的属性信息中包括的启动标识进行解密,从而准确地获取到该日志生成时,目标应用的启动时间、以及目标应用的启动次数。
在一种可能的实施方式中,该第二加密算法与该第二解密算法需要满足如下条件:
startID=G(currentStartount,currentStartTime)
G-1(startID)=currentStartount,currentStartTime
其中,startID表示启动标识,currentStartount表示目标应用的启动次数,currentStartTime表示目标应用的启动时间,G()表示第二加密算法,G-1()表示第二解密算法。
可以理解的是,该第二加密算法与该第二解密算法需要满足的条件为:通过第二加密算法,对某一日志的属性信息中包括的目标应用的启动时间、以及目标应用的启动次数进行加密,获取到该日志对应的启动标识后,再通过该第二解密算法,对该日志对应的启动标识进行解密,可以获取到该日志的属性信息中包括的目标应用的启动时间、以及目标应用的启动次数。
例如,某一日志的属性信息中包括的目标应用的启动时间为2021年6月10日星期四下午16点14分第一个毫秒,该属性信息包括的目标应用的启动次数为3,通过第二加密算法,对该2021年6月10日星期四下午16点14分第一个毫秒以及3进行加密,获取到该日志对应的启动标识startID为3-202106101614001其中的3表示当前应用的启动次数,202106101614001标识当前的启动时间为2021年6月10日星期四下午16点14分的第一个毫秒,这样在后续根据每个日志分别对应的startID,确定至少一个用户的客户端设备在第三次运行目标应用的过程中所生成的日志,即实现从保存的不同用户的所有日志中,聚合至少一个用户的客户端设备在第三次运行目标应用的过程中所生成的日志。进行异常分析的开发人员通过对这些聚合的日志进行分析,可以确定是不是有很多用户都是在第三次出现了异常,以及出现异常的日志的生成时间与对应的启动时间的差值所集中的时间差值。
在一种可能的实施方式中,若日志的属性信息中包括目标应用的启动时间、目标应用的启动方式以及目标应用的启动次数时,客户端设备可以通过预先约定的第二加密算法,对日志的属性信息中包括的目标应用的启动时间、目标应用的启动方式以及目标应用的启动次数进行加密,以生成启动标识。然后根据该启动标识,对日志的属性信息中包括的目标应用的启动时间、目标应用的启动方式以及目标应用的启动次数进行更新。后续日志管理设备可以通过预先约定的第二解密算法,对日志的属性信息中包括的启动标识进行解密,从而准确地获取到该日志生成时,目标应用的启动时间、目标应用的启动方式以及目标应用的启动次数。
例如,若日志的属性信息包括客户端标识、启动标识、目标应用的运行环境信息、客户端设备所归属的用户的用户信息、以及目标应用上执行的业务的业务信息,则通过第一加密算法,对该日志的属性信息进行加密,获取轨迹标识,可通过如下公式表示:
traceID=f(derviceId,startId,runtimeId,uid,bizId)
其中,traceID表示轨迹标识,f()表示第一加密算法,derviceId表示客户端标识,startId表示启动标识,runtimeId表示目标应用的运行环境信息,uid表示客户端设备所归属的用户的用户信息,bizId表示目标应用上执行的业务的业务信息。
仍以上述为例,日志管理设备通过第一解密算法,对该traceID进行解密,获取该轨迹标识对应的属性信息。
f-1(traceID)=(derviceId,startId,runtimeId,uid,bizId)
其中,f-1()表示第一解密算法,derviceId表示客户端标识,startId表示启动标识,runtimeId表示目标应用的运行环境信息,uid表示客户端设备所归属的用户的用户信息,bizId表示目标应用上执行的业务的业务信息。
在一种可能的实施方式中,当基于上述的实施例获取到日志的轨迹标识与属性信息的对应关系之后,可以将异常追踪请求中携带的目标属性信息,与获取到的日志的轨迹标识与属性信息的对应关系中的属性信息进行匹配,将匹配到的属性信息所对应的日志确定为候选日志,即将目标属性信息对应的日志确定为候选日志。然后根据每个候选日志的日志内容,确定日志内容存在异常的候选日志确定为目标日志。
在一种可能的实施方式中,可以将每个候选日志发送至异常分析设备,以便进行异常分析的开发人员根据每个候选日志的日志内容,从各个候选日志中,确定日志内容存在异常的目标日志。
图2为本公开实施例提供的确定目标日志的示意图。如图2所示,当日志来源是目标应用的前端时,日志管理设备保存有该前端的日志(如图2所示的大前端日志)、每个日志分别对应的轨迹标识(如图2所示的各个traceId)以及每个日志分别对应的生成时间(如图2所示的各个日志时间)。在图2所示的各个traceId是通过将该日志的每种属性信息进行拼接获取到的,每种属性信息在traceId中是通过分隔符“.”进行分隔开的。如图2所示的各个traceId中包含的8db494dd9efafdeaa6152435efb1e21f642579d0是客户端设备标识,当目标应用在客户端设备上启动后,该客户端设备标识将不再发生变化。通过预设的解密算法,分别对每个轨迹标识进行解密,获取每个轨迹标识分别对应的属性信息,即获取日志的轨迹标识与属性信息的对应关系。如图2所示的各个traceId中包含的202-1623738323861是启动标识startId,其中,202表示该日志生成时目标应用是第202次启动,目标应用的启动次数可以体现用户是否是一个高频使用目标应用的用户,进而根据该用户是否是一个高频使用目标应用的用户,确定该用户是否属于核心的用户,将启动标识中的1623738323861格式化后,确定该目标应用在第202次启动的时间戳为2021年06月15日下午14点25分23秒。如图2所示的各个traceId中包含的A-app.表示该目标应用的运行环境信息为主技术栈(也可称为原生应用),A-RN.表示该目标应用的运行环境信息为React Native技术栈,A-Flutter.表示该目标应用的运行环境信息为Flutter技术栈,A-H5.表示该目标应用的运行环境信息为网页HTML5技术栈。如图2所示的各个traceId中包含的u1.表示客户端设备所归属的用户的用户信息。如图2所示的各个traceId中包含的addcard表示目标应用上执行的业务的业务信息。根据异常追踪请求中携带的目标属性信息、以及获取到的轨迹标识与属性信息的对应关系,确定目标属性信息对应的轨迹标识。然后根据轨迹标识与日志的对应关系,确定目标轨迹标识对应的日志为候选日志。根据候选日志的日志内容,确定日志内容异常的目标日志。如图2所示的各个大前端日志中,确定2021年06月15日下午14点25分52秒所生成的一个日志为日志内容存在异常的目标日志,即图2中日志内容存在show ToastEorror 1的异常的日志为目标日志,根据该目标日志的生成时间与该目标应用的启动时间进行对比,确定该目标应用出现异常是发生在该目标应用启动29秒后,该时间差较小,说明该用户有较为强烈的意愿,在打开该目标应用后执行某项业务。
图3为本公开实施例提供的确定目标日志的示意图。如图3所示,当日志来源是目标应用的后端时,日志管理设备保存有该后端的日志(如图3所示的后端日志)、每个日志分别对应的轨迹标识(如图3所示的各个traceId)以及每个日志分别对应的生成时间(如图3所示的各个日志时间)。在图3所示的各个traceId的生成方法以及各个字段的数据所表示的含义,与上述实施例中介绍的图2所示的各个traceId的生成方法以及各个字段的数据所表示的含义相同,重复之处不做赘述。根据异常追踪请求中携带的目标属性信息、以及获取到的轨迹标识与属性信息的对应关系,确定目标属性信息对应的轨迹标识。然后根据轨迹标识与日志的对应关系,确定目标轨迹标识对应的日志为候选日志。根据候选日志的日志内容,确定日志内容异常的目标日志。如图3所示的各个后端日志中,确定2021年06月15日下午14点25分52秒所生成的一个日志为日志内容存在异常的目标日志,即图3中日志内容存在show Toast Eorror 1的异常的日志为目标日志。
图4为本公开实施例提供的确定目标日志的示意图。如图4所示,当日志来源是目标应用的客户端时,日志管理设备保存有该客户端的日志(如图4所示的客户端日志)、每个日志分别对应的轨迹标识(如图4所示的各个traceId)以及每个日志分别对应的生成时间(如图4所示的各个日志时间)。在图4所示的各个traceId的生成方法以及各个字段的数据所表示的含义,与上述实施例中介绍的图2所示的各个traceId的生成方法以及各个字段的数据所表示的含义相同,重复之处不做赘述。根据异常追踪请求中携带的目标属性信息、以及获取到的轨迹标识与属性信息的对应关系,确定目标属性信息对应的轨迹标识。然后根据轨迹标识与日志的对应关系,确定目标轨迹标识对应的日志为候选日志。根据候选日志的日志内容,确定日志内容异常的目标日志。如图4所示的各个客户端日志中,确定2021年06月15日下午14点25分52秒所生成的一个日志为日志内容存在异常的目标日志,即图4中日志内容存在verifyinput:catch Exception,IllgealAugumaent,out Default的异常的日志为目标日志。
S103:根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志。
在一种可能的实施方式中,为了保证问题排查的全面性,在本公开中,当确定了目标日志后,可以针对至少一种日志来源,根据目标属性信息及目标日志的目标生成时间,从该种日志来源的至少一个日志中,确定该种日志来源的目标日志的关联日志。
在一种可能的实施方式中,为了保证可以准确且全面地对问题进行排查和分析,如果日志管理设备保存有至少一种日志来源,则日志管理设备可以根据异常追踪请求中携带的目标属性信息及确定的该种日志来源的目标日志的目标生成时间,从该种日志来源的至少一个日志中,确定该种日志来源的目标日志的关联日志。其中,该日志来源包括以下中的至少一种:目标应用的前端、目标应用的后端以及目标应用的客户端。
在一种可能的实施方式中,为了准确地确定每种日志来源的目标日志的关联日志,针对每种日志来源,可以获取日志的轨迹标识与属性信息的对应关系。根据异常追踪请求中携带的目标属性信息、以及日志的轨迹标识与属性信息的对应关系,确定该目标属性信息对应的目标轨迹标识。根据轨迹标识与日志的对应关系,从该种日志来源的至少一个日志中,将目标轨迹标识对应的日志确定为候选日志。然后根据获取到的候选日志的生成时间以及该种日志来源的目标日志的目标生成时间,从候选日志中,确定该种日志来源的目标日志。
需要说明的是,确定候选日志的过程已在上述实施例中进行描述,在此不做具体赘述。
为了完整地复刻目标应用出现异常的工作环境,提高异常分析的准确性,可以结合目标日志的上下文进行异常的排查和分析,即结合目标应用此次运行过程中在该目标日志之前所生成的日志,以及目标应用此次运行过程中在该目标日志之后所生成的日志,对该目标应用出现的问题进行排查和分析。而为了获取到目标日志的上下文,即获取到目标日志的关联日志,在本公开中,可以获取该至少一个候选日志的生成时间,然后按照时间从早到晚的顺序,对每个生成时间进行排序。根据每个生成时间的排序位置以及目标日志的目标生成时间,确定目标生成时间所在的目标排序位置。然后根据每个生成时间的排序位置,确定目标排序位置之前的预设第一数量的排序位置,将该预设第一数量的排序位置分别对应的候选日志,确定为关联日志,并根据每个生成时间的排序位置,确定目标排序位置之后的预设第二数量的排序位置,将该预设第二数量的排序位置分别对应的候选日志,确定为关联日志。
图5为本公开实施例提供的确定目标日志的关联日志的示意图。如图5所示,当日志来源是目标应用的客户端时,日志管理设备保存有该客户端的日志(如图5所示的客户端日志)、每个日志分别对应的轨迹标识(如图5所示的各个traceId)以及每个日志分别对应的生成时间(如图5所示的各个日志时间)。在图5所示的各个traceId的生成方法以及各个字段的数据所表示的含义,与上述实施例中介绍的图2所示的各个traceId的生成方法以及各个字段的数据所表示的含义相同,重复之处不做赘述。在基于上述的实施例确定了图5中日志内容存在verifyinput:catch Exception,IllgealAugumaent,out Default的异常的日志为目标日志、以及该种日志来源的至少一个候选日志后,获取该至少一个候选日志的生成时间,然后按照时间从早到晚的顺序,对每个生成时间进行排序。根据每个生成时间的排序位置以及目标日志的目标生成时间,确定目标生成时间所在的目标排序位置。然后根据每个生成时间的排序位置,确定目标排序位置之前的预设第一数量的排序位置,将该预设第一数量的排序位置分别对应的候选日志,确定为关联日志,并根据每个生成时间的排序位置,确定目标排序位置之后的预设第二数量的排序位置,将该预设第二数量的排序位置分别对应的候选日志,确定为关联日志。如图5所示的,确定目标日志的目标生成时间2021年06月15日下午14点25分52秒的目标排序位置之前的两个排序位置,将这两个排序位置分别对应的候选日志确定为该目标日志的关联日志,并确定目标日志的目标生成时间2021年06月15日下午14点25分52秒的目标排序位置之后的两个排序位置,将这两个排序位置分别对应的候选日志也确定为该目标日志的关联日志,即将图5中框选出的除目标日志之外的其它日志,均确定为该目标日志的关联日志。
在一种可能的实施方式中,虽然保存的日志是来自不同的技术栈的,但每个日志均可以获取到对应的属性信息。例如,根据预设的第一解密算法,对图5所示的traceId为8db494dd9efafdeaa6152435efb1e21f642579d0.202-1623738323861.A-app.u1.addcard进行解密,可以获取到该轨迹标识对应的属性信息包括客户端设备标识为8db494dd9efafdeaa6152435efb1e21f642579d0、该日志生成时目标应用的启动次数为202,该目标应用在第202次启动的启动时间为2021年06月15日下午14点25分23秒,该目标应用的运行环境信息为主技术栈(也可称为原生应用),客户端设备所归属的用户的用户信息为u1、目标应用上执行的业务的业务信息为addcard。根据每个日志分别对应的属性信息,即可实现将不同技术栈的日志的聚合。因此,在本公开中,确定的关联日志与目标日志的技术栈可以相同,也可以不同。
其中,该技术栈包括主技术栈和子技术栈。
作为一种可能的实施方式,所述子技术栈包括以下中的至少一种:React Native技术栈、Flutter技术栈、网页HTML5技术栈、以及小程序技术栈。
作为另一种可能的实施方式,所述主技术栈包括以下中的至少一种:安卓移动操作系统Andriod技术栈、网络互连操作系统iOS技术栈、以及微信本地平台platform技术栈。
虽然日志管理设备保存的日志是来自不同的技术栈的,但每个日志均可以获取到对应的属性信息,该属性信息中包括客户端设备标识、以及目标应用的启动时间,日志管理设备在确定了目标日志之后,根据异常追踪请求中携带的目标属性信息、以及目标日志的目标生成时间,即可从保存的不同技术栈的日志中,确定该目标日志的关联日志,从而实现了无需考虑该目标日志的上下文日志所归属的技术栈的情况下,根据目标日志的目标生成时间以及异常追踪请求中携带的目标属性信息,即可确定该目标日志的关联日志,解决了现有技术中不同技术栈各自生成各自的日志,导致无法统一不同技术栈的日志的技术问题,提高了对异常问题进行排查和分析的效率。
S104:将所述目标日志以及所述关联日志发送至所述异常分析设备。
当基于上述实施例获取到目标日志以及关联日志之后,可以将该目标日志以及关联日志一并发送至异常分析设备,以供异常分析的开发人员通过异常分析设备查看该目标日志以及关联日志,对问题进行排查和分析。
在一种可能的实施方式中,当基于上述实施例获取到目标日志以及关联日志之后,也可以根据获取到的目标日志以及关联日志,快速定位到目标应用中存在的异常问题。
作为一种可能的实施方式中,由于应用存在的一些异常问题所对应的目标日志和关联日志具有一定的规律性,比如,异常问题A经常是在用户使用第一业务之后接着使用第二业务时产生的等。基于此,可以预先配置目标日志、关联日志与异常问题之间的对应关系。当基于上述实施例获取到目标日志以及关联日志之后,可以根据预先配置的目标日志、关联日志与异常问题之间的对应关系,确定当前获取到的目标日志以及关联日志所对应的异常问题。
虽然保存的日志是来自不同的技术栈的,但每个日志均可以获取到对应的属性信息。当获取到异常追踪请求中携带的目标属性信息后,即获取到目标属性信息包括的客户端设备标识,和/或,目标应用的启动时间,可以根据保存的各个日志分别对应的属性信息以及该异常追踪请求中携带的目标属性信息,从保存的不同技术栈的日志中,快速且准确地确定目标属性信息对应的发生异常的目标日志,大大提高了获取发生异常的目标日志的效率和准确性。然后根据该目标属性信息及目标日志的目标生成时间,还可以从保存的不同技术栈的日志中,快速且准确地获取到与该目标日志关联的关联日志,有利于后续工作人员根据该目标日志及关联日志准确地确定业务出现问题的原因,便于对该问题进行排查和分析,并准确地复刻业务发生问题时的工作环境,解决了现有无法将从保存的不同技术栈的日志中,准确且快速地确定与该目标日志关联的其它技术栈的关联日志,避免了日志来自于不同技术栈对异常分析过程中的影响。
下面通过具体的实施例对本公开提供的混合技术栈的异常追踪方法进行说明,图6为本公开实施例提供的具体的混合技术栈的异常追踪流程示意图,该流程包括:
S601:接收异常分析设备发送的异常追踪请求。
其中,该异常追踪请求中携带有目标属性信息,该目标属性信息包括客户端设备标识,和/或,目标应用的启动时间。
针对至少一种日志来源,如果日志管理设备从该种日志来源的至少一个日志中,确定发生异常的目标日志以及该目标日志对应的关联日志,则执行以下S602~S609的步骤:
S602:获取日志的轨迹标识与属性信息的对应关系。
在一种可能的实施方式中,获取日志的轨迹标识与属性信息的对应关系的具体过程包括如下:针对每个轨迹标识,根据预设的解密算法,对该轨迹标识进行解密,确定该轨迹标识对应的属性信息;其中,该轨迹标识是根据对应的日志的属性信息以及该解密算法对应的加密算法确定的,该日志的属性信息包括客户端设备标识、及目标应用的启动时间。
S603:根据异常追踪请求中携带的目标属性信息、以及获取到的日志的轨迹标识与属性信息的对应关系,确定该目标属性信息对应的目标轨迹标识。
S604:根据轨迹标识与日志的对应关系,从该种日志来源的至少一个日志中,将该目标轨迹标识对应的日志确定为候选日志。
其中,至少一个候选日志的技术栈包括至少一种技术栈。
S605:根据至少一个候选日志的日志内容,将日志内容存在异常的候选日志确定为该种日志来源的目标日志。
在一种可能的实施方式中,可以将至少一个候选日志发送至异常分析设备,以使进行异常分析的工作人员根据至少一个候选日志的日志内容,确定日志内容存在异常的候选日志。
S606:获取至少一个候选日志的生成时间。
S607:按照时间从早到晚的顺序,对每个生成时间进行排序。
S608:根据每个生成时间的排序位置以及目标日志的目标生成时间,确定目标生成时间所在的目标排序位置。
S609:确定目标排序位置之前的预设第一数量的排序位置,将预设第一数量的排序位置分别对应的候选日志,确定为关联日志;并确定目标排序位置之后的预设第二数量的排序位置,将预设第二数量的排序位置分别对应的候选日志,确定为关联日志。
S610:将目标日志以及关联日志发送至异常分析设备。
S611:根据目标日志以及关联日志,确定目标应用中存在的异常问题。
本公开还提供了一种混合技术栈的异常追踪方法,图7为本公开实施例提供的一种混合技术栈的异常追踪过程示意图,该过程包括:
S701:获取目标应用在启动时的属性信息;所述属性信息包括所述客户端设备标识、以及所述目标应用的启动时间。
本公开提供的混合技术栈的异常追踪方法应用于客户端设备,该客户端设备是电子设备,其可以是智能设备,如智能手机、智能平板等,也可以是服务器。
在一种可能的应用场景下,当用户使用客户端设备启动某一应用时,可以将该应用确定为目标应用。客户端设备在检测到目标应用启动后,便获取目标应用在启动时的属性信息。
在一种可能的实施方式中,为了实现准确地区分每台客户端设备所生成的日志,以及目标应用每次运行所生成的日志,该日志的属性信息包括客户端设备标识、以及目标应用的启动时间。后续在查询日志时,可以通过该客户端设备标识,将该客户端标识对应的客户端设备所生成的所有日志聚合,通过该目标应用的启动时间,可以将目标应用在该启动时间启动所生成的所有日志聚合。
S702:若确定所述目标应用上的第一业务启动,则确定所述第一业务所对应的第一子技术栈。
目标应用可以实现至少一种业务,每种业务所对应的子技术栈可能相同,也可以不同。当客户端设备确定目标应用上的第一业务启动后,可以确定该第一业务对应的第一子技术栈。
在一种可能的实施方式中,可以预先配置每种业务与子技术栈的对应关系。当客户端设备确定目标应用上的第一业务启动后,可以根据预先配置的每种业务与子技术栈的对应关系,确定该第一业务对应的第一子技术栈。
在一种可能的实施方式中,所述第一子技术栈包括以下中的至少一种:ReactNative技术栈、Flutter技术栈、网页HTML5技术栈、以及小程序技术栈。
S703:确定所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第一子技术栈,以使所述客户端设备通过所述第一子技术栈执行所述第一业务时,使用所述属性信息生成所述第一子技术栈的第一日志。
在一种可能的实施方式中,主技术栈包括以下中的至少一种:安卓移动操作系统Andriod技术栈、网络互连操作系统IOS技术栈、以及微信本地平台platform技术栈。
由于相关技术中,在存在多个技术栈同时使用时,由于各个技术栈所生成的日志之间是相互独立的,相关技术中并不能实现不同技术栈的业务的日志之间的追踪和关联,从而无法还原跨越多个技术栈的完整日志的上下文,因而相关技术不利于对应用在线上运行过程中所出现的问题的排查和分析。并且,各个技术栈具有不同的登录账户,也会导致无法简单的根据账号对不同技术栈的业务的日志进行追踪和关联。因此,为了可以统一各个技术栈所生成的日志,以及实现基于混合技术栈的异常追踪,可以将获取到的属性信息,在不同的技术栈之间传递,以使各个技术栈在执行任务时,根据该属性信息生成日志,从而方便后续根据每个日志分别对应的属性信息,将相同属性信息的不同技术栈的日志进行聚合。基于此,为了实现将获取到的属性信息,在不同的技术栈之间传递,在本公开中,预先设置有主技术栈与子技术栈之间传递属性信息的传递方式。
由于第一子技术栈的不同,使得属性信息在目标应用的主技术栈与第一子技术栈之间的传递方式也是不同的。基于此,根据第一子技术栈的不同,属性信息在目标应用的主技术栈与第一子技术栈之间的传递方式包括如下几种情况:
情况一、若第一子技术栈为React Native技术栈或Flutter技术栈,属性信息在目标应用的主技术栈与第一子技术栈之间的传递方式包括如下两种方式:
方式一、通过主技术栈生成第一子技术栈的网络请求时,在生成的网络请求的头部Header添加属性信息。
方式二、在第一子技术栈启动时,通过主技术栈将属性信息添加到第一子技术栈的初始化文件中。
对于第一子技术栈为React Native技术栈或Flutter技术栈的情况,第一子技术栈可以基于上述的两种方式,获取到主技术栈传递的属性信息。后续第一子技术栈可以在执行第一业务时,使用该属性信息,以生成该第一子技术栈的第一日志。
在一种可能的实施方式中,客户端设备通过第一子技术栈执行第一业务时,采用如下至少一种方式使用属性信息:
方式1、通过第一子技术栈在生成的日志中记录属性信息。
例如,可以在该第一子技术栈生成的每个第一日志中都记录属性信息,也可以在该第一子技术栈初始化的时候记录一条开始日志,该开始日志里记录有属性信息。
通过该种方式,可以实现每个日志中都记录有对应的属性信息,方便后续根据每个日志中记录的属性信息,将相同属性信息的日志进行聚合。
方式2、通过主技术栈生成第一子技术栈的网络请求时,在生成的网络请求的头部Header添加属性信息。
通过在生成的网络请求的头部Header添加属性信息,可以有效避免该属性信息影响到第一子技术栈执行第一业务时所需的业务参数,从而避免该属性信息对第一子技术栈执行第一业务的情况的影响,方便第一日志的生成以及服务端对该网络请求进行解析。
方式3、通过第一子技术栈在采集数据的请求中携带属性信息。
通过该种方式,可以方便第一子技术栈根据该属性信息生成第一日志,也方便属性信息在不同的技术栈之间的传递。
通过上述的3种方式,第一子技术栈可以灵活地使用接收到的属性信息生成第一日志,且不影响到该第一子技术栈执行第一业务。
情况二、若第一子技术栈为网页HTML5技术栈,属性信息在目标应用的主技术栈与第一子技术栈之间的传递方式包括如下两种方式:
方式一、在第一子技术栈启动时,通过主技术栈生成携带有属性信息的文本文件cookie。
方式二、通过主技术栈在第一子技术栈对应的页面的页面访问链接中添加属性信息。
对于第一子技术栈为网页HTML5技术栈的情况,第一子技术栈可以基于上述的两种方式,获取到主技术栈传递的属性信息。后续第一子技术栈可以在执行第一业务时,使用该属性信息,以生成该第一子技术栈的第一日志。
在一种可能的实施方式中,客户端设备通过第一子技术栈执行第一业务时,采用如下至少一种方式使用属性信息:
方式1、通过第一子技术栈在生成的网络请求中携带cookie。
通过在生成的网络请求中携带有该属性信息的cookie,可以有效避免该属性信息影响到第一子技术栈执行第一业务时所需的业务参数,从而避免该属性信息对第一子技术栈执行第一业务的情况的影响,方便第一日志的生成以及服务端对该网络请求进行解析。
方式2、通过第一子技术栈在生成的网络请求所包含的时间戳中添加属性信息。
通过在生成的网络请求所包含的时间戳中添加属性信息,可以有效避免该属性信息影响到第一子技术栈执行第一业务时所需的业务参数,从而避免该属性信息对第一子技术栈执行第一业务的情况的影响,方便第一日志的生成以及服务端对该网络请求进行解析。
方式3、通过第一子技术栈在采集数据的请求中携带属性信息。
通过该种方式,可以方便第一子技术栈根据该属性信息生成第一日志,也方便属性信息在不同的技术栈之间的传递。
通过上述的3种方式,第一子技术栈可以灵活地使用接收到的属性信息生成第一日志,且不影响到该第一子技术栈执行第一业务。
情况三、若第一子技术栈为小程序技术栈,属性信息在目标应用的主技术栈与第一子技术栈之间的传递方式包括如下方式:
通过主技术栈在第一子技术栈对应的页面的页面访问链接中添加属性信息。
对于第一子技术栈为小程序技术栈的情况,第一子技术栈可以基于上述的一种方式,获取到主技术栈传递的属性信息。后续第一子技术栈可以在执行第一业务时,使用该属性信息,以生成该第一子技术栈的第一日志。
在一种可能的实施方式中,客户端设备通过第一子技术栈执行第一业务时,采用如下至少一种方式使用属性信息:
方式1、通过第一子技术栈在生成的网络请求中携带cookie。
通过在生成的网络请求中携带有该属性信息的cookie,可以有效避免该属性信息影响到第一子技术栈执行第一业务时所需的业务参数,从而避免该属性信息对第一子技术栈执行第一业务的情况的影响,方便第一日志的生成以及服务端对该网络请求进行解析。
方式2、通过第一子技术栈在生成的网络请求所包含的时间戳中添加属性信息。
通过在生成的网络请求所包含的时间戳中添加属性信息,可以有效避免该属性信息影响到第一子技术栈执行第一业务时所需的业务参数,从而避免该属性信息对第一子技术栈执行第一业务的情况的影响,方便第一日志的生成以及服务端对该网络请求进行解析。
方式3、通过第一子技术栈在采集数据的请求中携带属性信息。
通过该种方式,可以方便第一子技术栈根据该属性信息生成第一日志,也方便属性信息在不同的技术栈之间的传递。
通过上述的3种方式,第一子技术栈可以灵活地使用接收到的属性信息生成第一日志,且不影响到该第一子技术栈执行第一业务。
在一种可能的实施方式中,如果希望根据日志的属性信息,准确地定位到某次使用目标应用时不同技术栈所生成的所有日志,则在该次使用目标应用的过程中,不同技术栈所生成的所有日志,均对应统一的属性信息。而如果希望统一该次使用目标应用时不同技术栈所生成的所有日志分别对应的属性信息,客户端设备可以获取该目标应用在该次启动时的属性信息,后续确定该目标应用上的某一业务启动,则将该属性信息传递到该业务所对应的技术栈,以使客户端设备通过该技术栈执行该业务时,使用该属性信息生成该技术栈的日志,从而实现不同技术栈所生成的所有日志,均对应统一的属性信息。在将该属性信息传递到不同的技术栈的过程中,如果该属性信息占用的字段比较多,则不利于该属性信息在不同的技术栈之间的传递。并且日志的属性信息一般是一些模糊信息,这些模糊信息实际所占用的字段大小是无法确定的,导致如果直接将日志的属性信息发送至日志管理设备,该日志管理设备可能无法从接收到的属性信息中,准确地确定哪些字段的数据是客户端标识,哪些字段的数据是目标应用的启动时间。
基于此,为了方便属性信息在不同技术栈之间进行传递,并保证日志管理设备可以准确地确定日志的属性信息,在本公开中,客户端设备在按照确定的传递方式,通过主技术栈将属性信息传递给第一子技术栈之前,可以采用预先约定的第一加密算法,对该日志对应的属性信息进行加密,以生成轨迹标识。然后将该轨迹标识在该目标应用的不同技术栈之间进行传递,以使在该次使用目标应用的过程中,不同技术栈均使用该轨迹标识生成日志,从而实现不同技术栈所生成的所有日志,均对应统一的轨迹标识,即实现不同技术栈所生成的所有日志,均对应统一的属性信息。然后再按照该传递方式,将轨迹标识传递给第一子技术栈,从而实现将属性信息传递给第一子技术栈,方便客户端设备通过第一子技术栈执行第一业务时,使用该轨迹标识生成第一子技术栈的第一日志。
需要说明的是,对该第一加密算法的描述已在上述实施例中进行描述,重复之处不做赘述。
在一种可能的实施方式中,可能存在用户通过客户端设备运行目标应用执行了第一业务之后,又通过客户端设备运行目标应用执行第二业务的情况。因此,当客户端设备确定目标应用上的第二业务启动时,则确定该第二业务所对应的第二子技术栈。在一种可能的实施方式中,第二子技术栈包括以下中的至少一种:React Native技术栈、Flutter技术栈、网页HTML5技术栈、以及小程序技术栈。
如果确定第二子技术栈与第一子技术栈不同,说明需要进行属性信息的传递,才能保证不同子技术栈生成的日志可以聚合,则确定属性信息在目标应用的第一子技术栈与第二子技术栈之间的传递方式,并按照传递方式,通过主技术栈将属性信息传递给第二子技术栈,以使客户端设备通过第二子技术栈执行第二业务时,使用属性信息生成第二子技术栈的第二日志。
可以理解的是,在本公开中,由于不同子技术栈是不生成属性信息的,只是接收和使用属性信息,因此,属性信息在不同子技术栈之间的传递方式主要是依赖于主技术栈与接收属性信息的子技术栈之间的传递方式。
例如,第一子技术栈为React Native技术栈,第二子技术栈为Flutter技术栈,则属性信息在目标应用的React Native技术栈与Flutter技术栈之间的传递方式,与该属性信息在目标应用的主技术栈与该Flutter技术栈之间的传递方式是相同的,即该ReactNative技术栈与Flutter技术栈之间的传递方式包括以下的任一种:通过主技术栈生成Flutter技术栈的网络请求时,在生成的网络请求的头部Header添加该属性信息;或,在Flutter技术栈启动时,通过主技术栈将属性信息添加到Flutter技术栈的初始化文件中。
在一种可能的实施方式中,若第一子技术栈为小程序技术栈,第二子技术栈为HTML5技术栈,属性信息在目标应用的小程序技术栈与HTML5技术栈之间的传递方式,只是通过主技术栈在HTML5技术栈的访问链接中添加属性信息。
在一种可能的实施方式中,若第一子技术栈接收到的是通过属性信息确定的轨迹标识,则客户端设备也可以通过主技术栈将该轨迹标识传递给第二子技术栈,从而实现将属性信息传递给第二子技术栈。
当基于上述的实施例将属性信息传递给第二子技术栈后,客户端设备可以通过第二子技术栈执行第二业务时,使用属性信息生成第二子技术栈的第二日志,然后将生成的第二日志、第二日志的第二生成时间以及属性信息发送至目标管理设备,以使目标管理设备将接收到的第二日志、第二日志的第二生成时间以及属性信息对应保存。
在一种可能的实施方式中,为了便于更加精确定位到发生异常的日志及其关联日志,在本公开中,所述属性信息还包括以下中的至少一种:所述目标应用的启动次数、所述目标应用的启动方式、所述目标应用的运行环境信息、所述客户端设备所归属的用户的用户信息、所述客户端设备的位置信息、所述客户端设备的网络类型信息、与所述客户端设备进行通信的相应基站的基站标识、及所述目标应用上执行的业务的业务信息。
在一种可能的实施方式中,若日志的属性信息包括目标应用的运行环境信息,该目标应用的运行环境信息用以标识日志所归属的技术栈,例如,H5技术栈、Flutter技术栈等。通过该目标应用的运行环境信息,可以将某一技术栈生成的所有日志聚合。
在一种可能的实施方式中,若日志的属性信息包括客户端设备所归属的用户的用户信息,该客户端设备所归属的用户的用户信息用以区分不同用户的所有客户端设备所生成的日志,通过该客户端设备所归属的用户的用户信息,可以将某一用户的所有客户端设备所生成的日志聚合。
需要说明的是,由于用户在客户端设备上未登陆自己的账户,则会导致该客户端设备可能无法获取到该客户端设备所归属的用户的用户信息的情况。对于该种情况,该日志的属性信息中所包括的客户端设备所归属的用户的用户信息可以为空,或任一默认用户信息。
在一种可能的实施方式中,若日志的属性信息包括目标应用的启动次数,该目标应用的启动次数用以区分目标应用在每次启动所生成的日志。通过该目标应用的启动次数,可以将目标应用在该启动次数启动所生成的所有日志。
在一种可能的实施方式中,若日志的属性信息包括客户端设备的位置信息,该客户端设备的位置信息用以标识客户端设备的位置,比如,时区编码、省市区编码。通过该客户端设备的位置,可以将处于该位置的所有客户端设备所生成的日志聚合。
在一种可能的实施方式中,若日志的属性信息包括客户端设备的网络类型信息,该客户端设备的位置信息用以标识客户端设备的网络类型,例如,2个、3G、5G等。通过该客户端的网络类型信息,可以将工作于该网络类型下的客户端设备所生成的日志聚合。
在一种可能的实施方式中,若日志的属性信息包括与客户端设备进行通信的相应基站的基站标识,该与客户端设备进行通信的相应基站的基站标识用以区分当前与客户端设备进行通信的基站的。通过该与客户端设备进行通信的相应基站的基站标识,可以将与该基站标识对应的基站进行通信的客户端设备所生成的日志聚合。
在一种可能的实施方式中,若日志的属性信息包括目标应用上执行的业务的业务信息,该目标应用上执行的业务的业务信息用以标识生成该日志时目标应用所执行的业务,例如,填卡业务、支付业务等。通过该目标应用上执行的业务的业务信息,可以将所有客户端设备通过运行目标应用执行该业务时所生成的日志聚合。
S704:将所述第一子技术栈的第一日志、所述第一日志的第一生成时间以及所述属性信息发送至日志管理设备,以使所述日志管理设备接收到异常分析设备发送的异常追踪请求之后,根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;将所述目标日志以及所述关联日志发送至所述异常分析设备。
由于客户端设备通过运行目标应用执行业务时,是通过该目标应用的前端、该目标应用的后端以及该目标应用的客户端之间的互相协作实现的。因此,该客户端设备在某一时间通过运行目标应用执行某一业务出现问题时,该目标应用的前端、该目标应用的后端以及该目标应用的客户端在该时间的运作过程中,也一般会出现问题。为了保证可以准确且全面地对问题进行排查和分析,所述第一日志的日志来源包括以下中的至少一种:所述目标应用的前端、所述目标应用的后端以及所述目标应用的客户端。
当基于上述的实施例将属性信息传递给第一子技术栈后,客户端设备可以通过所述第一子技术栈执行所述第一业务时,使用所述属性信息生成所述第一子技术栈的第一日志,然后将生成的第一日志、第一日志的第一生成时间以及属性信息发送至目标管理设备,以使目标管理设备将接收到的第一日志、第一日志的第一生成时间以及属性信息对应保存。
后续日志管理设备接收到异常分析设备发送的异常追踪请求之后,可以根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;将所述目标日志以及所述关联日志发送至所述异常分析设备。
需要说明的是,日志管理设备具体确定目标日志以及关联日志的过程已在上述实施例进行说明,重复之处不做赘述。
下面通过具体的实施例对本公开提供的混合技术栈的异常追踪方法进行说明,图8为本公开实施例提供的具体的混合技术栈的异常追踪流程示意图,该流程包括:
S801:客户端节点获取目标应用在启动时的属性信息;该属性信息包括客户端设备标识、以及目标应用的启动时间。
其中,属性信息还包括以下中的至少一种:目标应用的启动次数、目标应用的运行环境信息、所述目标应用的启动方式、客户端设备所归属的用户的用户信息、客户端设备的位置信息、客户端设备的网络类型信息、与客户端设备进行通信的相应基站的基站标识、及目标应用上执行的业务的业务信息。
S802:根据预设的加密算法,对属性信息进行加密,将加密后的数据确定为轨迹标识。
例如,若日志的属性信息包括客户端标识、启动标识、目标应用的运行环境信息、客户端设备所归属的用户的用户信息、以及目标应用上执行的业务的业务信息,则通过第一加密算法,对该日志的属性信息进行加密,获取轨迹标识,可通过如下公式表示:
traceID=f(derviceId,startId,runtimeId,uid,bizId)
其中,traceID表示轨迹标识,f()表示第一加密算法,derviceId表示客户端标识,startId表示启动标识,runtimeId表示目标应用的运行环境信息,uid表示客户端设备所归属的用户的用户信息,bizId表示目标应用上执行的业务的业务信息。
在一种可能的实施方式中,通过如下公式获取该启动标识startId:
startID=G(currentStartount,currentStartTime)
其中,startID表示启动标识,currentStartount表示目标应用的启动次数,currentStartTime表示目标应用的启动时间,G()表示第二加密算法。
S803:若确定目标应用上的第一业务启动,则确定第一业务所对应的第一子技术栈。
S804:确定属性信息在目标应用的主技术栈与第一子技术栈之间的传递方式。
S805:按照S804确定的传递方式,通过主技术栈将轨迹标识传递给第一子技术栈,以使客户端设备通过第一子技术栈执行第一业务时,使用轨迹标识生成第一子技术栈的第一日志。
S806:将第一子技术栈的第一日志、第一日志的第一生成时间以及轨迹标识发送至日志管理设备。
S807:若确定目标应用上的第二业务启动,则确定第二业务所对应的第二子技术栈。
S808:若第二子技术栈与第一子技术栈不同,则确定属性信息在目标应用的第一子技术栈与第二子技术栈之间的传递方式。
S809:按照S808确定的传递方式,通过主技术栈将轨迹标识传递给第二子技术栈,以使客户端设备通过第二子技术栈执行第二业务时,使用轨迹标识生成第二子技术栈的第二日志。
S810:将第二子技术栈的第二日志、第二日志的第二生成时间以及轨迹标识发送至日志管理设备。
由于预先设置有属性信息在目标应用的主技术栈与目标应用的子技术栈之间的传递方式,根据该传递方式,客户端设备诶可以实现将属性信息在不同技术栈之间的传递,进而实现目标应用在某次启动后,不同技术栈在执行业务时,可以根据统一的属性信息生成日志,然后客户端设备将不同技术栈生成的日志、日志的生成时间以及该属性信息发送至日志管理设备,以便日志管理设备当获取到异常追踪请求中携带的目标属性信息后,即获取到目标属性信息包括的客户端设备标识,和/或,目标应用的启动时间,可以根据保存的各个日志分别对应的属性信息以及该异常追踪请求中携带的目标属性信息,从保存的不同技术栈的日志中,快速且准确地确定目标属性信息对应的发生异常的目标日志,大大提高了获取发生异常的目标日志的效率和准确性。然后根据该目标属性信息及目标日志的目标生成时间,还可以从保存的不同技术栈的日志中,快速且准确地获取到与该目标日志关联的关联日志,有利于后续工作人员根据该目标日志及关联日志准确地确定业务出现问题的原因,便于对该问题进行排查和分析,并准确地复刻业务发生问题时的工作环境,解决了现有无法将从保存的不同技术栈的日志中,准确且快速地确定与该目标日志关联的其它技术栈的关联日志,避免了日志来自于不同技术栈对异常分析过程中的影响。
本公开还提供了一种混合技术栈的异常追踪系统,图9为本公开实施例提供的一种混合技术栈的异常追踪系统的结构示意图。该系统包括用于执行上述所述混合技术栈的异常追踪方法的日志管理设备91、用于上述所述混合技术栈的异常追踪方法的客户端设备92、以及用于发送异常追踪请求和接收目标日志以及关联日志的异常分析设备93。
需要说明的是,本公开提供的混合技术栈的异常追踪系统具体解决问题的原理已在上述实施例中进行说明,具体参见上述混合技术栈的异常追踪方法的实施例,重复之处不做赘述。
前文介绍了本公开实施例的混合技术栈的异常追踪方法,下文中将介绍本公开实施例中的混合技术栈的异常追踪装置。方法、装置是基于同一技术构思的,由于方法、装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本公开实施例提供了一种混合技术栈的异常追踪装置,图10为本公开实施例提供的一种混合技术栈的异常追踪装置的结构示意图,该装置包括:
接收单元1001,用于接收异常分析设备发送的异常追踪请求;
处理单元1002,用于根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;
发送单元1003,用于将所述目标日志以及所述关联日志发送至所述异常分析设备。
在某些可能的实施方式中,所述处理单元1002,具体用于针对至少一种日志来源,根据所述目标属性信息,从该种日志来源的至少一个日志中,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标应用的前端、所述目标应用的后端以及所述目标应用的客户端。
在某些可能的实施方式中,所述处理单元1002,具体用于获取日志的轨迹标识与属性信息的对应关系;其中,所述属性信息包括所述客户端设备标识以及所述目标应用的启动时间;根据所述异常追踪请求中携带的目标属性信息、以及所述日志的轨迹标识与属性信息的对应关系,确定所述目标属性信息对应的目标轨迹标识;根据轨迹标识与日志的对应关系,从该种日志来源的至少一个日志中,将所述目标轨迹标识对应的日志确定为候选日志;根据所述至少一个候选日志的日志内容,将日志内容存在异常的候选日志确定为所述目标日志。
在某些可能的实施方式中,所述处理单元1002,具体用于针对至少一种日志来源,根据所述目标属性信息及所述目标日志的目标生成时间,从该种日志来源的至少一个日志中,确定该种日志来源的目标日志的关联日志;其中,所述日志来源包括以下中的至少一种:所述目标应用的前端、所述目标应用的后端以及所述目标应用的客户端。
在某些可能的实施方式中,所述处理单元1002,具体用于获取日志的轨迹标识与属性信息的对应关系;其中,所述属性信息包括所述客户端设备标识以及所述目标应用的启动时间;根据所述异常追踪请求中携带的目标属性信息、以及所述日志的轨迹标识与属性信息的对应关系,确定所述目标属性信息对应的目标轨迹标识;根据轨迹标识与日志的对应关系,从该种日志来源的至少一个日志中,将所述目标轨迹标识对应的日志确定为候选日志;获取所述至少一个候选日志的生成时间;按照时间从早到晚的顺序,对每个所述生成时间进行排序;根据每个所述生成时间的排序位置以及所述目标生成时间,确定所述目标生成时间所在的目标排序位置;确定所述目标排序位置之前的预设第一数量的排序位置,将所述预设第一数量的排序位置分别对应的候选日志,确定为所述关联日志;确定所述目标排序位置之后的预设第二数量的排序位置,将所述预设第二数量的排序位置分别对应的候选日志,确定为所述关联日志。
在某些可能的实施方式中,所述处理单元1002,具体用于针对每个所述轨迹标识,根据预设的解密算法,对所述轨迹标识进行解密,确定所述轨迹标识对应的属性信息;其中,所述轨迹标识是根据对应的日志的属性信息以及所述解密算法对应的加密算法确定的,所述日志的属性信息包括客户端设备标识、及所述目标应用的启动时间。
在某些可能的实施方式中,所述处理单元1002,还用于根据所述目标日志以及所述关联日志,确定所述目标应用中存在的异常问题。
前文介绍了本公开实施例的混合技术栈的异常追踪方法,下文中将介绍本公开实施例中的混合技术栈的异常追踪装置。方法、装置是基于同一技术构思的,由于方法、装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本公开实施例提供了一种混合技术栈的异常追踪装置,图11为本公开实施例提供的一种混合技术栈的异常追踪装置的结构示意图,该装置包括:
获取模块1101,用于获取目标应用在启动时的属性信息;所述属性信息包括所述客户端设备标识、以及所述目标应用的启动时间;
处理模块1102,用于若确定所述目标应用上的第一业务启动,则确定所述第一业务所对应的第一子技术栈;确定所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第一子技术栈,以使所述客户端设备通过所述第一子技术栈执行所述第一业务时,使用所述属性信息生成所述第一子技术栈的第一日志;
发送模块1103,用于将所述第一子技术栈的第一日志、所述第一日志的第一生成时间以及所述属性信息发送至日志管理设备,以使所述日志管理设备接收到异常分析设备发送的异常追踪请求之后,根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;将所述目标日志以及所述关联日志发送至所述异常分析设备。
在某些可能的实施方式中,所述处理模块1102,具体用于若所述第一子技术栈为React Native技术栈或Flutter技术栈,通过所述主技术栈生成所述第一子技术栈的网络请求时,在生成的网络请求的头部Header添加所述属性信息;或,在所述第一子技术栈启动时,通过所述主技术栈将所述属性信息添加到所述第一子技术栈的初始化文件中。
在某些可能的实施方式中,所述处理模块1102,还用于所述客户端设备通过所述第一子技术栈执行所述第一业务时,采用如下至少一种方式使用所述属性信息,包括:
通过所述第一子技术栈在生成的日志中记录所述属性信息;
通过所述主技术栈生成所述第一子技术栈的网络请求时,在生成的网络请求的头部Header添加所述属性信息;
通过所述第一子技术栈在采集数据的请求中携带所述属性信息。
在某些可能的实施方式中,所述处理模块1102,具体用于若所述第一子技术栈为网页HTML5技术栈,在所述第一子技术栈启动时,通过所述主技术栈生成携带有所述属性信息的文本文件cookie;或,通过所述主技术栈在所述第一子技术栈对应的页面的页面访问链接中添加所述属性信息。
在某些可能的实施方式中,所述处理模块1102,具体用于若所述第一子技术栈为小程序技术栈,通过所述主技术栈在所述第一子技术栈对应的页面的页面访问链接中添加所述属性信息。
在某些可能的实施方式中,所述处理模块1102,还用于所述客户端设备通过所述第一子技术栈执行所述第一业务时,采用如下至少一种方式使用所述属性信息,包括:
通过所述第一子技术栈在生成的网络请求中携带所述cookie;
通过所述第一子技术栈在生成的网络请求所包含的时间戳中添加所述属性信息;
通过所述第一子技术栈在采集数据的请求中携带所述属性信息。
在某些可能的实施方式中,所述处理模块1102,还用于若确定所述目标应用上的第二业务启动,则确定所述第二业务所对应的第二子技术栈;若所述第二子技术栈与所述第一子技术栈不同,则确定所述属性信息在所述目标应用的第一子技术栈与所述第二子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第二子技术栈,以使所述客户端设备通过所述第二子技术栈执行所述第二业务时,使用所述属性信息生成所述第二子技术栈的第二日志;
所述发送模块1103,还用于将所述第二子技术栈的第二日志、所述第二日志的第二生成时间以及所述属性信息发送至日志管理设备。
在某些可能的实施方式中,所述处理模块1102,具体用于若所述第一子技术栈为小程序技术栈,所述第二子技术栈为HTML5技术栈,通过所述主技术栈在所述第二子技术栈的访问链接中添加所述属性信息。
在某些可能的实施方式中,所述处理模块1102,具体用于若所述子技术栈包括所述第一子技术栈和所述第二子技术栈,根据预设的加密算法,对所述属性信息进行加密,将加密后的数据确定为轨迹标识;按照所述传递方式,将所述轨迹标识传递给所述子技术栈。
如图12为本公开实施例提供的一种电子设备结构示意图,在上述各实施例的基础上,本公开实施例还提供了一种电子设备,如图12所示,包括:处理器1201、通信接口1202、存储器1203和通信总线1204,其中,处理器1201,通信接口1202,存储器1203通过通信总线1204完成相互间的通信;
所述存储器1203中存储有计算机程序,当所述程序被所述处理器1201执行时,使得所述处理器1201执行如下步骤:
接收异常分析设备发送的异常追踪请求;
根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;
根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;
将所述目标日志以及所述关联日志发送至所述异常分析设备。
由于上述电子设备解决问题的原理与混合技术栈的异常追踪方法相似,因此上述电子设备的实施可以参见方法的实施,重复之处不再赘述。
如图13为本公开实施例提供的一种电子设备结构示意图,在上述各实施例的基础上,本公开实施例还提供了一种电子设备,如图13所示,包括:处理器1301、通信接口1302、存储器1303和通信总线1304,其中,处理器1301,通信接口1302,存储器1303通过通信总线1304完成相互间的通信;
所述存储器1303中存储有计算机程序,当所述程序被所述处理器1301执行时,使得所述处理器1301执行如下步骤:
获取目标应用在启动时的属性信息;所述属性信息包括所述客户端设备标识、以及所述目标应用的启动时间;
若确定所述目标应用上的第一业务启动,则确定所述第一业务所对应的第一子技术栈;
确定所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第一子技术栈,以使所述客户端设备通过所述第一子技术栈执行所述第一业务时,使用所述属性信息生成所述第一子技术栈的第一日志;
将所述第一子技术栈的第一日志、所述第一日志的第一生成时间以及所述属性信息发送至日志管理设备,以使所述日志管理设备接收到异常分析设备发送的异常追踪请求之后,根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;将所述目标日志以及所述关联日志发送至所述异常分析设备。
由于上述电子设备解决问题的原理与混合技术栈的异常追踪方法相似,因此上述电子设备的实施可以参见方法的实施,重复之处不再赘述。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口1302用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字指令处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
在上述各实施例的基础上,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有可由处理器执行的计算机程序,当所述程序在所述处理器上运行时,使得所述处理器执行时实现如下步骤:
接收异常分析设备发送的异常追踪请求;
根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;
根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;
将所述目标日志以及所述关联日志发送至所述异常分析设备。
由于计算机可读存储介质解决问题的原理与上述混合技术栈的异常追踪方法相似,因此具体实施可以参见数据处理方法的实施,重复之处不再赘述。
在上述各实施例的基础上,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有可由处理器执行的计算机程序,当所述程序在所述处理器上运行时,使得所述处理器执行时实现如下步骤:
获取目标应用在启动时的属性信息;所述属性信息包括所述客户端设备标识、以及所述目标应用的启动时间;
若确定所述目标应用上的第一业务启动,则确定所述第一业务所对应的第一子技术栈;
确定所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第一子技术栈,以使所述客户端设备通过所述第一子技术栈执行所述第一业务时,使用所述属性信息生成所述第一子技术栈的第一日志;
将所述第一子技术栈的第一日志、所述第一日志的第一生成时间以及所述属性信息发送至日志管理设备,以使所述日志管理设备接收到异常分析设备发送的异常追踪请求之后,根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;将所述目标日志以及所述关联日志发送至所述异常分析设备。
由于计算机可读存储介质解决问题的原理与上述混合技术栈的异常追踪方法相似,因此具体实施可以参见数据处理方法的实施,重复之处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的业务的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的业务。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的业务的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (38)

1.一种混合技术栈的异常追踪方法,其特征在于,所述方法应用于日志管理设备,所述方法包括:
接收异常分析设备发送的异常追踪请求;
根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识、和/或,目标应用的启动时间;
根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;
将所述目标日志以及所述关联日志发送至所述异常分析设备;
其中,所述根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志,包括:针对至少一种日志来源,根据所述目标属性信息及所述目标日志的目标生成时间,从该种日志来源的至少一个日志中,确定该种日志来源的目标日志的关联日志;
所述根据所述目标属性信息及所述目标日志的目标生成时间,从该种日志来源的至少一个日志中,确定该种日志来源的目标日志的关联日志,包括:获取日志的轨迹标识与属性信息的对应关系;其中,所述属性信息包括所述客户端设备标识以及所述目标应用的启动时间;根据所述异常追踪请求中携带的目标属性信息、以及所述日志的轨迹标识与属性信息的对应关系,确定所述目标属性信息对应的目标轨迹标识;根据轨迹标识与日志的对应关系,从该种日志来源的至少一个日志中,将所述目标轨迹标识对应的日志确定为候选日志;获取所述至少一个候选日志的生成时间;按照时间从早到晚的顺序,对每个所述生成时间进行排序;根据每个所述生成时间的排序位置以及所述目标生成时间,确定所述目标生成时间所在的目标排序位置;确定所述目标排序位置之前的预设第一数量的排序位置,将所述预设第一数量的排序位置分别对应的候选日志,确定为所述关联日志;确定所述目标排序位置之后的预设第二数量的排序位置,将所述预设第二数量的排序位置分别对应的候选日志,确定为所述关联日志。
2.根据权利要求1所述的方法,其特征在于,所述根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志,包括:
针对至少一种日志来源,根据所述目标属性信息,从该种日志来源的至少一个日志中,确定所述目标属性信息对应的发生异常的目标日志;其中,所述日志来源包括以下中的至少一种:所述目标应用的前端、所述目标应用的后端以及所述目标应用的客户端。
3.根据权利要求2所述的方法,其特征在于,所述根据所述目标属性信息,从该种日志来源的至少一个日志中,确定所述目标属性信息对应的发生异常的目标日志,包括:
获取日志的轨迹标识与属性信息的对应关系;其中,所述属性信息包括所述客户端设备标识以及所述目标应用的启动时间;所述轨迹标识是客户端设备获取到目标应用在启动时的属性信息后,采用预先约定的加密算法对该日志对应的属性信息进行加密生成的;所述轨迹标识在不同的技术栈之间传递;
根据所述异常追踪请求中携带的目标属性信息、以及所述日志的轨迹标识与属性信息的对应关系,确定所述目标属性信息对应的目标轨迹标识;
根据轨迹标识与日志的对应关系,从该种日志来源的至少一个日志中,将所述目标轨迹标识对应的日志确定为候选日志;
根据所述至少一个候选日志的日志内容,将日志内容存在异常的候选日志确定为所述目标日志。
4.根据权利要求1所述的方法,其特征在于,所述日志来源包括以下中的至少一种:所述目标应用的前端、所述目标应用的后端以及所述目标应用的客户端。
5.根据权利要求1或3所述的方法,其特征在于,所述获取日志的轨迹标识与属性信息的对应关系,包括:
针对每个所述轨迹标识,根据预设的解密算法,对所述轨迹标识进行解密,确定所述轨迹标识对应的属性信息;其中,所述轨迹标识是根据对应的日志的属性信息以及所述解密算法对应的加密算法确定的,所述日志的属性信息包括客户端设备标识、及所述目标应用的启动时间。
6.根据权利要求5所述的方法,其特征在于,所述日志的属性信息还包括以下中的至少一种:所述目标应用的启动次数、所述目标应用的启动方式、所述目标应用的运行环境信息、所述客户端设备所归属的用户的用户信息、所述客户端设备的位置信息、所述客户端设备的网络类型信息、与所述客户端设备进行通信的相应基站的基站标识、及所述目标应用上执行的业务的业务信息。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述目标日志以及所述关联日志,确定所述目标应用中存在的异常问题。
8.根据权利要求1所述的方法,其特征在于,所述关联日志与所述目标日志的技术栈相同或不同;
所述技术栈包括主技术栈和子技术栈;
所述子技术栈包括以下中的至少一种:React Native技术栈、Flutter技术栈、网页HTML5技术栈、以及小程序技术栈;
所述主技术栈包括以下中的至少一种:安卓移动操作系统Andriod技术栈、网络互连操作系统iOS技术栈、以及微信本地平台platform技术栈。
9.一种混合技术栈的异常追踪方法,其特征在于,所述方法应用于客户端设备,所述方法包括:
获取目标应用在启动时的属性信息;所述属性信息包括所述客户端设备标识、以及所述目标应用的启动时间;
若确定所述目标应用上的第一业务启动,则确定所述第一业务所对应的第一子技术栈;
确定所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第一子技术栈,以使所述客户端设备通过所述第一子技术栈执行所述第一业务时,使用所述属性信息生成所述第一子技术栈的第一日志;
将所述第一子技术栈的第一日志、所述第一日志的第一生成时间以及所述属性信息发送至日志管理设备,以使所述日志管理设备接收到异常分析设备发送的异常追踪请求之后,根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,目标应用的启动次数以及所述目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;将所述目标日志以及所述关联日志发送至所述异常分析设备。
10.根据权利要求9所述的方法,其特征在于,所述第一子技术栈包括以下中的至少一种:React Native技术栈、Flutter技术栈、网页HTML5技术栈、以及小程序技术栈;
所述主技术栈包括以下中的至少一种:安卓移动操作系统Andriod技术栈、网络互连操作系统IOS技术栈、以及微信本地平台platform技术栈。
11.根据权利要求10所述的方法,其特征在于,若所述第一子技术栈为React Native技术栈或Flutter技术栈,所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,包括:
通过所述主技术栈生成所述第一子技术栈的网络请求时,在生成的网络请求的头部Header添加所述属性信息;或
在所述第一子技术栈启动时,通过所述主技术栈将所述属性信息添加到所述第一子技术栈的初始化文件中。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
所述客户端设备通过所述第一子技术栈执行所述第一业务时,采用如下至少一种方式使用所述属性信息,包括:
通过所述第一子技术栈在生成的日志中记录所述属性信息;
通过所述主技术栈生成所述第一子技术栈的网络请求时,在生成的网络请求的头部Header添加所述属性信息;
通过所述第一子技术栈在采集数据的请求中携带所述属性信息。
13.根据权利要求10所述的方法,其特征在于,若所述第一子技术栈为网页HTML5技术栈,所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,包括:
在所述第一子技术栈启动时,通过所述主技术栈生成携带有所述属性信息的文本文件cookie;或
通过所述主技术栈在所述第一子技术栈对应的页面的页面访问链接中添加所述属性信息。
14.根据权利要求10所述的方法,其特征在于,若所述第一子技术栈为小程序技术栈,所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,包括:
通过所述主技术栈在所述第一子技术栈对应的页面的页面访问链接中添加所述属性信息。
15.根据权利要求13或14所述的方法,其特征在于,所述方法还包括:
所述客户端设备通过所述第一子技术栈执行所述第一业务时,采用如下至少一种方式使用所述属性信息,包括:
通过所述第一子技术栈在生成的网络请求中携带cookie;
通过所述第一子技术栈在生成的网络请求所包含的时间戳中添加所述属性信息;
通过所述第一子技术栈在采集数据的请求中携带所述属性信息。
16.根据权利要求10所述的方法,其特征在于,所述方法还包括:
若确定所述目标应用上的第二业务启动,则确定所述第二业务所对应的第二子技术栈;
若所述第二子技术栈与所述第一子技术栈不同,则确定所述属性信息在所述目标应用的第一子技术栈与所述第二子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第二子技术栈,以使所述客户端设备通过所述第二子技术栈执行所述第二业务时,使用所述属性信息生成所述第二子技术栈的第二日志;
将所述第二子技术栈的第二日志、所述第二日志的第二生成时间以及所述属性信息发送至日志管理设备。
17.根据权利要求16所述的方法,其特征在于,所述第二子技术栈包括以下中的至少一种:React Native技术栈、Flutter技术栈、网页HTML5技术栈、以及小程序技术栈。
18.根据权利要求17所述的方法,其特征在于,若所述第一子技术栈为小程序技术栈,所述第二子技术栈为HTML5技术栈,所述属性信息在所述目标应用的第一子技术栈与所述第二子技术栈之间的传递方式,包括:
通过所述主技术栈在所述第二子技术栈的访问链接中添加所述属性信息。
19.根据权利要求16所述的方法,其特征在于,若所述子技术栈包括所述第一子技术栈和所述第二子技术栈,所述按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述子技术栈,包括:
根据预设的加密算法,对所述属性信息进行加密,将加密后的数据确定为轨迹标识;
按照所述传递方式,将所述轨迹标识传递给所述子技术栈。
20.根据权利要求9所述的方法,其特征在于,所述属性信息还包括以下中的至少一种:所述目标应用的启动次数、所述目标应用的启动方式、所述目标应用的运行环境信息、所述客户端设备所归属的用户的用户信息、所述客户端设备的位置信息、所述客户端设备的网络类型信息、与所述客户端设备进行通信的相应基站的基站标识、及所述目标应用上执行的业务的业务信息。
21.根据权利要求9所述的方法,其特征在于,所述第一日志的日志来源包括以下中的至少一种:所述目标应用的前端、所述目标应用的后端以及所述目标应用的客户端。
22.一种混合技术栈的异常追踪系统,其特征在于,所述系统包括用于执行权利要求1-8任一所述方法的日志管理设备、用于执行权利要求9-21任一所述方法的客户端设备、以及用于发送异常追踪请求和接收目标日志以及关联日志的异常分析设备。
23.一种混合技术栈的异常追踪装置,其特征在于,所述装置应用于日志管理设备,所述装置包括:
接收单元,用于接收异常分析设备发送的异常追踪请求;
处理单元,用于根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;
所述处理单元,具体用于针对至少一种日志来源,根据所述目标属性信息,从该种日志来源的至少一个日志中,确定所述目标属性信息对应的发生异常的目标日志;
所述处理单元,具体用于获取日志的轨迹标识与属性信息的对应关系;其中,所述属性信息包括所述客户端设备标识以及所述目标应用的启动时间;根据所述异常追踪请求中携带的目标属性信息、以及所述日志的轨迹标识与属性信息的对应关系,确定所述目标属性信息对应的目标轨迹标识;根据轨迹标识与日志的对应关系,从该种日志来源的至少一个日志中,将所述目标轨迹标识对应的日志确定为候选日志;获取所述至少一个候选日志的生成时间;按照时间从早到晚的顺序,对每个所述生成时间进行排序;根据每个所述生成时间的排序位置以及所述目标生成时间,确定所述目标生成时间所在的目标排序位置;确定所述目标排序位置之前的预设第一数量的排序位置,将所述预设第一数量的排序位置分别对应的候选日志,确定为所述关联日志;确定所述目标排序位置之后的预设第二数量的排序位置,将所述预设第二数量的排序位置分别对应的候选日志,确定为所述关联日志
发送单元,用于将所述目标日志以及所述关联日志发送至所述异常分析设备。
24.根据权利要求23所述的装置,其特征在于,所述处理单元,具体用于获取日志的轨迹标识与属性信息的对应关系;所述轨迹标识是客户端设备获取到目标应用在启动时的属性信息后,采用预先约定的加密算法对该日志对应的属性信息进行加密生成的;所述轨迹标识在不同的技术栈之间传递;其中,所述属性信息包括所述客户端设备标识以及所述目标应用的启动时间;根据所述异常追踪请求中携带的目标属性信息、以及所述日志的轨迹标识与属性信息的对应关系,确定所述目标属性信息对应的目标轨迹标识;根据轨迹标识与日志的对应关系,从该种日志来源的至少一个日志中,将所述目标轨迹标识对应的日志确定为候选日志;根据所述至少一个候选日志的日志内容,将日志内容存在异常的候选日志确定为所述目标日志。
25.根据权利要求23所述的装置,其特征在于,所述处理单元,具体用于针对至少一种日志来源,根据所述目标属性信息及所述目标日志的目标生成时间,从该种日志来源的至少一个日志中,确定该种日志来源的目标日志的关联日志;其中,所述日志来源包括以下中的至少一种:所述目标应用的前端、所述目标应用的后端以及所述目标应用的客户端。
26.根据权利要求23或24所述的装置,其特征在于,所述处理单元,具体用于针对每个所述轨迹标识,根据预设的解密算法,对所述轨迹标识进行解密,确定所述轨迹标识对应的属性信息;其中,所述轨迹标识是根据对应的日志的属性信息以及所述解密算法对应的加密算法确定的,所述日志的属性信息包括客户端设备标识、及所述目标应用的启动时间。
27.根据权利要求23所述的装置,其特征在于,所述处理单元,还用于根据所述目标日志以及所述关联日志,确定所述目标应用中存在的异常问题。
28.一种混合技术栈的异常追踪装置,其特征在于,所述装置应用于客户端设备,所述装置包括:
获取模块,用于获取目标应用在启动时的属性信息;所述属性信息包括所述客户端设备标识、以及所述目标应用的启动时间;
处理模块,用于若确定所述目标应用上的第一业务启动,则确定所述第一业务所对应的第一子技术栈;确定所述属性信息在所述目标应用的主技术栈与所述第一子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第一子技术栈,以使所述客户端设备通过所述第一子技术栈执行所述第一业务时,使用所述属性信息生成所述第一子技术栈的第一日志;
发送模块,用于将所述第一子技术栈的第一日志、所述第一日志的第一生成时间以及所述属性信息发送至日志管理设备,以使所述日志管理设备接收到异常分析设备发送的异常追踪请求之后,根据所述异常追踪请求中携带的目标属性信息,确定所述目标属性信息对应的发生异常的目标日志;其中,所述目标属性信息包括客户端设备标识,和/或,所述目标应用的启动时间;根据所述目标属性信息及所述目标日志的目标生成时间,确定所述目标日志的关联日志;将所述目标日志以及所述关联日志发送至所述异常分析设备。
29.根据权利要求28所述的装置,其特征在于,所述处理模块,具体用于若所述第一子技术栈为React Native技术栈或Flutter技术栈,通过所述主技术栈生成所述第一子技术栈的网络请求时,在生成的网络请求的头部Header添加所述属性信息;或,在所述第一子技术栈启动时,通过所述主技术栈将所述属性信息添加到所述第一子技术栈的初始化文件中。
30.根据权利要求29所述的装置,其特征在于,所述处理模块,还用于所述客户端设备通过所述第一子技术栈执行所述第一业务时,采用如下至少一种方式使用所述属性信息,包括:
通过所述第一子技术栈在生成的日志中记录所述属性信息;
通过所述主技术栈生成所述第一子技术栈的网络请求时,在生成的网络请求的头部Header添加所述属性信息;
通过所述第一子技术栈在采集数据的请求中携带所述属性信息。
31.根据权利要求28所述的装置,其特征在于,所述处理模块,具体用于若所述第一子技术栈为网页HTML5技术栈,在所述第一子技术栈启动时,通过所述主技术栈生成携带有所述属性信息的文本文件cookie;或,通过所述主技术栈在所述第一子技术栈对应的页面的页面访问链接中添加所述属性信息。
32.根据权利要求28所述的装置,其特征在于,所述处理模块,具体用于若所述第一子技术栈为小程序技术栈,通过所述主技术栈在所述第一子技术栈对应的页面的页面访问链接中添加所述属性信息。
33.根据权利要求31或32所述的装置,其特征在于,所述处理模块,还用于所述客户端设备通过所述第一子技术栈执行所述第一业务时,采用如下至少一种方式使用所述属性信息,包括:
通过所述第一子技术栈在生成的网络请求中携带cookie;
通过所述第一子技术栈在生成的网络请求所包含的时间戳中添加所述属性信息;
通过所述第一子技术栈在采集数据的请求中携带所述属性信息。
34.根据权利要求28所述的装置,其特征在于,所述处理模块,还用于若确定所述目标应用上的第二业务启动,则确定所述第二业务所对应的第二子技术栈;若所述第二子技术栈与所述第一子技术栈不同,则确定所述属性信息在所述目标应用的第一子技术栈与所述第二子技术栈之间的传递方式,并按照所述传递方式,通过所述主技术栈将所述属性信息传递给所述第二子技术栈,以使所述客户端设备通过所述第二子技术栈执行所述第二业务时,使用所述属性信息生成所述第二子技术栈的第二日志;
所述发送模块,还用于将所述第二子技术栈的第二日志、所述第二日志的第二生成时间以及所述属性信息发送至日志管理设备。
35.根据权利要求34所述的装置,其特征在于,所述处理模块,具体用于若所述第一子技术栈为小程序技术栈,所述第二子技术栈为HTML5技术栈,通过所述主技术栈在所述第二子技术栈的访问链接中添加所述属性信息。
36.根据权利要求34所述的装置,其特征在于,所述处理模块,具体用于若所述子技术栈包括所述第一子技术栈和所述第二子技术栈,根据预设的加密算法,对所述属性信息进行加密,将加密后的数据确定为轨迹标识;按照所述传递方式,将所述轨迹标识传递给所述子技术栈。
37.一种电子设备,其特征在于,所述电子设备至少包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-8中任一所述混合技术栈的异常追踪方法的步骤,或实现如权利要求9-21中任一所述混合技术栈的异常追踪方法的步骤。
38.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-8中任一所述混合技术栈的异常追踪方法的步骤,或实现如权利要求9-21中任一所述混合技术栈的异常追踪方法的步骤。
CN202111105998.8A 2021-09-22 2021-09-22 混合技术栈的异常追踪方法、系统、装置、设备及介质 Active CN113849331B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111105998.8A CN113849331B (zh) 2021-09-22 2021-09-22 混合技术栈的异常追踪方法、系统、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111105998.8A CN113849331B (zh) 2021-09-22 2021-09-22 混合技术栈的异常追踪方法、系统、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN113849331A CN113849331A (zh) 2021-12-28
CN113849331B true CN113849331B (zh) 2023-09-29

Family

ID=78974995

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111105998.8A Active CN113849331B (zh) 2021-09-22 2021-09-22 混合技术栈的异常追踪方法、系统、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN113849331B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224445A (zh) * 2015-10-28 2016-01-06 北京汇商融通信息技术有限公司 分布式跟踪系统
CN111625431A (zh) * 2019-02-28 2020-09-04 华为技术有限公司 一种日志信息生成方法、装置及电子设备
CN112612675A (zh) * 2020-12-25 2021-04-06 山东经伟晟睿数据技术有限公司 微服务架构下的分布式大数据日志链路跟踪方法及系统
CN113127307A (zh) * 2021-04-25 2021-07-16 北京大米科技有限公司 溯源请求的处理方法、相关装置、系统及存储介质
CN113422697A (zh) * 2021-06-21 2021-09-21 深信服科技股份有限公司 一种追踪方法、装置、电子设备及可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984220B2 (en) * 2004-09-02 2011-07-19 International Business Machines Corporation Exception tracking
US11409634B2 (en) * 2019-11-14 2022-08-09 Cisco Technology, Inc. Retroactive tracing in a distributed system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224445A (zh) * 2015-10-28 2016-01-06 北京汇商融通信息技术有限公司 分布式跟踪系统
CN111625431A (zh) * 2019-02-28 2020-09-04 华为技术有限公司 一种日志信息生成方法、装置及电子设备
CN112612675A (zh) * 2020-12-25 2021-04-06 山东经伟晟睿数据技术有限公司 微服务架构下的分布式大数据日志链路跟踪方法及系统
CN113127307A (zh) * 2021-04-25 2021-07-16 北京大米科技有限公司 溯源请求的处理方法、相关装置、系统及存储介质
CN113422697A (zh) * 2021-06-21 2021-09-21 深信服科技股份有限公司 一种追踪方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN113849331A (zh) 2021-12-28

Similar Documents

Publication Publication Date Title
US9239771B2 (en) Method and system for collecting and providing application usage analytics
CN109344170B (zh) 流数据处理方法、系统、电子设备及可读存储介质
US10362086B2 (en) Method and system for automating submission of issue reports
CN112363941A (zh) 接口测试方法、装置、计算机设备及存储介质
US20080005793A1 (en) Method and apparatus for monitoring and synchronizing user interface events with network data
CN111563016B (zh) 日志采集分析方法、装置、计算机系统及可读存储介质
CN111506511A (zh) 一种测试用例生成方法、装置、电子设备及介质
CN105283852A (zh) 模糊跟踪数据
US9229758B2 (en) Passive monitoring of virtual systems using extensible indexing
US20180159724A1 (en) Automatic task tracking
CN110659206A (zh) 基于微服务的模拟架构建立方法、装置、介质及电子设备
CN113806110B (zh) 基于事件驱动的消息处理方法、装置、设备及存储介质
CN113849331B (zh) 混合技术栈的异常追踪方法、系统、装置、设备及介质
CN113094048A (zh) 数据显示规则确定方法、显示方法、装置、设备及介质
CN111190824B (zh) 监测方法、装置、终端设备及存储介质
CN113032647B (zh) 数据分析系统
US20210182453A1 (en) Application behavior identification
CN111984543B (zh) 指令测试方法、装置及系统
CN112825506B (zh) 一种流量镜像检测方法及装置
CN114371866A (zh) 业务系统的版本重构测试方法、装置和设备
CN1952965A (zh) 验证新老系统差异性的验证系统及验证方法
US20230418734A1 (en) System And Method for Evaluating Test Results of Application Testing
CN112363870B (zh) 应用程序开发处理方法、装置、计算机设备和存储介质
Heid et al. Context Correlation for Automated Dynamic Android App Analysis to Improve Impact Rating of Privacy and Security Flaws
CN115562945A (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
GR01 Patent grant
GR01 Patent grant